@brainfish-ai/web-tracker 0.0.16 → 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/index.d.ts +38 -2
  2. package/dist/{src/record → record}/recorder.d.ts +6 -9
  3. package/dist/src/tracker.ts.es.d.ts +1 -0
  4. package/dist/tracker.cjs.js +1 -1
  5. package/dist/tracker.cjs.js.gz +0 -0
  6. package/dist/tracker.cjs.js.map +1 -1
  7. package/dist/tracker.d.ts +9 -1
  8. package/dist/tracker.es.js +37722 -0
  9. package/dist/tracker.es.js.gz +0 -0
  10. package/dist/tracker.es.js.map +1 -0
  11. package/dist/tracker.js +1 -14
  12. package/dist/tracker.js.gz +0 -0
  13. package/dist/tracker.js.map +1 -1
  14. package/package.json +5 -3
  15. package/dist/index.cjs.js +0 -30
  16. package/dist/index.cjs.js.gz +0 -0
  17. package/dist/index.cjs.js.map +0 -1
  18. package/dist/index.js +0 -4112
  19. package/dist/index.js.gz +0 -0
  20. package/dist/index.js.map +0 -1
  21. package/dist/src/index.d.ts +0 -38
  22. package/dist/src/tracker.d.ts +0 -9
  23. /package/dist/{src/common → common}/canDiscover.d.ts +0 -0
  24. /package/dist/{src/common → common}/isLocal.d.ts +0 -0
  25. /package/dist/{src/record → record}/eventBuffer.d.ts +0 -0
  26. /package/dist/{src/record → record}/index.d.ts +0 -0
  27. /package/dist/{src/record → record}/recordingManager.d.ts +0 -0
  28. /package/dist/{src/record → record}/sender.d.ts +0 -0
  29. /package/dist/{src/record → record}/stasher.d.ts +0 -0
  30. /package/dist/{src/record → record}/timer.d.ts +0 -0
  31. /package/dist/{src/redact → redact}/built-ins/NameRedactor.d.ts +0 -0
  32. /package/dist/{src/redact → redact}/built-ins/SimpleRegexpRedactor.d.ts +0 -0
  33. /package/dist/{src/redact → redact}/built-ins/simple-regexp-patterns.d.ts +0 -0
  34. /package/dist/{src/redact → redact}/built-ins/well-known-names.d.ts +0 -0
  35. /package/dist/{src/redact → redact}/composition.d.ts +0 -0
  36. /package/dist/{src/redact → redact}/index.d.ts +0 -0
  37. /package/dist/{src/redact → redact}/types.d.ts +0 -0
  38. /package/dist/{src/redact → redact}/utils.d.ts +0 -0
  39. /package/dist/{src/screenshot → screenshot}/capture.d.ts +0 -0
  40. /package/dist/{src/screenshot → screenshot}/redact.d.ts +0 -0
  41. /package/dist/{src/screenshot → screenshot}/renderStability.d.ts +0 -0
  42. /package/dist/{src/screenshot → screenshot}/snapshot.d.ts +0 -0
  43. /package/dist/{src/session → session}/sessionManager.d.ts +0 -0
  44. /package/dist/{src/setupTests.d.ts → setupTests.d.ts} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../../../../node_modules/engine.io-parser/build/esm/commons.js","../../../../node_modules/engine.io-parser/build/esm/encodePacket.browser.js","../../../../node_modules/engine.io-parser/build/esm/contrib/base64-arraybuffer.js","../../../../node_modules/engine.io-parser/build/esm/decodePacket.browser.js","../../../../node_modules/engine.io-parser/build/esm/index.js","../../../../node_modules/@socket.io/component-emitter/lib/esm/index.js","../../../../node_modules/engine.io-client/build/esm/globals.js","../../../../node_modules/engine.io-client/build/esm/util.js","../../../../node_modules/engine.io-client/build/esm/transport.js","../../../../node_modules/engine.io-client/build/esm/contrib/parseqs.js","../../../../node_modules/engine.io-client/build/esm/transports/polling.js","../../../../node_modules/engine.io-client/build/esm/contrib/has-cors.js","../../../../node_modules/engine.io-client/build/esm/transports/polling-xhr.js","../../../../node_modules/engine.io-client/build/esm/transports/websocket.js","../../../../node_modules/engine.io-client/build/esm/transports/index.js","../../../../node_modules/engine.io-client/build/esm/transports/webtransport.js","../../../../node_modules/engine.io-client/build/esm/contrib/parseuri.js","../../../../node_modules/engine.io-client/build/esm/socket.js","../../../../node_modules/socket.io-parser/build/esm/is-binary.js","../../../../node_modules/socket.io-parser/build/esm/binary.js","../../../../node_modules/socket.io-parser/build/esm/index.js","../../../../node_modules/socket.io-client/build/esm/on.js","../../../../node_modules/socket.io-client/build/esm/socket.js","../../../../node_modules/socket.io-client/build/esm/contrib/backo2.js","../../../../node_modules/socket.io-client/build/esm/manager.js","../../../../node_modules/socket.io-client/build/esm/index.js","../../../../node_modules/socket.io-client/build/esm/url.js","../../sdk/dist/client.js","../../sdk/dist/util.js","../../sdk/dist/ttl-set.js","../../sdk/dist/index.js","../../../../node_modules/html-to-image/es/util.js","../../../../node_modules/html-to-image/es/clone-pseudos.js","../../../../node_modules/html-to-image/es/mimes.js","../../../../node_modules/html-to-image/es/dataurl.js","../../../../node_modules/html-to-image/es/clone-node.js","../../../../node_modules/html-to-image/es/embed-resources.js","../../../../node_modules/html-to-image/es/embed-images.js","../../../../node_modules/html-to-image/es/embed-webfonts.js","../../../../node_modules/html-to-image/es/index.js","../../../../node_modules/html-to-image/es/apply-style.js","../src/screenshot/capture.ts","../src/redact/built-ins/well-known-names.ts","../src/redact/built-ins/NameRedactor.ts","../src/redact/built-ins/simple-regexp-patterns.ts","../src/redact/utils.ts","../src/redact/built-ins/SimpleRegexpRedactor.ts","../src/redact/composition.ts","../src/redact/index.ts","../src/screenshot/redact.ts","../src/screenshot/renderStability.ts","../../../../node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","../../../../node_modules/rrweb/es/rrweb/packages/types/dist/types.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","../../../../node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","../../../../node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","../../../../node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","../../../../node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","../../../../node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","../src/record/eventBuffer.ts","../src/record/sender.ts","../../../../node_modules/@rrweb/types/dist/types.js","../src/record/recorder.ts","../src/record/stasher.ts","../../../../node_modules/path-to-regexp/dist.es2015/index.js","../src/common/canDiscover.ts","../src/common/isLocal.ts","../src/record/recordingManager.ts","../src/record/timer.ts","../src/session/sessionManager.ts","../src/record/index.ts","../src/index.ts","../src/screenshot/snapshot.ts"],"sourcesContent":["const PACKET_TYPES = Object.create(null); // no Map = no polyfill\nPACKET_TYPES[\"open\"] = \"0\";\nPACKET_TYPES[\"close\"] = \"1\";\nPACKET_TYPES[\"ping\"] = \"2\";\nPACKET_TYPES[\"pong\"] = \"3\";\nPACKET_TYPES[\"message\"] = \"4\";\nPACKET_TYPES[\"upgrade\"] = \"5\";\nPACKET_TYPES[\"noop\"] = \"6\";\nconst PACKET_TYPES_REVERSE = Object.create(null);\nObject.keys(PACKET_TYPES).forEach((key) => {\n PACKET_TYPES_REVERSE[PACKET_TYPES[key]] = key;\n});\nconst ERROR_PACKET = { type: \"error\", data: \"parser error\" };\nexport { PACKET_TYPES, PACKET_TYPES_REVERSE, ERROR_PACKET };\n","import { PACKET_TYPES } from \"./commons.js\";\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n Object.prototype.toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\n// ArrayBuffer.isView method is not defined in IE10\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj && obj.buffer instanceof ArrayBuffer;\n};\nconst encodePacket = ({ type, data }, supportsBinary, callback) => {\n if (withNativeBlob && data instanceof Blob) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(data, callback);\n }\n }\n else if (withNativeArrayBuffer &&\n (data instanceof ArrayBuffer || isView(data))) {\n if (supportsBinary) {\n return callback(data);\n }\n else {\n return encodeBlobAsBase64(new Blob([data]), callback);\n }\n }\n // plain string\n return callback(PACKET_TYPES[type] + (data || \"\"));\n};\nconst encodeBlobAsBase64 = (data, callback) => {\n const fileReader = new FileReader();\n fileReader.onload = function () {\n const content = fileReader.result.split(\",\")[1];\n callback(\"b\" + (content || \"\"));\n };\n return fileReader.readAsDataURL(data);\n};\nfunction toArray(data) {\n if (data instanceof Uint8Array) {\n return data;\n }\n else if (data instanceof ArrayBuffer) {\n return new Uint8Array(data);\n }\n else {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\nlet TEXT_ENCODER;\nexport function encodePacketToBinary(packet, callback) {\n if (withNativeBlob && packet.data instanceof Blob) {\n return packet.data.arrayBuffer().then(toArray).then(callback);\n }\n else if (withNativeArrayBuffer &&\n (packet.data instanceof ArrayBuffer || isView(packet.data))) {\n return callback(toArray(packet.data));\n }\n encodePacket(packet, false, (encoded) => {\n if (!TEXT_ENCODER) {\n TEXT_ENCODER = new TextEncoder();\n }\n callback(TEXT_ENCODER.encode(encoded));\n });\n}\nexport { encodePacket };\n","// imported from https://github.com/socketio/base64-arraybuffer\nconst chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nexport const encode = (arraybuffer) => {\n let bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nexport const decode = (base64) => {\n let bufferLength = base64.length * 0.75, len = base64.length, i, 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 const arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 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};\n","import { ERROR_PACKET, PACKET_TYPES_REVERSE, } from \"./commons.js\";\nimport { decode } from \"./contrib/base64-arraybuffer.js\";\nconst withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nexport const decodePacket = (encodedPacket, binaryType) => {\n if (typeof encodedPacket !== \"string\") {\n return {\n type: \"message\",\n data: mapBinary(encodedPacket, binaryType),\n };\n }\n const type = encodedPacket.charAt(0);\n if (type === \"b\") {\n return {\n type: \"message\",\n data: decodeBase64Packet(encodedPacket.substring(1), binaryType),\n };\n }\n const packetType = PACKET_TYPES_REVERSE[type];\n if (!packetType) {\n return ERROR_PACKET;\n }\n return encodedPacket.length > 1\n ? {\n type: PACKET_TYPES_REVERSE[type],\n data: encodedPacket.substring(1),\n }\n : {\n type: PACKET_TYPES_REVERSE[type],\n };\n};\nconst decodeBase64Packet = (data, binaryType) => {\n if (withNativeArrayBuffer) {\n const decoded = decode(data);\n return mapBinary(decoded, binaryType);\n }\n else {\n return { base64: true, data }; // fallback for old browsers\n }\n};\nconst mapBinary = (data, binaryType) => {\n switch (binaryType) {\n case \"blob\":\n if (data instanceof Blob) {\n // from WebSocket + binaryType \"blob\"\n return data;\n }\n else {\n // from HTTP long-polling or WebTransport\n return new Blob([data]);\n }\n case \"arraybuffer\":\n default:\n if (data instanceof ArrayBuffer) {\n // from HTTP long-polling (base64) or WebSocket + binaryType \"arraybuffer\"\n return data;\n }\n else {\n // from WebTransport (Uint8Array)\n return data.buffer;\n }\n }\n};\n","import { encodePacket, encodePacketToBinary } from \"./encodePacket.js\";\nimport { decodePacket } from \"./decodePacket.js\";\nimport { ERROR_PACKET, } from \"./commons.js\";\nconst SEPARATOR = String.fromCharCode(30); // see https://en.wikipedia.org/wiki/Delimiter#ASCII_delimited_text\nconst encodePayload = (packets, callback) => {\n // some packets may be added to the array while encoding, so the initial length must be saved\n const length = packets.length;\n const encodedPackets = new Array(length);\n let count = 0;\n packets.forEach((packet, i) => {\n // force base64 encoding for binary packets\n encodePacket(packet, false, (encodedPacket) => {\n encodedPackets[i] = encodedPacket;\n if (++count === length) {\n callback(encodedPackets.join(SEPARATOR));\n }\n });\n });\n};\nconst decodePayload = (encodedPayload, binaryType) => {\n const encodedPackets = encodedPayload.split(SEPARATOR);\n const packets = [];\n for (let i = 0; i < encodedPackets.length; i++) {\n const decodedPacket = decodePacket(encodedPackets[i], binaryType);\n packets.push(decodedPacket);\n if (decodedPacket.type === \"error\") {\n break;\n }\n }\n return packets;\n};\nexport function createPacketEncoderStream() {\n return new TransformStream({\n transform(packet, controller) {\n encodePacketToBinary(packet, (encodedPacket) => {\n const payloadLength = encodedPacket.length;\n let header;\n // inspired by the WebSocket format: https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_servers#decoding_payload_length\n if (payloadLength < 126) {\n header = new Uint8Array(1);\n new DataView(header.buffer).setUint8(0, payloadLength);\n }\n else if (payloadLength < 65536) {\n header = new Uint8Array(3);\n const view = new DataView(header.buffer);\n view.setUint8(0, 126);\n view.setUint16(1, payloadLength);\n }\n else {\n header = new Uint8Array(9);\n const view = new DataView(header.buffer);\n view.setUint8(0, 127);\n view.setBigUint64(1, BigInt(payloadLength));\n }\n // first bit indicates whether the payload is plain text (0) or binary (1)\n if (packet.data && typeof packet.data !== \"string\") {\n header[0] |= 0x80;\n }\n controller.enqueue(header);\n controller.enqueue(encodedPacket);\n });\n },\n });\n}\nlet TEXT_DECODER;\nfunction totalLength(chunks) {\n return chunks.reduce((acc, chunk) => acc + chunk.length, 0);\n}\nfunction concatChunks(chunks, size) {\n if (chunks[0].length === size) {\n return chunks.shift();\n }\n const buffer = new Uint8Array(size);\n let j = 0;\n for (let i = 0; i < size; i++) {\n buffer[i] = chunks[0][j++];\n if (j === chunks[0].length) {\n chunks.shift();\n j = 0;\n }\n }\n if (chunks.length && j < chunks[0].length) {\n chunks[0] = chunks[0].slice(j);\n }\n return buffer;\n}\nexport function createPacketDecoderStream(maxPayload, binaryType) {\n if (!TEXT_DECODER) {\n TEXT_DECODER = new TextDecoder();\n }\n const chunks = [];\n let state = 0 /* State.READ_HEADER */;\n let expectedLength = -1;\n let isBinary = false;\n return new TransformStream({\n transform(chunk, controller) {\n chunks.push(chunk);\n while (true) {\n if (state === 0 /* State.READ_HEADER */) {\n if (totalLength(chunks) < 1) {\n break;\n }\n const header = concatChunks(chunks, 1);\n isBinary = (header[0] & 0x80) === 0x80;\n expectedLength = header[0] & 0x7f;\n if (expectedLength < 126) {\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (expectedLength === 126) {\n state = 1 /* State.READ_EXTENDED_LENGTH_16 */;\n }\n else {\n state = 2 /* State.READ_EXTENDED_LENGTH_64 */;\n }\n }\n else if (state === 1 /* State.READ_EXTENDED_LENGTH_16 */) {\n if (totalLength(chunks) < 2) {\n break;\n }\n const headerArray = concatChunks(chunks, 2);\n expectedLength = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length).getUint16(0);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else if (state === 2 /* State.READ_EXTENDED_LENGTH_64 */) {\n if (totalLength(chunks) < 8) {\n break;\n }\n const headerArray = concatChunks(chunks, 8);\n const view = new DataView(headerArray.buffer, headerArray.byteOffset, headerArray.length);\n const n = view.getUint32(0);\n if (n > Math.pow(2, 53 - 32) - 1) {\n // the maximum safe integer in JavaScript is 2^53 - 1\n controller.enqueue(ERROR_PACKET);\n break;\n }\n expectedLength = n * Math.pow(2, 32) + view.getUint32(4);\n state = 3 /* State.READ_PAYLOAD */;\n }\n else {\n if (totalLength(chunks) < expectedLength) {\n break;\n }\n const data = concatChunks(chunks, expectedLength);\n controller.enqueue(decodePacket(isBinary ? data : TEXT_DECODER.decode(data), binaryType));\n state = 0 /* State.READ_HEADER */;\n }\n if (expectedLength === 0 || expectedLength > maxPayload) {\n controller.enqueue(ERROR_PACKET);\n break;\n }\n }\n },\n });\n}\nexport const protocol = 4;\nexport { encodePacket, encodePayload, decodePacket, decodePayload, };\n","/**\n * Initialize a new `Emitter`.\n *\n * @api public\n */\n\nexport function Emitter(obj) {\n if (obj) return mixin(obj);\n}\n\n/**\n * Mixin the emitter properties.\n *\n * @param {Object} obj\n * @return {Object}\n * @api private\n */\n\nfunction mixin(obj) {\n for (var key in Emitter.prototype) {\n obj[key] = Emitter.prototype[key];\n }\n return obj;\n}\n\n/**\n * Listen on the given `event` with `fn`.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.on =\nEmitter.prototype.addEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n (this._callbacks['$' + event] = this._callbacks['$' + event] || [])\n .push(fn);\n return this;\n};\n\n/**\n * Adds an `event` listener that will be invoked a single\n * time then automatically removed.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.once = function(event, fn){\n function on() {\n this.off(event, on);\n fn.apply(this, arguments);\n }\n\n on.fn = fn;\n this.on(event, on);\n return this;\n};\n\n/**\n * Remove the given callback for `event` or all\n * registered callbacks.\n *\n * @param {String} event\n * @param {Function} fn\n * @return {Emitter}\n * @api public\n */\n\nEmitter.prototype.off =\nEmitter.prototype.removeListener =\nEmitter.prototype.removeAllListeners =\nEmitter.prototype.removeEventListener = function(event, fn){\n this._callbacks = this._callbacks || {};\n\n // all\n if (0 == arguments.length) {\n this._callbacks = {};\n return this;\n }\n\n // specific event\n var callbacks = this._callbacks['$' + event];\n if (!callbacks) return this;\n\n // remove all handlers\n if (1 == arguments.length) {\n delete this._callbacks['$' + event];\n return this;\n }\n\n // remove specific handler\n var cb;\n for (var i = 0; i < callbacks.length; i++) {\n cb = callbacks[i];\n if (cb === fn || cb.fn === fn) {\n callbacks.splice(i, 1);\n break;\n }\n }\n\n // Remove event specific arrays for event types that no\n // one is subscribed for to avoid memory leak.\n if (callbacks.length === 0) {\n delete this._callbacks['$' + event];\n }\n\n return this;\n};\n\n/**\n * Emit `event` with the given args.\n *\n * @param {String} event\n * @param {Mixed} ...\n * @return {Emitter}\n */\n\nEmitter.prototype.emit = function(event){\n this._callbacks = this._callbacks || {};\n\n var args = new Array(arguments.length - 1)\n , callbacks = this._callbacks['$' + event];\n\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n\n if (callbacks) {\n callbacks = callbacks.slice(0);\n for (var i = 0, len = callbacks.length; i < len; ++i) {\n callbacks[i].apply(this, args);\n }\n }\n\n return this;\n};\n\n// alias used for reserved events (protected method)\nEmitter.prototype.emitReserved = Emitter.prototype.emit;\n\n/**\n * Return array of callbacks for `event`.\n *\n * @param {String} event\n * @return {Array}\n * @api public\n */\n\nEmitter.prototype.listeners = function(event){\n this._callbacks = this._callbacks || {};\n return this._callbacks['$' + event] || [];\n};\n\n/**\n * Check if this emitter has `event` handlers.\n *\n * @param {String} event\n * @return {Boolean}\n * @api public\n */\n\nEmitter.prototype.hasListeners = function(event){\n return !! this.listeners(event).length;\n};\n","export const nextTick = (() => {\n const isPromiseAvailable = typeof Promise === \"function\" && typeof Promise.resolve === \"function\";\n if (isPromiseAvailable) {\n return (cb) => Promise.resolve().then(cb);\n }\n else {\n return (cb, setTimeoutFn) => setTimeoutFn(cb, 0);\n }\n})();\nexport const globalThisShim = (() => {\n if (typeof self !== \"undefined\") {\n return self;\n }\n else if (typeof window !== \"undefined\") {\n return window;\n }\n else {\n return Function(\"return this\")();\n }\n})();\nexport const defaultBinaryType = \"arraybuffer\";\nexport function createCookieJar() { }\n","import { globalThisShim as globalThis } from \"./globals.node.js\";\nexport function pick(obj, ...attr) {\n return attr.reduce((acc, k) => {\n if (obj.hasOwnProperty(k)) {\n acc[k] = obj[k];\n }\n return acc;\n }, {});\n}\n// Keep a reference to the real timeout functions so they can be used when overridden\nconst NATIVE_SET_TIMEOUT = globalThis.setTimeout;\nconst NATIVE_CLEAR_TIMEOUT = globalThis.clearTimeout;\nexport function installTimerFunctions(obj, opts) {\n if (opts.useNativeTimers) {\n obj.setTimeoutFn = NATIVE_SET_TIMEOUT.bind(globalThis);\n obj.clearTimeoutFn = NATIVE_CLEAR_TIMEOUT.bind(globalThis);\n }\n else {\n obj.setTimeoutFn = globalThis.setTimeout.bind(globalThis);\n obj.clearTimeoutFn = globalThis.clearTimeout.bind(globalThis);\n }\n}\n// base64 encoded buffers are about 33% bigger (https://en.wikipedia.org/wiki/Base64)\nconst BASE64_OVERHEAD = 1.33;\n// we could also have used `new Blob([obj]).size`, but it isn't supported in IE9\nexport function byteLength(obj) {\n if (typeof obj === \"string\") {\n return utf8Length(obj);\n }\n // arraybuffer or blob\n return Math.ceil((obj.byteLength || obj.size) * BASE64_OVERHEAD);\n}\nfunction utf8Length(str) {\n let c = 0, length = 0;\n for (let i = 0, l = str.length; i < l; i++) {\n c = str.charCodeAt(i);\n if (c < 0x80) {\n length += 1;\n }\n else if (c < 0x800) {\n length += 2;\n }\n else if (c < 0xd800 || c >= 0xe000) {\n length += 3;\n }\n else {\n i++;\n length += 4;\n }\n }\n return length;\n}\n/**\n * Generates a random 8-characters string.\n */\nexport function randomString() {\n return (Date.now().toString(36).substring(3) +\n Math.random().toString(36).substring(2, 5));\n}\n","import { decodePacket } from \"engine.io-parser\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions } from \"./util.js\";\nimport { encode } from \"./contrib/parseqs.js\";\nexport class TransportError extends Error {\n constructor(reason, description, context) {\n super(reason);\n this.description = description;\n this.context = context;\n this.type = \"TransportError\";\n }\n}\nexport class Transport extends Emitter {\n /**\n * Transport abstract constructor.\n *\n * @param {Object} opts - options\n * @protected\n */\n constructor(opts) {\n super();\n this.writable = false;\n installTimerFunctions(this, opts);\n this.opts = opts;\n this.query = opts.query;\n this.socket = opts.socket;\n this.supportsBinary = !opts.forceBase64;\n }\n /**\n * Emits an error.\n *\n * @param {String} reason\n * @param description\n * @param context - the error context\n * @return {Transport} for chaining\n * @protected\n */\n onError(reason, description, context) {\n super.emitReserved(\"error\", new TransportError(reason, description, context));\n return this;\n }\n /**\n * Opens the transport.\n */\n open() {\n this.readyState = \"opening\";\n this.doOpen();\n return this;\n }\n /**\n * Closes the transport.\n */\n close() {\n if (this.readyState === \"opening\" || this.readyState === \"open\") {\n this.doClose();\n this.onClose();\n }\n return this;\n }\n /**\n * Sends multiple packets.\n *\n * @param {Array} packets\n */\n send(packets) {\n if (this.readyState === \"open\") {\n this.write(packets);\n }\n else {\n // this might happen if the transport was silently closed in the beforeunload event handler\n }\n }\n /**\n * Called upon open\n *\n * @protected\n */\n onOpen() {\n this.readyState = \"open\";\n this.writable = true;\n super.emitReserved(\"open\");\n }\n /**\n * Called with data.\n *\n * @param {String} data\n * @protected\n */\n onData(data) {\n const packet = decodePacket(data, this.socket.binaryType);\n this.onPacket(packet);\n }\n /**\n * Called with a decoded packet.\n *\n * @protected\n */\n onPacket(packet) {\n super.emitReserved(\"packet\", packet);\n }\n /**\n * Called upon close.\n *\n * @protected\n */\n onClose(details) {\n this.readyState = \"closed\";\n super.emitReserved(\"close\", details);\n }\n /**\n * Pauses the transport, in order not to lose packets during an upgrade.\n *\n * @param onPause\n */\n pause(onPause) { }\n createUri(schema, query = {}) {\n return (schema +\n \"://\" +\n this._hostname() +\n this._port() +\n this.opts.path +\n this._query(query));\n }\n _hostname() {\n const hostname = this.opts.hostname;\n return hostname.indexOf(\":\") === -1 ? hostname : \"[\" + hostname + \"]\";\n }\n _port() {\n if (this.opts.port &&\n ((this.opts.secure && Number(this.opts.port !== 443)) ||\n (!this.opts.secure && Number(this.opts.port) !== 80))) {\n return \":\" + this.opts.port;\n }\n else {\n return \"\";\n }\n }\n _query(query) {\n const encodedQuery = encode(query);\n return encodedQuery.length ? \"?\" + encodedQuery : \"\";\n }\n}\n","// imported from https://github.com/galkn/querystring\n/**\n * Compiles a querystring\n * Returns string representation of the object\n *\n * @param {Object}\n * @api private\n */\nexport function encode(obj) {\n let str = '';\n for (let i in obj) {\n if (obj.hasOwnProperty(i)) {\n if (str.length)\n str += '&';\n str += encodeURIComponent(i) + '=' + encodeURIComponent(obj[i]);\n }\n }\n return str;\n}\n/**\n * Parses a simple querystring into an object\n *\n * @param {String} qs\n * @api private\n */\nexport function decode(qs) {\n let qry = {};\n let pairs = qs.split('&');\n for (let i = 0, l = pairs.length; i < l; i++) {\n let pair = pairs[i].split('=');\n qry[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1]);\n }\n return qry;\n}\n","import { Transport } from \"../transport.js\";\nimport { randomString } from \"../util.js\";\nimport { encodePayload, decodePayload } from \"engine.io-parser\";\nexport class Polling extends Transport {\n constructor() {\n super(...arguments);\n this._polling = false;\n }\n get name() {\n return \"polling\";\n }\n /**\n * Opens the socket (triggers polling). We write a PING message to determine\n * when the transport is open.\n *\n * @protected\n */\n doOpen() {\n this._poll();\n }\n /**\n * Pauses polling.\n *\n * @param {Function} onPause - callback upon buffers are flushed and transport is paused\n * @package\n */\n pause(onPause) {\n this.readyState = \"pausing\";\n const pause = () => {\n this.readyState = \"paused\";\n onPause();\n };\n if (this._polling || !this.writable) {\n let total = 0;\n if (this._polling) {\n total++;\n this.once(\"pollComplete\", function () {\n --total || pause();\n });\n }\n if (!this.writable) {\n total++;\n this.once(\"drain\", function () {\n --total || pause();\n });\n }\n }\n else {\n pause();\n }\n }\n /**\n * Starts polling cycle.\n *\n * @private\n */\n _poll() {\n this._polling = true;\n this.doPoll();\n this.emitReserved(\"poll\");\n }\n /**\n * Overloads onData to detect payloads.\n *\n * @protected\n */\n onData(data) {\n const callback = (packet) => {\n // if its the first message we consider the transport open\n if (\"opening\" === this.readyState && packet.type === \"open\") {\n this.onOpen();\n }\n // if its a close packet, we close the ongoing requests\n if (\"close\" === packet.type) {\n this.onClose({ description: \"transport closed by the server\" });\n return false;\n }\n // otherwise bypass onData and handle the message\n this.onPacket(packet);\n };\n // decode payload\n decodePayload(data, this.socket.binaryType).forEach(callback);\n // if an event did not trigger closing\n if (\"closed\" !== this.readyState) {\n // if we got data we're not polling\n this._polling = false;\n this.emitReserved(\"pollComplete\");\n if (\"open\" === this.readyState) {\n this._poll();\n }\n else {\n }\n }\n }\n /**\n * For polling, send a close packet.\n *\n * @protected\n */\n doClose() {\n const close = () => {\n this.write([{ type: \"close\" }]);\n };\n if (\"open\" === this.readyState) {\n close();\n }\n else {\n // in case we're trying to close while\n // handshaking is in progress (GH-164)\n this.once(\"open\", close);\n }\n }\n /**\n * Writes a packets payload.\n *\n * @param {Array} packets - data packets\n * @protected\n */\n write(packets) {\n this.writable = false;\n encodePayload(packets, (data) => {\n this.doWrite(data, () => {\n this.writable = true;\n this.emitReserved(\"drain\");\n });\n });\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"https\" : \"http\";\n const query = this.query || {};\n // cache busting is forced\n if (false !== this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n if (!this.supportsBinary && !query.sid) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\n","// imported from https://github.com/component/has-cors\nlet value = false;\ntry {\n value = typeof XMLHttpRequest !== 'undefined' &&\n 'withCredentials' in new XMLHttpRequest();\n}\ncatch (err) {\n // if XMLHttp support is disabled in IE then it will throw\n // when trying to create\n}\nexport const hasCORS = value;\n","import { Polling } from \"./polling.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { installTimerFunctions, pick } from \"../util.js\";\nimport { globalThisShim as globalThis } from \"../globals.node.js\";\nimport { hasCORS } from \"../contrib/has-cors.js\";\nfunction empty() { }\nexport class BaseXHR extends Polling {\n /**\n * XHR Polling constructor.\n *\n * @param {Object} opts\n * @package\n */\n constructor(opts) {\n super(opts);\n if (typeof location !== \"undefined\") {\n const isSSL = \"https:\" === location.protocol;\n let port = location.port;\n // some user agents have empty `location.port`\n if (!port) {\n port = isSSL ? \"443\" : \"80\";\n }\n this.xd =\n (typeof location !== \"undefined\" &&\n opts.hostname !== location.hostname) ||\n port !== opts.port;\n }\n }\n /**\n * Sends data.\n *\n * @param {String} data to send.\n * @param {Function} called upon flush.\n * @private\n */\n doWrite(data, fn) {\n const req = this.request({\n method: \"POST\",\n data: data,\n });\n req.on(\"success\", fn);\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr post error\", xhrStatus, context);\n });\n }\n /**\n * Starts a poll cycle.\n *\n * @private\n */\n doPoll() {\n const req = this.request();\n req.on(\"data\", this.onData.bind(this));\n req.on(\"error\", (xhrStatus, context) => {\n this.onError(\"xhr poll error\", xhrStatus, context);\n });\n this.pollXhr = req;\n }\n}\nexport class Request extends Emitter {\n /**\n * Request constructor\n *\n * @param {Object} options\n * @package\n */\n constructor(createRequest, uri, opts) {\n super();\n this.createRequest = createRequest;\n installTimerFunctions(this, opts);\n this._opts = opts;\n this._method = opts.method || \"GET\";\n this._uri = uri;\n this._data = undefined !== opts.data ? opts.data : null;\n this._create();\n }\n /**\n * Creates the XHR object and sends the request.\n *\n * @private\n */\n _create() {\n var _a;\n const opts = pick(this._opts, \"agent\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"autoUnref\");\n opts.xdomain = !!this._opts.xd;\n const xhr = (this._xhr = this.createRequest(opts));\n try {\n xhr.open(this._method, this._uri, true);\n try {\n if (this._opts.extraHeaders) {\n // @ts-ignore\n xhr.setDisableHeaderCheck && xhr.setDisableHeaderCheck(true);\n for (let i in this._opts.extraHeaders) {\n if (this._opts.extraHeaders.hasOwnProperty(i)) {\n xhr.setRequestHeader(i, this._opts.extraHeaders[i]);\n }\n }\n }\n }\n catch (e) { }\n if (\"POST\" === this._method) {\n try {\n xhr.setRequestHeader(\"Content-type\", \"text/plain;charset=UTF-8\");\n }\n catch (e) { }\n }\n try {\n xhr.setRequestHeader(\"Accept\", \"*/*\");\n }\n catch (e) { }\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.addCookies(xhr);\n // ie6 check\n if (\"withCredentials\" in xhr) {\n xhr.withCredentials = this._opts.withCredentials;\n }\n if (this._opts.requestTimeout) {\n xhr.timeout = this._opts.requestTimeout;\n }\n xhr.onreadystatechange = () => {\n var _a;\n if (xhr.readyState === 3) {\n (_a = this._opts.cookieJar) === null || _a === void 0 ? void 0 : _a.parseCookies(\n // @ts-ignore\n xhr.getResponseHeader(\"set-cookie\"));\n }\n if (4 !== xhr.readyState)\n return;\n if (200 === xhr.status || 1223 === xhr.status) {\n this._onLoad();\n }\n else {\n // make sure the `error` event handler that's user-set\n // does not throw in the same tick and gets caught here\n this.setTimeoutFn(() => {\n this._onError(typeof xhr.status === \"number\" ? xhr.status : 0);\n }, 0);\n }\n };\n xhr.send(this._data);\n }\n catch (e) {\n // Need to defer since .create() is called directly from the constructor\n // and thus the 'error' event can only be only bound *after* this exception\n // occurs. Therefore, also, we cannot throw here at all.\n this.setTimeoutFn(() => {\n this._onError(e);\n }, 0);\n return;\n }\n if (typeof document !== \"undefined\") {\n this._index = Request.requestsCount++;\n Request.requests[this._index] = this;\n }\n }\n /**\n * Called upon error.\n *\n * @private\n */\n _onError(err) {\n this.emitReserved(\"error\", err, this._xhr);\n this._cleanup(true);\n }\n /**\n * Cleans up house.\n *\n * @private\n */\n _cleanup(fromError) {\n if (\"undefined\" === typeof this._xhr || null === this._xhr) {\n return;\n }\n this._xhr.onreadystatechange = empty;\n if (fromError) {\n try {\n this._xhr.abort();\n }\n catch (e) { }\n }\n if (typeof document !== \"undefined\") {\n delete Request.requests[this._index];\n }\n this._xhr = null;\n }\n /**\n * Called upon load.\n *\n * @private\n */\n _onLoad() {\n const data = this._xhr.responseText;\n if (data !== null) {\n this.emitReserved(\"data\", data);\n this.emitReserved(\"success\");\n this._cleanup();\n }\n }\n /**\n * Aborts the request.\n *\n * @package\n */\n abort() {\n this._cleanup();\n }\n}\nRequest.requestsCount = 0;\nRequest.requests = {};\n/**\n * Aborts pending requests when unloading the window. This is needed to prevent\n * memory leaks (e.g. when using IE) and to ensure that no spurious error is\n * emitted.\n */\nif (typeof document !== \"undefined\") {\n // @ts-ignore\n if (typeof attachEvent === \"function\") {\n // @ts-ignore\n attachEvent(\"onunload\", unloadHandler);\n }\n else if (typeof addEventListener === \"function\") {\n const terminationEvent = \"onpagehide\" in globalThis ? \"pagehide\" : \"unload\";\n addEventListener(terminationEvent, unloadHandler, false);\n }\n}\nfunction unloadHandler() {\n for (let i in Request.requests) {\n if (Request.requests.hasOwnProperty(i)) {\n Request.requests[i].abort();\n }\n }\n}\nconst hasXHR2 = (function () {\n const xhr = newRequest({\n xdomain: false,\n });\n return xhr && xhr.responseType !== null;\n})();\n/**\n * HTTP long-polling based on the built-in `XMLHttpRequest` object.\n *\n * Usage: browser\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\nexport class XHR extends BaseXHR {\n constructor(opts) {\n super(opts);\n const forceBase64 = opts && opts.forceBase64;\n this.supportsBinary = hasXHR2 && !forceBase64;\n }\n request(opts = {}) {\n Object.assign(opts, { xd: this.xd }, this.opts);\n return new Request(newRequest, this.uri(), opts);\n }\n}\nfunction newRequest(opts) {\n const xdomain = opts.xdomain;\n // XMLHttpRequest can be disabled on IE\n try {\n if (\"undefined\" !== typeof XMLHttpRequest && (!xdomain || hasCORS)) {\n return new XMLHttpRequest();\n }\n }\n catch (e) { }\n if (!xdomain) {\n try {\n return new globalThis[[\"Active\"].concat(\"Object\").join(\"X\")](\"Microsoft.XMLHTTP\");\n }\n catch (e) { }\n }\n}\n","import { Transport } from \"../transport.js\";\nimport { pick, randomString } from \"../util.js\";\nimport { encodePacket } from \"engine.io-parser\";\nimport { globalThisShim as globalThis, nextTick } from \"../globals.node.js\";\n// detect ReactNative environment\nconst isReactNative = typeof navigator !== \"undefined\" &&\n typeof navigator.product === \"string\" &&\n navigator.product.toLowerCase() === \"reactnative\";\nexport class BaseWS extends Transport {\n get name() {\n return \"websocket\";\n }\n doOpen() {\n const uri = this.uri();\n const protocols = this.opts.protocols;\n // React Native only supports the 'headers' option, and will print a warning if anything else is passed\n const opts = isReactNative\n ? {}\n : pick(this.opts, \"agent\", \"perMessageDeflate\", \"pfx\", \"key\", \"passphrase\", \"cert\", \"ca\", \"ciphers\", \"rejectUnauthorized\", \"localAddress\", \"protocolVersion\", \"origin\", \"maxPayload\", \"family\", \"checkServerIdentity\");\n if (this.opts.extraHeaders) {\n opts.headers = this.opts.extraHeaders;\n }\n try {\n this.ws = this.createSocket(uri, protocols, opts);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this.ws.binaryType = this.socket.binaryType;\n this.addEventListeners();\n }\n /**\n * Adds event listeners to the socket\n *\n * @private\n */\n addEventListeners() {\n this.ws.onopen = () => {\n if (this.opts.autoUnref) {\n this.ws._socket.unref();\n }\n this.onOpen();\n };\n this.ws.onclose = (closeEvent) => this.onClose({\n description: \"websocket connection closed\",\n context: closeEvent,\n });\n this.ws.onmessage = (ev) => this.onData(ev.data);\n this.ws.onerror = (e) => this.onError(\"websocket error\", e);\n }\n write(packets) {\n this.writable = false;\n // encodePacket efficient as it uses WS framing\n // no need for encodePayload\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n encodePacket(packet, this.supportsBinary, (data) => {\n // Sometimes the websocket has already been closed but the browser didn't\n // have a chance of informing us about it yet, in that case send will\n // throw an error\n try {\n this.doWrite(packet, data);\n }\n catch (e) {\n }\n if (lastPacket) {\n // fake drain\n // defer to next tick to allow Socket to clear writeBuffer\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n if (typeof this.ws !== \"undefined\") {\n this.ws.close();\n this.ws = null;\n }\n }\n /**\n * Generates uri for connection.\n *\n * @private\n */\n uri() {\n const schema = this.opts.secure ? \"wss\" : \"ws\";\n const query = this.query || {};\n // append timestamp to URI\n if (this.opts.timestampRequests) {\n query[this.opts.timestampParam] = randomString();\n }\n // communicate binary support capabilities\n if (!this.supportsBinary) {\n query.b64 = 1;\n }\n return this.createUri(schema, query);\n }\n}\nconst WebSocketCtor = globalThis.WebSocket || globalThis.MozWebSocket;\n/**\n * WebSocket transport based on the built-in `WebSocket` object.\n *\n * Usage: browser, Node.js (since v21), Deno, Bun\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket\n * @see https://caniuse.com/mdn-api_websocket\n * @see https://nodejs.org/api/globals.html#websocket\n */\nexport class WS extends BaseWS {\n createSocket(uri, protocols, opts) {\n return !isReactNative\n ? protocols\n ? new WebSocketCtor(uri, protocols)\n : new WebSocketCtor(uri)\n : new WebSocketCtor(uri, protocols, opts);\n }\n doWrite(_packet, data) {\n this.ws.send(data);\n }\n}\n","import { XHR } from \"./polling-xhr.node.js\";\nimport { WS } from \"./websocket.node.js\";\nimport { WT } from \"./webtransport.js\";\nexport const transports = {\n websocket: WS,\n webtransport: WT,\n polling: XHR,\n};\n","import { Transport } from \"../transport.js\";\nimport { nextTick } from \"../globals.node.js\";\nimport { createPacketDecoderStream, createPacketEncoderStream, } from \"engine.io-parser\";\n/**\n * WebTransport transport based on the built-in `WebTransport` object.\n *\n * Usage: browser, Node.js (with the `@fails-components/webtransport` package)\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebTransport\n * @see https://caniuse.com/webtransport\n */\nexport class WT extends Transport {\n get name() {\n return \"webtransport\";\n }\n doOpen() {\n try {\n // @ts-ignore\n this._transport = new WebTransport(this.createUri(\"https\"), this.opts.transportOptions[this.name]);\n }\n catch (err) {\n return this.emitReserved(\"error\", err);\n }\n this._transport.closed\n .then(() => {\n this.onClose();\n })\n .catch((err) => {\n this.onError(\"webtransport error\", err);\n });\n // note: we could have used async/await, but that would require some additional polyfills\n this._transport.ready.then(() => {\n this._transport.createBidirectionalStream().then((stream) => {\n const decoderStream = createPacketDecoderStream(Number.MAX_SAFE_INTEGER, this.socket.binaryType);\n const reader = stream.readable.pipeThrough(decoderStream).getReader();\n const encoderStream = createPacketEncoderStream();\n encoderStream.readable.pipeTo(stream.writable);\n this._writer = encoderStream.writable.getWriter();\n const read = () => {\n reader\n .read()\n .then(({ done, value }) => {\n if (done) {\n return;\n }\n this.onPacket(value);\n read();\n })\n .catch((err) => {\n });\n };\n read();\n const packet = { type: \"open\" };\n if (this.query.sid) {\n packet.data = `{\"sid\":\"${this.query.sid}\"}`;\n }\n this._writer.write(packet).then(() => this.onOpen());\n });\n });\n }\n write(packets) {\n this.writable = false;\n for (let i = 0; i < packets.length; i++) {\n const packet = packets[i];\n const lastPacket = i === packets.length - 1;\n this._writer.write(packet).then(() => {\n if (lastPacket) {\n nextTick(() => {\n this.writable = true;\n this.emitReserved(\"drain\");\n }, this.setTimeoutFn);\n }\n });\n }\n }\n doClose() {\n var _a;\n (_a = this._transport) === null || _a === void 0 ? void 0 : _a.close();\n }\n}\n","// imported from https://github.com/galkn/parseuri\n/**\n * Parses a URI\n *\n * Note: we could also have used the built-in URL object, but it isn't supported on all platforms.\n *\n * See:\n * - https://developer.mozilla.org/en-US/docs/Web/API/URL\n * - https://caniuse.com/url\n * - https://www.rfc-editor.org/rfc/rfc3986#appendix-B\n *\n * History of the parse() method:\n * - first commit: https://github.com/socketio/socket.io-client/commit/4ee1d5d94b3906a9c052b459f1a818b15f38f91c\n * - export into its own module: https://github.com/socketio/engine.io-client/commit/de2c561e4564efeb78f1bdb1ba39ef81b2822cb3\n * - reimport: https://github.com/socketio/engine.io-client/commit/df32277c3f6d622eec5ed09f493cae3f3391d242\n *\n * @author Steven Levithan <stevenlevithan.com> (MIT license)\n * @api private\n */\nconst re = /^(?:(?![^:@\\/?#]+:[^:@\\/]*@)(http|https|ws|wss):\\/\\/)?((?:(([^:@\\/?#]*)(?::([^:@\\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\\/?#]*)(?::(\\d*))?)(((\\/(?:[^?#](?![^?#\\/]*\\.[^?#\\/.]+(?:[?#]|$)))*\\/?)?([^?#\\/]*))(?:\\?([^#]*))?(?:#(.*))?)/;\nconst parts = [\n 'source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'\n];\nexport function parse(str) {\n if (str.length > 8000) {\n throw \"URI too long\";\n }\n const src = str, b = str.indexOf('['), e = str.indexOf(']');\n if (b != -1 && e != -1) {\n str = str.substring(0, b) + str.substring(b, e).replace(/:/g, ';') + str.substring(e, str.length);\n }\n let m = re.exec(str || ''), uri = {}, i = 14;\n while (i--) {\n uri[parts[i]] = m[i] || '';\n }\n if (b != -1 && e != -1) {\n uri.source = src;\n uri.host = uri.host.substring(1, uri.host.length - 1).replace(/;/g, ':');\n uri.authority = uri.authority.replace('[', '').replace(']', '').replace(/;/g, ':');\n uri.ipv6uri = true;\n }\n uri.pathNames = pathNames(uri, uri['path']);\n uri.queryKey = queryKey(uri, uri['query']);\n return uri;\n}\nfunction pathNames(obj, path) {\n const regx = /\\/{2,9}/g, names = path.replace(regx, \"/\").split(\"/\");\n if (path.slice(0, 1) == '/' || path.length === 0) {\n names.splice(0, 1);\n }\n if (path.slice(-1) == '/') {\n names.splice(names.length - 1, 1);\n }\n return names;\n}\nfunction queryKey(uri, query) {\n const data = {};\n query.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function ($0, $1, $2) {\n if ($1) {\n data[$1] = $2;\n }\n });\n return data;\n}\n","import { transports as DEFAULT_TRANSPORTS } from \"./transports/index.js\";\nimport { installTimerFunctions, byteLength } from \"./util.js\";\nimport { decode } from \"./contrib/parseqs.js\";\nimport { parse } from \"./contrib/parseuri.js\";\nimport { Emitter } from \"@socket.io/component-emitter\";\nimport { protocol } from \"engine.io-parser\";\nimport { createCookieJar, defaultBinaryType, nextTick, } from \"./globals.node.js\";\nconst withEventListeners = typeof addEventListener === \"function\" &&\n typeof removeEventListener === \"function\";\nconst OFFLINE_EVENT_LISTENERS = [];\nif (withEventListeners) {\n // within a ServiceWorker, any event handler for the 'offline' event must be added on the initial evaluation of the\n // script, so we create one single event listener here which will forward the event to the socket instances\n addEventListener(\"offline\", () => {\n OFFLINE_EVENT_LISTENERS.forEach((listener) => listener());\n }, false);\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes without upgrade mechanism, which means that it will keep the first low-level transport that\n * successfully establishes the connection.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithoutUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithoutUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithUpgrade\n * @see Socket\n */\nexport class SocketWithoutUpgrade extends Emitter {\n /**\n * Socket constructor.\n *\n * @param {String|Object} uri - uri or options\n * @param {Object} opts - options\n */\n constructor(uri, opts) {\n super();\n this.binaryType = defaultBinaryType;\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n this._pingInterval = -1;\n this._pingTimeout = -1;\n this._maxPayload = -1;\n /**\n * The expiration timestamp of the {@link _pingTimeoutTimer} object is tracked, in case the timer is throttled and the\n * callback is not fired on time. This can happen for example when a laptop is suspended or when a phone is locked.\n */\n this._pingTimeoutTime = Infinity;\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = null;\n }\n if (uri) {\n const parsedUri = parse(uri);\n opts.hostname = parsedUri.host;\n opts.secure =\n parsedUri.protocol === \"https\" || parsedUri.protocol === \"wss\";\n opts.port = parsedUri.port;\n if (parsedUri.query)\n opts.query = parsedUri.query;\n }\n else if (opts.host) {\n opts.hostname = parse(opts.host).host;\n }\n installTimerFunctions(this, opts);\n this.secure =\n null != opts.secure\n ? opts.secure\n : typeof location !== \"undefined\" && \"https:\" === location.protocol;\n if (opts.hostname && !opts.port) {\n // if no port is specified manually, use the protocol default\n opts.port = this.secure ? \"443\" : \"80\";\n }\n this.hostname =\n opts.hostname ||\n (typeof location !== \"undefined\" ? location.hostname : \"localhost\");\n this.port =\n opts.port ||\n (typeof location !== \"undefined\" && location.port\n ? location.port\n : this.secure\n ? \"443\"\n : \"80\");\n this.transports = [];\n this._transportsByName = {};\n opts.transports.forEach((t) => {\n const transportName = t.prototype.name;\n this.transports.push(transportName);\n this._transportsByName[transportName] = t;\n });\n this.opts = Object.assign({\n path: \"/engine.io\",\n agent: false,\n withCredentials: false,\n upgrade: true,\n timestampParam: \"t\",\n rememberUpgrade: false,\n addTrailingSlash: true,\n rejectUnauthorized: true,\n perMessageDeflate: {\n threshold: 1024,\n },\n transportOptions: {},\n closeOnBeforeunload: false,\n }, opts);\n this.opts.path =\n this.opts.path.replace(/\\/$/, \"\") +\n (this.opts.addTrailingSlash ? \"/\" : \"\");\n if (typeof this.opts.query === \"string\") {\n this.opts.query = decode(this.opts.query);\n }\n if (withEventListeners) {\n if (this.opts.closeOnBeforeunload) {\n // Firefox closes the connection when the \"beforeunload\" event is emitted but not Chrome. This event listener\n // ensures every browser behaves the same (no \"disconnect\" event at the Socket.IO level when the page is\n // closed/reloaded)\n this._beforeunloadEventListener = () => {\n if (this.transport) {\n // silently close the transport\n this.transport.removeAllListeners();\n this.transport.close();\n }\n };\n addEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this.hostname !== \"localhost\") {\n this._offlineEventListener = () => {\n this._onClose(\"transport close\", {\n description: \"network connection lost\",\n });\n };\n OFFLINE_EVENT_LISTENERS.push(this._offlineEventListener);\n }\n }\n if (this.opts.withCredentials) {\n this._cookieJar = createCookieJar();\n }\n this._open();\n }\n /**\n * Creates transport of the given type.\n *\n * @param {String} name - transport name\n * @return {Transport}\n * @private\n */\n createTransport(name) {\n const query = Object.assign({}, this.opts.query);\n // append engine.io protocol identifier\n query.EIO = protocol;\n // transport name\n query.transport = name;\n // session id if we already have one\n if (this.id)\n query.sid = this.id;\n const opts = Object.assign({}, this.opts, {\n query,\n socket: this,\n hostname: this.hostname,\n secure: this.secure,\n port: this.port,\n }, this.opts.transportOptions[name]);\n return new this._transportsByName[name](opts);\n }\n /**\n * Initializes transport to use and starts probe.\n *\n * @private\n */\n _open() {\n if (this.transports.length === 0) {\n // Emit error on next tick so it can be listened to\n this.setTimeoutFn(() => {\n this.emitReserved(\"error\", \"No transports available\");\n }, 0);\n return;\n }\n const transportName = this.opts.rememberUpgrade &&\n SocketWithoutUpgrade.priorWebsocketSuccess &&\n this.transports.indexOf(\"websocket\") !== -1\n ? \"websocket\"\n : this.transports[0];\n this.readyState = \"opening\";\n const transport = this.createTransport(transportName);\n transport.open();\n this.setTransport(transport);\n }\n /**\n * Sets the current transport. Disables the existing one (if any).\n *\n * @private\n */\n setTransport(transport) {\n if (this.transport) {\n this.transport.removeAllListeners();\n }\n // set up transport\n this.transport = transport;\n // set up transport listeners\n transport\n .on(\"drain\", this._onDrain.bind(this))\n .on(\"packet\", this._onPacket.bind(this))\n .on(\"error\", this._onError.bind(this))\n .on(\"close\", (reason) => this._onClose(\"transport close\", reason));\n }\n /**\n * Called when connection is deemed open.\n *\n * @private\n */\n onOpen() {\n this.readyState = \"open\";\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === this.transport.name;\n this.emitReserved(\"open\");\n this.flush();\n }\n /**\n * Handles a packet.\n *\n * @private\n */\n _onPacket(packet) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n this.emitReserved(\"packet\", packet);\n // Socket is live - any packet counts\n this.emitReserved(\"heartbeat\");\n switch (packet.type) {\n case \"open\":\n this.onHandshake(JSON.parse(packet.data));\n break;\n case \"ping\":\n this._sendPacket(\"pong\");\n this.emitReserved(\"ping\");\n this.emitReserved(\"pong\");\n this._resetPingTimeout();\n break;\n case \"error\":\n const err = new Error(\"server error\");\n // @ts-ignore\n err.code = packet.data;\n this._onError(err);\n break;\n case \"message\":\n this.emitReserved(\"data\", packet.data);\n this.emitReserved(\"message\", packet.data);\n break;\n }\n }\n else {\n }\n }\n /**\n * Called upon handshake completion.\n *\n * @param {Object} data - handshake obj\n * @private\n */\n onHandshake(data) {\n this.emitReserved(\"handshake\", data);\n this.id = data.sid;\n this.transport.query.sid = data.sid;\n this._pingInterval = data.pingInterval;\n this._pingTimeout = data.pingTimeout;\n this._maxPayload = data.maxPayload;\n this.onOpen();\n // In case open handler closes socket\n if (\"closed\" === this.readyState)\n return;\n this._resetPingTimeout();\n }\n /**\n * Sets and resets ping timeout timer based on server pings.\n *\n * @private\n */\n _resetPingTimeout() {\n this.clearTimeoutFn(this._pingTimeoutTimer);\n const delay = this._pingInterval + this._pingTimeout;\n this._pingTimeoutTime = Date.now() + delay;\n this._pingTimeoutTimer = this.setTimeoutFn(() => {\n this._onClose(\"ping timeout\");\n }, delay);\n if (this.opts.autoUnref) {\n this._pingTimeoutTimer.unref();\n }\n }\n /**\n * Called on `drain` event\n *\n * @private\n */\n _onDrain() {\n this.writeBuffer.splice(0, this._prevBufferLen);\n // setting prevBufferLen = 0 is very important\n // for example, when upgrading, upgrade packet is sent over,\n // and a nonzero prevBufferLen could cause problems on `drain`\n this._prevBufferLen = 0;\n if (0 === this.writeBuffer.length) {\n this.emitReserved(\"drain\");\n }\n else {\n this.flush();\n }\n }\n /**\n * Flush write buffers.\n *\n * @private\n */\n flush() {\n if (\"closed\" !== this.readyState &&\n this.transport.writable &&\n !this.upgrading &&\n this.writeBuffer.length) {\n const packets = this._getWritablePackets();\n this.transport.send(packets);\n // keep track of current length of writeBuffer\n // splice writeBuffer and callbackBuffer on `drain`\n this._prevBufferLen = packets.length;\n this.emitReserved(\"flush\");\n }\n }\n /**\n * Ensure the encoded size of the writeBuffer is below the maxPayload value sent by the server (only for HTTP\n * long-polling)\n *\n * @private\n */\n _getWritablePackets() {\n const shouldCheckPayloadSize = this._maxPayload &&\n this.transport.name === \"polling\" &&\n this.writeBuffer.length > 1;\n if (!shouldCheckPayloadSize) {\n return this.writeBuffer;\n }\n let payloadSize = 1; // first packet type\n for (let i = 0; i < this.writeBuffer.length; i++) {\n const data = this.writeBuffer[i].data;\n if (data) {\n payloadSize += byteLength(data);\n }\n if (i > 0 && payloadSize > this._maxPayload) {\n return this.writeBuffer.slice(0, i);\n }\n payloadSize += 2; // separator + packet type\n }\n return this.writeBuffer;\n }\n /**\n * Checks whether the heartbeat timer has expired but the socket has not yet been notified.\n *\n * Note: this method is private for now because it does not really fit the WebSocket API, but if we put it in the\n * `write()` method then the message would not be buffered by the Socket.IO client.\n *\n * @return {boolean}\n * @private\n */\n /* private */ _hasPingExpired() {\n if (!this._pingTimeoutTime)\n return true;\n const hasExpired = Date.now() > this._pingTimeoutTime;\n if (hasExpired) {\n this._pingTimeoutTime = 0;\n nextTick(() => {\n this._onClose(\"ping timeout\");\n }, this.setTimeoutFn);\n }\n return hasExpired;\n }\n /**\n * Sends a message.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n write(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a message. Alias of {@link Socket#write}.\n *\n * @param {String} msg - message.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @return {Socket} for chaining.\n */\n send(msg, options, fn) {\n this._sendPacket(\"message\", msg, options, fn);\n return this;\n }\n /**\n * Sends a packet.\n *\n * @param {String} type: packet type.\n * @param {String} data.\n * @param {Object} options.\n * @param {Function} fn - callback function.\n * @private\n */\n _sendPacket(type, data, options, fn) {\n if (\"function\" === typeof data) {\n fn = data;\n data = undefined;\n }\n if (\"function\" === typeof options) {\n fn = options;\n options = null;\n }\n if (\"closing\" === this.readyState || \"closed\" === this.readyState) {\n return;\n }\n options = options || {};\n options.compress = false !== options.compress;\n const packet = {\n type: type,\n data: data,\n options: options,\n };\n this.emitReserved(\"packetCreate\", packet);\n this.writeBuffer.push(packet);\n if (fn)\n this.once(\"flush\", fn);\n this.flush();\n }\n /**\n * Closes the connection.\n */\n close() {\n const close = () => {\n this._onClose(\"forced close\");\n this.transport.close();\n };\n const cleanupAndClose = () => {\n this.off(\"upgrade\", cleanupAndClose);\n this.off(\"upgradeError\", cleanupAndClose);\n close();\n };\n const waitForUpgrade = () => {\n // wait for upgrade to finish since we can't send packets while pausing a transport\n this.once(\"upgrade\", cleanupAndClose);\n this.once(\"upgradeError\", cleanupAndClose);\n };\n if (\"opening\" === this.readyState || \"open\" === this.readyState) {\n this.readyState = \"closing\";\n if (this.writeBuffer.length) {\n this.once(\"drain\", () => {\n if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n });\n }\n else if (this.upgrading) {\n waitForUpgrade();\n }\n else {\n close();\n }\n }\n return this;\n }\n /**\n * Called upon transport error\n *\n * @private\n */\n _onError(err) {\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n if (this.opts.tryAllTransports &&\n this.transports.length > 1 &&\n this.readyState === \"opening\") {\n this.transports.shift();\n return this._open();\n }\n this.emitReserved(\"error\", err);\n this._onClose(\"transport error\", err);\n }\n /**\n * Called upon transport close.\n *\n * @private\n */\n _onClose(reason, description) {\n if (\"opening\" === this.readyState ||\n \"open\" === this.readyState ||\n \"closing\" === this.readyState) {\n // clear timers\n this.clearTimeoutFn(this._pingTimeoutTimer);\n // stop event from firing again for transport\n this.transport.removeAllListeners(\"close\");\n // ensure transport won't stay open\n this.transport.close();\n // ignore further transport communication\n this.transport.removeAllListeners();\n if (withEventListeners) {\n if (this._beforeunloadEventListener) {\n removeEventListener(\"beforeunload\", this._beforeunloadEventListener, false);\n }\n if (this._offlineEventListener) {\n const i = OFFLINE_EVENT_LISTENERS.indexOf(this._offlineEventListener);\n if (i !== -1) {\n OFFLINE_EVENT_LISTENERS.splice(i, 1);\n }\n }\n }\n // set ready state\n this.readyState = \"closed\";\n // clear session id\n this.id = null;\n // emit close event\n this.emitReserved(\"close\", reason, description);\n // clean buffers after, so users can still\n // grab the buffers on `close` event\n this.writeBuffer = [];\n this._prevBufferLen = 0;\n }\n }\n}\nSocketWithoutUpgrade.protocol = protocol;\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * In order to allow tree-shaking, there are no transports included, that's why the `transports` option is mandatory.\n *\n * @example\n * import { SocketWithUpgrade, WebSocket } from \"engine.io-client\";\n *\n * const socket = new SocketWithUpgrade({\n * transports: [WebSocket]\n * });\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see Socket\n */\nexport class SocketWithUpgrade extends SocketWithoutUpgrade {\n constructor() {\n super(...arguments);\n this._upgrades = [];\n }\n onOpen() {\n super.onOpen();\n if (\"open\" === this.readyState && this.opts.upgrade) {\n for (let i = 0; i < this._upgrades.length; i++) {\n this._probe(this._upgrades[i]);\n }\n }\n }\n /**\n * Probes a transport.\n *\n * @param {String} name - transport name\n * @private\n */\n _probe(name) {\n let transport = this.createTransport(name);\n let failed = false;\n SocketWithoutUpgrade.priorWebsocketSuccess = false;\n const onTransportOpen = () => {\n if (failed)\n return;\n transport.send([{ type: \"ping\", data: \"probe\" }]);\n transport.once(\"packet\", (msg) => {\n if (failed)\n return;\n if (\"pong\" === msg.type && \"probe\" === msg.data) {\n this.upgrading = true;\n this.emitReserved(\"upgrading\", transport);\n if (!transport)\n return;\n SocketWithoutUpgrade.priorWebsocketSuccess =\n \"websocket\" === transport.name;\n this.transport.pause(() => {\n if (failed)\n return;\n if (\"closed\" === this.readyState)\n return;\n cleanup();\n this.setTransport(transport);\n transport.send([{ type: \"upgrade\" }]);\n this.emitReserved(\"upgrade\", transport);\n transport = null;\n this.upgrading = false;\n this.flush();\n });\n }\n else {\n const err = new Error(\"probe error\");\n // @ts-ignore\n err.transport = transport.name;\n this.emitReserved(\"upgradeError\", err);\n }\n });\n };\n function freezeTransport() {\n if (failed)\n return;\n // Any callback called by transport should be ignored since now\n failed = true;\n cleanup();\n transport.close();\n transport = null;\n }\n // Handle any error that happens while probing\n const onerror = (err) => {\n const error = new Error(\"probe error: \" + err);\n // @ts-ignore\n error.transport = transport.name;\n freezeTransport();\n this.emitReserved(\"upgradeError\", error);\n };\n function onTransportClose() {\n onerror(\"transport closed\");\n }\n // When the socket is closed while we're probing\n function onclose() {\n onerror(\"socket closed\");\n }\n // When the socket is upgraded while we're probing\n function onupgrade(to) {\n if (transport && to.name !== transport.name) {\n freezeTransport();\n }\n }\n // Remove all listeners on the transport and on self\n const cleanup = () => {\n transport.removeListener(\"open\", onTransportOpen);\n transport.removeListener(\"error\", onerror);\n transport.removeListener(\"close\", onTransportClose);\n this.off(\"close\", onclose);\n this.off(\"upgrading\", onupgrade);\n };\n transport.once(\"open\", onTransportOpen);\n transport.once(\"error\", onerror);\n transport.once(\"close\", onTransportClose);\n this.once(\"close\", onclose);\n this.once(\"upgrading\", onupgrade);\n if (this._upgrades.indexOf(\"webtransport\") !== -1 &&\n name !== \"webtransport\") {\n // favor WebTransport\n this.setTimeoutFn(() => {\n if (!failed) {\n transport.open();\n }\n }, 200);\n }\n else {\n transport.open();\n }\n }\n onHandshake(data) {\n this._upgrades = this._filterUpgrades(data.upgrades);\n super.onHandshake(data);\n }\n /**\n * Filters upgrades, returning only those matching client transports.\n *\n * @param {Array} upgrades - server upgrades\n * @private\n */\n _filterUpgrades(upgrades) {\n const filteredUpgrades = [];\n for (let i = 0; i < upgrades.length; i++) {\n if (~this.transports.indexOf(upgrades[i]))\n filteredUpgrades.push(upgrades[i]);\n }\n return filteredUpgrades;\n }\n}\n/**\n * This class provides a WebSocket-like interface to connect to an Engine.IO server. The connection will be established\n * with one of the available low-level transports, like HTTP long-polling, WebSocket or WebTransport.\n *\n * This class comes with an upgrade mechanism, which means that once the connection is established with the first\n * low-level transport, it will try to upgrade to a better transport.\n *\n * @example\n * import { Socket } from \"engine.io-client\";\n *\n * const socket = new Socket();\n *\n * socket.on(\"open\", () => {\n * socket.send(\"hello\");\n * });\n *\n * @see SocketWithoutUpgrade\n * @see SocketWithUpgrade\n */\nexport class Socket extends SocketWithUpgrade {\n constructor(uri, opts = {}) {\n const o = typeof uri === \"object\" ? uri : opts;\n if (!o.transports ||\n (o.transports && typeof o.transports[0] === \"string\")) {\n o.transports = (o.transports || [\"polling\", \"websocket\", \"webtransport\"])\n .map((transportName) => DEFAULT_TRANSPORTS[transportName])\n .filter((t) => !!t);\n }\n super(uri, o);\n }\n}\n","const withNativeArrayBuffer = typeof ArrayBuffer === \"function\";\nconst isView = (obj) => {\n return typeof ArrayBuffer.isView === \"function\"\n ? ArrayBuffer.isView(obj)\n : obj.buffer instanceof ArrayBuffer;\n};\nconst toString = Object.prototype.toString;\nconst withNativeBlob = typeof Blob === \"function\" ||\n (typeof Blob !== \"undefined\" &&\n toString.call(Blob) === \"[object BlobConstructor]\");\nconst withNativeFile = typeof File === \"function\" ||\n (typeof File !== \"undefined\" &&\n toString.call(File) === \"[object FileConstructor]\");\n/**\n * Returns true if obj is a Buffer, an ArrayBuffer, a Blob or a File.\n *\n * @private\n */\nexport function isBinary(obj) {\n return ((withNativeArrayBuffer && (obj instanceof ArrayBuffer || isView(obj))) ||\n (withNativeBlob && obj instanceof Blob) ||\n (withNativeFile && obj instanceof File));\n}\nexport function hasBinary(obj, toJSON) {\n if (!obj || typeof obj !== \"object\") {\n return false;\n }\n if (Array.isArray(obj)) {\n for (let i = 0, l = obj.length; i < l; i++) {\n if (hasBinary(obj[i])) {\n return true;\n }\n }\n return false;\n }\n if (isBinary(obj)) {\n return true;\n }\n if (obj.toJSON &&\n typeof obj.toJSON === \"function\" &&\n arguments.length === 1) {\n return hasBinary(obj.toJSON(), true);\n }\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key) && hasBinary(obj[key])) {\n return true;\n }\n }\n return false;\n}\n","import { isBinary } from \"./is-binary.js\";\n/**\n * Replaces every Buffer | ArrayBuffer | Blob | File in packet with a numbered placeholder.\n *\n * @param {Object} packet - socket.io event packet\n * @return {Object} with deconstructed packet and list of buffers\n * @public\n */\nexport function deconstructPacket(packet) {\n const buffers = [];\n const packetData = packet.data;\n const pack = packet;\n pack.data = _deconstructPacket(packetData, buffers);\n pack.attachments = buffers.length; // number of binary 'attachments'\n return { packet: pack, buffers: buffers };\n}\nfunction _deconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (isBinary(data)) {\n const placeholder = { _placeholder: true, num: buffers.length };\n buffers.push(data);\n return placeholder;\n }\n else if (Array.isArray(data)) {\n const newData = new Array(data.length);\n for (let i = 0; i < data.length; i++) {\n newData[i] = _deconstructPacket(data[i], buffers);\n }\n return newData;\n }\n else if (typeof data === \"object\" && !(data instanceof Date)) {\n const newData = {};\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n newData[key] = _deconstructPacket(data[key], buffers);\n }\n }\n return newData;\n }\n return data;\n}\n/**\n * Reconstructs a binary packet from its placeholder packet and buffers\n *\n * @param {Object} packet - event packet with placeholders\n * @param {Array} buffers - binary buffers to put in placeholder positions\n * @return {Object} reconstructed packet\n * @public\n */\nexport function reconstructPacket(packet, buffers) {\n packet.data = _reconstructPacket(packet.data, buffers);\n delete packet.attachments; // no longer useful\n return packet;\n}\nfunction _reconstructPacket(data, buffers) {\n if (!data)\n return data;\n if (data && data._placeholder === true) {\n const isIndexValid = typeof data.num === \"number\" &&\n data.num >= 0 &&\n data.num < buffers.length;\n if (isIndexValid) {\n return buffers[data.num]; // appropriate buffer (should be natural order anyway)\n }\n else {\n throw new Error(\"illegal attachments\");\n }\n }\n else if (Array.isArray(data)) {\n for (let i = 0; i < data.length; i++) {\n data[i] = _reconstructPacket(data[i], buffers);\n }\n }\n else if (typeof data === \"object\") {\n for (const key in data) {\n if (Object.prototype.hasOwnProperty.call(data, key)) {\n data[key] = _reconstructPacket(data[key], buffers);\n }\n }\n }\n return data;\n}\n","import { Emitter } from \"@socket.io/component-emitter\";\nimport { deconstructPacket, reconstructPacket } from \"./binary.js\";\nimport { isBinary, hasBinary } from \"./is-binary.js\";\n/**\n * These strings must not be used as event names, as they have a special meaning.\n */\nconst RESERVED_EVENTS = [\n \"connect\",\n \"connect_error\",\n \"disconnect\",\n \"disconnecting\",\n \"newListener\",\n \"removeListener\", // used by the Node.js EventEmitter\n];\n/**\n * Protocol version.\n *\n * @public\n */\nexport const protocol = 5;\nexport var PacketType;\n(function (PacketType) {\n PacketType[PacketType[\"CONNECT\"] = 0] = \"CONNECT\";\n PacketType[PacketType[\"DISCONNECT\"] = 1] = \"DISCONNECT\";\n PacketType[PacketType[\"EVENT\"] = 2] = \"EVENT\";\n PacketType[PacketType[\"ACK\"] = 3] = \"ACK\";\n PacketType[PacketType[\"CONNECT_ERROR\"] = 4] = \"CONNECT_ERROR\";\n PacketType[PacketType[\"BINARY_EVENT\"] = 5] = \"BINARY_EVENT\";\n PacketType[PacketType[\"BINARY_ACK\"] = 6] = \"BINARY_ACK\";\n})(PacketType || (PacketType = {}));\n/**\n * A socket.io Encoder instance\n */\nexport class Encoder {\n /**\n * Encoder constructor\n *\n * @param {function} replacer - custom replacer to pass down to JSON.parse\n */\n constructor(replacer) {\n this.replacer = replacer;\n }\n /**\n * Encode a packet as a single string if non-binary, or as a\n * buffer sequence, depending on packet type.\n *\n * @param {Object} obj - packet object\n */\n encode(obj) {\n if (obj.type === PacketType.EVENT || obj.type === PacketType.ACK) {\n if (hasBinary(obj)) {\n return this.encodeAsBinary({\n type: obj.type === PacketType.EVENT\n ? PacketType.BINARY_EVENT\n : PacketType.BINARY_ACK,\n nsp: obj.nsp,\n data: obj.data,\n id: obj.id,\n });\n }\n }\n return [this.encodeAsString(obj)];\n }\n /**\n * Encode packet as string.\n */\n encodeAsString(obj) {\n // first is type\n let str = \"\" + obj.type;\n // attachments if we have them\n if (obj.type === PacketType.BINARY_EVENT ||\n obj.type === PacketType.BINARY_ACK) {\n str += obj.attachments + \"-\";\n }\n // if we have a namespace other than `/`\n // we append it followed by a comma `,`\n if (obj.nsp && \"/\" !== obj.nsp) {\n str += obj.nsp + \",\";\n }\n // immediately followed by the id\n if (null != obj.id) {\n str += obj.id;\n }\n // json data\n if (null != obj.data) {\n str += JSON.stringify(obj.data, this.replacer);\n }\n return str;\n }\n /**\n * Encode packet as 'buffer sequence' by removing blobs, and\n * deconstructing packet into object with placeholders and\n * a list of buffers.\n */\n encodeAsBinary(obj) {\n const deconstruction = deconstructPacket(obj);\n const pack = this.encodeAsString(deconstruction.packet);\n const buffers = deconstruction.buffers;\n buffers.unshift(pack); // add packet info to beginning of data list\n return buffers; // write all the buffers\n }\n}\n// see https://stackoverflow.com/questions/8511281/check-if-a-value-is-an-object-in-javascript\nfunction isObject(value) {\n return Object.prototype.toString.call(value) === \"[object Object]\";\n}\n/**\n * A socket.io Decoder instance\n *\n * @return {Object} decoder\n */\nexport class Decoder extends Emitter {\n /**\n * Decoder constructor\n *\n * @param {function} reviver - custom reviver to pass down to JSON.stringify\n */\n constructor(reviver) {\n super();\n this.reviver = reviver;\n }\n /**\n * Decodes an encoded packet string into packet JSON.\n *\n * @param {String} obj - encoded packet\n */\n add(obj) {\n let packet;\n if (typeof obj === \"string\") {\n if (this.reconstructor) {\n throw new Error(\"got plaintext data when reconstructing a packet\");\n }\n packet = this.decodeString(obj);\n const isBinaryEvent = packet.type === PacketType.BINARY_EVENT;\n if (isBinaryEvent || packet.type === PacketType.BINARY_ACK) {\n packet.type = isBinaryEvent ? PacketType.EVENT : PacketType.ACK;\n // binary packet's json\n this.reconstructor = new BinaryReconstructor(packet);\n // no attachments, labeled binary but no binary data to follow\n if (packet.attachments === 0) {\n super.emitReserved(\"decoded\", packet);\n }\n }\n else {\n // non-binary full packet\n super.emitReserved(\"decoded\", packet);\n }\n }\n else if (isBinary(obj) || obj.base64) {\n // raw binary data\n if (!this.reconstructor) {\n throw new Error(\"got binary data when not reconstructing a packet\");\n }\n else {\n packet = this.reconstructor.takeBinaryData(obj);\n if (packet) {\n // received final buffer\n this.reconstructor = null;\n super.emitReserved(\"decoded\", packet);\n }\n }\n }\n else {\n throw new Error(\"Unknown type: \" + obj);\n }\n }\n /**\n * Decode a packet String (JSON data)\n *\n * @param {String} str\n * @return {Object} packet\n */\n decodeString(str) {\n let i = 0;\n // look up type\n const p = {\n type: Number(str.charAt(0)),\n };\n if (PacketType[p.type] === undefined) {\n throw new Error(\"unknown packet type \" + p.type);\n }\n // look up attachments if type binary\n if (p.type === PacketType.BINARY_EVENT ||\n p.type === PacketType.BINARY_ACK) {\n const start = i + 1;\n while (str.charAt(++i) !== \"-\" && i != str.length) { }\n const buf = str.substring(start, i);\n if (buf != Number(buf) || str.charAt(i) !== \"-\") {\n throw new Error(\"Illegal attachments\");\n }\n p.attachments = Number(buf);\n }\n // look up namespace (if any)\n if (\"/\" === str.charAt(i + 1)) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (\",\" === c)\n break;\n if (i === str.length)\n break;\n }\n p.nsp = str.substring(start, i);\n }\n else {\n p.nsp = \"/\";\n }\n // look up id\n const next = str.charAt(i + 1);\n if (\"\" !== next && Number(next) == next) {\n const start = i + 1;\n while (++i) {\n const c = str.charAt(i);\n if (null == c || Number(c) != c) {\n --i;\n break;\n }\n if (i === str.length)\n break;\n }\n p.id = Number(str.substring(start, i + 1));\n }\n // look up json data\n if (str.charAt(++i)) {\n const payload = this.tryParse(str.substr(i));\n if (Decoder.isPayloadValid(p.type, payload)) {\n p.data = payload;\n }\n else {\n throw new Error(\"invalid payload\");\n }\n }\n return p;\n }\n tryParse(str) {\n try {\n return JSON.parse(str, this.reviver);\n }\n catch (e) {\n return false;\n }\n }\n static isPayloadValid(type, payload) {\n switch (type) {\n case PacketType.CONNECT:\n return isObject(payload);\n case PacketType.DISCONNECT:\n return payload === undefined;\n case PacketType.CONNECT_ERROR:\n return typeof payload === \"string\" || isObject(payload);\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n return (Array.isArray(payload) &&\n (typeof payload[0] === \"number\" ||\n (typeof payload[0] === \"string\" &&\n RESERVED_EVENTS.indexOf(payload[0]) === -1)));\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n return Array.isArray(payload);\n }\n }\n /**\n * Deallocates a parser's resources\n */\n destroy() {\n if (this.reconstructor) {\n this.reconstructor.finishedReconstruction();\n this.reconstructor = null;\n }\n }\n}\n/**\n * A manager of a binary event's 'buffer sequence'. Should\n * be constructed whenever a packet of type BINARY_EVENT is\n * decoded.\n *\n * @param {Object} packet\n * @return {BinaryReconstructor} initialized reconstructor\n */\nclass BinaryReconstructor {\n constructor(packet) {\n this.packet = packet;\n this.buffers = [];\n this.reconPack = packet;\n }\n /**\n * Method to be called when binary data received from connection\n * after a BINARY_EVENT packet.\n *\n * @param {Buffer | ArrayBuffer} binData - the raw binary data received\n * @return {null | Object} returns null if more binary data is expected or\n * a reconstructed packet object if all buffers have been received.\n */\n takeBinaryData(binData) {\n this.buffers.push(binData);\n if (this.buffers.length === this.reconPack.attachments) {\n // done with buffer list\n const packet = reconstructPacket(this.reconPack, this.buffers);\n this.finishedReconstruction();\n return packet;\n }\n return null;\n }\n /**\n * Cleans up binary packet reconstruction variables.\n */\n finishedReconstruction() {\n this.reconPack = null;\n this.buffers = [];\n }\n}\n","export function on(obj, ev, fn) {\n obj.on(ev, fn);\n return function subDestroy() {\n obj.off(ev, fn);\n };\n}\n","import { PacketType } from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\n/**\n * Internal events.\n * These events can't be emitted by the user.\n */\nconst RESERVED_EVENTS = Object.freeze({\n connect: 1,\n connect_error: 1,\n disconnect: 1,\n disconnecting: 1,\n // EventEmitter reserved events: https://nodejs.org/api/events.html#events_event_newlistener\n newListener: 1,\n removeListener: 1,\n});\n/**\n * A Socket is the fundamental class for interacting with the server.\n *\n * A Socket belongs to a certain Namespace (by default /) and uses an underlying {@link Manager} to communicate.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(\"connected\");\n * });\n *\n * // send an event to the server\n * socket.emit(\"foo\", \"bar\");\n *\n * socket.on(\"foobar\", () => {\n * // an event was received from the server\n * });\n *\n * // upon disconnection\n * socket.on(\"disconnect\", (reason) => {\n * console.log(`disconnected due to ${reason}`);\n * });\n */\nexport class Socket extends Emitter {\n /**\n * `Socket` constructor.\n */\n constructor(io, nsp, opts) {\n super();\n /**\n * Whether the socket is currently connected to the server.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.connected); // true\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.connected); // false\n * });\n */\n this.connected = false;\n /**\n * Whether the connection state was recovered after a temporary disconnection. In that case, any missed packets will\n * be transmitted by the server.\n */\n this.recovered = false;\n /**\n * Buffer for packets received before the CONNECT packet\n */\n this.receiveBuffer = [];\n /**\n * Buffer for packets that will be sent once the socket is connected\n */\n this.sendBuffer = [];\n /**\n * The queue of packets to be sent with retry in case of failure.\n *\n * Packets are sent one by one, each waiting for the server acknowledgement, in order to guarantee the delivery order.\n * @private\n */\n this._queue = [];\n /**\n * A sequence to generate the ID of the {@link QueuedPacket}.\n * @private\n */\n this._queueSeq = 0;\n this.ids = 0;\n /**\n * A map containing acknowledgement handlers.\n *\n * The `withError` attribute is used to differentiate handlers that accept an error as first argument:\n *\n * - `socket.emit(\"test\", (err, value) => { ... })` with `ackTimeout` option\n * - `socket.timeout(5000).emit(\"test\", (err, value) => { ... })`\n * - `const value = await socket.emitWithAck(\"test\")`\n *\n * From those that don't:\n *\n * - `socket.emit(\"test\", (value) => { ... });`\n *\n * In the first case, the handlers will be called with an error when:\n *\n * - the timeout is reached\n * - the socket gets disconnected\n *\n * In the second case, the handlers will be simply discarded upon disconnection, since the client will never receive\n * an acknowledgement from the server.\n *\n * @private\n */\n this.acks = {};\n this.flags = {};\n this.io = io;\n this.nsp = nsp;\n if (opts && opts.auth) {\n this.auth = opts.auth;\n }\n this._opts = Object.assign({}, opts);\n if (this.io._autoConnect)\n this.open();\n }\n /**\n * Whether the socket is currently disconnected\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"connect\", () => {\n * console.log(socket.disconnected); // false\n * });\n *\n * socket.on(\"disconnect\", () => {\n * console.log(socket.disconnected); // true\n * });\n */\n get disconnected() {\n return !this.connected;\n }\n /**\n * Subscribe to open, close and packet events\n *\n * @private\n */\n subEvents() {\n if (this.subs)\n return;\n const io = this.io;\n this.subs = [\n on(io, \"open\", this.onopen.bind(this)),\n on(io, \"packet\", this.onpacket.bind(this)),\n on(io, \"error\", this.onerror.bind(this)),\n on(io, \"close\", this.onclose.bind(this)),\n ];\n }\n /**\n * Whether the Socket will try to reconnect when its Manager connects or reconnects.\n *\n * @example\n * const socket = io();\n *\n * console.log(socket.active); // true\n *\n * socket.on(\"disconnect\", (reason) => {\n * if (reason === \"io server disconnect\") {\n * // the disconnection was initiated by the server, you need to manually reconnect\n * console.log(socket.active); // false\n * }\n * // else the socket will automatically try to reconnect\n * console.log(socket.active); // true\n * });\n */\n get active() {\n return !!this.subs;\n }\n /**\n * \"Opens\" the socket.\n *\n * @example\n * const socket = io({\n * autoConnect: false\n * });\n *\n * socket.connect();\n */\n connect() {\n if (this.connected)\n return this;\n this.subEvents();\n if (!this.io[\"_reconnecting\"])\n this.io.open(); // ensure open\n if (\"open\" === this.io._readyState)\n this.onopen();\n return this;\n }\n /**\n * Alias for {@link connect()}.\n */\n open() {\n return this.connect();\n }\n /**\n * Sends a `message` event.\n *\n * This method mimics the WebSocket.send() method.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebSocket/send\n *\n * @example\n * socket.send(\"hello\");\n *\n * // this is equivalent to\n * socket.emit(\"message\", \"hello\");\n *\n * @return self\n */\n send(...args) {\n args.unshift(\"message\");\n this.emit.apply(this, args);\n return this;\n }\n /**\n * Override `emit`.\n * If the event is in `events`, it's emitted normally.\n *\n * @example\n * socket.emit(\"hello\", \"world\");\n *\n * // all serializable datastructures are supported (no need to call JSON.stringify)\n * socket.emit(\"hello\", 1, \"2\", { 3: [\"4\"], 5: Uint8Array.from([6]) });\n *\n * // with an acknowledgement from the server\n * socket.emit(\"hello\", \"world\", (val) => {\n * // ...\n * });\n *\n * @return self\n */\n emit(ev, ...args) {\n var _a, _b, _c;\n if (RESERVED_EVENTS.hasOwnProperty(ev)) {\n throw new Error('\"' + ev.toString() + '\" is a reserved event name');\n }\n args.unshift(ev);\n if (this._opts.retries && !this.flags.fromQueue && !this.flags.volatile) {\n this._addToQueue(args);\n return this;\n }\n const packet = {\n type: PacketType.EVENT,\n data: args,\n };\n packet.options = {};\n packet.options.compress = this.flags.compress !== false;\n // event ack callback\n if (\"function\" === typeof args[args.length - 1]) {\n const id = this.ids++;\n const ack = args.pop();\n this._registerAckCallback(id, ack);\n packet.id = id;\n }\n const isTransportWritable = (_b = (_a = this.io.engine) === null || _a === void 0 ? void 0 : _a.transport) === null || _b === void 0 ? void 0 : _b.writable;\n const isConnected = this.connected && !((_c = this.io.engine) === null || _c === void 0 ? void 0 : _c._hasPingExpired());\n const discardPacket = this.flags.volatile && !isTransportWritable;\n if (discardPacket) {\n }\n else if (isConnected) {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n }\n else {\n this.sendBuffer.push(packet);\n }\n this.flags = {};\n return this;\n }\n /**\n * @private\n */\n _registerAckCallback(id, ack) {\n var _a;\n const timeout = (_a = this.flags.timeout) !== null && _a !== void 0 ? _a : this._opts.ackTimeout;\n if (timeout === undefined) {\n this.acks[id] = ack;\n return;\n }\n // @ts-ignore\n const timer = this.io.setTimeoutFn(() => {\n delete this.acks[id];\n for (let i = 0; i < this.sendBuffer.length; i++) {\n if (this.sendBuffer[i].id === id) {\n this.sendBuffer.splice(i, 1);\n }\n }\n ack.call(this, new Error(\"operation has timed out\"));\n }, timeout);\n const fn = (...args) => {\n // @ts-ignore\n this.io.clearTimeoutFn(timer);\n ack.apply(this, args);\n };\n fn.withError = true;\n this.acks[id] = fn;\n }\n /**\n * Emits an event and waits for an acknowledgement\n *\n * @example\n * // without timeout\n * const response = await socket.emitWithAck(\"hello\", \"world\");\n *\n * // with a specific timeout\n * try {\n * const response = await socket.timeout(1000).emitWithAck(\"hello\", \"world\");\n * } catch (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n *\n * @return a Promise that will be fulfilled when the server acknowledges the event\n */\n emitWithAck(ev, ...args) {\n return new Promise((resolve, reject) => {\n const fn = (arg1, arg2) => {\n return arg1 ? reject(arg1) : resolve(arg2);\n };\n fn.withError = true;\n args.push(fn);\n this.emit(ev, ...args);\n });\n }\n /**\n * Add the packet to the queue.\n * @param args\n * @private\n */\n _addToQueue(args) {\n let ack;\n if (typeof args[args.length - 1] === \"function\") {\n ack = args.pop();\n }\n const packet = {\n id: this._queueSeq++,\n tryCount: 0,\n pending: false,\n args,\n flags: Object.assign({ fromQueue: true }, this.flags),\n };\n args.push((err, ...responseArgs) => {\n if (packet !== this._queue[0]) {\n // the packet has already been acknowledged\n return;\n }\n const hasError = err !== null;\n if (hasError) {\n if (packet.tryCount > this._opts.retries) {\n this._queue.shift();\n if (ack) {\n ack(err);\n }\n }\n }\n else {\n this._queue.shift();\n if (ack) {\n ack(null, ...responseArgs);\n }\n }\n packet.pending = false;\n return this._drainQueue();\n });\n this._queue.push(packet);\n this._drainQueue();\n }\n /**\n * Send the first packet of the queue, and wait for an acknowledgement from the server.\n * @param force - whether to resend a packet that has not been acknowledged yet\n *\n * @private\n */\n _drainQueue(force = false) {\n if (!this.connected || this._queue.length === 0) {\n return;\n }\n const packet = this._queue[0];\n if (packet.pending && !force) {\n return;\n }\n packet.pending = true;\n packet.tryCount++;\n this.flags = packet.flags;\n this.emit.apply(this, packet.args);\n }\n /**\n * Sends a packet.\n *\n * @param packet\n * @private\n */\n packet(packet) {\n packet.nsp = this.nsp;\n this.io._packet(packet);\n }\n /**\n * Called upon engine `open`.\n *\n * @private\n */\n onopen() {\n if (typeof this.auth == \"function\") {\n this.auth((data) => {\n this._sendConnectPacket(data);\n });\n }\n else {\n this._sendConnectPacket(this.auth);\n }\n }\n /**\n * Sends a CONNECT packet to initiate the Socket.IO session.\n *\n * @param data\n * @private\n */\n _sendConnectPacket(data) {\n this.packet({\n type: PacketType.CONNECT,\n data: this._pid\n ? Object.assign({ pid: this._pid, offset: this._lastOffset }, data)\n : data,\n });\n }\n /**\n * Called upon engine or manager `error`.\n *\n * @param err\n * @private\n */\n onerror(err) {\n if (!this.connected) {\n this.emitReserved(\"connect_error\", err);\n }\n }\n /**\n * Called upon engine `close`.\n *\n * @param reason\n * @param description\n * @private\n */\n onclose(reason, description) {\n this.connected = false;\n delete this.id;\n this.emitReserved(\"disconnect\", reason, description);\n this._clearAcks();\n }\n /**\n * Clears the acknowledgement handlers upon disconnection, since the client will never receive an acknowledgement from\n * the server.\n *\n * @private\n */\n _clearAcks() {\n Object.keys(this.acks).forEach((id) => {\n const isBuffered = this.sendBuffer.some((packet) => String(packet.id) === id);\n if (!isBuffered) {\n // note: handlers that do not accept an error as first argument are ignored here\n const ack = this.acks[id];\n delete this.acks[id];\n if (ack.withError) {\n ack.call(this, new Error(\"socket has been disconnected\"));\n }\n }\n });\n }\n /**\n * Called with socket packet.\n *\n * @param packet\n * @private\n */\n onpacket(packet) {\n const sameNamespace = packet.nsp === this.nsp;\n if (!sameNamespace)\n return;\n switch (packet.type) {\n case PacketType.CONNECT:\n if (packet.data && packet.data.sid) {\n this.onconnect(packet.data.sid, packet.data.pid);\n }\n else {\n this.emitReserved(\"connect_error\", new Error(\"It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)\"));\n }\n break;\n case PacketType.EVENT:\n case PacketType.BINARY_EVENT:\n this.onevent(packet);\n break;\n case PacketType.ACK:\n case PacketType.BINARY_ACK:\n this.onack(packet);\n break;\n case PacketType.DISCONNECT:\n this.ondisconnect();\n break;\n case PacketType.CONNECT_ERROR:\n this.destroy();\n const err = new Error(packet.data.message);\n // @ts-ignore\n err.data = packet.data.data;\n this.emitReserved(\"connect_error\", err);\n break;\n }\n }\n /**\n * Called upon a server event.\n *\n * @param packet\n * @private\n */\n onevent(packet) {\n const args = packet.data || [];\n if (null != packet.id) {\n args.push(this.ack(packet.id));\n }\n if (this.connected) {\n this.emitEvent(args);\n }\n else {\n this.receiveBuffer.push(Object.freeze(args));\n }\n }\n emitEvent(args) {\n if (this._anyListeners && this._anyListeners.length) {\n const listeners = this._anyListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, args);\n }\n }\n super.emit.apply(this, args);\n if (this._pid && args.length && typeof args[args.length - 1] === \"string\") {\n this._lastOffset = args[args.length - 1];\n }\n }\n /**\n * Produces an ack callback to emit with an event.\n *\n * @private\n */\n ack(id) {\n const self = this;\n let sent = false;\n return function (...args) {\n // prevent double callbacks\n if (sent)\n return;\n sent = true;\n self.packet({\n type: PacketType.ACK,\n id: id,\n data: args,\n });\n };\n }\n /**\n * Called upon a server acknowledgement.\n *\n * @param packet\n * @private\n */\n onack(packet) {\n const ack = this.acks[packet.id];\n if (typeof ack !== \"function\") {\n return;\n }\n delete this.acks[packet.id];\n // @ts-ignore FIXME ack is incorrectly inferred as 'never'\n if (ack.withError) {\n packet.data.unshift(null);\n }\n // @ts-ignore\n ack.apply(this, packet.data);\n }\n /**\n * Called upon server connect.\n *\n * @private\n */\n onconnect(id, pid) {\n this.id = id;\n this.recovered = pid && this._pid === pid;\n this._pid = pid; // defined only if connection state recovery is enabled\n this.connected = true;\n this.emitBuffered();\n this.emitReserved(\"connect\");\n this._drainQueue(true);\n }\n /**\n * Emit buffered events (received and emitted).\n *\n * @private\n */\n emitBuffered() {\n this.receiveBuffer.forEach((args) => this.emitEvent(args));\n this.receiveBuffer = [];\n this.sendBuffer.forEach((packet) => {\n this.notifyOutgoingListeners(packet);\n this.packet(packet);\n });\n this.sendBuffer = [];\n }\n /**\n * Called upon server disconnect.\n *\n * @private\n */\n ondisconnect() {\n this.destroy();\n this.onclose(\"io server disconnect\");\n }\n /**\n * Called upon forced client/server side disconnections,\n * this method ensures the manager stops tracking us and\n * that reconnections don't get triggered for this.\n *\n * @private\n */\n destroy() {\n if (this.subs) {\n // clean subscriptions to avoid reconnections\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs = undefined;\n }\n this.io[\"_destroy\"](this);\n }\n /**\n * Disconnects the socket manually. In that case, the socket will not try to reconnect.\n *\n * If this is the last active Socket instance of the {@link Manager}, the low-level connection will be closed.\n *\n * @example\n * const socket = io();\n *\n * socket.on(\"disconnect\", (reason) => {\n * // console.log(reason); prints \"io client disconnect\"\n * });\n *\n * socket.disconnect();\n *\n * @return self\n */\n disconnect() {\n if (this.connected) {\n this.packet({ type: PacketType.DISCONNECT });\n }\n // remove socket from pool\n this.destroy();\n if (this.connected) {\n // fire events\n this.onclose(\"io client disconnect\");\n }\n return this;\n }\n /**\n * Alias for {@link disconnect()}.\n *\n * @return self\n */\n close() {\n return this.disconnect();\n }\n /**\n * Sets the compress flag.\n *\n * @example\n * socket.compress(false).emit(\"hello\");\n *\n * @param compress - if `true`, compresses the sending data\n * @return self\n */\n compress(compress) {\n this.flags.compress = compress;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the event message will be dropped when this socket is not\n * ready to send messages.\n *\n * @example\n * socket.volatile.emit(\"hello\"); // the server may or may not receive it\n *\n * @returns self\n */\n get volatile() {\n this.flags.volatile = true;\n return this;\n }\n /**\n * Sets a modifier for a subsequent event emission that the callback will be called with an error when the\n * given number of milliseconds have elapsed without an acknowledgement from the server:\n *\n * @example\n * socket.timeout(5000).emit(\"my-event\", (err) => {\n * if (err) {\n * // the server did not acknowledge the event in the given delay\n * }\n * });\n *\n * @returns self\n */\n timeout(timeout) {\n this.flags.timeout = timeout;\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * @example\n * socket.onAny((event, ...args) => {\n * console.log(`got ${event}`);\n * });\n *\n * @param listener\n */\n onAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * @example\n * socket.prependAny((event, ...args) => {\n * console.log(`got event ${event}`);\n * });\n *\n * @param listener\n */\n prependAny(listener) {\n this._anyListeners = this._anyListeners || [];\n this._anyListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`got event ${event}`);\n * }\n *\n * socket.onAny(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAny(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAny();\n *\n * @param listener\n */\n offAny(listener) {\n if (!this._anyListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAny() {\n return this._anyListeners || [];\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.onAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n onAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.push(listener);\n return this;\n }\n /**\n * Adds a listener that will be fired when any event is emitted. The event name is passed as the first argument to the\n * callback. The listener is added to the beginning of the listeners array.\n *\n * Note: acknowledgements sent to the server are not included.\n *\n * @example\n * socket.prependAnyOutgoing((event, ...args) => {\n * console.log(`sent event ${event}`);\n * });\n *\n * @param listener\n */\n prependAnyOutgoing(listener) {\n this._anyOutgoingListeners = this._anyOutgoingListeners || [];\n this._anyOutgoingListeners.unshift(listener);\n return this;\n }\n /**\n * Removes the listener that will be fired when any event is emitted.\n *\n * @example\n * const catchAllListener = (event, ...args) => {\n * console.log(`sent event ${event}`);\n * }\n *\n * socket.onAnyOutgoing(catchAllListener);\n *\n * // remove a specific listener\n * socket.offAnyOutgoing(catchAllListener);\n *\n * // or remove all listeners\n * socket.offAnyOutgoing();\n *\n * @param [listener] - the catch-all listener (optional)\n */\n offAnyOutgoing(listener) {\n if (!this._anyOutgoingListeners) {\n return this;\n }\n if (listener) {\n const listeners = this._anyOutgoingListeners;\n for (let i = 0; i < listeners.length; i++) {\n if (listener === listeners[i]) {\n listeners.splice(i, 1);\n return this;\n }\n }\n }\n else {\n this._anyOutgoingListeners = [];\n }\n return this;\n }\n /**\n * Returns an array of listeners that are listening for any event that is specified. This array can be manipulated,\n * e.g. to remove listeners.\n */\n listenersAnyOutgoing() {\n return this._anyOutgoingListeners || [];\n }\n /**\n * Notify the listeners for each packet sent\n *\n * @param packet\n *\n * @private\n */\n notifyOutgoingListeners(packet) {\n if (this._anyOutgoingListeners && this._anyOutgoingListeners.length) {\n const listeners = this._anyOutgoingListeners.slice();\n for (const listener of listeners) {\n listener.apply(this, packet.data);\n }\n }\n }\n}\n","/**\n * Initialize backoff timer with `opts`.\n *\n * - `min` initial timeout in milliseconds [100]\n * - `max` max timeout [10000]\n * - `jitter` [0]\n * - `factor` [2]\n *\n * @param {Object} opts\n * @api public\n */\nexport function Backoff(opts) {\n opts = opts || {};\n this.ms = opts.min || 100;\n this.max = opts.max || 10000;\n this.factor = opts.factor || 2;\n this.jitter = opts.jitter > 0 && opts.jitter <= 1 ? opts.jitter : 0;\n this.attempts = 0;\n}\n/**\n * Return the backoff duration.\n *\n * @return {Number}\n * @api public\n */\nBackoff.prototype.duration = function () {\n var ms = this.ms * Math.pow(this.factor, this.attempts++);\n if (this.jitter) {\n var rand = Math.random();\n var deviation = Math.floor(rand * this.jitter * ms);\n ms = (Math.floor(rand * 10) & 1) == 0 ? ms - deviation : ms + deviation;\n }\n return Math.min(ms, this.max) | 0;\n};\n/**\n * Reset the number of attempts.\n *\n * @api public\n */\nBackoff.prototype.reset = function () {\n this.attempts = 0;\n};\n/**\n * Set the minimum duration\n *\n * @api public\n */\nBackoff.prototype.setMin = function (min) {\n this.ms = min;\n};\n/**\n * Set the maximum duration\n *\n * @api public\n */\nBackoff.prototype.setMax = function (max) {\n this.max = max;\n};\n/**\n * Set the jitter\n *\n * @api public\n */\nBackoff.prototype.setJitter = function (jitter) {\n this.jitter = jitter;\n};\n","import { Socket as Engine, installTimerFunctions, nextTick, } from \"engine.io-client\";\nimport { Socket } from \"./socket.js\";\nimport * as parser from \"socket.io-parser\";\nimport { on } from \"./on.js\";\nimport { Backoff } from \"./contrib/backo2.js\";\nimport { Emitter, } from \"@socket.io/component-emitter\";\nexport class Manager extends Emitter {\n constructor(uri, opts) {\n var _a;\n super();\n this.nsps = {};\n this.subs = [];\n if (uri && \"object\" === typeof uri) {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n opts.path = opts.path || \"/socket.io\";\n this.opts = opts;\n installTimerFunctions(this, opts);\n this.reconnection(opts.reconnection !== false);\n this.reconnectionAttempts(opts.reconnectionAttempts || Infinity);\n this.reconnectionDelay(opts.reconnectionDelay || 1000);\n this.reconnectionDelayMax(opts.reconnectionDelayMax || 5000);\n this.randomizationFactor((_a = opts.randomizationFactor) !== null && _a !== void 0 ? _a : 0.5);\n this.backoff = new Backoff({\n min: this.reconnectionDelay(),\n max: this.reconnectionDelayMax(),\n jitter: this.randomizationFactor(),\n });\n this.timeout(null == opts.timeout ? 20000 : opts.timeout);\n this._readyState = \"closed\";\n this.uri = uri;\n const _parser = opts.parser || parser;\n this.encoder = new _parser.Encoder();\n this.decoder = new _parser.Decoder();\n this._autoConnect = opts.autoConnect !== false;\n if (this._autoConnect)\n this.open();\n }\n reconnection(v) {\n if (!arguments.length)\n return this._reconnection;\n this._reconnection = !!v;\n if (!v) {\n this.skipReconnect = true;\n }\n return this;\n }\n reconnectionAttempts(v) {\n if (v === undefined)\n return this._reconnectionAttempts;\n this._reconnectionAttempts = v;\n return this;\n }\n reconnectionDelay(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelay;\n this._reconnectionDelay = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMin(v);\n return this;\n }\n randomizationFactor(v) {\n var _a;\n if (v === undefined)\n return this._randomizationFactor;\n this._randomizationFactor = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setJitter(v);\n return this;\n }\n reconnectionDelayMax(v) {\n var _a;\n if (v === undefined)\n return this._reconnectionDelayMax;\n this._reconnectionDelayMax = v;\n (_a = this.backoff) === null || _a === void 0 ? void 0 : _a.setMax(v);\n return this;\n }\n timeout(v) {\n if (!arguments.length)\n return this._timeout;\n this._timeout = v;\n return this;\n }\n /**\n * Starts trying to reconnect if reconnection is enabled and we have not\n * started reconnecting yet\n *\n * @private\n */\n maybeReconnectOnOpen() {\n // Only try to reconnect if it's the first time we're connecting\n if (!this._reconnecting &&\n this._reconnection &&\n this.backoff.attempts === 0) {\n // keeps reconnection from firing twice for the same reconnection loop\n this.reconnect();\n }\n }\n /**\n * Sets the current transport `socket`.\n *\n * @param {Function} fn - optional, callback\n * @return self\n * @public\n */\n open(fn) {\n if (~this._readyState.indexOf(\"open\"))\n return this;\n this.engine = new Engine(this.uri, this.opts);\n const socket = this.engine;\n const self = this;\n this._readyState = \"opening\";\n this.skipReconnect = false;\n // emit `open`\n const openSubDestroy = on(socket, \"open\", function () {\n self.onopen();\n fn && fn();\n });\n const onError = (err) => {\n this.cleanup();\n this._readyState = \"closed\";\n this.emitReserved(\"error\", err);\n if (fn) {\n fn(err);\n }\n else {\n // Only do this if there is no fn to handle the error\n this.maybeReconnectOnOpen();\n }\n };\n // emit `error`\n const errorSub = on(socket, \"error\", onError);\n if (false !== this._timeout) {\n const timeout = this._timeout;\n // set timer\n const timer = this.setTimeoutFn(() => {\n openSubDestroy();\n onError(new Error(\"timeout\"));\n socket.close();\n }, timeout);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n this.subs.push(openSubDestroy);\n this.subs.push(errorSub);\n return this;\n }\n /**\n * Alias for open()\n *\n * @return self\n * @public\n */\n connect(fn) {\n return this.open(fn);\n }\n /**\n * Called upon transport open.\n *\n * @private\n */\n onopen() {\n // clear old subs\n this.cleanup();\n // mark as open\n this._readyState = \"open\";\n this.emitReserved(\"open\");\n // add new subs\n const socket = this.engine;\n this.subs.push(on(socket, \"ping\", this.onping.bind(this)), on(socket, \"data\", this.ondata.bind(this)), on(socket, \"error\", this.onerror.bind(this)), on(socket, \"close\", this.onclose.bind(this)), \n // @ts-ignore\n on(this.decoder, \"decoded\", this.ondecoded.bind(this)));\n }\n /**\n * Called upon a ping.\n *\n * @private\n */\n onping() {\n this.emitReserved(\"ping\");\n }\n /**\n * Called with data.\n *\n * @private\n */\n ondata(data) {\n try {\n this.decoder.add(data);\n }\n catch (e) {\n this.onclose(\"parse error\", e);\n }\n }\n /**\n * Called when parser fully decodes a packet.\n *\n * @private\n */\n ondecoded(packet) {\n // the nextTick call prevents an exception in a user-provided event listener from triggering a disconnection due to a \"parse error\"\n nextTick(() => {\n this.emitReserved(\"packet\", packet);\n }, this.setTimeoutFn);\n }\n /**\n * Called upon socket error.\n *\n * @private\n */\n onerror(err) {\n this.emitReserved(\"error\", err);\n }\n /**\n * Creates a new socket for the given `nsp`.\n *\n * @return {Socket}\n * @public\n */\n socket(nsp, opts) {\n let socket = this.nsps[nsp];\n if (!socket) {\n socket = new Socket(this, nsp, opts);\n this.nsps[nsp] = socket;\n }\n else if (this._autoConnect && !socket.active) {\n socket.connect();\n }\n return socket;\n }\n /**\n * Called upon a socket close.\n *\n * @param socket\n * @private\n */\n _destroy(socket) {\n const nsps = Object.keys(this.nsps);\n for (const nsp of nsps) {\n const socket = this.nsps[nsp];\n if (socket.active) {\n return;\n }\n }\n this._close();\n }\n /**\n * Writes a packet.\n *\n * @param packet\n * @private\n */\n _packet(packet) {\n const encodedPackets = this.encoder.encode(packet);\n for (let i = 0; i < encodedPackets.length; i++) {\n this.engine.write(encodedPackets[i], packet.options);\n }\n }\n /**\n * Clean up transport subscriptions and packet buffer.\n *\n * @private\n */\n cleanup() {\n this.subs.forEach((subDestroy) => subDestroy());\n this.subs.length = 0;\n this.decoder.destroy();\n }\n /**\n * Close the current socket.\n *\n * @private\n */\n _close() {\n this.skipReconnect = true;\n this._reconnecting = false;\n this.onclose(\"forced close\");\n }\n /**\n * Alias for close()\n *\n * @private\n */\n disconnect() {\n return this._close();\n }\n /**\n * Called when:\n *\n * - the low-level engine is closed\n * - the parser encountered a badly formatted packet\n * - all sockets are disconnected\n *\n * @private\n */\n onclose(reason, description) {\n var _a;\n this.cleanup();\n (_a = this.engine) === null || _a === void 0 ? void 0 : _a.close();\n this.backoff.reset();\n this._readyState = \"closed\";\n this.emitReserved(\"close\", reason, description);\n if (this._reconnection && !this.skipReconnect) {\n this.reconnect();\n }\n }\n /**\n * Attempt a reconnection.\n *\n * @private\n */\n reconnect() {\n if (this._reconnecting || this.skipReconnect)\n return this;\n const self = this;\n if (this.backoff.attempts >= this._reconnectionAttempts) {\n this.backoff.reset();\n this.emitReserved(\"reconnect_failed\");\n this._reconnecting = false;\n }\n else {\n const delay = this.backoff.duration();\n this._reconnecting = true;\n const timer = this.setTimeoutFn(() => {\n if (self.skipReconnect)\n return;\n this.emitReserved(\"reconnect_attempt\", self.backoff.attempts);\n // check again for the case socket closed in above events\n if (self.skipReconnect)\n return;\n self.open((err) => {\n if (err) {\n self._reconnecting = false;\n self.reconnect();\n this.emitReserved(\"reconnect_error\", err);\n }\n else {\n self.onreconnect();\n }\n });\n }, delay);\n if (this.opts.autoUnref) {\n timer.unref();\n }\n this.subs.push(() => {\n this.clearTimeoutFn(timer);\n });\n }\n }\n /**\n * Called upon successful reconnect.\n *\n * @private\n */\n onreconnect() {\n const attempt = this.backoff.attempts;\n this._reconnecting = false;\n this.backoff.reset();\n this.emitReserved(\"reconnect\", attempt);\n }\n}\n","import { url } from \"./url.js\";\nimport { Manager } from \"./manager.js\";\nimport { Socket } from \"./socket.js\";\n/**\n * Managers cache.\n */\nconst cache = {};\nfunction lookup(uri, opts) {\n if (typeof uri === \"object\") {\n opts = uri;\n uri = undefined;\n }\n opts = opts || {};\n const parsed = url(uri, opts.path || \"/socket.io\");\n const source = parsed.source;\n const id = parsed.id;\n const path = parsed.path;\n const sameNamespace = cache[id] && path in cache[id][\"nsps\"];\n const newConnection = opts.forceNew ||\n opts[\"force new connection\"] ||\n false === opts.multiplex ||\n sameNamespace;\n let io;\n if (newConnection) {\n io = new Manager(source, opts);\n }\n else {\n if (!cache[id]) {\n cache[id] = new Manager(source, opts);\n }\n io = cache[id];\n }\n if (parsed.query && !opts.query) {\n opts.query = parsed.queryKey;\n }\n return io.socket(parsed.path, opts);\n}\n// so that \"lookup\" can be used both as a function (e.g. `io(...)`) and as a\n// namespace (e.g. `io.connect(...)`), for backward compatibility\nObject.assign(lookup, {\n Manager,\n Socket,\n io: lookup,\n connect: lookup,\n});\n/**\n * Protocol version.\n *\n * @public\n */\nexport { protocol } from \"socket.io-parser\";\n/**\n * Expose constructors for standalone build.\n *\n * @public\n */\nexport { Manager, Socket, lookup as io, lookup as connect, lookup as default, };\n","import { parse } from \"engine.io-client\";\n/**\n * URL parser.\n *\n * @param uri - url\n * @param path - the request path of the connection\n * @param loc - An object meant to mimic window.location.\n * Defaults to window.location.\n * @public\n */\nexport function url(uri, path = \"\", loc) {\n let obj = uri;\n // default to window.location\n loc = loc || (typeof location !== \"undefined\" && location);\n if (null == uri)\n uri = loc.protocol + \"//\" + loc.host;\n // relative path support\n if (typeof uri === \"string\") {\n if (\"/\" === uri.charAt(0)) {\n if (\"/\" === uri.charAt(1)) {\n uri = loc.protocol + uri;\n }\n else {\n uri = loc.host + uri;\n }\n }\n if (!/^(https?|wss?):\\/\\//.test(uri)) {\n if (\"undefined\" !== typeof loc) {\n uri = loc.protocol + \"//\" + uri;\n }\n else {\n uri = \"https://\" + uri;\n }\n }\n // parse\n obj = parse(uri);\n }\n // make sure we treat `localhost:80` and `localhost` equally\n if (!obj.port) {\n if (/^(http|ws)$/.test(obj.protocol)) {\n obj.port = \"80\";\n }\n else if (/^(http|ws)s$/.test(obj.protocol)) {\n obj.port = \"443\";\n }\n }\n obj.path = obj.path || \"/\";\n const ipv6 = obj.host.indexOf(\":\") !== -1;\n const host = ipv6 ? \"[\" + obj.host + \"]\" : obj.host;\n // define unique id\n obj.id = obj.protocol + \"://\" + host + \":\" + obj.port + path;\n // define href\n obj.href =\n obj.protocol +\n \"://\" +\n host +\n (loc && loc.port === obj.port ? \"\" : \":\" + obj.port);\n return obj;\n}\n","import { io } from 'socket.io-client';\nimport { base64Decode, base64Encode } from './util';\nexport class Client {\n socket;\n encode;\n decode;\n constructor(config) {\n this.socket = io(config.baseUrl, {\n transports: ['websocket'],\n path: '/analytics/ws',\n auth: {\n token: config.authToken,\n },\n query: config.query,\n });\n this.encode =\n config.encoder ?? ((data) => base64Encode(JSON.stringify(data)));\n this.decode = config.decoder ?? ((data) => JSON.parse(base64Decode(data)));\n }\n send(eventName, data, responseCallback) {\n // NB: check this explicitly, otherwise socket.io assumes\n // we are passing an array of values including null (e.g. [encodedData, null])\n if (typeof responseCallback === 'function') {\n this.socket.emit(eventName, this.encode(data), responseCallback);\n }\n else {\n this.socket.emit(eventName, this.encode(data));\n }\n }\n on(eventName, handler) {\n this.socket.on(eventName, (data) => handler(this.decode(data)));\n }\n}\n","export function base64Encode(text) {\n const encoder = new TextEncoder();\n const uint8Array = encoder.encode(text);\n if (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n // Browser environment\n const binaryString = Array.from(uint8Array, (byte) => String.fromCharCode(byte)).join('');\n return btoa(binaryString);\n }\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(uint8Array).toString('base64');\n }\n throw new Error('[utils.base64Encode]: Unsupported environment');\n}\nexport const base64Decode = (text) => {\n if (typeof window !== 'undefined' && typeof window.atob === 'function') {\n // Browser environment\n const binaryString = atob(text);\n const len = binaryString.length;\n const bytes = new Uint8Array(len);\n for (let i = 0; i < len; i++) {\n bytes[i] = binaryString.charCodeAt(i);\n }\n const decoder = new TextDecoder();\n return decoder.decode(bytes);\n }\n if (typeof Buffer !== 'undefined') {\n // Node.js environment\n return Buffer.from(text, 'base64').toString('utf-8');\n }\n throw new Error('[utils.base64Decode]: Unsupported environment');\n};\n","export class TTLSet {\n defaultTTL;\n items;\n constructor(defaultTTL) {\n this.defaultTTL = defaultTTL;\n if (defaultTTL <= 0) {\n throw new Error('Default TTL must be a positive number.');\n }\n this.items = new Map();\n this.defaultTTL = defaultTTL;\n // Automatically remove expired items at intervals\n setInterval(() => this.cleanup(), defaultTTL);\n }\n // Adds an item to the set with an optional custom TTL\n add(item, ttl) {\n const effectiveTTL = ttl !== undefined ? ttl : this.defaultTTL;\n if (effectiveTTL <= 0) {\n throw new Error('TTL must be a positive number.');\n }\n const expireAt = Date.now() + effectiveTTL;\n this.items.set(item, expireAt);\n }\n // Checks if the item exists and has not expired\n has(item) {\n const expireAt = this.items.get(item);\n if (expireAt === undefined) {\n return false;\n }\n if (Date.now() > expireAt) {\n this.items.delete(item); // Remove expired item\n return false;\n }\n return true;\n }\n // Removes an item from the set\n delete(item) {\n this.items.delete(item);\n }\n // Returns the current size of the set, excluding expired items\n get size() {\n this.cleanup();\n return this.items.size;\n }\n // Clears all items from the set\n clear() {\n this.items.clear();\n }\n // Removes expired items\n cleanup() {\n const now = Date.now();\n for (const [item, expireAt] of this.items.entries()) {\n if (expireAt <= now) {\n this.items.delete(item);\n }\n }\n }\n // Returns all active items as an array\n toArray() {\n this.cleanup();\n return Array.from(this.items.keys());\n }\n}\n","import { Client } from './client';\nimport { TTLSet } from './ttl-set';\nexport var NudgeCTABlockActionType;\n(function (NudgeCTABlockActionType) {\n NudgeCTABlockActionType[\"OpenUrl\"] = \"openUrl\";\n NudgeCTABlockActionType[\"CallPhone\"] = \"callPhone\";\n NudgeCTABlockActionType[\"SendEmail\"] = \"sendEmail\";\n NudgeCTABlockActionType[\"TriggerEvent\"] = \"triggerEvent\";\n})(NudgeCTABlockActionType || (NudgeCTABlockActionType = {}));\nexport var NudgeCTABlockType;\n(function (NudgeCTABlockType) {\n NudgeCTABlockType[\"Button\"] = \"button\";\n NudgeCTABlockType[\"Link\"] = \"link\";\n})(NudgeCTABlockType || (NudgeCTABlockType = {}));\nexport class TrackerSdk {\n options;\n client;\n userId;\n global;\n queue = [];\n knownEvents = ['nudge.show'];\n eventListeners = {};\n // this set is used to prevent showing the same nudge multiple times in a short period\n recentNudgeIds = new TTLSet(1000);\n constructor(options) {\n this.options = options;\n const query = {\n sdk_name: options.sdk || 'node',\n sdk_version: options.sdkVersion || '',\n };\n this.client = new Client({\n baseUrl: options.apiUrl || 'https://analytic.brainfi.sh',\n authToken: options.accessKey,\n query,\n });\n this.setupIncomingPayloadHandler();\n }\n // placeholder for future use\n init() {\n // empty\n }\n ready() {\n this.options.waitForUser = false;\n this.flush();\n }\n setupIncomingPayloadHandler() {\n this.client.on('e', this.handleIncomingPayload.bind(this));\n }\n handleIncomingPayload(payload) {\n switch (payload.type) {\n case 'nudge.show': {\n const { nudgeId } = payload.payload;\n if (this.recentNudgeIds.has(nudgeId)) {\n return;\n }\n this.recentNudgeIds.add(nudgeId);\n this.dispatchEventListeners('nudge.show', payload.payload);\n }\n }\n }\n dispatchEventListeners(event, payload) {\n this.eventListeners[event]?.forEach((handler) => handler(payload));\n }\n on(event, handler) {\n if (!this.knownEvents.includes(event)) {\n // TODO: log an error?\n return;\n }\n if (!this.eventListeners[event]) {\n this.eventListeners[event] = [];\n }\n this.eventListeners[event].push(handler);\n }\n off(event, handler) {\n if (!this.knownEvents.includes(event)) {\n // TODO: log an error?\n return;\n }\n if (!this.eventListeners[event]) {\n return;\n }\n this.eventListeners[event] = this.eventListeners[event].filter((h) => h !== handler);\n if (this.eventListeners[event].length === 0) {\n delete this.eventListeners[event];\n }\n }\n async send(payload, responseCallback) {\n if (this.options.disabled) {\n return Promise.resolve();\n }\n if (this.options.filter && !this.options.filter(payload)) {\n return Promise.resolve();\n }\n if (this.options.waitForUser && !this.userId) {\n this.queue.push(payload);\n return Promise.resolve();\n }\n return this.client.send('t', payload, responseCallback);\n }\n setGlobalProperties(properties) {\n this.global = {\n ...this.global,\n ...properties,\n };\n }\n async track(name, properties) {\n return this.send({\n type: 'event.track',\n payload: {\n name,\n userId: properties?.userId ?? this.userId,\n properties: {\n ...(this.global ?? {}),\n ...(properties ?? {}),\n },\n },\n });\n }\n async identify(payload) {\n if (payload.userId) {\n this.userId = payload.userId;\n this.flush();\n }\n // post identify metadata message to iframe\n const iframe = document.querySelector('#bf-iframe-container .trigger-iframe');\n if (iframe) {\n const sendMessage = () => {\n if (iframe.contentWindow) {\n iframe.contentWindow.postMessage({\n type: 'USER_IDENTIFY',\n payload,\n }, '*');\n }\n };\n // Try to send immediately if contentWindow exists\n if (iframe.contentWindow) {\n sendMessage();\n }\n // Also attach a load listener to ensure the message is sent\n // This covers the case where the iframe wasn't ready initially\n iframe.addEventListener('load', sendMessage);\n }\n if (Object.keys(payload).length > 1) {\n return this.send({\n type: 'user.identify',\n payload: {\n ...payload,\n properties: {\n ...this.global,\n ...payload.properties,\n },\n },\n });\n }\n }\n async record(events, callback) {\n return this.send({\n type: 'event.record',\n payload: {\n events,\n userId: this.userId,\n },\n }, callback);\n }\n async alias(payload) {\n return this.send({\n type: 'user.alias',\n payload,\n });\n }\n async increment(payload) {\n return this.send({\n type: 'user.increment',\n payload,\n });\n }\n async decrement(payload) {\n return this.send({\n type: 'user.decrement',\n payload,\n });\n }\n clear() {\n this.userId = undefined;\n // should we force a session end here?\n }\n flush() {\n this.queue.forEach((item) => {\n this.send({\n ...item,\n // Not sure why ts-expect-error is needed here\n // @ts-expect-error\n payload: {\n ...item.payload,\n userId: item.payload.userId ?? this.userId,\n },\n });\n });\n this.queue = [];\n }\n}\n","export function resolveUrl(url, baseUrl) {\n // url is absolute already\n if (url.match(/^[a-z]+:\\/\\//i)) {\n return url;\n }\n // url is absolute already, without protocol\n if (url.match(/^\\/\\//)) {\n return window.location.protocol + url;\n }\n // dataURI, mailto:, tel:, etc.\n if (url.match(/^[a-z]+:/i)) {\n return url;\n }\n const doc = document.implementation.createHTMLDocument();\n const base = doc.createElement('base');\n const a = doc.createElement('a');\n doc.head.appendChild(base);\n doc.body.appendChild(a);\n if (baseUrl) {\n base.href = baseUrl;\n }\n a.href = url;\n return a.href;\n}\nexport const uuid = (() => {\n // generate uuid for className of pseudo elements.\n // We should not use GUIDs, otherwise pseudo elements sometimes cannot be captured.\n let counter = 0;\n // ref: http://stackoverflow.com/a/6248722/2519373\n const random = () => \n // eslint-disable-next-line no-bitwise\n `0000${((Math.random() * 36 ** 4) << 0).toString(36)}`.slice(-4);\n return () => {\n counter += 1;\n return `u${random()}${counter}`;\n };\n})();\nexport function delay(ms) {\n return (args) => new Promise((resolve) => {\n setTimeout(() => resolve(args), ms);\n });\n}\nexport function toArray(arrayLike) {\n const arr = [];\n for (let i = 0, l = arrayLike.length; i < l; i++) {\n arr.push(arrayLike[i]);\n }\n return arr;\n}\nfunction px(node, styleProperty) {\n const win = node.ownerDocument.defaultView || window;\n const val = win.getComputedStyle(node).getPropertyValue(styleProperty);\n return val ? parseFloat(val.replace('px', '')) : 0;\n}\nfunction getNodeWidth(node) {\n const leftBorder = px(node, 'border-left-width');\n const rightBorder = px(node, 'border-right-width');\n return node.clientWidth + leftBorder + rightBorder;\n}\nfunction getNodeHeight(node) {\n const topBorder = px(node, 'border-top-width');\n const bottomBorder = px(node, 'border-bottom-width');\n return node.clientHeight + topBorder + bottomBorder;\n}\nexport function getImageSize(targetNode, options = {}) {\n const width = options.width || getNodeWidth(targetNode);\n const height = options.height || getNodeHeight(targetNode);\n return { width, height };\n}\nexport function getPixelRatio() {\n let ratio;\n let FINAL_PROCESS;\n try {\n FINAL_PROCESS = process;\n }\n catch (e) {\n // pass\n }\n const val = FINAL_PROCESS && FINAL_PROCESS.env\n ? FINAL_PROCESS.env.devicePixelRatio\n : null;\n if (val) {\n ratio = parseInt(val, 10);\n if (Number.isNaN(ratio)) {\n ratio = 1;\n }\n }\n return ratio || window.devicePixelRatio || 1;\n}\n// @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/canvas#maximum_canvas_size\nconst canvasDimensionLimit = 16384;\nexport function checkCanvasDimensions(canvas) {\n if (canvas.width > canvasDimensionLimit ||\n canvas.height > canvasDimensionLimit) {\n if (canvas.width > canvasDimensionLimit &&\n canvas.height > canvasDimensionLimit) {\n if (canvas.width > canvas.height) {\n canvas.height *= canvasDimensionLimit / canvas.width;\n canvas.width = canvasDimensionLimit;\n }\n else {\n canvas.width *= canvasDimensionLimit / canvas.height;\n canvas.height = canvasDimensionLimit;\n }\n }\n else if (canvas.width > canvasDimensionLimit) {\n canvas.height *= canvasDimensionLimit / canvas.width;\n canvas.width = canvasDimensionLimit;\n }\n else {\n canvas.width *= canvasDimensionLimit / canvas.height;\n canvas.height = canvasDimensionLimit;\n }\n }\n}\nexport function canvasToBlob(canvas, options = {}) {\n if (canvas.toBlob) {\n return new Promise((resolve) => {\n canvas.toBlob(resolve, options.type ? options.type : 'image/png', options.quality ? options.quality : 1);\n });\n }\n return new Promise((resolve) => {\n const binaryString = window.atob(canvas\n .toDataURL(options.type ? options.type : undefined, options.quality ? options.quality : undefined)\n .split(',')[1]);\n const len = binaryString.length;\n const binaryArray = new Uint8Array(len);\n for (let i = 0; i < len; i += 1) {\n binaryArray[i] = binaryString.charCodeAt(i);\n }\n resolve(new Blob([binaryArray], {\n type: options.type ? options.type : 'image/png',\n }));\n });\n}\nexport function createImage(url) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.decode = () => resolve(img);\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.crossOrigin = 'anonymous';\n img.decoding = 'async';\n img.src = url;\n });\n}\nexport async function svgToDataURL(svg) {\n return Promise.resolve()\n .then(() => new XMLSerializer().serializeToString(svg))\n .then(encodeURIComponent)\n .then((html) => `data:image/svg+xml;charset=utf-8,${html}`);\n}\nexport async function nodeToDataURL(node, width, height) {\n const xmlns = 'http://www.w3.org/2000/svg';\n const svg = document.createElementNS(xmlns, 'svg');\n const foreignObject = document.createElementNS(xmlns, 'foreignObject');\n svg.setAttribute('width', `${width}`);\n svg.setAttribute('height', `${height}`);\n svg.setAttribute('viewBox', `0 0 ${width} ${height}`);\n foreignObject.setAttribute('width', '100%');\n foreignObject.setAttribute('height', '100%');\n foreignObject.setAttribute('x', '0');\n foreignObject.setAttribute('y', '0');\n foreignObject.setAttribute('externalResourcesRequired', 'true');\n svg.appendChild(foreignObject);\n foreignObject.appendChild(node);\n return svgToDataURL(svg);\n}\nexport const isInstanceOfElement = (node, instance) => {\n if (node instanceof instance)\n return true;\n const nodePrototype = Object.getPrototypeOf(node);\n if (nodePrototype === null)\n return false;\n return (nodePrototype.constructor.name === instance.name ||\n isInstanceOfElement(nodePrototype, instance));\n};\n//# sourceMappingURL=util.js.map","import { uuid, toArray } from './util';\nfunction formatCSSText(style) {\n const content = style.getPropertyValue('content');\n return `${style.cssText} content: '${content.replace(/'|\"/g, '')}';`;\n}\nfunction formatCSSProperties(style) {\n return toArray(style)\n .map((name) => {\n const value = style.getPropertyValue(name);\n const priority = style.getPropertyPriority(name);\n return `${name}: ${value}${priority ? ' !important' : ''};`;\n })\n .join(' ');\n}\nfunction getPseudoElementStyle(className, pseudo, style) {\n const selector = `.${className}:${pseudo}`;\n const cssText = style.cssText\n ? formatCSSText(style)\n : formatCSSProperties(style);\n return document.createTextNode(`${selector}{${cssText}}`);\n}\nfunction clonePseudoElement(nativeNode, clonedNode, pseudo) {\n const style = window.getComputedStyle(nativeNode, pseudo);\n const content = style.getPropertyValue('content');\n if (content === '' || content === 'none') {\n return;\n }\n const className = uuid();\n try {\n clonedNode.className = `${clonedNode.className} ${className}`;\n }\n catch (err) {\n return;\n }\n const styleElement = document.createElement('style');\n styleElement.appendChild(getPseudoElementStyle(className, pseudo, style));\n clonedNode.appendChild(styleElement);\n}\nexport function clonePseudoElements(nativeNode, clonedNode) {\n clonePseudoElement(nativeNode, clonedNode, ':before');\n clonePseudoElement(nativeNode, clonedNode, ':after');\n}\n//# sourceMappingURL=clone-pseudos.js.map","const WOFF = 'application/font-woff';\nconst JPEG = 'image/jpeg';\nconst mimes = {\n woff: WOFF,\n woff2: WOFF,\n ttf: 'application/font-truetype',\n eot: 'application/vnd.ms-fontobject',\n png: 'image/png',\n jpg: JPEG,\n jpeg: JPEG,\n gif: 'image/gif',\n tiff: 'image/tiff',\n svg: 'image/svg+xml',\n webp: 'image/webp',\n};\nfunction getExtension(url) {\n const match = /\\.([^./]*?)$/g.exec(url);\n return match ? match[1] : '';\n}\nexport function getMimeType(url) {\n const extension = getExtension(url).toLowerCase();\n return mimes[extension] || '';\n}\n//# sourceMappingURL=mimes.js.map","function getContentFromDataUrl(dataURL) {\n return dataURL.split(/,/)[1];\n}\nexport function isDataUrl(url) {\n return url.search(/^(data:)/) !== -1;\n}\nexport function makeDataUrl(content, mimeType) {\n return `data:${mimeType};base64,${content}`;\n}\nexport async function fetchAsDataURL(url, init, process) {\n const res = await fetch(url, init);\n if (res.status === 404) {\n throw new Error(`Resource \"${res.url}\" not found`);\n }\n const blob = await res.blob();\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = reject;\n reader.onloadend = () => {\n try {\n resolve(process({ res, result: reader.result }));\n }\n catch (error) {\n reject(error);\n }\n };\n reader.readAsDataURL(blob);\n });\n}\nconst cache = {};\nfunction getCacheKey(url, contentType, includeQueryParams) {\n let key = url.replace(/\\?.*/, '');\n if (includeQueryParams) {\n key = url;\n }\n // font resource\n if (/ttf|otf|eot|woff2?/i.test(key)) {\n key = key.replace(/.*\\//, '');\n }\n return contentType ? `[${contentType}]${key}` : key;\n}\nexport async function resourceToDataURL(resourceUrl, contentType, options) {\n const cacheKey = getCacheKey(resourceUrl, contentType, options.includeQueryParams);\n if (cache[cacheKey] != null) {\n return cache[cacheKey];\n }\n // ref: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n if (options.cacheBust) {\n // eslint-disable-next-line no-param-reassign\n resourceUrl += (/\\?/.test(resourceUrl) ? '&' : '?') + new Date().getTime();\n }\n let dataURL;\n try {\n const content = await fetchAsDataURL(resourceUrl, options.fetchRequestInit, ({ res, result }) => {\n if (!contentType) {\n // eslint-disable-next-line no-param-reassign\n contentType = res.headers.get('Content-Type') || '';\n }\n return getContentFromDataUrl(result);\n });\n dataURL = makeDataUrl(content, contentType);\n }\n catch (error) {\n dataURL = options.imagePlaceholder || '';\n let msg = `Failed to fetch resource: ${resourceUrl}`;\n if (error) {\n msg = typeof error === 'string' ? error : error.message;\n }\n if (msg) {\n console.warn(msg);\n }\n }\n cache[cacheKey] = dataURL;\n return dataURL;\n}\n//# sourceMappingURL=dataurl.js.map","import { clonePseudoElements } from './clone-pseudos';\nimport { createImage, toArray, isInstanceOfElement } from './util';\nimport { getMimeType } from './mimes';\nimport { resourceToDataURL } from './dataurl';\nasync function cloneCanvasElement(canvas) {\n const dataURL = canvas.toDataURL();\n if (dataURL === 'data:,') {\n return canvas.cloneNode(false);\n }\n return createImage(dataURL);\n}\nasync function cloneVideoElement(video, options) {\n if (video.currentSrc) {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n canvas.width = video.clientWidth;\n canvas.height = video.clientHeight;\n ctx === null || ctx === void 0 ? void 0 : ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n const dataURL = canvas.toDataURL();\n return createImage(dataURL);\n }\n const poster = video.poster;\n const contentType = getMimeType(poster);\n const dataURL = await resourceToDataURL(poster, contentType, options);\n return createImage(dataURL);\n}\nasync function cloneIFrameElement(iframe) {\n var _a;\n try {\n if ((_a = iframe === null || iframe === void 0 ? void 0 : iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.body) {\n return (await cloneNode(iframe.contentDocument.body, {}, true));\n }\n }\n catch (_b) {\n // Failed to clone iframe\n }\n return iframe.cloneNode(false);\n}\nasync function cloneSingleNode(node, options) {\n if (isInstanceOfElement(node, HTMLCanvasElement)) {\n return cloneCanvasElement(node);\n }\n if (isInstanceOfElement(node, HTMLVideoElement)) {\n return cloneVideoElement(node, options);\n }\n if (isInstanceOfElement(node, HTMLIFrameElement)) {\n return cloneIFrameElement(node);\n }\n return node.cloneNode(false);\n}\nconst isSlotElement = (node) => node.tagName != null && node.tagName.toUpperCase() === 'SLOT';\nasync function cloneChildren(nativeNode, clonedNode, options) {\n var _a, _b;\n let children = [];\n if (isSlotElement(nativeNode) && nativeNode.assignedNodes) {\n children = toArray(nativeNode.assignedNodes());\n }\n else if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n ((_a = nativeNode.contentDocument) === null || _a === void 0 ? void 0 : _a.body)) {\n children = toArray(nativeNode.contentDocument.body.childNodes);\n }\n else {\n children = toArray(((_b = nativeNode.shadowRoot) !== null && _b !== void 0 ? _b : nativeNode).childNodes);\n }\n if (children.length === 0 ||\n isInstanceOfElement(nativeNode, HTMLVideoElement)) {\n return clonedNode;\n }\n await children.reduce((deferred, child) => deferred\n .then(() => cloneNode(child, options))\n .then((clonedChild) => {\n if (clonedChild) {\n clonedNode.appendChild(clonedChild);\n }\n }), Promise.resolve());\n return clonedNode;\n}\nfunction cloneCSSStyle(nativeNode, clonedNode) {\n const targetStyle = clonedNode.style;\n if (!targetStyle) {\n return;\n }\n const sourceStyle = window.getComputedStyle(nativeNode);\n if (sourceStyle.cssText) {\n targetStyle.cssText = sourceStyle.cssText;\n targetStyle.transformOrigin = sourceStyle.transformOrigin;\n }\n else {\n toArray(sourceStyle).forEach((name) => {\n let value = sourceStyle.getPropertyValue(name);\n if (name === 'font-size' && value.endsWith('px')) {\n const reducedFont = Math.floor(parseFloat(value.substring(0, value.length - 2))) - 0.1;\n value = `${reducedFont}px`;\n }\n if (isInstanceOfElement(nativeNode, HTMLIFrameElement) &&\n name === 'display' &&\n value === 'inline') {\n value = 'block';\n }\n if (name === 'd' && clonedNode.getAttribute('d')) {\n value = `path(${clonedNode.getAttribute('d')})`;\n }\n targetStyle.setProperty(name, value, sourceStyle.getPropertyPriority(name));\n });\n }\n}\nfunction cloneInputValue(nativeNode, clonedNode) {\n if (isInstanceOfElement(nativeNode, HTMLTextAreaElement)) {\n clonedNode.innerHTML = nativeNode.value;\n }\n if (isInstanceOfElement(nativeNode, HTMLInputElement)) {\n clonedNode.setAttribute('value', nativeNode.value);\n }\n}\nfunction cloneSelectValue(nativeNode, clonedNode) {\n if (isInstanceOfElement(nativeNode, HTMLSelectElement)) {\n const clonedSelect = clonedNode;\n const selectedOption = Array.from(clonedSelect.children).find((child) => nativeNode.value === child.getAttribute('value'));\n if (selectedOption) {\n selectedOption.setAttribute('selected', '');\n }\n }\n}\nfunction decorate(nativeNode, clonedNode) {\n if (isInstanceOfElement(clonedNode, Element)) {\n cloneCSSStyle(nativeNode, clonedNode);\n clonePseudoElements(nativeNode, clonedNode);\n cloneInputValue(nativeNode, clonedNode);\n cloneSelectValue(nativeNode, clonedNode);\n }\n return clonedNode;\n}\nasync function ensureSVGSymbols(clone, options) {\n const uses = clone.querySelectorAll ? clone.querySelectorAll('use') : [];\n if (uses.length === 0) {\n return clone;\n }\n const processedDefs = {};\n for (let i = 0; i < uses.length; i++) {\n const use = uses[i];\n const id = use.getAttribute('xlink:href');\n if (id) {\n const exist = clone.querySelector(id);\n const definition = document.querySelector(id);\n if (!exist && definition && !processedDefs[id]) {\n // eslint-disable-next-line no-await-in-loop\n processedDefs[id] = (await cloneNode(definition, options, true));\n }\n }\n }\n const nodes = Object.values(processedDefs);\n if (nodes.length) {\n const ns = 'http://www.w3.org/1999/xhtml';\n const svg = document.createElementNS(ns, 'svg');\n svg.setAttribute('xmlns', ns);\n svg.style.position = 'absolute';\n svg.style.width = '0';\n svg.style.height = '0';\n svg.style.overflow = 'hidden';\n svg.style.display = 'none';\n const defs = document.createElementNS(ns, 'defs');\n svg.appendChild(defs);\n for (let i = 0; i < nodes.length; i++) {\n defs.appendChild(nodes[i]);\n }\n clone.appendChild(svg);\n }\n return clone;\n}\nexport async function cloneNode(node, options, isRoot) {\n if (!isRoot && options.filter && !options.filter(node)) {\n return null;\n }\n return Promise.resolve(node)\n .then((clonedNode) => cloneSingleNode(clonedNode, options))\n .then((clonedNode) => cloneChildren(node, clonedNode, options))\n .then((clonedNode) => decorate(node, clonedNode))\n .then((clonedNode) => ensureSVGSymbols(clonedNode, options));\n}\n//# sourceMappingURL=clone-node.js.map","import { resolveUrl } from './util';\nimport { getMimeType } from './mimes';\nimport { isDataUrl, makeDataUrl, resourceToDataURL } from './dataurl';\nconst URL_REGEX = /url\\((['\"]?)([^'\"]+?)\\1\\)/g;\nconst URL_WITH_FORMAT_REGEX = /url\\([^)]+\\)\\s*format\\(([\"']?)([^\"']+)\\1\\)/g;\nconst FONT_SRC_REGEX = /src:\\s*(?:url\\([^)]+\\)\\s*format\\([^)]+\\)[,;]\\s*)+/g;\nfunction toRegex(url) {\n // eslint-disable-next-line no-useless-escape\n const escaped = url.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n return new RegExp(`(url\\\\(['\"]?)(${escaped})(['\"]?\\\\))`, 'g');\n}\nexport function parseURLs(cssText) {\n const urls = [];\n cssText.replace(URL_REGEX, (raw, quotation, url) => {\n urls.push(url);\n return raw;\n });\n return urls.filter((url) => !isDataUrl(url));\n}\nexport async function embed(cssText, resourceURL, baseURL, options, getContentFromUrl) {\n try {\n const resolvedURL = baseURL ? resolveUrl(resourceURL, baseURL) : resourceURL;\n const contentType = getMimeType(resourceURL);\n let dataURL;\n if (getContentFromUrl) {\n const content = await getContentFromUrl(resolvedURL);\n dataURL = makeDataUrl(content, contentType);\n }\n else {\n dataURL = await resourceToDataURL(resolvedURL, contentType, options);\n }\n return cssText.replace(toRegex(resourceURL), `$1${dataURL}$3`);\n }\n catch (error) {\n // pass\n }\n return cssText;\n}\nfunction filterPreferredFontFormat(str, { preferredFontFormat }) {\n return !preferredFontFormat\n ? str\n : str.replace(FONT_SRC_REGEX, (match) => {\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const [src, , format] = URL_WITH_FORMAT_REGEX.exec(match) || [];\n if (!format) {\n return '';\n }\n if (format === preferredFontFormat) {\n return `src: ${src};`;\n }\n }\n });\n}\nexport function shouldEmbed(url) {\n return url.search(URL_REGEX) !== -1;\n}\nexport async function embedResources(cssText, baseUrl, options) {\n if (!shouldEmbed(cssText)) {\n return cssText;\n }\n const filteredCSSText = filterPreferredFontFormat(cssText, options);\n const urls = parseURLs(filteredCSSText);\n return urls.reduce((deferred, url) => deferred.then((css) => embed(css, url, baseUrl, options)), Promise.resolve(filteredCSSText));\n}\n//# sourceMappingURL=embed-resources.js.map","import { embedResources } from './embed-resources';\nimport { toArray, isInstanceOfElement } from './util';\nimport { isDataUrl, resourceToDataURL } from './dataurl';\nimport { getMimeType } from './mimes';\nasync function embedProp(propName, node, options) {\n var _a;\n const propValue = (_a = node.style) === null || _a === void 0 ? void 0 : _a.getPropertyValue(propName);\n if (propValue) {\n const cssString = await embedResources(propValue, null, options);\n node.style.setProperty(propName, cssString, node.style.getPropertyPriority(propName));\n return true;\n }\n return false;\n}\nasync function embedBackground(clonedNode, options) {\n if (!(await embedProp('background', clonedNode, options))) {\n await embedProp('background-image', clonedNode, options);\n }\n if (!(await embedProp('mask', clonedNode, options))) {\n await embedProp('mask-image', clonedNode, options);\n }\n}\nasync function embedImageNode(clonedNode, options) {\n const isImageElement = isInstanceOfElement(clonedNode, HTMLImageElement);\n if (!(isImageElement && !isDataUrl(clonedNode.src)) &&\n !(isInstanceOfElement(clonedNode, SVGImageElement) &&\n !isDataUrl(clonedNode.href.baseVal))) {\n return;\n }\n const url = isImageElement ? clonedNode.src : clonedNode.href.baseVal;\n const dataURL = await resourceToDataURL(url, getMimeType(url), options);\n await new Promise((resolve, reject) => {\n clonedNode.onload = resolve;\n clonedNode.onerror = reject;\n const image = clonedNode;\n if (image.decode) {\n image.decode = resolve;\n }\n if (image.loading === 'lazy') {\n image.loading = 'eager';\n }\n if (isImageElement) {\n clonedNode.srcset = '';\n clonedNode.src = dataURL;\n }\n else {\n clonedNode.href.baseVal = dataURL;\n }\n });\n}\nasync function embedChildren(clonedNode, options) {\n const children = toArray(clonedNode.childNodes);\n const deferreds = children.map((child) => embedImages(child, options));\n await Promise.all(deferreds).then(() => clonedNode);\n}\nexport async function embedImages(clonedNode, options) {\n if (isInstanceOfElement(clonedNode, Element)) {\n await embedBackground(clonedNode, options);\n await embedImageNode(clonedNode, options);\n await embedChildren(clonedNode, options);\n }\n}\n//# sourceMappingURL=embed-images.js.map","import { toArray } from './util';\nimport { fetchAsDataURL } from './dataurl';\nimport { shouldEmbed, embedResources } from './embed-resources';\nconst cssFetchCache = {};\nasync function fetchCSS(url) {\n let cache = cssFetchCache[url];\n if (cache != null) {\n return cache;\n }\n const res = await fetch(url);\n const cssText = await res.text();\n cache = { url, cssText };\n cssFetchCache[url] = cache;\n return cache;\n}\nasync function embedFonts(data, options) {\n let cssText = data.cssText;\n const regexUrl = /url\\([\"']?([^\"')]+)[\"']?\\)/g;\n const fontLocs = cssText.match(/url\\([^)]+\\)/g) || [];\n const loadFonts = fontLocs.map(async (loc) => {\n let url = loc.replace(regexUrl, '$1');\n if (!url.startsWith('https://')) {\n url = new URL(url, data.url).href;\n }\n return fetchAsDataURL(url, options.fetchRequestInit, ({ result }) => {\n cssText = cssText.replace(loc, `url(${result})`);\n return [loc, result];\n });\n });\n return Promise.all(loadFonts).then(() => cssText);\n}\nfunction parseCSS(source) {\n if (source == null) {\n return [];\n }\n const result = [];\n const commentsRegex = /(\\/\\*[\\s\\S]*?\\*\\/)/gi;\n // strip out comments\n let cssText = source.replace(commentsRegex, '');\n // eslint-disable-next-line prefer-regex-literals\n const keyframesRegex = new RegExp('((@.*?keyframes [\\\\s\\\\S]*?){([\\\\s\\\\S]*?}\\\\s*?)})', 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n const matches = keyframesRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n result.push(matches[0]);\n }\n cssText = cssText.replace(keyframesRegex, '');\n const importRegex = /@import[\\s\\S]*?url\\([^)]*\\)[\\s\\S]*?;/gi;\n // to match css & media queries together\n const combinedCSSRegex = '((\\\\s*?(?:\\\\/\\\\*[\\\\s\\\\S]*?\\\\*\\\\/)?\\\\s*?@media[\\\\s\\\\S]' +\n '*?){([\\\\s\\\\S]*?)}\\\\s*?})|(([\\\\s\\\\S]*?){([\\\\s\\\\S]*?)})';\n // unified regex\n const unifiedRegex = new RegExp(combinedCSSRegex, 'gi');\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let matches = importRegex.exec(cssText);\n if (matches === null) {\n matches = unifiedRegex.exec(cssText);\n if (matches === null) {\n break;\n }\n else {\n importRegex.lastIndex = unifiedRegex.lastIndex;\n }\n }\n else {\n unifiedRegex.lastIndex = importRegex.lastIndex;\n }\n result.push(matches[0]);\n }\n return result;\n}\nasync function getCSSRules(styleSheets, options) {\n const ret = [];\n const deferreds = [];\n // First loop inlines imports\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item, index) => {\n if (item.type === CSSRule.IMPORT_RULE) {\n let importIndex = index + 1;\n const url = item.href;\n const deferred = fetchCSS(url)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n try {\n sheet.insertRule(rule, rule.startsWith('@import')\n ? (importIndex += 1)\n : sheet.cssRules.length);\n }\n catch (error) {\n console.error('Error inserting rule from remote css', {\n rule,\n error,\n });\n }\n }))\n .catch((e) => {\n console.error('Error loading remote css', e.toString());\n });\n deferreds.push(deferred);\n }\n });\n }\n catch (e) {\n const inline = styleSheets.find((a) => a.href == null) || document.styleSheets[0];\n if (sheet.href != null) {\n deferreds.push(fetchCSS(sheet.href)\n .then((metadata) => embedFonts(metadata, options))\n .then((cssText) => parseCSS(cssText).forEach((rule) => {\n inline.insertRule(rule, sheet.cssRules.length);\n }))\n .catch((err) => {\n console.error('Error loading remote stylesheet', err);\n }));\n }\n console.error('Error inlining remote css file', e);\n }\n }\n });\n return Promise.all(deferreds).then(() => {\n // Second loop parses rules\n styleSheets.forEach((sheet) => {\n if ('cssRules' in sheet) {\n try {\n toArray(sheet.cssRules || []).forEach((item) => {\n ret.push(item);\n });\n }\n catch (e) {\n console.error(`Error while reading CSS rules from ${sheet.href}`, e);\n }\n }\n });\n return ret;\n });\n}\nfunction getWebFontRules(cssRules) {\n return cssRules\n .filter((rule) => rule.type === CSSRule.FONT_FACE_RULE)\n .filter((rule) => shouldEmbed(rule.style.getPropertyValue('src')));\n}\nasync function parseWebFontRules(node, options) {\n if (node.ownerDocument == null) {\n throw new Error('Provided element is not within a Document');\n }\n const styleSheets = toArray(node.ownerDocument.styleSheets);\n const cssRules = await getCSSRules(styleSheets, options);\n return getWebFontRules(cssRules);\n}\nexport async function getWebFontCSS(node, options) {\n const rules = await parseWebFontRules(node, options);\n const cssTexts = await Promise.all(rules.map((rule) => {\n const baseUrl = rule.parentStyleSheet ? rule.parentStyleSheet.href : null;\n return embedResources(rule.cssText, baseUrl, options);\n }));\n return cssTexts.join('\\n');\n}\nexport async function embedWebFonts(clonedNode, options) {\n const cssText = options.fontEmbedCSS != null\n ? options.fontEmbedCSS\n : options.skipFonts\n ? null\n : await getWebFontCSS(clonedNode, options);\n if (cssText) {\n const styleNode = document.createElement('style');\n const sytleContent = document.createTextNode(cssText);\n styleNode.appendChild(sytleContent);\n if (clonedNode.firstChild) {\n clonedNode.insertBefore(styleNode, clonedNode.firstChild);\n }\n else {\n clonedNode.appendChild(styleNode);\n }\n }\n}\n//# sourceMappingURL=embed-webfonts.js.map","import { cloneNode } from './clone-node';\nimport { embedImages } from './embed-images';\nimport { applyStyle } from './apply-style';\nimport { embedWebFonts, getWebFontCSS } from './embed-webfonts';\nimport { getImageSize, getPixelRatio, createImage, canvasToBlob, nodeToDataURL, checkCanvasDimensions, } from './util';\nexport async function toSvg(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const clonedNode = (await cloneNode(node, options, true));\n await embedWebFonts(clonedNode, options);\n await embedImages(clonedNode, options);\n applyStyle(clonedNode, options);\n const datauri = await nodeToDataURL(clonedNode, width, height);\n return datauri;\n}\nexport async function toCanvas(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const svg = await toSvg(node, options);\n const img = await createImage(svg);\n const canvas = document.createElement('canvas');\n const context = canvas.getContext('2d');\n const ratio = options.pixelRatio || getPixelRatio();\n const canvasWidth = options.canvasWidth || width;\n const canvasHeight = options.canvasHeight || height;\n canvas.width = canvasWidth * ratio;\n canvas.height = canvasHeight * ratio;\n if (!options.skipAutoScale) {\n checkCanvasDimensions(canvas);\n }\n canvas.style.width = `${canvasWidth}`;\n canvas.style.height = `${canvasHeight}`;\n if (options.backgroundColor) {\n context.fillStyle = options.backgroundColor;\n context.fillRect(0, 0, canvas.width, canvas.height);\n }\n context.drawImage(img, 0, 0, canvas.width, canvas.height);\n return canvas;\n}\nexport async function toPixelData(node, options = {}) {\n const { width, height } = getImageSize(node, options);\n const canvas = await toCanvas(node, options);\n const ctx = canvas.getContext('2d');\n return ctx.getImageData(0, 0, width, height).data;\n}\nexport async function toPng(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL();\n}\nexport async function toJpeg(node, options = {}) {\n const canvas = await toCanvas(node, options);\n return canvas.toDataURL('image/jpeg', options.quality || 1);\n}\nexport async function toBlob(node, options = {}) {\n const canvas = await toCanvas(node, options);\n const blob = await canvasToBlob(canvas);\n return blob;\n}\nexport async function getFontEmbedCSS(node, options = {}) {\n return getWebFontCSS(node, options);\n}\n//# sourceMappingURL=index.js.map","export function applyStyle(node, options) {\n const { style } = node;\n if (options.backgroundColor) {\n style.backgroundColor = options.backgroundColor;\n }\n if (options.width) {\n style.width = `${options.width}px`;\n }\n if (options.height) {\n style.height = `${options.height}px`;\n }\n const manual = options.style;\n if (manual != null) {\n Object.keys(manual).forEach((key) => {\n style[key] = manual[key];\n });\n }\n return node;\n}\n//# sourceMappingURL=apply-style.js.map","import { toPng } from 'html-to-image';\n\n// Function to capture a screenshot of the entire page\nasync function captureScreenshot(domBody: HTMLElement): Promise<string> {\n const height = document.documentElement.scrollHeight;\n const width = document.documentElement.scrollWidth;\n\n // Collect all stylesheet rules\n const styles = Array.from(document.styleSheets)\n .map(styleSheet => {\n try {\n return Array.from(styleSheet.cssRules)\n .map(rule => rule.cssText)\n .join('');\n } catch (e) {\n // Error accessing stylesheet rules. Nothing we can do about it.\n return '';\n }\n })\n .join('\\n');\n\n // Create a new style element with all the rules\n const styleElement = document.createElement('style');\n styleElement.textContent = styles;\n domBody.appendChild(styleElement);\n\n // Define the filter function to exclude specific elements\n const filter = (node: HTMLElement) => {\n const exclusionClasses = ['data-bf-suppress']; // Add classes to exclude\n return !exclusionClasses.some((classname) => node.classList?.contains(classname));\n };\n\n // Capture the screenshot\n const image = await toPng(domBody, {\n quality: 0.7, // Set quality to 0.7\n width, // Set width to the scroll width\n height, // Set height to the scroll height\n style: {\n transform: 'scale(1)', // Set scale to 1 to avoid scaling\n },\n skipFonts: true, // Avoid embedding web fonts to bypass SecurityError\n cacheBust: true, // Prevent caching\n backgroundColor: 'white', // Set background color to white\n fetchRequestInit: {\n mode: 'cors', // Enable CORS\n },\n filter, \n imagePlaceholder: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFdwI2QJIhFwAAAABJRU5ErkJggg==', // Transparent placeholder for CORS-blocked images\n })\n\n // Remove the style element\n domBody.removeChild(styleElement);\n\n return image;\n}\n\nexport { captureScreenshot };\n","export default [\n \"aaron\",\n \"abad\",\n \"abarca\",\n \"abbate\",\n \"abbey\",\n \"abbie\",\n \"abbott\",\n \"abby\",\n \"abdullah\",\n \"abel\",\n \"abell\",\n \"abercrombie\",\n \"abernathy\",\n \"abernethy\",\n \"abeyta\",\n \"abigail\",\n \"ables\",\n \"abner\",\n \"abney\",\n \"abraham\",\n \"abrams\",\n \"abramson\",\n \"abrego\",\n \"abreu\",\n \"absher\",\n \"abshire\",\n \"acevedo\",\n \"aceves\",\n \"acker\",\n \"ackerman\",\n \"ackley\",\n \"acklin\",\n \"acord\",\n \"acosta\",\n \"acree\",\n \"acuff\",\n \"acuna\",\n \"ada\",\n \"adah\",\n \"adair\",\n \"adaline\",\n \"adam\",\n \"adame\",\n \"adames\",\n \"adams\",\n \"adamski\",\n \"adamson\",\n \"adcock\",\n \"addie\",\n \"addington\",\n \"addis\",\n \"addison\",\n \"adela\",\n \"adelaida\",\n \"adelaide\",\n \"adele\",\n \"adelia\",\n \"adelina\",\n \"adeline\",\n \"adell\",\n \"adella\",\n \"adelle\",\n \"adena\",\n \"adina\",\n \"adkins\",\n \"adkinson\",\n \"adkison\",\n \"adkisson\",\n \"adler\",\n \"adorno\",\n \"adria\",\n \"adrian\",\n \"adriana\",\n \"adriane\",\n \"adrianna\",\n \"adrianne\",\n \"adrien\",\n \"adriene\",\n \"adrienne\",\n \"afton\",\n \"agatha\",\n \"agnes\",\n \"agnew\",\n \"agnus\",\n \"agosto\",\n \"agripina\",\n \"aguayo\",\n \"agueda\",\n \"aguero\",\n \"aguiar\",\n \"aguila\",\n \"aguilar\",\n \"aguilera\",\n \"aguirre\",\n \"agustin\",\n \"agustina\",\n \"ahearn\",\n \"ahern\",\n \"ahlers\",\n \"ahmad\",\n \"ahmed\",\n \"ahn\",\n \"ahner\",\n \"aho\",\n \"ahrens\",\n \"ahumada\",\n \"aida\",\n \"aiello\",\n \"aiken\",\n \"aikens\",\n \"aiko\",\n \"aileen\",\n \"ailene\",\n \"aimee\",\n \"ainsworth\",\n \"aisha\",\n \"aitken\",\n \"aja\",\n \"aker\",\n \"akers\",\n \"akiko\",\n \"akilah\",\n \"akins\",\n \"alaina\",\n \"alaine\",\n \"alan\",\n \"alana\",\n \"alane\",\n \"alanis\",\n \"alaniz\",\n \"alanna\",\n \"alarcon\",\n \"alayna\",\n \"alba\",\n \"albanese\",\n \"albano\",\n \"albaugh\",\n \"albers\",\n \"albert\",\n \"alberta\",\n \"albertha\",\n \"albertina\",\n \"albertine\",\n \"alberto\",\n \"albertson\",\n \"albin\",\n \"albina\",\n \"albrecht\",\n \"albright\",\n \"albritton\",\n \"alcala\",\n \"alcantar\",\n \"alcantara\",\n \"alcaraz\",\n \"alcorn\",\n \"alda\",\n \"aldana\",\n \"alden\",\n \"alderete\",\n \"alderson\",\n \"aldrich\",\n \"aldridge\",\n \"alease\",\n \"alecia\",\n \"aleen\",\n \"aleida\",\n \"aleisha\",\n \"alejandra\",\n \"alejandrina\",\n \"alejandro\",\n \"aleman\",\n \"alena\",\n \"alene\",\n \"alesha\",\n \"aleshia\",\n \"alesia\",\n \"alessandra\",\n \"alessi\",\n \"aleta\",\n \"aletha\",\n \"alethea\",\n \"alethia\",\n \"alex\",\n \"alexa\",\n \"alexander\",\n \"alexandra\",\n \"alexandria\",\n \"alexia\",\n \"alexis\",\n \"alfano\",\n \"alfaro\",\n \"alfonso\",\n \"alford\",\n \"alfred\",\n \"alfreda\",\n \"alfredia\",\n \"alger\",\n \"ali\",\n \"alia\",\n \"alica\",\n \"alice\",\n \"alicea\",\n \"alicia\",\n \"alida\",\n \"alina\",\n \"aline\",\n \"alisa\",\n \"alise\",\n \"alisha\",\n \"alishia\",\n \"alisia\",\n \"alison\",\n \"alissa\",\n \"alita\",\n \"alix\",\n \"aliza\",\n \"alla\",\n \"allain\",\n \"allan\",\n \"allard\",\n \"alleen\",\n \"allegra\",\n \"alleman\",\n \"allen\",\n \"allena\",\n \"allene\",\n \"alleyne\",\n \"allgood\",\n \"allie\",\n \"alline\",\n \"allison\",\n \"allman\",\n \"allmon\",\n \"allred\",\n \"allyn\",\n \"allyson\",\n \"alma\",\n \"almanza\",\n \"almaraz\",\n \"almazan\",\n \"almeda\",\n \"almeida\",\n \"almeta\",\n \"almonte\",\n \"alona\",\n \"alonso\",\n \"alonzo\",\n \"alpert\",\n \"alston\",\n \"alsup\",\n \"alta\",\n \"altagracia\",\n \"altamirano\",\n \"altha\",\n \"althea\",\n \"altman\",\n \"alton\",\n \"alva\",\n \"alvarado\",\n \"alvardo\",\n \"alvarez\",\n \"alvera\",\n \"alverez\",\n \"alverson\",\n \"alverta\",\n \"alves\",\n \"alvey\",\n \"alvina\",\n \"alvis\",\n \"alyce\",\n \"alycia\",\n \"alysa\",\n \"alyse\",\n \"alysha\",\n \"alysia\",\n \"alyson\",\n \"alyssa\",\n \"amada\",\n \"amador\",\n \"amal\",\n \"amalia\",\n \"aman\",\n \"amanda\",\n \"amaral\",\n \"amaro\",\n \"amato\",\n \"amaya\",\n \"amber\",\n \"amberly\",\n \"ambriz\",\n \"ambrose\",\n \"amee\",\n \"amelia\",\n \"america\",\n \"amerson\",\n \"ames\",\n \"amey\",\n \"amick\",\n \"amie\",\n \"amiee\",\n \"amin\",\n \"amina\",\n \"amira\",\n \"ammerman\",\n \"ammie\",\n \"amos\",\n \"amparo\",\n \"amundson\",\n \"amy\",\n \"anabel\",\n \"analisa\",\n \"anamaria\",\n \"anastacia\",\n \"anastasia\",\n \"anaya\",\n \"ancheta\",\n \"andera\",\n \"anders\",\n \"andersen\",\n \"anderson\",\n \"anderton\",\n \"andes\",\n \"andino\",\n \"andra\",\n \"andrade\",\n \"andre\",\n \"andrea\",\n \"andree\",\n \"andres\",\n \"andresen\",\n \"andress\",\n \"andrew\",\n \"andrews\",\n \"andria\",\n \"andrus\",\n \"anette\",\n \"ange\",\n \"angela\",\n \"angele\",\n \"angelena\",\n \"angeles\",\n \"angelia\",\n \"angelica\",\n \"angelika\",\n \"angelina\",\n \"angeline\",\n \"angelique\",\n \"angelita\",\n \"angell\",\n \"angella\",\n \"angelo\",\n \"angelyn\",\n \"angie\",\n \"angila\",\n \"angla\",\n \"anglea\",\n \"anglin\",\n \"anguiano\",\n \"angulo\",\n \"angus\",\n \"anh\",\n \"anika\",\n \"anisa\",\n \"anisha\",\n \"anissa\",\n \"anita\",\n \"anitra\",\n \"anja\",\n \"anjanette\",\n \"anjelica\",\n \"ann\",\n \"anna\",\n \"annabel\",\n \"annabell\",\n \"annabelle\",\n \"annalee\",\n \"annalisa\",\n \"annamae\",\n \"annamaria\",\n \"annamarie\",\n \"anne\",\n \"anneliese\",\n \"annelle\",\n \"annemarie\",\n \"annett\",\n \"annetta\",\n \"annette\",\n \"annice\",\n \"annie\",\n \"annika\",\n \"annis\",\n \"annita\",\n \"annmarie\",\n \"anselmo\",\n \"ansley\",\n \"anson\",\n \"anthony\",\n \"antionette\",\n \"antoine\",\n \"antoinette\",\n \"anton\",\n \"antonelli\",\n \"antonetta\",\n \"antonette\",\n \"antonia\",\n \"antonietta\",\n \"antonina\",\n \"antonio\",\n \"anya\",\n \"aparicio\",\n \"apodaca\",\n \"apolonia\",\n \"aponte\",\n \"appleby\",\n \"applegate\",\n \"appleton\",\n \"applewhite\",\n \"appling\",\n \"apryl\",\n \"aquilar\",\n \"aquino\",\n \"araceli\",\n \"aracelis\",\n \"aracely\",\n \"aragon\",\n \"araiza\",\n \"arana\",\n \"aranda\",\n \"arango\",\n \"araujo\",\n \"arbogast\",\n \"arbuckle\",\n \"arce\",\n \"arcelia\",\n \"arceneaux\",\n \"archambault\",\n \"archibald\",\n \"archie\",\n \"archuleta\",\n \"arciniega\",\n \"ardath\",\n \"ardelia\",\n \"ardell\",\n \"ardella\",\n \"ardelle\",\n \"ardis\",\n \"ardith\",\n \"ardoin\",\n \"arellano\",\n \"aretha\",\n \"arevalo\",\n \"argelia\",\n \"argentina\",\n \"argo\",\n \"arguelles\",\n \"arguello\",\n \"argueta\",\n \"ariana\",\n \"ariane\",\n \"arianna\",\n \"arianne\",\n \"arica\",\n \"arie\",\n \"ariel\",\n \"arielle\",\n \"arla\",\n \"arlean\",\n \"arleen\",\n \"arlena\",\n \"arlene\",\n \"arletha\",\n \"arletta\",\n \"arlette\",\n \"arlinda\",\n \"arline\",\n \"arlyne\",\n \"armanda\",\n \"armandina\",\n \"armbruster\",\n \"armendariz\",\n \"armenta\",\n \"armentrout\",\n \"armes\",\n \"armida\",\n \"armijo\",\n \"arminda\",\n \"armistead\",\n \"armitage\",\n \"armstead\",\n \"armstrong\",\n \"arndt\",\n \"arneson\",\n \"arnett\",\n \"arnetta\",\n \"arnette\",\n \"arnita\",\n \"arnold\",\n \"arnone\",\n \"aronson\",\n \"arredondo\",\n \"arreola\",\n \"arriaga\",\n \"arrington\",\n \"arriola\",\n \"arrowood\",\n \"arruda\",\n \"arsenault\",\n \"arteaga\",\n \"arthur\",\n \"artie\",\n \"artis\",\n \"arvilla\",\n \"arvizu\",\n \"arwood\",\n \"arzola\",\n \"asberry\",\n \"asbury\",\n \"asha\",\n \"ashanti\",\n \"ashbaugh\",\n \"ashburn\",\n \"ashby\",\n \"ashcraft\",\n \"ashe\",\n \"ashely\",\n \"asher\",\n \"ashford\",\n \"ashlea\",\n \"ashlee\",\n \"ashleigh\",\n \"ashley\",\n \"ashli\",\n \"ashlie\",\n \"ashly\",\n \"ashlyn\",\n \"ashmore\",\n \"ashton\",\n \"ashworth\",\n \"asia\",\n \"askins\",\n \"asley\",\n \"assunta\",\n \"aston\",\n \"astrid\",\n \"asuncion\",\n \"atchison\",\n \"atchley\",\n \"atencio\",\n \"athena\",\n \"atherton\",\n \"athey\",\n \"atkins\",\n \"atkinson\",\n \"attaway\",\n \"atwater\",\n \"atwell\",\n \"atwood\",\n \"aube\",\n \"aubin\",\n \"aubrey\",\n \"aucoin\",\n \"audet\",\n \"audette\",\n \"audie\",\n \"audra\",\n \"audrea\",\n \"audrey\",\n \"audria\",\n \"audrie\",\n \"audry\",\n \"augusta\",\n \"augustin\",\n \"augustina\",\n \"augustine\",\n \"augustus\",\n \"ault\",\n \"aultman\",\n \"aundrea\",\n \"aurea\",\n \"aurelia\",\n \"aurora\",\n \"aurore\",\n \"austin\",\n \"auten\",\n \"autrey\",\n \"autry\",\n \"ava\",\n \"avalos\",\n \"avelar\",\n \"avelina\",\n \"avent\",\n \"averett\",\n \"averill\",\n \"avery\",\n \"avila\",\n \"aviles\",\n \"avina\",\n \"avis\",\n \"avril\",\n \"awilda\",\n \"ayako\",\n \"ayala\",\n \"ayana\",\n \"ayanna\",\n \"aycock\",\n \"ayer\",\n \"ayers\",\n \"ayesha\",\n \"ayotte\",\n \"azalee\",\n \"azar\",\n \"azevedo\",\n \"azucena\",\n \"azzie\",\n \"babara\",\n \"babb\",\n \"babcock\",\n \"baber\",\n \"babette\",\n \"babin\",\n \"babineaux\",\n \"baca\",\n \"bachman\",\n \"backman\",\n \"backus\",\n \"bader\",\n \"badgett\",\n \"badillo\",\n \"baer\",\n \"baez\",\n \"baeza\",\n \"bagby\",\n \"baggett\",\n \"bagley\",\n \"bagwell\",\n \"bahena\",\n \"bahr\",\n \"baier\",\n \"bailes\",\n \"bailey\",\n \"baillargeon\",\n \"baily\",\n \"bain\",\n \"baines\",\n \"bair\",\n \"baird\",\n \"baisden\",\n \"bakke\",\n \"bakken\",\n \"bakker\",\n \"balch\",\n \"balcom\",\n \"balderas\",\n \"baldridge\",\n \"baldwin\",\n \"ballance\",\n \"ballard\",\n \"ballenger\",\n \"ballentine\",\n \"ballesteros\",\n \"ballew\",\n \"ballinger\",\n \"ballou\",\n \"baltazar\",\n \"balzer\",\n \"bambi\",\n \"banas\",\n \"bancroft\",\n \"bankhead\",\n \"bankston\",\n \"bannon\",\n \"banta\",\n \"banuelos\",\n \"bao\",\n \"baptiste\",\n \"barabara\",\n \"barahona\",\n \"barajas\",\n \"baran\",\n \"baranowski\",\n \"barba\",\n \"barbar\",\n \"barbara\",\n \"barbee\",\n \"barbera\",\n \"barbieri\",\n \"barbosa\",\n \"barbour\",\n \"barboza\",\n \"barbra\",\n \"barclay\",\n \"barden\",\n \"bardwell\",\n \"barela\",\n \"barfield\",\n \"barger\",\n \"barham\",\n \"barhorst\",\n \"barkley\",\n \"barksdale\",\n \"barlow\",\n \"barnard\",\n \"barner\",\n \"barnes\",\n \"barnett\",\n \"barnette\",\n \"barnhart\",\n \"barnhill\",\n \"barnum\",\n \"barnwell\",\n \"barone\",\n \"barr\",\n \"barragan\",\n \"barraza\",\n \"barrera\",\n \"barreto\",\n \"barrett\",\n \"barrick\",\n \"barrie\",\n \"barrientos\",\n \"barringer\",\n \"barrington\",\n \"barron\",\n \"barros\",\n \"barry\",\n \"barta\",\n \"bartel\",\n \"bartell\",\n \"bartels\",\n \"barth\",\n \"bartholomew\",\n \"bartlett\",\n \"bartley\",\n \"barto\",\n \"bartz\",\n \"bascom\",\n \"basham\",\n \"basile\",\n \"basilia\",\n \"basinger\",\n \"baskerville\",\n \"baskin\",\n \"bassett\",\n \"bastian\",\n \"batchelder\",\n \"batchelor\",\n \"bateman\",\n \"batey\",\n \"batista\",\n \"batson\",\n \"battaglia\",\n \"battista\",\n \"batton\",\n \"baty\",\n \"baucom\",\n \"bauer\",\n \"baugh\",\n \"baugher\",\n \"baughman\",\n \"baum\",\n \"bauman\",\n \"baumann\",\n \"baumgardner\",\n \"baumgartner\",\n \"bautista\",\n \"baxley\",\n \"bayer\",\n \"bayless\",\n \"baylor\",\n \"bayne\",\n \"bazan\",\n \"bazemore\",\n \"beaird\",\n \"beal\",\n \"beale\",\n \"beall\",\n \"beals\",\n \"beaman\",\n \"beamon\",\n \"beane\",\n \"bearden\",\n \"beardsley\",\n \"beasley\",\n \"beason\",\n \"beaton\",\n \"beatrice\",\n \"beatris\",\n \"beatriz\",\n \"beattie\",\n \"beatty\",\n \"beaty\",\n \"beauchamp\",\n \"beaudette\",\n \"beaudoin\",\n \"beaudry\",\n \"beaulah\",\n \"beaulieu\",\n \"beaumont\",\n \"beauregard\",\n \"bebe\",\n \"becerra\",\n \"bechtel\",\n \"bechtold\",\n \"becker\",\n \"beckett\",\n \"beckford\",\n \"beckham\",\n \"becki\",\n \"beckie\",\n \"beckley\",\n \"beckman\",\n \"beckner\",\n \"beckwith\",\n \"becky\",\n \"becnel\",\n \"bedard\",\n \"bedford\",\n \"bedwell\",\n \"beebe\",\n \"beecher\",\n \"beeler\",\n \"beem\",\n \"beeman\",\n \"beene\",\n \"beesley\",\n \"beeson\",\n \"begay\",\n \"beggs\",\n \"begley\",\n \"behling\",\n \"behr\",\n \"behrens\",\n \"bejarano\",\n \"belanger\",\n \"belden\",\n \"belen\",\n \"belew\",\n \"belia\",\n \"belinda\",\n \"belisle\",\n \"belk\",\n \"belkis\",\n \"belknap\",\n \"bella\",\n \"bellamy\",\n \"belle\",\n \"beller\",\n \"bellinger\",\n \"bello\",\n \"belton\",\n \"beltran\",\n \"beltz\",\n \"belva\",\n \"bemis\",\n \"benally\",\n \"benavides\",\n \"benavidez\",\n \"benbow\",\n \"benedetto\",\n \"benedict\",\n \"benefield\",\n \"benfield\",\n \"benford\",\n \"benge\",\n \"benham\",\n \"benita\",\n \"benites\",\n \"benitez\",\n \"benn\",\n \"benner\",\n \"bennett\",\n \"bennie\",\n \"benning\",\n \"bennington\",\n \"benoit\",\n \"benson\",\n \"bentley\",\n \"benton\",\n \"bentz\",\n \"benz\",\n \"berard\",\n \"berenice\",\n \"bergen\",\n \"berger\",\n \"bergeron\",\n \"bergin\",\n \"berglund\",\n \"bergman\",\n \"bergmann\",\n \"bergquist\",\n \"bergstrom\",\n \"berkey\",\n \"berkley\",\n \"berkowitz\",\n \"berman\",\n \"bermudez\",\n \"berna\",\n \"bernadette\",\n \"bernadine\",\n \"bernal\",\n \"bernard\",\n \"bernarda\",\n \"bernardina\",\n \"bernardine\",\n \"bernardo\",\n \"berndt\",\n \"berneice\",\n \"berner\",\n \"bernetta\",\n \"bernhardt\",\n \"bernice\",\n \"bernie\",\n \"berniece\",\n \"bernier\",\n \"bernita\",\n \"bernstein\",\n \"berrios\",\n \"berryhill\",\n \"berryman\",\n \"berta\",\n \"bertha\",\n \"bertie\",\n \"bertram\",\n \"bertrand\",\n \"berube\",\n \"beryl\",\n \"bess\",\n \"bessette\",\n \"bessie\",\n \"betancourt\",\n \"beth\",\n \"bethanie\",\n \"bethann\",\n \"bethany\",\n \"bethea\",\n \"bethel\",\n \"bethune\",\n \"betsey\",\n \"betsy\",\n \"bette\",\n \"bettencourt\",\n \"bettie\",\n \"bettina\",\n \"bettis\",\n \"betts\",\n \"betty\",\n \"bettyann\",\n \"bettye\",\n \"betz\",\n \"beula\",\n \"beulah\",\n \"bev\",\n \"bevan\",\n \"beveridge\",\n \"beverlee\",\n \"beverley\",\n \"beverly\",\n \"bevins\",\n \"bevis\",\n \"bewley\",\n \"beyer\",\n \"bianca\",\n \"bianchi\",\n \"bianco\",\n \"bibb\",\n \"bibbs\",\n \"bickel\",\n \"bickerstaff\",\n \"bickford\",\n \"biddle\",\n \"bidwell\",\n \"bieber\",\n \"bierman\",\n \"bigelow\",\n \"biggers\",\n \"biggerstaff\",\n \"bigham\",\n \"bigler\",\n \"bigley\",\n \"bilbrey\",\n \"biller\",\n \"billi\",\n \"billie\",\n \"billingsley\",\n \"billington\",\n \"billiot\",\n \"billups\",\n \"billy\",\n \"billye\",\n \"bilodeau\",\n \"bilyeu\",\n \"binette\",\n \"binford\",\n \"bingaman\",\n \"bingham\",\n \"binion\",\n \"binkley\",\n \"binns\",\n \"birchfield\",\n \"birdsall\",\n \"birdsong\",\n \"birdwell\",\n \"birgit\",\n \"birmingham\",\n \"birnbaum\",\n \"birt\",\n \"bischoff\",\n \"bissell\",\n \"bissonnette\",\n \"bitner\",\n \"bittner\",\n \"bivens\",\n \"bivins\",\n \"bixby\",\n \"bixler\",\n \"blackburn\",\n \"blackford\",\n \"blackman\",\n \"blackmon\",\n \"blackmore\",\n \"blackshear\",\n \"blackstock\",\n \"blackstone\",\n \"blackwell\",\n \"blaine\",\n \"blair\",\n \"blais\",\n \"blaisdell\",\n \"blake\",\n \"blakely\",\n \"blakemore\",\n \"blakeney\",\n \"blakeslee\",\n \"blakey\",\n \"blakley\",\n \"blakney\",\n \"blalock\",\n \"blanc\",\n \"blanca\",\n \"blanch\",\n \"blanchard\",\n \"blanche\",\n \"blanchette\",\n \"blanding\",\n \"blaney\",\n \"blankenship\",\n \"blanton\",\n \"blaylock\",\n \"bledsoe\",\n \"blevins\",\n \"bloch\",\n \"blodgett\",\n \"blomquist\",\n \"blondell\",\n \"bloodworth\",\n \"bloomfield\",\n \"blouin\",\n \"blount\",\n \"bluhm\",\n \"blum\",\n \"blume\",\n \"blumenthal\",\n \"bly\",\n \"blythe\",\n \"boardman\",\n \"boatright\",\n \"boatwright\",\n \"bobb\",\n \"bobbi\",\n \"bobbie\",\n \"bobbitt\",\n \"bobby\",\n \"bobbye\",\n \"bobette\",\n \"bobo\",\n \"bocanegra\",\n \"boddie\",\n \"boden\",\n \"bodine\",\n \"bodnar\",\n \"boehm\",\n \"boettcher\",\n \"bogard\",\n \"bogart\",\n \"boger\",\n \"boggess\",\n \"boggs\",\n \"bohannan\",\n \"bohannon\",\n \"bohn\",\n \"boisvert\",\n \"bojorquez\",\n \"bok\",\n \"boland\",\n \"bolanos\",\n \"bolding\",\n \"boldt\",\n \"bolduc\",\n \"bolen\",\n \"boley\",\n \"bolick\",\n \"bolin\",\n \"boling\",\n \"bolinger\",\n \"bollinger\",\n \"bolton\",\n \"bolyard\",\n \"boman\",\n \"bomar\",\n \"bonanno\",\n \"boney\",\n \"bonham\",\n \"bonilla\",\n \"bonin\",\n \"bonita\",\n \"bonnell\",\n \"bonner\",\n \"bonnett\",\n \"bonney\",\n \"bonnie\",\n \"bonny\",\n \"bono\",\n \"booher\",\n \"booker\",\n \"bookout\",\n \"boone\",\n \"boothe\",\n \"bopp\",\n \"borchardt\",\n \"borchers\",\n \"bordeaux\",\n \"bordelon\",\n \"borden\",\n \"boren\",\n \"borg\",\n \"borges\",\n \"borja\",\n \"borkowski\",\n \"borowski\",\n \"borrego\",\n \"borrero\",\n \"borst\",\n \"bosch\",\n \"bosco\",\n \"bosley\",\n \"bost\",\n \"bostic\",\n \"bostick\",\n \"bostwick\",\n \"boswell\",\n \"bosworth\",\n \"botelho\",\n \"botello\",\n \"bouchard\",\n \"boucher\",\n \"boudreau\",\n \"boudreaux\",\n \"bouffard\",\n \"boughton\",\n \"bouie\",\n \"boulanger\",\n \"bouldin\",\n \"boulware\",\n \"bourassa\",\n \"bourque\",\n \"bousquet\",\n \"boutin\",\n \"boutte\",\n \"boutwell\",\n \"bova\",\n \"bove\",\n \"bowden\",\n \"bowe\",\n \"bowen\",\n \"bowens\",\n \"bowes\",\n \"bowie\",\n \"bowker\",\n \"bowles\",\n \"bowlin\",\n \"boyce\",\n \"boyd\",\n \"boyer\",\n \"boyes\",\n \"boyett\",\n \"boyette\",\n \"boykin\",\n \"boykins\",\n \"boylan\",\n \"boyle\",\n \"boyles\",\n \"boynton\",\n \"bozarth\",\n \"bozeman\",\n \"bracey\",\n \"brackett\",\n \"bracy\",\n \"bradberry\",\n \"bradbury\",\n \"braddock\",\n \"braddy\",\n \"braden\",\n \"bradfield\",\n \"bradford\",\n \"bradley\",\n \"bradshaw\",\n \"brady\",\n \"bragdon\",\n \"bragg\",\n \"brainard\",\n \"braithwaite\",\n \"braley\",\n \"bramblett\",\n \"bramlett\",\n \"brammer\",\n \"branda\",\n \"brande\",\n \"brandee\",\n \"brandenburg\",\n \"brandes\",\n \"brandi\",\n \"brandie\",\n \"brandon\",\n \"brandt\",\n \"branham\",\n \"brann\",\n \"brannan\",\n \"brannen\",\n \"brannon\",\n \"branscum\",\n \"branson\",\n \"brantley\",\n \"branton\",\n \"branum\",\n \"brashear\",\n \"braswell\",\n \"bratcher\",\n \"bratton\",\n \"braud\",\n \"brauer\",\n \"braun\",\n \"brawley\",\n \"brawner\",\n \"braxton\",\n \"brayton\",\n \"brazell\",\n \"braziel\",\n \"breana\",\n \"breann\",\n \"breanna\",\n \"breanne\",\n \"breault\",\n \"breaux\",\n \"breazeale\",\n \"breckenridge\",\n \"bree\",\n \"breeden\",\n \"breedlove\",\n \"breen\",\n \"brehm\",\n \"breland\",\n \"bremer\",\n \"brenda\",\n \"brenna\",\n \"brennan\",\n \"brenneman\",\n \"brenner\",\n \"bresnahan\",\n \"brett\",\n \"bretz\",\n \"breunig\",\n \"brewington\",\n \"brewton\",\n \"brian\",\n \"briana\",\n \"brianna\",\n \"brianne\",\n \"brice\",\n \"briceno\",\n \"bricker\",\n \"brickey\",\n \"bridgeman\",\n \"bridgers\",\n \"bridget\",\n \"bridgett\",\n \"bridgette\",\n \"bridgewater\",\n \"brien\",\n \"brigette\",\n \"briggs\",\n \"brigham\",\n \"brigid\",\n \"brigida\",\n \"brigitte\",\n \"briley\",\n \"brinda\",\n \"brinker\",\n \"brinkley\",\n \"brinkman\",\n \"brinson\",\n \"brinton\",\n \"briones\",\n \"brisco\",\n \"briscoe\",\n \"briseno\",\n \"brisson\",\n \"brister\",\n \"bristol\",\n \"bristow\",\n \"britany\",\n \"britney\",\n \"britni\",\n \"brito\",\n \"britt\",\n \"britta\",\n \"brittain\",\n \"brittaney\",\n \"brittani\",\n \"brittanie\",\n \"brittany\",\n \"britteny\",\n \"brittingham\",\n \"brittney\",\n \"brittni\",\n \"brittny\",\n \"britton\",\n \"broadbent\",\n \"broaddus\",\n \"broadnax\",\n \"broadus\",\n \"broadwater\",\n \"brochu\",\n \"brockington\",\n \"brockman\",\n \"brockway\",\n \"broderick\",\n \"brodeur\",\n \"brodie\",\n \"brodsky\",\n \"brody\",\n \"brogdon\",\n \"brokaw\",\n \"bromley\",\n \"bronson\",\n \"bronwyn\",\n \"brooke\",\n \"brooker\",\n \"brookins\",\n \"brookshire\",\n \"broome\",\n \"broomfield\",\n \"brophy\",\n \"brotherton\",\n \"broughton\",\n \"broussard\",\n \"browder\",\n \"brower\",\n \"browne\",\n \"brownell\",\n \"brownfield\",\n \"brownlee\",\n \"broyles\",\n \"brubaker\",\n \"bruce\",\n \"brumbaugh\",\n \"brumfield\",\n \"brumley\",\n \"brummett\",\n \"bruna\",\n \"brundage\",\n \"brune\",\n \"brunelle\",\n \"bruner\",\n \"brunilda\",\n \"brunner\",\n \"bruno\",\n \"bruns\",\n \"brunson\",\n \"bruton\",\n \"bryan\",\n \"bryanna\",\n \"bryant\",\n \"bryce\",\n \"brynn\",\n \"bryson\",\n \"bucci\",\n \"buchanan\",\n \"bucher\",\n \"buchholz\",\n \"buckingham\",\n \"buckley\",\n \"buckman\",\n \"buckner\",\n \"budd\",\n \"budde\",\n \"buehler\",\n \"buell\",\n \"buena\",\n \"bueno\",\n \"buenrostro\",\n \"buettner\",\n \"buffington\",\n \"bufford\",\n \"buffy\",\n \"buford\",\n \"bugg\",\n \"buggs\",\n \"bui\",\n \"buie\",\n \"bula\",\n \"bulah\",\n \"bullard\",\n \"bullen\",\n \"buller\",\n \"bullington\",\n \"bullins\",\n \"bullis\",\n \"bulter\",\n \"bumgardner\",\n \"bumgarner\",\n \"bunn\",\n \"bunnell\",\n \"bunton\",\n \"burbank\",\n \"burch\",\n \"burcham\",\n \"burchell\",\n \"burchett\",\n \"burchette\",\n \"burchfield\",\n \"burdett\",\n \"burdette\",\n \"burdick\",\n \"burdine\",\n \"burford\",\n \"burge\",\n \"burgett\",\n \"burgin\",\n \"burgos\",\n \"burkett\",\n \"burkey\",\n \"burkhalter\",\n \"burkhardt\",\n \"burkhart\",\n \"burkholder\",\n \"burleigh\",\n \"burleson\",\n \"burlingame\",\n \"burma\",\n \"burmeister\",\n \"burnell\",\n \"burnett\",\n \"burnette\",\n \"burney\",\n \"burnham\",\n \"burrell\",\n \"burress\",\n \"burris\",\n \"burroughs\",\n \"burrus\",\n \"burruss\",\n \"burson\",\n \"burt\",\n \"burwell\",\n \"busch\",\n \"bushey\",\n \"bushnell\",\n \"bussard\",\n \"busse\",\n \"bussell\",\n \"bussey\",\n \"bustamante\",\n \"bustos\",\n \"butterfield\",\n \"butterworth\",\n \"butz\",\n \"buxton\",\n \"buzzell\",\n \"byars\",\n \"bybee\",\n \"byer\",\n \"byerly\",\n \"byers\",\n \"byington\",\n \"byler\",\n \"bynum\",\n \"byrd\",\n \"byrne\",\n \"byrnes\",\n \"byron\",\n \"byrum\",\n \"caballero\",\n \"caban\",\n \"cabe\",\n \"cabral\",\n \"cabrales\",\n \"cabrera\",\n \"caceres\",\n \"caddell\",\n \"cadena\",\n \"cadwell\",\n \"cady\",\n \"caffey\",\n \"cagle\",\n \"cahill\",\n \"cahoon\",\n \"caine\",\n \"caines\",\n \"caitlin\",\n \"caitlyn\",\n \"calabro\",\n \"calandra\",\n \"calder\",\n \"calderon\",\n \"caldwell\",\n \"calfee\",\n \"calhoun\",\n \"calista\",\n \"callaghan\",\n \"callahan\",\n \"callaway\",\n \"callen\",\n \"callender\",\n \"callie\",\n \"callihan\",\n \"callis\",\n \"callison\",\n \"calloway\",\n \"calton\",\n \"calvert\",\n \"calvillo\",\n \"calvin\",\n \"calvo\",\n \"calzada\",\n \"camacho\",\n \"camara\",\n \"camarena\",\n \"camargo\",\n \"camarillo\",\n \"cambell\",\n \"camelia\",\n \"camellia\",\n \"cameron\",\n \"cami\",\n \"camie\",\n \"camila\",\n \"camilla\",\n \"camille\",\n \"camire\",\n \"cammack\",\n \"cammie\",\n \"cammy\",\n \"campbell\",\n \"campuzano\",\n \"canada\",\n \"canaday\",\n \"canady\",\n \"canales\",\n \"candace\",\n \"candance\",\n \"candelaria\",\n \"candelario\",\n \"candi\",\n \"candice\",\n \"candida\",\n \"candie\",\n \"candis\",\n \"candler\",\n \"candra\",\n \"candyce\",\n \"cannady\",\n \"cano\",\n \"cantara\",\n \"cantrell\",\n \"cantu\",\n \"cantwell\",\n \"cao\",\n \"capel\",\n \"capone\",\n \"capps\",\n \"caprice\",\n \"capuano\",\n \"caputo\",\n \"cara\",\n \"caraballo\",\n \"carbajal\",\n \"carbaugh\",\n \"carbone\",\n \"carden\",\n \"cardenas\",\n \"cardin\",\n \"cardinale\",\n \"cardona\",\n \"cardoso\",\n \"cardoza\",\n \"cardwell\",\n \"caren\",\n \"carey\",\n \"cargile\",\n \"cargill\",\n \"cari\",\n \"caridad\",\n \"carie\",\n \"carillo\",\n \"carin\",\n \"carina\",\n \"carisa\",\n \"carissa\",\n \"carita\",\n \"carl\",\n \"carla\",\n \"carlee\",\n \"carleen\",\n \"carlena\",\n \"carlene\",\n \"carleton\",\n \"carletta\",\n \"carley\",\n \"carli\",\n \"carlie\",\n \"carlile\",\n \"carlin\",\n \"carline\",\n \"carlisle\",\n \"carlita\",\n \"carlo\",\n \"carlos\",\n \"carlota\",\n \"carlotta\",\n \"carlsen\",\n \"carlson\",\n \"carlton\",\n \"carly\",\n \"carlyle\",\n \"carlyn\",\n \"carma\",\n \"carmack\",\n \"carman\",\n \"carmel\",\n \"carmela\",\n \"carmelia\",\n \"carmelina\",\n \"carmelita\",\n \"carmella\",\n \"carmen\",\n \"carmichael\",\n \"carmina\",\n \"carmody\",\n \"carmon\",\n \"carmona\",\n \"carnahan\",\n \"carner\",\n \"carnes\",\n \"caro\",\n \"carola\",\n \"carolann\",\n \"carole\",\n \"carolee\",\n \"carolin\",\n \"carolina\",\n \"caroline\",\n \"caroll\",\n \"carolyn\",\n \"carolyne\",\n \"carolynn\",\n \"caron\",\n \"carothers\",\n \"caroyln\",\n \"carpio\",\n \"carranza\",\n \"carrasco\",\n \"carrasquillo\",\n \"carreno\",\n \"carreon\",\n \"carrera\",\n \"carrero\",\n \"carri\",\n \"carrico\",\n \"carrie\",\n \"carrigan\",\n \"carrillo\",\n \"carrington\",\n \"carrizales\",\n \"carrol\",\n \"carroll\",\n \"carruth\",\n \"carruthers\",\n \"carson\",\n \"carswell\",\n \"cartagena\",\n \"cartier\",\n \"carty\",\n \"caruso\",\n \"caruthers\",\n \"carvajal\",\n \"carvalho\",\n \"cary\",\n \"caryl\",\n \"carylon\",\n \"caryn\",\n \"casandra\",\n \"casanova\",\n \"casares\",\n \"casarez\",\n \"casavant\",\n \"cascio\",\n \"casey\",\n \"cashman\",\n \"casiano\",\n \"casias\",\n \"casie\",\n \"casillas\",\n \"casimira\",\n \"caskey\",\n \"cason\",\n \"casper\",\n \"cass\",\n \"cassady\",\n \"cassandra\",\n \"cassaundra\",\n \"cassel\",\n \"cassell\",\n \"cassey\",\n \"cassi\",\n \"cassidy\",\n \"cassie\",\n \"cassity\",\n \"cassondra\",\n \"cassy\",\n \"castaneda\",\n \"castano\",\n \"castanon\",\n \"casteel\",\n \"castellano\",\n \"castellanos\",\n \"castello\",\n \"castillo\",\n \"castleberry\",\n \"castleman\",\n \"casto\",\n \"caston\",\n \"castorena\",\n \"castro\",\n \"caswell\",\n \"catalan\",\n \"catalano\",\n \"catalina\",\n \"catarina\",\n \"caterina\",\n \"catharine\",\n \"cathcart\",\n \"catherin\",\n \"catherina\",\n \"catherine\",\n \"cathern\",\n \"catheryn\",\n \"cathey\",\n \"cathi\",\n \"cathie\",\n \"cathleen\",\n \"cathrine\",\n \"cathryn\",\n \"cathy\",\n \"catina\",\n \"catlett\",\n \"catlin\",\n \"cato\",\n \"caton\",\n \"catrice\",\n \"catrina\",\n \"catron\",\n \"caudell\",\n \"caudill\",\n \"cauley\",\n \"caulfield\",\n \"cauthen\",\n \"cavanaugh\",\n \"cavazos\",\n \"cavender\",\n \"cavin\",\n \"caviness\",\n \"cawley\",\n \"cawthon\",\n \"cayla\",\n \"caylor\",\n \"cazares\",\n \"ceasar\",\n \"ceballos\",\n \"cecelia\",\n \"cecil\",\n \"cecila\",\n \"cecile\",\n \"cecilia\",\n \"cecille\",\n \"cecily\",\n \"cedeno\",\n \"cedillo\",\n \"ceja\",\n \"celena\",\n \"celesta\",\n \"celeste\",\n \"celestina\",\n \"celestine\",\n \"celia\",\n \"celina\",\n \"celinda\",\n \"celine\",\n \"celsa\",\n \"centeno\",\n \"ceola\",\n \"cepeda\",\n \"cerda\",\n \"cervantes\",\n \"cervantez\",\n \"chabot\",\n \"chacon\",\n \"chadwell\",\n \"chadwick\",\n \"chae\",\n \"chaffee\",\n \"chaffin\",\n \"chafin\",\n \"chaisson\",\n \"chalfant\",\n \"chalmers\",\n \"chamberlain\",\n \"chamberlin\",\n \"chamblee\",\n \"chambless\",\n \"chambliss\",\n \"chamness\",\n \"champlin\",\n \"chan\",\n \"chana\",\n \"chanda\",\n \"chandra\",\n \"chanel\",\n \"chanell\",\n \"chanelle\",\n \"chaney\",\n \"chang\",\n \"chantal\",\n \"chantay\",\n \"chante\",\n \"chantel\",\n \"chantell\",\n \"chantelle\",\n \"chao\",\n \"chapa\",\n \"chaparro\",\n \"chapin\",\n \"chaplin\",\n \"chappell\",\n \"chapple\",\n \"chara\",\n \"charbonneau\",\n \"charest\",\n \"charette\",\n \"charis\",\n \"charise\",\n \"charissa\",\n \"charisse\",\n \"charita\",\n \"charla\",\n \"charland\",\n \"charleen\",\n \"charlena\",\n \"charlene\",\n \"charles\",\n \"charlesetta\",\n \"charlette\",\n \"charley\",\n \"charlie\",\n \"charline\",\n \"charlott\",\n \"charlotte\",\n \"charlsie\",\n \"charlton\",\n \"charlyn\",\n \"charmain\",\n \"charmaine\",\n \"charolette\",\n \"charron\",\n \"chartier\",\n \"chasidy\",\n \"chasity\",\n \"chassidy\",\n \"chastain\",\n \"chasteen\",\n \"chatham\",\n \"chatman\",\n \"chau\",\n \"chavarria\",\n \"chavers\",\n \"chaves\",\n \"chavez\",\n \"chavira\",\n \"chavis\",\n \"chaya\",\n \"cheatham\",\n \"chee\",\n \"chelsea\",\n \"chelsey\",\n \"chelsie\",\n \"chen\",\n \"chenault\",\n \"cheney\",\n \"cheng\",\n \"chenoweth\",\n \"cher\",\n \"chere\",\n \"cheree\",\n \"cherelle\",\n \"cheri\",\n \"cherie\",\n \"cherilyn\",\n \"cherise\",\n \"cherly\",\n \"cherlyn\",\n \"cherri\",\n \"cherrie\",\n \"cherryl\",\n \"chery\",\n \"cheryl\",\n \"cheryle\",\n \"cheryll\",\n \"chesser\",\n \"chesson\",\n \"chester\",\n \"cheung\",\n \"chewning\",\n \"cheyenne\",\n \"chiang\",\n \"chidester\",\n \"chieko\",\n \"childers\",\n \"childress\",\n \"childs\",\n \"chilton\",\n \"ching\",\n \"chinn\",\n \"chipman\",\n \"chiquita\",\n \"chisholm\",\n \"chism\",\n \"chisolm\",\n \"chitwood\",\n \"chiu\",\n \"chloe\",\n \"cho\",\n \"choate\",\n \"choe\",\n \"choi\",\n \"chong\",\n \"chouinard\",\n \"chris\",\n \"chrisman\",\n \"chrissy\",\n \"christ\",\n \"christa\",\n \"christal\",\n \"christeen\",\n \"christel\",\n \"christen\",\n \"christena\",\n \"christene\",\n \"christensen\",\n \"christenson\",\n \"christi\",\n \"christia\",\n \"christian\",\n \"christiana\",\n \"christiane\",\n \"christiansen\",\n \"christianson\",\n \"christie\",\n \"christin\",\n \"christina\",\n \"christine\",\n \"christinia\",\n \"christman\",\n \"christmas\",\n \"christner\",\n \"christopher\",\n \"christopherso\",\n \"christy\",\n \"chronister\",\n \"chrystal\",\n \"chu\",\n \"chun\",\n \"chung\",\n \"churchill\",\n \"churchwell\",\n \"ciara\",\n \"cicely\",\n \"ciera\",\n \"cierra\",\n \"cimino\",\n \"cinda\",\n \"cinderella\",\n \"cindi\",\n \"cindie\",\n \"cindy\",\n \"cinthia\",\n \"cintron\",\n \"cioffi\",\n \"cira\",\n \"cisneros\",\n \"claar\",\n \"claiborne\",\n \"clair\",\n \"claire\",\n \"clancy\",\n \"clanton\",\n \"clapp\",\n \"clara\",\n \"clardy\",\n \"clare\",\n \"clarence\",\n \"claretha\",\n \"claretta\",\n \"claribel\",\n \"clarice\",\n \"clarinda\",\n \"clarine\",\n \"claris\",\n \"clarisa\",\n \"clarissa\",\n \"clarita\",\n \"clark\",\n \"clarke\",\n \"clarkson\",\n \"classie\",\n \"claude\",\n \"claudette\",\n \"claudia\",\n \"claudie\",\n \"claudine\",\n \"claudio\",\n \"claus\",\n \"clausen\",\n \"claussen\",\n \"clawson\",\n \"claxton\",\n \"claycomb\",\n \"claypool\",\n \"claypoole\",\n \"clayton\",\n \"claytor\",\n \"cleary\",\n \"clegg\",\n \"cleghorn\",\n \"cleland\",\n \"clelia\",\n \"clemencia\",\n \"clemens\",\n \"clemente\",\n \"clementina\",\n \"clementine\",\n \"clements\",\n \"clemmer\",\n \"clemmie\",\n \"clemmons\",\n \"clemons\",\n \"cleo\",\n \"cleopatra\",\n \"cleora\",\n \"cleotilde\",\n \"cleta\",\n \"cleveland\",\n \"clevenger\",\n \"clifford\",\n \"clifton\",\n \"clinkscales\",\n \"clinton\",\n \"cloninger\",\n \"clora\",\n \"clorinda\",\n \"clotilde\",\n \"clouse\",\n \"cloutier\",\n \"clower\",\n \"clowers\",\n \"cloyd\",\n \"cluff\",\n \"clyburn\",\n \"clyde\",\n \"clymer\",\n \"coakley\",\n \"coan\",\n \"coates\",\n \"cobos\",\n \"coburn\",\n \"cochran\",\n \"cochrane\",\n \"cockerham\",\n \"cockrell\",\n \"codi\",\n \"cody\",\n \"coe\",\n \"coelho\",\n \"coen\",\n \"cofer\",\n \"coffelt\",\n \"coffey\",\n \"coffman\",\n \"cofield\",\n \"cogan\",\n \"coggins\",\n \"cogswell\",\n \"cohen\",\n \"cohn\",\n \"coker\",\n \"colangelo\",\n \"colbert\",\n \"colburn\",\n \"colby\",\n \"coldiron\",\n \"coleen\",\n \"colella\",\n \"coleman\",\n \"colene\",\n \"coletta\",\n \"colette\",\n \"collado\",\n \"collazo\",\n \"colleen\",\n \"collen\",\n \"collene\",\n \"collett\",\n \"collette\",\n \"colletti\",\n \"colley\",\n \"collin\",\n \"collins\",\n \"collinsworth\",\n \"collum\",\n \"colman\",\n \"colombo\",\n \"colquitt\",\n \"colson\",\n \"colston\",\n \"colton\",\n \"colucci\",\n \"colunga\",\n \"colvin\",\n \"colwell\",\n \"comeau\",\n \"comeaux\",\n \"compton\",\n \"comstock\",\n \"conant\",\n \"conaway\",\n \"concepcion\",\n \"concetta\",\n \"concha\",\n \"conchita\",\n \"conde\",\n \"condon\",\n \"congdon\",\n \"conklin\",\n \"conley\",\n \"conlin\",\n \"conlon\",\n \"connally\",\n \"connell\",\n \"connelly\",\n \"connie\",\n \"connolly\",\n \"connor\",\n \"connors\",\n \"conover\",\n \"conrad\",\n \"conroy\",\n \"constance\",\n \"constantine\",\n \"constantino\",\n \"consuela\",\n \"consuelo\",\n \"contessa\",\n \"conti\",\n \"contreras\",\n \"conway\",\n \"conwell\",\n \"conyers\",\n \"cooke\",\n \"cooksey\",\n \"cookson\",\n \"cooley\",\n \"coolidge\",\n \"coomer\",\n \"cooney\",\n \"copeland\",\n \"copenhaver\",\n \"copley\",\n \"coppage\",\n \"coppola\",\n \"cora\",\n \"coralee\",\n \"coralie\",\n \"corazon\",\n \"corbett\",\n \"corbin\",\n \"corbitt\",\n \"corcoran\",\n \"cordeiro\",\n \"cordelia\",\n \"cordell\",\n \"corder\",\n \"cordero\",\n \"cordes\",\n \"cordia\",\n \"cordie\",\n \"cordoba\",\n \"cordova\",\n \"coreen\",\n \"corene\",\n \"coretta\",\n \"corey\",\n \"cori\",\n \"corie\",\n \"corina\",\n \"corine\",\n \"corinna\",\n \"corinne\",\n \"corley\",\n \"corliss\",\n \"cormier\",\n \"cornejo\",\n \"cornelia\",\n \"cornelison\",\n \"cornelius\",\n \"cornell\",\n \"cornish\",\n \"cornwell\",\n \"coronado\",\n \"coronel\",\n \"corpuz\",\n \"corr\",\n \"corrales\",\n \"correa\",\n \"correia\",\n \"correll\",\n \"corrie\",\n \"corrigan\",\n \"corrin\",\n \"corrina\",\n \"corrine\",\n \"corrinne\",\n \"corriveau\",\n \"corson\",\n \"cortes\",\n \"cortese\",\n \"cortez\",\n \"cortney\",\n \"corum\",\n \"corwin\",\n \"cory\",\n \"cosby\",\n \"cosentino\",\n \"cosgrove\",\n \"cosme\",\n \"cosper\",\n \"costanzo\",\n \"costello\",\n \"coston\",\n \"cota\",\n \"cothran\",\n \"cotten\",\n \"cottingham\",\n \"cottle\",\n \"cotto\",\n \"cottrell\",\n \"cottrill\",\n \"coughlin\",\n \"coulombe\",\n \"coulson\",\n \"courson\",\n \"courtney\",\n \"covarrubias\",\n \"covington\",\n \"cowart\",\n \"cowden\",\n \"cowell\",\n \"cowen\",\n \"cowgill\",\n \"cowles\",\n \"cowley\",\n \"coyle\",\n \"coyne\",\n \"cozart\",\n \"crabb\",\n \"crabtree\",\n \"craddock\",\n \"crafton\",\n \"craighead\",\n \"crain\",\n \"cramer\",\n \"crampton\",\n \"crandall\",\n \"crandell\",\n \"cranford\",\n \"crawford\",\n \"crawley\",\n \"crayton\",\n \"creech\",\n \"creekmore\",\n \"creighton\",\n \"crenshaw\",\n \"creola\",\n \"crespo\",\n \"creswell\",\n \"cribb\",\n \"cribbs\",\n \"crider\",\n \"crigger\",\n \"crim\",\n \"criner\",\n \"crippen\",\n \"cris\",\n \"criselda\",\n \"criss\",\n \"crissman\",\n \"crissy\",\n \"crist\",\n \"crista\",\n \"cristal\",\n \"cristen\",\n \"cristi\",\n \"cristie\",\n \"cristin\",\n \"cristina\",\n \"cristine\",\n \"cristy\",\n \"criswell\",\n \"crites\",\n \"crittenden\",\n \"crocker\",\n \"crockett\",\n \"cromer\",\n \"cromwell\",\n \"cronin\",\n \"croom\",\n \"crosby\",\n \"crossland\",\n \"crossley\",\n \"crossman\",\n \"crosson\",\n \"croteau\",\n \"crotty\",\n \"crowe\",\n \"crowell\",\n \"crowl\",\n \"crowley\",\n \"crowson\",\n \"crowther\",\n \"croy\",\n \"cruce\",\n \"crum\",\n \"crumley\",\n \"crumpler\",\n \"crumpton\",\n \"crutcher\",\n \"crutchfield\",\n \"cruz\",\n \"crysta\",\n \"crystle\",\n \"cuc\",\n \"cuellar\",\n \"cuevas\",\n \"culbertson\",\n \"culbreth\",\n \"cullen\",\n \"culley\",\n \"cullum\",\n \"culp\",\n \"culpepper\",\n \"cumming\",\n \"cummings\",\n \"cundiff\",\n \"cunha\",\n \"cunningham\",\n \"cuomo\",\n \"cupp\",\n \"curcio\",\n \"cureton\",\n \"curiel\",\n \"curley\",\n \"curran\",\n \"currey\",\n \"currin\",\n \"curtin\",\n \"curtis\",\n \"curtiss\",\n \"cusack\",\n \"cushing\",\n \"cushman\",\n \"cusick\",\n \"custer\",\n \"cuthbertson\",\n \"cutright\",\n \"cutshall\",\n \"cyndi\",\n \"cyndy\",\n \"cynthia\",\n \"cyr\",\n \"cyrstal\",\n \"cyrus\",\n \"cythia\",\n \"dabbs\",\n \"dabney\",\n \"dacia\",\n \"dacosta\",\n \"dade\",\n \"daggett\",\n \"dagmar\",\n \"dagny\",\n \"dagostino\",\n \"dahlberg\",\n \"dahlgren\",\n \"dahlia\",\n \"daigle\",\n \"dail\",\n \"dailey\",\n \"daina\",\n \"daine\",\n \"daisey\",\n \"dakota\",\n \"dale\",\n \"dalene\",\n \"dalessandro\",\n \"dalessio\",\n \"daley\",\n \"dalia\",\n \"dalila\",\n \"dallas\",\n \"dalrymple\",\n \"dalton\",\n \"daly\",\n \"damaris\",\n \"damato\",\n \"dambrosio\",\n \"dameron\",\n \"damian\",\n \"damiano\",\n \"damico\",\n \"damon\",\n \"dampier\",\n \"damron\",\n \"dan\",\n \"dana\",\n \"danae\",\n \"dancy\",\n \"dandrea\",\n \"dandridge\",\n \"danelle\",\n \"danette\",\n \"danford\",\n \"danforth\",\n \"dangelo\",\n \"dangerfield\",\n \"dani\",\n \"dania\",\n \"danica\",\n \"daniel\",\n \"daniela\",\n \"daniele\",\n \"daniell\",\n \"daniella\",\n \"danielle\",\n \"daniels\",\n \"danielson\",\n \"danika\",\n \"danille\",\n \"danita\",\n \"danley\",\n \"dann\",\n \"danna\",\n \"danner\",\n \"dannette\",\n \"dannie\",\n \"dannielle\",\n \"dansby\",\n \"dantzler\",\n \"danuta\",\n \"danyel\",\n \"danyell\",\n \"danyelle\",\n \"dao\",\n \"daphine\",\n \"daphne\",\n \"dara\",\n \"darby\",\n \"darcel\",\n \"darcey\",\n \"darci\",\n \"darcie\",\n \"darcy\",\n \"dardar\",\n \"darden\",\n \"daria\",\n \"darla\",\n \"darleen\",\n \"darlena\",\n \"darlene\",\n \"darline\",\n \"darnell\",\n \"darr\",\n \"darrow\",\n \"daryl\",\n \"dashiell\",\n \"dasilva\",\n \"daugherty\",\n \"daughtry\",\n \"daves\",\n \"davey\",\n \"david\",\n \"davida\",\n \"davidson\",\n \"davie\",\n \"davies\",\n \"davila\",\n \"davina\",\n \"davis\",\n \"davison\",\n \"davisson\",\n \"davy\",\n \"dawes\",\n \"dawkins\",\n \"dawna\",\n \"dawne\",\n \"dawson\",\n \"daye\",\n \"dayle\",\n \"dayna\",\n \"daysi\",\n \"dayton\",\n \"deadra\",\n \"deana\",\n \"deanda\",\n \"deandra\",\n \"deandrea\",\n \"deane\",\n \"deangelis\",\n \"deangelo\",\n \"deann\",\n \"deanna\",\n \"deanne\",\n \"dearborn\",\n \"dearing\",\n \"dearman\",\n \"deas\",\n \"deason\",\n \"deaton\",\n \"deaver\",\n \"deb\",\n \"debbi\",\n \"debbie\",\n \"debbra\",\n \"debby\",\n \"debera\",\n \"deberry\",\n \"debi\",\n \"deboer\",\n \"debora\",\n \"deborah\",\n \"debose\",\n \"debra\",\n \"debrah\",\n \"debroah\",\n \"decarlo\",\n \"decastro\",\n \"deckard\",\n \"decosta\",\n \"decoteau\",\n \"dede\",\n \"dedra\",\n \"dee\",\n \"deeann\",\n \"deeanna\",\n \"deedee\",\n \"deedra\",\n \"deegan\",\n \"deel\",\n \"deen\",\n \"deena\",\n \"deering\",\n \"deese\",\n \"deetta\",\n \"defazio\",\n \"defelice\",\n \"degraw\",\n \"degroot\",\n \"deguzman\",\n \"dehart\",\n \"dehaven\",\n \"deherrera\",\n \"deidra\",\n \"deidre\",\n \"deirdre\",\n \"deitz\",\n \"deja\",\n \"dejesus\",\n \"dejong\",\n \"delacruz\",\n \"delafuente\",\n \"delagarza\",\n \"delaine\",\n \"delana\",\n \"delancey\",\n \"delaney\",\n \"delano\",\n \"delao\",\n \"delapaz\",\n \"delarosa\",\n \"delatorre\",\n \"delcie\",\n \"delena\",\n \"deleon\",\n \"delfina\",\n \"delgadillo\",\n \"delgado\",\n \"delia\",\n \"delicia\",\n \"delila\",\n \"delilah\",\n \"delinda\",\n \"delisa\",\n \"delisle\",\n \"delk\",\n \"dell\",\n \"della\",\n \"dellinger\",\n \"delma\",\n \"delmy\",\n \"deloach\",\n \"delois\",\n \"deloise\",\n \"delong\",\n \"delora\",\n \"deloras\",\n \"delorenzo\",\n \"delores\",\n \"deloris\",\n \"delorse\",\n \"delossantos\",\n \"delozier\",\n \"delp\",\n \"delpha\",\n \"delphia\",\n \"delphine\",\n \"delrio\",\n \"delrosario\",\n \"delsie\",\n \"deltoro\",\n \"deluca\",\n \"deluna\",\n \"delvalle\",\n \"delvecchio\",\n \"demarco\",\n \"demars\",\n \"demello\",\n \"demers\",\n \"demetra\",\n \"demetria\",\n \"demetrice\",\n \"demetrius\",\n \"deming\",\n \"demoss\",\n \"dempsey\",\n \"dena\",\n \"denae\",\n \"dendy\",\n \"deneen\",\n \"denese\",\n \"denham\",\n \"denice\",\n \"denis\",\n \"denise\",\n \"denisha\",\n \"denison\",\n \"denisse\",\n \"denita\",\n \"denman\",\n \"denna\",\n \"dennard\",\n \"denney\",\n \"dennis\",\n \"dennise\",\n \"dennison\",\n \"denny\",\n \"densmore\",\n \"denson\",\n \"denton\",\n \"denyse\",\n \"deon\",\n \"deonna\",\n \"depalma\",\n \"depew\",\n \"depriest\",\n \"derosa\",\n \"derose\",\n \"derosier\",\n \"derouen\",\n \"derr\",\n \"derryberry\",\n \"desai\",\n \"desalvo\",\n \"desantis\",\n \"desilva\",\n \"desimone\",\n \"desirae\",\n \"desiree\",\n \"desjardins\",\n \"desmarais\",\n \"desmond\",\n \"desouza\",\n \"despain\",\n \"despina\",\n \"desrochers\",\n \"desrosiers\",\n \"dessie\",\n \"destefano\",\n \"detra\",\n \"detwiler\",\n \"deutsch\",\n \"devaney\",\n \"devaughn\",\n \"devault\",\n \"dever\",\n \"deville\",\n \"devin\",\n \"devine\",\n \"devito\",\n \"devlin\",\n \"devoe\",\n \"devon\",\n \"devona\",\n \"devora\",\n \"devorah\",\n \"devore\",\n \"devries\",\n \"dewberry\",\n \"deweese\",\n \"dewey\",\n \"deyo\",\n \"deyoung\",\n \"dia\",\n \"dian\",\n \"diana\",\n \"diane\",\n \"diann\",\n \"dianna\",\n \"dianne\",\n \"dias\",\n \"diaz\",\n \"dicarlo\",\n \"dicken\",\n \"dickenson\",\n \"dickerson\",\n \"dickinson\",\n \"dickman\",\n \"dickson\",\n \"diedra\",\n \"diedre\",\n \"diego\",\n \"diehl\",\n \"diep\",\n \"dierdre\",\n \"dietrich\",\n \"dietz\",\n \"diez\",\n \"diggins\",\n \"diggs\",\n \"digiacomo\",\n \"digiovanni\",\n \"digna\",\n \"dillard\",\n \"diller\",\n \"dilley\",\n \"dillingham\",\n \"dillion\",\n \"dillman\",\n \"dillon\",\n \"dillow\",\n \"dilorenzo\",\n \"dilworth\",\n \"dimaggio\",\n \"dimarco\",\n \"dimmick\",\n \"dina\",\n \"dinah\",\n \"dineen\",\n \"dingess\",\n \"dingman\",\n \"dinh\",\n \"dinkins\",\n \"dinorah\",\n \"dinsmore\",\n \"dion\",\n \"dione\",\n \"dionna\",\n \"dionne\",\n \"diorio\",\n \"dipietro\",\n \"dishman\",\n \"dismuke\",\n \"disney\",\n \"distefano\",\n \"dittman\",\n \"dittmer\",\n \"divina\",\n \"dix\",\n \"dixie\",\n \"dixon\",\n \"dixson\",\n \"dizon\",\n \"doak\",\n \"doan\",\n \"doane\",\n \"dobbs\",\n \"dobson\",\n \"doby\",\n \"dockery\",\n \"dodd\",\n \"dodds\",\n \"dodie\",\n \"dodson\",\n \"doering\",\n \"doerr\",\n \"doggett\",\n \"doherty\",\n \"doiron\",\n \"dolan\",\n \"dollie\",\n \"dolores\",\n \"doloris\",\n \"dombrowski\",\n \"domenica\",\n \"dominga\",\n \"domingo\",\n \"dominguez\",\n \"dominica\",\n \"dominick\",\n \"dominique\",\n \"dominque\",\n \"dominquez\",\n \"domitila\",\n \"domonique\",\n \"dona\",\n \"donahue\",\n \"donald\",\n \"donaldson\",\n \"donato\",\n \"donegan\",\n \"donella\",\n \"donelson\",\n \"donetta\",\n \"donette\",\n \"doney\",\n \"donita\",\n \"donley\",\n \"donna\",\n \"donnell\",\n \"donnelly\",\n \"donner\",\n \"donnetta\",\n \"donnette\",\n \"donnie\",\n \"donofrio\",\n \"donohoe\",\n \"donohue\",\n \"donovan\",\n \"donya\",\n \"doody\",\n \"dooley\",\n \"doolittle\",\n \"dora\",\n \"doran\",\n \"dorathy\",\n \"dorcas\",\n \"dore\",\n \"doreatha\",\n \"doreen\",\n \"dorene\",\n \"doretha\",\n \"dorethea\",\n \"doretta\",\n \"dori\",\n \"doria\",\n \"dorian\",\n \"dorie\",\n \"dorinda\",\n \"dorine\",\n \"doris\",\n \"dorla\",\n \"dorman\",\n \"dorn\",\n \"dorotha\",\n \"dorothea\",\n \"dorothy\",\n \"dorris\",\n \"dorsett\",\n \"dorsey\",\n \"dortch\",\n \"dortha\",\n \"dorthea\",\n \"dorthey\",\n \"dorthy\",\n \"dorton\",\n \"dostie\",\n \"dotson\",\n \"dottie\",\n \"dotty\",\n \"doucette\",\n \"doud\",\n \"dougherty\",\n \"douglas\",\n \"douglass\",\n \"dovie\",\n \"dowdell\",\n \"dowden\",\n \"dowell\",\n \"dowling\",\n \"downes\",\n \"downey\",\n \"doyle\",\n \"doyon\",\n \"drayton\",\n \"dreama\",\n \"dreher\",\n \"drema\",\n \"drennan\",\n \"drennen\",\n \"dressler\",\n \"drews\",\n \"dreyer\",\n \"driggers\",\n \"driscoll\",\n \"driskell\",\n \"drouin\",\n \"drucilla\",\n \"drumm\",\n \"drummond\",\n \"drury\",\n \"drusilla\",\n \"dryden\",\n \"drye\",\n \"duarte\",\n \"dube\",\n \"dubois\",\n \"dubose\",\n \"ducharme\",\n \"duckett\",\n \"duckworth\",\n \"duclos\",\n \"duda\",\n \"dudek\",\n \"dudley\",\n \"duenas\",\n \"duffey\",\n \"duffy\",\n \"dufour\",\n \"dufrene\",\n \"dufresne\",\n \"dugan\",\n \"dugas\",\n \"duggan\",\n \"dugger\",\n \"duggins\",\n \"duhon\",\n \"dulaney\",\n \"dulce\",\n \"dulcie\",\n \"duley\",\n \"dulin\",\n \"dumont\",\n \"dunagan\",\n \"dunaway\",\n \"dunbar\",\n \"duncan\",\n \"dunford\",\n \"dungan\",\n \"dunham\",\n \"dunigan\",\n \"dunkin\",\n \"dunkle\",\n \"dunlap\",\n \"dunleavy\",\n \"dunlop\",\n \"dunn\",\n \"dunne\",\n \"dunson\",\n \"dunston\",\n \"dunton\",\n \"duong\",\n \"duplessis\",\n \"dupont\",\n \"dupre\",\n \"dupree\",\n \"duprey\",\n \"dupuis\",\n \"duque\",\n \"duquette\",\n \"duran\",\n \"durand\",\n \"durante\",\n \"durbin\",\n \"durden\",\n \"duren\",\n \"durfee\",\n \"durham\",\n \"durkee\",\n \"durkin\",\n \"duron\",\n \"durr\",\n \"durrett\",\n \"dusti\",\n \"dustin\",\n \"dutcher\",\n \"dutra\",\n \"dutton\",\n \"duval\",\n \"duvall\",\n \"dvorak\",\n \"dwana\",\n \"dwyer\",\n \"dyan\",\n \"dykstra\",\n \"dyson\",\n \"eaddy\",\n \"eades\",\n \"eads\",\n \"eady\",\n \"eagan\",\n \"eakin\",\n \"eakins\",\n \"eames\",\n \"eanes\",\n \"earle\",\n \"earlean\",\n \"earleen\",\n \"earlene\",\n \"earley\",\n \"earlie\",\n \"earline\",\n \"earnestine\",\n \"earp\",\n \"eartha\",\n \"easley\",\n \"eason\",\n \"easterday\",\n \"eastman\",\n \"easton\",\n \"eastwood\",\n \"eatmon\",\n \"eaton\",\n \"eberhardt\",\n \"eberle\",\n \"eberly\",\n \"ebersole\",\n \"ebert\",\n \"ebner\",\n \"eboni\",\n \"ebonie\",\n \"eby\",\n \"eccles\",\n \"echevarria\",\n \"echeverria\",\n \"echols\",\n \"eck\",\n \"eckard\",\n \"eckenrode\",\n \"ecker\",\n \"eckert\",\n \"eckhardt\",\n \"ecklund\",\n \"eckman\",\n \"eckstein\",\n \"eda\",\n \"edda\",\n \"eddie\",\n \"eddings\",\n \"eddington\",\n \"eddins\",\n \"edelman\",\n \"edelmira\",\n \"edelstein\",\n \"eden\",\n \"edens\",\n \"edgar\",\n \"edgerton\",\n \"edgington\",\n \"edie\",\n \"edington\",\n \"edison\",\n \"edith\",\n \"edmiston\",\n \"edmond\",\n \"edmonds\",\n \"edmondson\",\n \"edmonson\",\n \"edmunds\",\n \"edmundson\",\n \"edna\",\n \"edra\",\n \"edris\",\n \"edson\",\n \"edward\",\n \"edwards\",\n \"edwina\",\n \"edyth\",\n \"edythe\",\n \"effie\",\n \"egan\",\n \"egbert\",\n \"eggert\",\n \"eggleston\",\n \"ehlers\",\n \"ehrlich\",\n \"ehtel\",\n \"eichelberger\",\n \"eicher\",\n \"eichhorn\",\n \"eichler\",\n \"eidson\",\n \"eiland\",\n \"eileen\",\n \"eilene\",\n \"eisele\",\n \"eisenberg\",\n \"eklund\",\n \"ela\",\n \"eladia\",\n \"elaina\",\n \"elaine\",\n \"elam\",\n \"elana\",\n \"elane\",\n \"elanor\",\n \"elayne\",\n \"elba\",\n \"elbert\",\n \"elda\",\n \"eldora\",\n \"eldred\",\n \"eldredge\",\n \"eldridge\",\n \"eleanor\",\n \"eleanora\",\n \"eleanore\",\n \"elease\",\n \"elena\",\n \"elene\",\n \"eleni\",\n \"elenor\",\n \"elenora\",\n \"elenore\",\n \"eleonor\",\n \"eleonora\",\n \"eleonore\",\n \"eley\",\n \"elfreda\",\n \"elfrieda\",\n \"elfriede\",\n \"elgin\",\n \"elia\",\n \"eliana\",\n \"elias\",\n \"eliason\",\n \"elicia\",\n \"elida\",\n \"elidia\",\n \"elin\",\n \"elina\",\n \"elinor\",\n \"elinore\",\n \"elisa\",\n \"elisabeth\",\n \"elise\",\n \"elisha\",\n \"elissa\",\n \"eliz\",\n \"eliza\",\n \"elizabet\",\n \"elizabeth\",\n \"elizbeth\",\n \"elizebeth\",\n \"elizondo\",\n \"elke\",\n \"elkins\",\n \"ella\",\n \"ellamae\",\n \"ellan\",\n \"elledge\",\n \"ellen\",\n \"ellena\",\n \"ellender\",\n \"eller\",\n \"elli\",\n \"ellie\",\n \"ellinger\",\n \"ellingson\",\n \"ellington\",\n \"elliot\",\n \"elliott\",\n \"ellis\",\n \"ellison\",\n \"ellsworth\",\n \"elly\",\n \"ellyn\",\n \"elma\",\n \"elmer\",\n \"elmira\",\n \"elmore\",\n \"elna\",\n \"elnora\",\n \"elodia\",\n \"elois\",\n \"eloisa\",\n \"eloise\",\n \"elouise\",\n \"elrod\",\n \"elsa\",\n \"elsie\",\n \"elson\",\n \"elston\",\n \"elswick\",\n \"elsy\",\n \"elva\",\n \"elvera\",\n \"elvia\",\n \"elvie\",\n \"elvina\",\n \"elvira\",\n \"elwanda\",\n \"elwell\",\n \"elwood\",\n \"ely\",\n \"elyse\",\n \"elza\",\n \"ema\",\n \"emanuel\",\n \"embree\",\n \"embrey\",\n \"embry\",\n \"emelda\",\n \"emelia\",\n \"emelina\",\n \"emeline\",\n \"emely\",\n \"emerick\",\n \"emerita\",\n \"emerson\",\n \"emiko\",\n \"emilee\",\n \"emilia\",\n \"emilie\",\n \"emily\",\n \"emma\",\n \"emmaline\",\n \"emmert\",\n \"emmett\",\n \"emmie\",\n \"emmons\",\n \"emmy\",\n \"emogene\",\n \"emory\",\n \"emrich\",\n \"emrick\",\n \"encarnacion\",\n \"enciso\",\n \"enda\",\n \"endicott\",\n \"endres\",\n \"endsley\",\n \"enedina\",\n \"eneida\",\n \"eng\",\n \"engel\",\n \"engelhardt\",\n \"england\",\n \"engle\",\n \"engleman\",\n \"engler\",\n \"englert\",\n \"english\",\n \"engstrom\",\n \"enid\",\n \"enloe\",\n \"ennis\",\n \"enoch\",\n \"enola\",\n \"enos\",\n \"enright\",\n \"enriqueta\",\n \"enriquez\",\n \"ensor\",\n \"epifania\",\n \"epley\",\n \"epperson\",\n \"epps\",\n \"epstein\",\n \"erb\",\n \"erdman\",\n \"erdmann\",\n \"eric\",\n \"erica\",\n \"ericka\",\n \"erickson\",\n \"ericson\",\n \"erika\",\n \"erin\",\n \"erinn\",\n \"erlene\",\n \"erlinda\",\n \"erline\",\n \"erma\",\n \"ermelinda\",\n \"erminia\",\n \"erna\",\n \"ernest\",\n \"ernestina\",\n \"ernestine\",\n \"ernst\",\n \"erskine\",\n \"ervin\",\n \"erwin\",\n \"eryn\",\n \"escalante\",\n \"escalera\",\n \"escamilla\",\n \"escobar\",\n \"escobedo\",\n \"eshelman\",\n \"eskew\",\n \"eskridge\",\n \"eslinger\",\n \"esmeralda\",\n \"esparza\",\n \"esperanza\",\n \"espinal\",\n \"espino\",\n \"espinosa\",\n \"espinoza\",\n \"esposito\",\n \"esqueda\",\n \"esquibel\",\n \"esquivel\",\n \"essary\",\n \"essex\",\n \"essie\",\n \"esta\",\n \"estabrook\",\n \"estefana\",\n \"estela\",\n \"estell\",\n \"estella\",\n \"estelle\",\n \"estep\",\n \"ester\",\n \"estes\",\n \"estevez\",\n \"esther\",\n \"estrada\",\n \"estrella\",\n \"etha\",\n \"ethel\",\n \"ethelene\",\n \"ethelyn\",\n \"etheridge\",\n \"ethridge\",\n \"ethyl\",\n \"etienne\",\n \"etsuko\",\n \"etta\",\n \"etter\",\n \"ettie\",\n \"eubank\",\n \"eubanks\",\n \"eudy\",\n \"eufemia\",\n \"eugena\",\n \"eugene\",\n \"eugenia\",\n \"eugenie\",\n \"eulah\",\n \"eulalia\",\n \"eun\",\n \"euna\",\n \"eunice\",\n \"eura\",\n \"eure\",\n \"eusebia\",\n \"eustolia\",\n \"eva\",\n \"evalyn\",\n \"evan\",\n \"evangelina\",\n \"evangeline\",\n \"evangelista\",\n \"evans\",\n \"eveland\",\n \"evelia\",\n \"evelin\",\n \"evelina\",\n \"eveline\",\n \"evelyn\",\n \"evelyne\",\n \"evelynn\",\n \"evenson\",\n \"everett\",\n \"everette\",\n \"everhart\",\n \"evers\",\n \"eversole\",\n \"everson\",\n \"evette\",\n \"evia\",\n \"evie\",\n \"evita\",\n \"evon\",\n \"evonne\",\n \"ewa\",\n \"ewald\",\n \"ewell\",\n \"ewing\",\n \"exie\",\n \"exum\",\n \"eyler\",\n \"ezell\",\n \"ezzell\",\n \"faber\",\n \"fabian\",\n \"fabiola\",\n \"fabrizio\",\n \"fagan\",\n \"fahey\",\n \"fairbanks\",\n \"fairchild\",\n \"faircloth\",\n \"fairfield\",\n \"fairley\",\n \"faison\",\n \"fajardo\",\n \"falco\",\n \"falcone\",\n \"falgoust\",\n \"falgout\",\n \"falk\",\n \"falkner\",\n \"fallon\",\n \"fancher\",\n \"fanelli\",\n \"fann\",\n \"fannie\",\n \"fannin\",\n \"fanny\",\n \"fant\",\n \"farah\",\n \"farber\",\n \"faria\",\n \"farias\",\n \"faris\",\n \"farkas\",\n \"farley\",\n \"farnham\",\n \"farnsworth\",\n \"farr\",\n \"farrah\",\n \"farrar\",\n \"farrell\",\n \"farrington\",\n \"farris\",\n \"farwell\",\n \"fasano\",\n \"fassett\",\n \"fatima\",\n \"fatimah\",\n \"faucher\",\n \"faught\",\n \"faulk\",\n \"faulkner\",\n \"faust\",\n \"faustina\",\n \"faviola\",\n \"fawcett\",\n \"faye\",\n \"fazio\",\n \"featherston\",\n \"featherstone\",\n \"fecteau\",\n \"feder\",\n \"federico\",\n \"feeley\",\n \"feeney\",\n \"fehr\",\n \"feinberg\",\n \"feinstein\",\n \"felder\",\n \"feldman\",\n \"felecia\",\n \"felica\",\n \"felice\",\n \"felicia\",\n \"feliciano\",\n \"felicidad\",\n \"felicita\",\n \"felicitas\",\n \"felipa\",\n \"felipe\",\n \"felisa\",\n \"felisha\",\n \"felix\",\n \"felker\",\n \"feltner\",\n \"felton\",\n \"fenderson\",\n \"fendley\",\n \"fenn\",\n \"fennell\",\n \"fenner\",\n \"fenske\",\n \"fenton\",\n \"fenwick\",\n \"ferebee\",\n \"ferguson\",\n \"ferland\",\n \"fermina\",\n \"fernanda\",\n \"fernande\",\n \"fernandes\",\n \"fernandez\",\n \"fernando\",\n \"ferne\",\n \"ferrante\",\n \"ferrari\",\n \"ferraro\",\n \"ferree\",\n \"ferreira\",\n \"ferrell\",\n \"ferrer\",\n \"ferretti\",\n \"ferri\",\n \"ferrin\",\n \"ferris\",\n \"ferro\",\n \"fessler\",\n \"fewell\",\n \"fick\",\n \"fidela\",\n \"fidelia\",\n \"fidler\",\n \"fiedler\",\n \"fierro\",\n \"fifield\",\n \"figueroa\",\n \"fike\",\n \"fikes\",\n \"fillmore\",\n \"filomena\",\n \"fincher\",\n \"findlay\",\n \"findley\",\n \"finke\",\n \"finkelstein\",\n \"finkle\",\n \"finlay\",\n \"finley\",\n \"finn\",\n \"finnegan\",\n \"finnell\",\n \"finney\",\n \"fiona\",\n \"fiore\",\n \"fischer\",\n \"fiscus\",\n \"fishman\",\n \"fiske\",\n \"fite\",\n \"fitz\",\n \"fitzgerald\",\n \"fitzhugh\",\n \"fitzpatrick\",\n \"fitzsimmons\",\n \"fitzwater\",\n \"flagg\",\n \"flaherty\",\n \"flanagan\",\n \"flanders\",\n \"flanigan\",\n \"flannery\",\n \"flatt\",\n \"flavia\",\n \"fleenor\",\n \"fleetwood\",\n \"fleischer\",\n \"fleischman\",\n \"flemming\",\n \"fleta\",\n \"flickinger\",\n \"flinn\",\n \"florance\",\n \"florencia\",\n \"florene\",\n \"florentina\",\n \"flores\",\n \"floretta\",\n \"florez\",\n \"floria\",\n \"florinda\",\n \"florine\",\n \"florio\",\n \"florrie\",\n \"flossie\",\n \"flournoy\",\n \"floy\",\n \"floyd\",\n \"fluellen\",\n \"fluker\",\n \"flynn\",\n \"flynt\",\n \"fogarty\",\n \"fogel\",\n \"fogg\",\n \"foley\",\n \"follett\",\n \"folse\",\n \"folsom\",\n \"foltz\",\n \"fonda\",\n \"fong\",\n \"fonseca\",\n \"fontaine\",\n \"fontana\",\n \"fontanez\",\n \"fontenot\",\n \"fontes\",\n \"foote\",\n \"foran\",\n \"forbes\",\n \"forbis\",\n \"forcier\",\n \"forde\",\n \"fordham\",\n \"foret\",\n \"forman\",\n \"forney\",\n \"forrest\",\n \"forrester\",\n \"forsberg\",\n \"forster\",\n \"forsyth\",\n \"forsythe\",\n \"fortenberry\",\n \"fortier\",\n \"fortin\",\n \"fortner\",\n \"fortney\",\n \"fortson\",\n \"fortuna\",\n \"fortunato\",\n \"foti\",\n \"fournier\",\n \"foust\",\n \"fouts\",\n \"fowlkes\",\n \"foxworth\",\n \"frady\",\n \"fraga\",\n \"fraley\",\n \"frampton\",\n \"fran\",\n \"france\",\n \"francene\",\n \"frances\",\n \"francesca\",\n \"franchesca\",\n \"francie\",\n \"francina\",\n \"francine\",\n \"francis\",\n \"francisca\",\n \"francisco\",\n \"franck\",\n \"franco\",\n \"francois\",\n \"francoise\",\n \"franke\",\n \"frankel\",\n \"frankie\",\n \"franko\",\n \"fransisca\",\n \"frantz\",\n \"franz\",\n \"franzen\",\n \"fraser\",\n \"frasier\",\n \"frausto\",\n \"frawley\",\n \"frazee\",\n \"frazer\",\n \"frazier\",\n \"frechette\",\n \"fred\",\n \"freda\",\n \"fredda\",\n \"freddie\",\n \"frederica\",\n \"frederick\",\n \"fredericka\",\n \"fredericks\",\n \"frederickson\",\n \"fredette\",\n \"fredia\",\n \"fredrick\",\n \"fredricka\",\n \"fredrickson\",\n \"freeda\",\n \"freeland\",\n \"freese\",\n \"fregoso\",\n \"freida\",\n \"freitag\",\n \"freitas\",\n \"fretwell\",\n \"freund\",\n \"frey\",\n \"frias\",\n \"frick\",\n \"fricke\",\n \"frida\",\n \"friday\",\n \"frieda\",\n \"friedman\",\n \"friedrich\",\n \"friel\",\n \"frierson\",\n \"friesen\",\n \"frink\",\n \"frisbee\",\n \"frisbie\",\n \"frisby\",\n \"frisch\",\n \"fritts\",\n \"fritz\",\n \"frizzell\",\n \"froehlich\",\n \"fromm\",\n \"fruge\",\n \"frye\",\n \"fuchs\",\n \"fuentes\",\n \"fugate\",\n \"fuhrman\",\n \"fujimoto\",\n \"fulbright\",\n \"fulcher\",\n \"fulford\",\n \"fulk\",\n \"fulkerson\",\n \"fulks\",\n \"fullerton\",\n \"fullmer\",\n \"fulmer\",\n \"fulton\",\n \"fults\",\n \"fultz\",\n \"fumiko\",\n \"funches\",\n \"funderburk\",\n \"fung\",\n \"funke\",\n \"funkhouser\",\n \"fuqua\",\n \"furman\",\n \"furr\",\n \"furst\",\n \"furtado\",\n \"fusco\",\n \"fussell\",\n \"futch\",\n \"futrell\",\n \"fye\",\n \"gabel\",\n \"gabriel\",\n \"gabriela\",\n \"gabriele\",\n \"gabriella\",\n \"gabrielle\",\n \"gaddis\",\n \"gaddy\",\n \"gadson\",\n \"gaffney\",\n \"gagliano\",\n \"gagliardi\",\n \"gagne\",\n \"gagnon\",\n \"gailey\",\n \"gaines\",\n \"gainey\",\n \"gaitan\",\n \"gaither\",\n \"galan\",\n \"galarza\",\n \"galbraith\",\n \"galbreath\",\n \"galicia\",\n \"galina\",\n \"galindo\",\n \"gallagher\",\n \"gallaher\",\n \"gallardo\",\n \"gallaway\",\n \"gallego\",\n \"gallegos\",\n \"galligan\",\n \"gallion\",\n \"gallman\",\n \"gallo\",\n \"galloway\",\n \"gallup\",\n \"galvan\",\n \"galvez\",\n \"galvin\",\n \"gamache\",\n \"gambill\",\n \"gamboa\",\n \"gambrell\",\n \"gamez\",\n \"gandy\",\n \"gann\",\n \"gannon\",\n \"gantt\",\n \"gantz\",\n \"gaona\",\n \"garay\",\n \"garber\",\n \"garcia\",\n \"gard\",\n \"gardiner\",\n \"gardner\",\n \"garfield\",\n \"garibay\",\n \"garica\",\n \"garman\",\n \"garmon\",\n \"garnet\",\n \"garnett\",\n \"garofalo\",\n \"garrard\",\n \"garretson\",\n \"garrett\",\n \"garrick\",\n \"garrido\",\n \"garris\",\n \"garrity\",\n \"garrow\",\n \"garry\",\n \"gartner\",\n \"garton\",\n \"garver\",\n \"garvey\",\n \"garvin\",\n \"gary\",\n \"garza\",\n \"gasaway\",\n \"gaskill\",\n \"gaspar\",\n \"gaspard\",\n \"gass\",\n \"gassaway\",\n \"gastelum\",\n \"gaston\",\n \"gatewood\",\n \"gatlin\",\n \"gatling\",\n \"gattis\",\n \"gatto\",\n \"gaudet\",\n \"gaudette\",\n \"gaudreau\",\n \"gaughan\",\n \"gaul\",\n \"gause\",\n \"gauthier\",\n \"gauvin\",\n \"gavin\",\n \"gayden\",\n \"gaye\",\n \"gayla\",\n \"gayle\",\n \"gaylene\",\n \"gaylor\",\n \"gaylord\",\n \"gaynell\",\n \"gaynelle\",\n \"gaynor\",\n \"gaytan\",\n \"gayton\",\n \"gearhart\",\n \"gearldine\",\n \"geary\",\n \"gebhardt\",\n \"gebhart\",\n \"geddes\",\n \"geer\",\n \"gehring\",\n \"gehrke\",\n \"geier\",\n \"geiger\",\n \"geis\",\n \"geisler\",\n \"gelinas\",\n \"geller\",\n \"gema\",\n \"gendron\",\n \"genevie\",\n \"genevieve\",\n \"genevive\",\n \"genia\",\n \"genna\",\n \"gennie\",\n \"genny\",\n \"genovese\",\n \"genoveva\",\n \"georgann\",\n \"george\",\n \"georgeann\",\n \"georgeanna\",\n \"georgene\",\n \"georgetta\",\n \"georgette\",\n \"georgia\",\n \"georgiana\",\n \"georgiann\",\n \"georgianna\",\n \"georgianne\",\n \"georgie\",\n \"georgina\",\n \"georgine\",\n \"gerald\",\n \"geraldine\",\n \"geralyn\",\n \"gerard\",\n \"gerber\",\n \"gerda\",\n \"gerdes\",\n \"gerena\",\n \"gerhardt\",\n \"gerhart\",\n \"geri\",\n \"gerlach\",\n \"germaine\",\n \"germany\",\n \"gerri\",\n \"gerry\",\n \"gertha\",\n \"gertie\",\n \"gertrud\",\n \"gertrude\",\n \"gertrudis\",\n \"gertude\",\n \"gervais\",\n \"geter\",\n \"getty\",\n \"getz\",\n \"geyer\",\n \"ghislaine\",\n \"gholston\",\n \"gia\",\n \"gianna\",\n \"gibb\",\n \"gibbs\",\n \"gibson\",\n \"giddens\",\n \"giddings\",\n \"gideon\",\n \"gidget\",\n \"giese\",\n \"giffin\",\n \"gifford\",\n \"gigi\",\n \"giglio\",\n \"giguere\",\n \"gil\",\n \"gilberte\",\n \"gilbertson\",\n \"gilbreath\",\n \"gilchrist\",\n \"gilda\",\n \"gile\",\n \"giles\",\n \"gilkey\",\n \"gillam\",\n \"gillard\",\n \"gillen\",\n \"gillenwater\",\n \"gilles\",\n \"gillespie\",\n \"gillett\",\n \"gillette\",\n \"gilley\",\n \"gilliam\",\n \"gillian\",\n \"gilliard\",\n \"gilligan\",\n \"gilliland\",\n \"gillis\",\n \"gillispie\",\n \"gillman\",\n \"gillum\",\n \"gilma\",\n \"gilman\",\n \"gilmer\",\n \"gilmore\",\n \"gilpin\",\n \"gilreath\",\n \"gilroy\",\n \"gilson\",\n \"gilstrap\",\n \"gina\",\n \"ginder\",\n \"ginette\",\n \"gingerich\",\n \"gingras\",\n \"gingrich\",\n \"ginny\",\n \"ginsberg\",\n \"ginter\",\n \"giordano\",\n \"giovanna\",\n \"gipson\",\n \"girard\",\n \"giroux\",\n \"gisela\",\n \"gisele\",\n \"giselle\",\n \"gish\",\n \"gita\",\n \"gittens\",\n \"giuseppina\",\n \"givens\",\n \"gladis\",\n \"gladney\",\n \"gladstone\",\n \"glady\",\n \"gladys\",\n \"glaser\",\n \"glasgow\",\n \"glasper\",\n \"glasscock\",\n \"glasser\",\n \"glayds\",\n \"gleason\",\n \"glenda\",\n \"glendora\",\n \"glenn\",\n \"glenna\",\n \"glennie\",\n \"glennis\",\n \"glick\",\n \"glidden\",\n \"glidewell\",\n \"glinda\",\n \"glisson\",\n \"gloria\",\n \"gluck\",\n \"glynda\",\n \"glynis\",\n \"glynn\",\n \"gober\",\n \"goble\",\n \"godbey\",\n \"goddard\",\n \"godfrey\",\n \"godin\",\n \"godinez\",\n \"godoy\",\n \"godsey\",\n \"godwin\",\n \"goebel\",\n \"goetz\",\n \"goforth\",\n \"goines\",\n \"goins\",\n \"golda\",\n \"goldberg\",\n \"goldfarb\",\n \"golding\",\n \"goldman\",\n \"goldsberry\",\n \"goldstein\",\n \"gomes\",\n \"gomez\",\n \"gonsalez\",\n \"gonsalves\",\n \"gonzales\",\n \"gonzalez\",\n \"gooch\",\n \"goodale\",\n \"goodall\",\n \"goode\",\n \"goodell\",\n \"gooden\",\n \"goodin\",\n \"gooding\",\n \"goodloe\",\n \"goodnight\",\n \"goodrich\",\n \"goodrum\",\n \"goodsell\",\n \"goodson\",\n \"goodwin\",\n \"goolsby\",\n \"gordan\",\n \"gordon\",\n \"gordy\",\n \"goree\",\n \"gorham\",\n \"gorman\",\n \"gormley\",\n \"gorski\",\n \"gorton\",\n \"goshorn\",\n \"gosnell\",\n \"goss\",\n \"gosselin\",\n \"gossett\",\n \"gott\",\n \"gottlieb\",\n \"gottschalk\",\n \"gough\",\n \"gould\",\n \"goulet\",\n \"gourley\",\n \"gouveia\",\n \"govan\",\n \"gove\",\n \"govea\",\n \"gowen\",\n \"gower\",\n \"goyette\",\n \"graber\",\n \"grabowski\",\n \"gracia\",\n \"gracie\",\n \"graciela\",\n \"grady\",\n \"graf\",\n \"graff\",\n \"grafton\",\n \"gragg\",\n \"graham\",\n \"grajeda\",\n \"grammer\",\n \"granado\",\n \"granados\",\n \"grantham\",\n \"granville\",\n \"grasso\",\n \"grau\",\n \"gravitt\",\n \"gravois\",\n \"graybill\",\n \"grayce\",\n \"grayson\",\n \"graziano\",\n \"grazyna\",\n \"greathouse\",\n \"greco\",\n \"greeley\",\n \"greenberg\",\n \"greene\",\n \"greenhaw\",\n \"greenlaw\",\n \"greenleaf\",\n \"greenlee\",\n \"greenwald\",\n \"greenway\",\n \"greenwell\",\n \"greer\",\n \"greeson\",\n \"gregg\",\n \"gregoire\",\n \"gregor\",\n \"gregoria\",\n \"gregorio\",\n \"gregory\",\n \"greig\",\n \"greiner\",\n \"grenier\",\n \"gresham\",\n \"greta\",\n \"gretchen\",\n \"gretta\",\n \"gricelda\",\n \"grider\",\n \"grieco\",\n \"griego\",\n \"grier\",\n \"griffen\",\n \"griffey\",\n \"griffis\",\n \"griffith\",\n \"griffiths\",\n \"grigg\",\n \"griggs\",\n \"grigsby\",\n \"grijalva\",\n \"grillo\",\n \"grimaldi\",\n \"grimaldo\",\n \"grimm\",\n \"grimmett\",\n \"grimsley\",\n \"grindle\",\n \"griner\",\n \"grisby\",\n \"grisel\",\n \"griselda\",\n \"grisham\",\n \"grissom\",\n \"griswold\",\n \"groce\",\n \"groff\",\n \"grogan\",\n \"groh\",\n \"grose\",\n \"grossman\",\n \"grosso\",\n \"groth\",\n \"grover\",\n \"grubb\",\n \"grubbs\",\n \"grube\",\n \"gruber\",\n \"grundy\",\n \"guadalupe\",\n \"guajardo\",\n \"guardado\",\n \"guarino\",\n \"guay\",\n \"gudrun\",\n \"guenther\",\n \"guerin\",\n \"guerra\",\n \"guerrero\",\n \"guertin\",\n \"guevara\",\n \"guffey\",\n \"guido\",\n \"guidry\",\n \"guilford\",\n \"guillen\",\n \"guillermina\",\n \"guillermo\",\n \"guillory\",\n \"guillot\",\n \"guimond\",\n \"guinn\",\n \"gulick\",\n \"gulledge\",\n \"gullett\",\n \"gumm\",\n \"gump\",\n \"gunderson\",\n \"gunn\",\n \"gunther\",\n \"gupta\",\n \"gupton\",\n \"gurley\",\n \"gurrola\",\n \"gurule\",\n \"gusman\",\n \"gussie\",\n \"gustafson\",\n \"gustin\",\n \"guth\",\n \"guthrie\",\n \"gutierrez\",\n \"gutshall\",\n \"guyer\",\n \"guyette\",\n \"guyton\",\n \"guzman\",\n \"gwen\",\n \"gwenda\",\n \"gwendolyn\",\n \"gwenn\",\n \"gwin\",\n \"gwinn\",\n \"gwyn\",\n \"gwyneth\",\n \"haag\",\n \"haas\",\n \"haase\",\n \"haber\",\n \"haberman\",\n \"hackett\",\n \"hackman\",\n \"hackworth\",\n \"haddad\",\n \"haddix\",\n \"hadfield\",\n \"hadley\",\n \"hadlock\",\n \"hae\",\n \"hafer\",\n \"haffner\",\n \"hafner\",\n \"haga\",\n \"hagan\",\n \"hagans\",\n \"hagar\",\n \"hage\",\n \"hageman\",\n \"hagen\",\n \"hager\",\n \"hagerman\",\n \"hagerty\",\n \"haggerty\",\n \"hagler\",\n \"hagood\",\n \"hague\",\n \"hagy\",\n \"hahn\",\n \"haigh\",\n \"haight\",\n \"haile\",\n \"hailey\",\n \"haines\",\n \"haire\",\n \"hairston\",\n \"halcomb\",\n \"hales\",\n \"haley\",\n \"halford\",\n \"halina\",\n \"halle\",\n \"haller\",\n \"hallett\",\n \"halley\",\n \"halliburton\",\n \"halliday\",\n \"hallie\",\n \"hallman\",\n \"hallock\",\n \"halloran\",\n \"hallowell\",\n \"halpern\",\n \"halpin\",\n \"halsey\",\n \"halstead\",\n \"halverson\",\n \"halvorsen\",\n \"halvorson\",\n \"hamann\",\n \"hamblin\",\n \"hambrick\",\n \"hamby\",\n \"hamel\",\n \"hamer\",\n \"hamill\",\n \"hamilton\",\n \"hamlett\",\n \"hamlin\",\n \"hamm\",\n \"hammack\",\n \"hamman\",\n \"hammel\",\n \"hammett\",\n \"hammon\",\n \"hammond\",\n \"hammonds\",\n \"hammons\",\n \"hamner\",\n \"hampson\",\n \"hampton\",\n \"hamrick\",\n \"han\",\n \"hana\",\n \"hancock\",\n \"handley\",\n \"hanes\",\n \"haney\",\n \"hanh\",\n \"hanke\",\n \"hankins\",\n \"hanley\",\n \"hanlon\",\n \"hann\",\n \"hanna\",\n \"hannah\",\n \"hannan\",\n \"hannelore\",\n \"hanner\",\n \"hannigan\",\n \"hannon\",\n \"hanrahan\",\n \"hans\",\n \"hansen\",\n \"hanson\",\n \"harbaugh\",\n \"harber\",\n \"harbin\",\n \"harbison\",\n \"hardaway\",\n \"hardcastle\",\n \"hardee\",\n \"hardeman\",\n \"hardesty\",\n \"hardie\",\n \"hardiman\",\n \"hardin\",\n \"harding\",\n \"hardison\",\n \"hardman\",\n \"hardnett\",\n \"hardwick\",\n \"hargett\",\n \"hargis\",\n \"hargrave\",\n \"hargrove\",\n \"harker\",\n \"harkey\",\n \"harkins\",\n \"harkness\",\n \"harlan\",\n \"harless\",\n \"harley\",\n \"harlow\",\n \"harmon\",\n \"harner\",\n \"harney\",\n \"haro\",\n \"harold\",\n \"harr\",\n \"harrell\",\n \"harrelson\",\n \"harriet\",\n \"harriett\",\n \"harriette\",\n \"harrigan\",\n \"harriman\",\n \"harrington\",\n \"harris\",\n \"harrison\",\n \"harrod\",\n \"harrold\",\n \"harter\",\n \"hartfield\",\n \"hartford\",\n \"hartle\",\n \"hartley\",\n \"hartman\",\n \"hartmann\",\n \"hartnett\",\n \"hartsell\",\n \"hartsfield\",\n \"hartsock\",\n \"hartung\",\n \"hartwell\",\n \"hartwig\",\n \"harty\",\n \"hartz\",\n \"hartzell\",\n \"hartzog\",\n \"harvell\",\n \"harvey\",\n \"harville\",\n \"harvin\",\n \"harwell\",\n \"harwood\",\n \"hashimoto\",\n \"haskell\",\n \"haskins\",\n \"hass\",\n \"hassan\",\n \"hassell\",\n \"hassett\",\n \"hassie\",\n \"hassler\",\n \"hasson\",\n \"hatchett\",\n \"hatfield\",\n \"hathaway\",\n \"hathcock\",\n \"hathorn\",\n \"hatley\",\n \"hatten\",\n \"hattie\",\n \"hatton\",\n \"hauck\",\n \"haug\",\n \"haugen\",\n \"haun\",\n \"haupt\",\n \"hauser\",\n \"havard\",\n \"haviland\",\n \"hawes\",\n \"hawkes\",\n \"hawkins\",\n \"hawkinson\",\n \"hawley\",\n \"hawn\",\n \"haworth\",\n \"hawthorne\",\n \"hayashi\",\n \"haydee\",\n \"hayden\",\n \"haydon\",\n \"hayes\",\n \"haygood\",\n \"hayley\",\n \"hayman\",\n \"hayner\",\n \"haynes\",\n \"haynie\",\n \"haywood\",\n \"hazelton\",\n \"hazelwood\",\n \"hazen\",\n \"hazlett\",\n \"hazzard\",\n \"headley\",\n \"headrick\",\n \"healey\",\n \"healy\",\n \"heaney\",\n \"hearn\",\n \"hearne\",\n \"heather\",\n \"heatherly\",\n \"heaton\",\n \"hebert\",\n \"hecht\",\n \"hecker\",\n \"heckman\",\n \"hedden\",\n \"hedgepeth\",\n \"hedrick\",\n \"hedwig\",\n \"hedy\",\n \"hee\",\n \"heffernan\",\n \"heffner\",\n \"heflin\",\n \"hefner\",\n \"hegarty\",\n \"heide\",\n \"heidi\",\n \"heidy\",\n \"heike\",\n \"heil\",\n \"heilman\",\n \"heim\",\n \"hein\",\n \"heine\",\n \"heinrich\",\n \"heins\",\n \"heintz\",\n \"heinz\",\n \"heise\",\n \"heiser\",\n \"heisler\",\n \"helaine\",\n \"helen\",\n \"helena\",\n \"helene\",\n \"helfrich\",\n \"helga\",\n \"helgeson\",\n \"hellen\",\n \"hellman\",\n \"helman\",\n \"helmer\",\n \"helmick\",\n \"helmuth\",\n \"helton\",\n \"helwig\",\n \"hembree\",\n \"hemingway\",\n \"hemphill\",\n \"hendershot\",\n \"henderson\",\n \"hendley\",\n \"hendon\",\n \"hendren\",\n \"hendrick\",\n \"hendricks\",\n \"hendrickson\",\n \"hendrix\",\n \"hendry\",\n \"henke\",\n \"henkel\",\n \"henley\",\n \"hennessey\",\n \"hennessy\",\n \"henninger\",\n \"henrietta\",\n \"henriette\",\n \"henriques\",\n \"henriquez\",\n \"henry\",\n \"hensel\",\n \"henshaw\",\n \"hensley\",\n \"henson\",\n \"henton\",\n \"hepburn\",\n \"hepler\",\n \"hepner\",\n \"herbert\",\n \"herbst\",\n \"heredia\",\n \"hereford\",\n \"herlinda\",\n \"herma\",\n \"herman\",\n \"hermann\",\n \"hermelinda\",\n \"hermes\",\n \"hermila\",\n \"hermina\",\n \"hermine\",\n \"herminia\",\n \"hermosillo\",\n \"hernadez\",\n \"hernandes\",\n \"hernandez\",\n \"herndon\",\n \"herod\",\n \"herold\",\n \"herr\",\n \"herren\",\n \"herrera\",\n \"herrick\",\n \"herrin\",\n \"herrington\",\n \"herrmann\",\n \"herrod\",\n \"herron\",\n \"hersey\",\n \"hersh\",\n \"hershberger\",\n \"hershey\",\n \"herta\",\n \"hertel\",\n \"hertha\",\n \"herzog\",\n \"hess\",\n \"hesse\",\n \"hesson\",\n \"hester\",\n \"hetrick\",\n \"hettie\",\n \"hetzel\",\n \"heuer\",\n \"hewett\",\n \"hewitt\",\n \"hewlett\",\n \"heyer\",\n \"heyward\",\n \"heywood\",\n \"hiatt\",\n \"hibbard\",\n \"hibbert\",\n \"hibbler\",\n \"hibbs\",\n \"hickerson\",\n \"hickman\",\n \"hickok\",\n \"hickox\",\n \"hickson\",\n \"hiedi\",\n \"hien\",\n \"hiers\",\n \"higa\",\n \"higbee\",\n \"higdon\",\n \"higginbotham\",\n \"higgins\",\n \"higgs\",\n \"highsmith\",\n \"hightower\",\n \"higley\",\n \"hilaria\",\n \"hilary\",\n \"hilbert\",\n \"hilburn\",\n \"hilda\",\n \"hilde\",\n \"hildebrand\",\n \"hildebrandt\",\n \"hildegard\",\n \"hildegarde\",\n \"hildred\",\n \"hildreth\",\n \"hileman\",\n \"hiles\",\n \"hillard\",\n \"hillary\",\n \"hiller\",\n \"hilliard\",\n \"hillis\",\n \"hillman\",\n \"hillyer\",\n \"hilma\",\n \"hilton\",\n \"himes\",\n \"hinckley\",\n \"hindman\",\n \"hine\",\n \"hines\",\n \"hinkle\",\n \"hinkley\",\n \"hinman\",\n \"hinojosa\",\n \"hinrichs\",\n \"hinshaw\",\n \"hinson\",\n \"hinton\",\n \"hintz\",\n \"hinz\",\n \"hipp\",\n \"hiroko\",\n \"hirsch\",\n \"hirst\",\n \"hisako\",\n \"hitchcock\",\n \"hite\",\n \"hitt\",\n \"hix\",\n \"hixon\",\n \"hixson\",\n \"hoa\",\n \"hoag\",\n \"hoagland\",\n \"hoang\",\n \"hobart\",\n \"hobbs\",\n \"hobson\",\n \"hoch\",\n \"hochstetler\",\n \"hockenberry\",\n \"hockett\",\n \"hodge\",\n \"hodges\",\n \"hodgkins\",\n \"hodgson\",\n \"hodson\",\n \"hoekstra\",\n \"hoelscher\",\n \"hoey\",\n \"hofer\",\n \"hoff\",\n \"hoffer\",\n \"hoffman\",\n \"hoffmann\",\n \"hofmann\",\n \"hoggard\",\n \"hogue\",\n \"holbert\",\n \"holbrook\",\n \"holcomb\",\n \"holcombe\",\n \"holguin\",\n \"holifield\",\n \"holladay\",\n \"hollander\",\n \"hollar\",\n \"hollenbeck\",\n \"holley\",\n \"holli\",\n \"holliday\",\n \"hollie\",\n \"hollifield\",\n \"holliman\",\n \"hollinger\",\n \"hollingshead\",\n \"hollingsworth\",\n \"hollins\",\n \"hollis\",\n \"hollister\",\n \"holloman\",\n \"holloway\",\n \"hollowell\",\n \"holman\",\n \"holmberg\",\n \"holmes\",\n \"holmgren\",\n \"holmquist\",\n \"holsinger\",\n \"holst\",\n \"holstein\",\n \"holston\",\n \"holter\",\n \"holton\",\n \"holtz\",\n \"holzer\",\n \"hom\",\n \"homan\",\n \"honaker\",\n \"honea\",\n \"honeycutt\",\n \"hoopes\",\n \"hooten\",\n \"hopkins\",\n \"hoppe\",\n \"hopson\",\n \"horan\",\n \"hord\",\n \"horgan\",\n \"hornback\",\n \"hornbeck\",\n \"horne\",\n \"hornsby\",\n \"horowitz\",\n \"horrocks\",\n \"horsley\",\n \"horta\",\n \"hortencia\",\n \"hortense\",\n \"hortensia\",\n \"horton\",\n \"horvath\",\n \"hosey\",\n \"hoskins\",\n \"hosmer\",\n \"hostetler\",\n \"hostetter\",\n \"hotchkiss\",\n \"houchens\",\n \"houck\",\n \"houghton\",\n \"houk\",\n \"houle\",\n \"houlihan\",\n \"householder\",\n \"houser\",\n \"housley\",\n \"housman\",\n \"houston\",\n \"hovey\",\n \"hovis\",\n \"howard\",\n \"howarth\",\n \"howell\",\n \"howells\",\n \"hower\",\n \"howerton\",\n \"howie\",\n \"howland\",\n \"howlett\",\n \"howse\",\n \"howze\",\n \"hoye\",\n \"hoyle\",\n \"hoyos\",\n \"hoyt\",\n \"hsiu\",\n \"hsu\",\n \"hua\",\n \"huang\",\n \"hubbard\",\n \"hubbell\",\n \"hubble\",\n \"hubbs\",\n \"huber\",\n \"hubert\",\n \"huckaby\",\n \"hudak\",\n \"huddleston\",\n \"hudgens\",\n \"hudgins\",\n \"hudnall\",\n \"hudson\",\n \"hudspeth\",\n \"huebner\",\n \"huerta\",\n \"huertas\",\n \"huey\",\n \"huffman\",\n \"hufford\",\n \"huggins\",\n \"hughes\",\n \"hughey\",\n \"hughs\",\n \"hui\",\n \"huie\",\n \"hulbert\",\n \"hulda\",\n \"hulett\",\n \"hulse\",\n \"hulsey\",\n \"humbert\",\n \"hume\",\n \"humes\",\n \"humphrey\",\n \"humphreys\",\n \"humphries\",\n \"hundley\",\n \"huneycutt\",\n \"hungerford\",\n \"hunley\",\n \"hunnicutt\",\n \"hunsaker\",\n \"huntington\",\n \"huntley\",\n \"huong\",\n \"hupp\",\n \"hurd\",\n \"hurlburt\",\n \"hurtado\",\n \"huskey\",\n \"hussey\",\n \"husted\",\n \"huston\",\n \"hutchens\",\n \"hutcherson\",\n \"hutcheson\",\n \"hutchings\",\n \"hutchins\",\n \"hutchinson\",\n \"hutchison\",\n \"huth\",\n \"hutson\",\n \"hutt\",\n \"hutto\",\n \"hutton\",\n \"huynh\",\n \"hwa\",\n \"hwang\",\n \"hyacinth\",\n \"hyatt\",\n \"hyde\",\n \"hyden\",\n \"hyder\",\n \"hye\",\n \"hyland\",\n \"hylton\",\n \"hyman\",\n \"hynes\",\n \"hyo\",\n \"hyon\",\n \"hysell\",\n \"hyun\",\n \"ibanez\",\n \"ibarra\",\n \"ibrahim\",\n \"ickes\",\n \"idell\",\n \"idella\",\n \"iesha\",\n \"iglesias\",\n \"ignacia\",\n \"ilana\",\n \"ilda\",\n \"ileana\",\n \"ileen\",\n \"ilene\",\n \"iliana\",\n \"ilona\",\n \"ilse\",\n \"iluminada\",\n \"imelda\",\n \"imes\",\n \"imhoff\",\n \"imogene\",\n \"india\",\n \"indira\",\n \"inell\",\n \"ines\",\n \"inez\",\n \"inga\",\n \"ingalls\",\n \"ingeborg\",\n \"ingersoll\",\n \"ingham\",\n \"ingraham\",\n \"ingrid\",\n \"inman\",\n \"inocencia\",\n \"iona\",\n \"ione\",\n \"ira\",\n \"iraida\",\n \"irby\",\n \"ireland\",\n \"irena\",\n \"irene\",\n \"irick\",\n \"irina\",\n \"irish\",\n \"irizarry\",\n \"irma\",\n \"irmgard\",\n \"irvin\",\n \"irvine\",\n \"irving\",\n \"irwin\",\n \"iryna\",\n \"isa\",\n \"isaac\",\n \"isaacs\",\n \"isaacson\",\n \"isabel\",\n \"isabell\",\n \"isabella\",\n \"isabelle\",\n \"isadora\",\n \"isaura\",\n \"isbell\",\n \"isela\",\n \"isenberg\",\n \"isham\",\n \"isidra\",\n \"isis\",\n \"islas\",\n \"isley\",\n \"isobel\",\n \"isom\",\n \"ison\",\n \"israel\",\n \"ito\",\n \"ivana\",\n \"ivelisse\",\n \"iverson\",\n \"ives\",\n \"ivette\",\n \"ivey\",\n \"ivie\",\n \"ivonne\",\n \"izaguirre\",\n \"izetta\",\n \"izola\",\n \"izzo\",\n \"jablonski\",\n \"jacalyn\",\n \"jacelyn\",\n \"jacinda\",\n \"jacinta\",\n \"jacinto\",\n \"jackeline\",\n \"jackelyn\",\n \"jacki\",\n \"jackie\",\n \"jacklyn\",\n \"jackqueline\",\n \"jackson\",\n \"jaclyn\",\n \"jaco\",\n \"jacob\",\n \"jacobi\",\n \"jacobo\",\n \"jacobs\",\n \"jacobsen\",\n \"jacobson\",\n \"jacoby\",\n \"jacqualine\",\n \"jacque\",\n \"jacquelin\",\n \"jacqueline\",\n \"jacquelyn\",\n \"jacquelyne\",\n \"jacquelynn\",\n \"jacques\",\n \"jacquetta\",\n \"jacquez\",\n \"jacqui\",\n \"jacquie\",\n \"jacquiline\",\n \"jacquline\",\n \"jacqulyn\",\n \"jada\",\n \"jadwiga\",\n \"jae\",\n \"jaffe\",\n \"jahn\",\n \"jahnke\",\n \"jaime\",\n \"jaimee\",\n \"jaimes\",\n \"jaimie\",\n \"jalbert\",\n \"jaleesa\",\n \"jalisa\",\n \"jama\",\n \"jame\",\n \"jamee\",\n \"jamerson\",\n \"james\",\n \"jameson\",\n \"jamey\",\n \"jami\",\n \"jamie\",\n \"jamieson\",\n \"jamika\",\n \"jamila\",\n \"jamison\",\n \"jammie\",\n \"jan\",\n \"jana\",\n \"janae\",\n \"janay\",\n \"jane\",\n \"janean\",\n \"janee\",\n \"janeen\",\n \"janel\",\n \"janell\",\n \"janella\",\n \"janelle\",\n \"janene\",\n \"janessa\",\n \"janet\",\n \"janeth\",\n \"janett\",\n \"janetta\",\n \"janette\",\n \"janey\",\n \"jani\",\n \"janice\",\n \"janie\",\n \"janiece\",\n \"janina\",\n \"janine\",\n \"janis\",\n \"janise\",\n \"janita\",\n \"jankowski\",\n \"jann\",\n \"janna\",\n \"jannet\",\n \"jannette\",\n \"jannie\",\n \"jansen\",\n \"janson\",\n \"janssen\",\n \"janyce\",\n \"jaqueline\",\n \"jaquelyn\",\n \"jaques\",\n \"jaquez\",\n \"jara\",\n \"jaramillo\",\n \"jarboe\",\n \"jardine\",\n \"jarman\",\n \"jarmon\",\n \"jarrell\",\n \"jarrett\",\n \"jarvis\",\n \"jason\",\n \"jasso\",\n \"jaunita\",\n \"jauregui\",\n \"javier\",\n \"jaworski\",\n \"jaye\",\n \"jayme\",\n \"jaymie\",\n \"jayna\",\n \"jayne\",\n \"jaynes\",\n \"jazmin\",\n \"jazmine\",\n \"jeana\",\n \"jeanbaptiste\",\n \"jeane\",\n \"jeanelle\",\n \"jeanene\",\n \"jeanett\",\n \"jeanetta\",\n \"jeanette\",\n \"jeanice\",\n \"jeanie\",\n \"jeanine\",\n \"jeanlouis\",\n \"jeanmarie\",\n \"jeanna\",\n \"jeanne\",\n \"jeannetta\",\n \"jeannette\",\n \"jeannie\",\n \"jeannine\",\n \"jeffcoat\",\n \"jefferies\",\n \"jeffers\",\n \"jefferson\",\n \"jeffery\",\n \"jeffie\",\n \"jeffrey\",\n \"jeffreys\",\n \"jeffries\",\n \"jemison\",\n \"jen\",\n \"jena\",\n \"jenae\",\n \"jene\",\n \"jenee\",\n \"jenell\",\n \"jenelle\",\n \"jenette\",\n \"jeneva\",\n \"jeni\",\n \"jenice\",\n \"jenifer\",\n \"jeniffer\",\n \"jenine\",\n \"jenise\",\n \"jenkins\",\n \"jenks\",\n \"jenna\",\n \"jennefer\",\n \"jennell\",\n \"jennette\",\n \"jenni\",\n \"jennie\",\n \"jennifer\",\n \"jenniffer\",\n \"jennine\",\n \"jennings\",\n \"jenny\",\n \"jensen\",\n \"jenson\",\n \"jepson\",\n \"jeraldine\",\n \"jeremy\",\n \"jeri\",\n \"jerica\",\n \"jerilyn\",\n \"jerlene\",\n \"jernigan\",\n \"jerome\",\n \"jerri\",\n \"jerrica\",\n \"jerrie\",\n \"jerry\",\n \"jesenia\",\n \"jesica\",\n \"jeske\",\n \"jesse\",\n \"jessee\",\n \"jessen\",\n \"jessenia\",\n \"jessi\",\n \"jessia\",\n \"jessica\",\n \"jessie\",\n \"jessika\",\n \"jessup\",\n \"jestine\",\n \"jesus\",\n \"jesusa\",\n \"jesusita\",\n \"jeter\",\n \"jett\",\n \"jetta\",\n \"jettie\",\n \"jewell\",\n \"jewett\",\n \"jiles\",\n \"jill\",\n \"jillian\",\n \"jim\",\n \"jimenez\",\n \"jimerson\",\n \"jiminez\",\n \"jimmie\",\n \"joan\",\n \"joana\",\n \"joane\",\n \"joanie\",\n \"joann\",\n \"joanna\",\n \"joanne\",\n \"joannie\",\n \"joaquina\",\n \"jobe\",\n \"jocelyn\",\n \"jodee\",\n \"jodi\",\n \"jodie\",\n \"jody\",\n \"joe\",\n \"joeann\",\n \"joel\",\n \"joella\",\n \"joelle\",\n \"joellen\",\n \"joeseph\",\n \"joesph\",\n \"joetta\",\n \"joette\",\n \"joey\",\n \"johana\",\n \"johanna\",\n \"johanne\",\n \"johansen\",\n \"johanson\",\n \"john\",\n \"johna\",\n \"johnetta\",\n \"johnette\",\n \"johnie\",\n \"johnna\",\n \"johnnie\",\n \"johnny\",\n \"johnsen\",\n \"johnsie\",\n \"johnson\",\n \"johnston\",\n \"johnstone\",\n \"joi\",\n \"joie\",\n \"jolanda\",\n \"joleen\",\n \"jolene\",\n \"jolie\",\n \"jolin\",\n \"joline\",\n \"jolley\",\n \"jolyn\",\n \"jolynn\",\n \"jon\",\n \"jona\",\n \"jonas\",\n \"jone\",\n \"jonell\",\n \"jonelle\",\n \"jones\",\n \"jong\",\n \"joni\",\n \"jonie\",\n \"jonna\",\n \"jonnie\",\n \"joplin\",\n \"jordan\",\n \"jordon\",\n \"jorge\",\n \"jorgensen\",\n \"jorgenson\",\n \"jose\",\n \"josefa\",\n \"josefina\",\n \"josefine\",\n \"joselyn\",\n \"joseph\",\n \"josephina\",\n \"josephine\",\n \"josephson\",\n \"josette\",\n \"josey\",\n \"joshua\",\n \"josie\",\n \"joslin\",\n \"joslyn\",\n \"josphine\",\n \"jost\",\n \"joubert\",\n \"jovan\",\n \"jovita\",\n \"jowers\",\n \"joya\",\n \"joyce\",\n \"joycelyn\",\n \"joye\",\n \"joyner\",\n \"juan\",\n \"juana\",\n \"juanita\",\n \"juarez\",\n \"judd\",\n \"jude\",\n \"judi\",\n \"judie\",\n \"judith\",\n \"judkins\",\n \"judson\",\n \"judy\",\n \"jule\",\n \"julee\",\n \"julene\",\n \"juli\",\n \"julia\",\n \"julian\",\n \"juliana\",\n \"juliane\",\n \"juliann\",\n \"julianna\",\n \"julianne\",\n \"julie\",\n \"julieann\",\n \"julien\",\n \"julienne\",\n \"juliet\",\n \"julieta\",\n \"julietta\",\n \"juliette\",\n \"julio\",\n \"julissa\",\n \"julius\",\n \"jung\",\n \"junie\",\n \"junita\",\n \"junko\",\n \"jurado\",\n \"justa\",\n \"justin\",\n \"justina\",\n \"justine\",\n \"justus\",\n \"jutta\",\n \"kacey\",\n \"kaci\",\n \"kacie\",\n \"kacy\",\n \"kaczmarek\",\n \"kahl\",\n \"kahle\",\n \"kahler\",\n \"kahn\",\n \"kaila\",\n \"kaitlin\",\n \"kaitlyn\",\n \"kala\",\n \"kaleigh\",\n \"kaley\",\n \"kali\",\n \"kallie\",\n \"kalyn\",\n \"kam\",\n \"kamala\",\n \"kami\",\n \"kamilah\",\n \"kaminski\",\n \"kaminsky\",\n \"kammerer\",\n \"kamp\",\n \"kandace\",\n \"kandi\",\n \"kandice\",\n \"kandis\",\n \"kandra\",\n \"kandy\",\n \"kane\",\n \"kanesha\",\n \"kanisha\",\n \"kantor\",\n \"kao\",\n \"kaplan\",\n \"kapp\",\n \"kara\",\n \"karan\",\n \"kareen\",\n \"karen\",\n \"karena\",\n \"karey\",\n \"kari\",\n \"karie\",\n \"karima\",\n \"karin\",\n \"karina\",\n \"karine\",\n \"karisa\",\n \"karissa\",\n \"karl\",\n \"karla\",\n \"karleen\",\n \"karlene\",\n \"karly\",\n \"karlyn\",\n \"karmen\",\n \"karnes\",\n \"karns\",\n \"karol\",\n \"karole\",\n \"karoline\",\n \"karolyn\",\n \"karon\",\n \"karp\",\n \"karr\",\n \"karren\",\n \"karri\",\n \"karrie\",\n \"karry\",\n \"kary\",\n \"karyl\",\n \"karyn\",\n \"kasandra\",\n \"kasey\",\n \"kasha\",\n \"kasi\",\n \"kasie\",\n \"kasper\",\n \"kass\",\n \"kassandra\",\n \"kassie\",\n \"kasten\",\n \"kastner\",\n \"kate\",\n \"katelin\",\n \"katelyn\",\n \"katelynn\",\n \"katerine\",\n \"kates\",\n \"kathaleen\",\n \"katharina\",\n \"katharine\",\n \"katharyn\",\n \"kathe\",\n \"katheleen\",\n \"katherin\",\n \"katherina\",\n \"katherine\",\n \"kathern\",\n \"katheryn\",\n \"kathey\",\n \"kathi\",\n \"kathie\",\n \"kathleen\",\n \"kathlene\",\n \"kathline\",\n \"kathlyn\",\n \"kathrin\",\n \"kathrine\",\n \"kathryn\",\n \"kathryne\",\n \"kathy\",\n \"kathyrn\",\n \"kati\",\n \"katia\",\n \"katie\",\n \"katina\",\n \"katlyn\",\n \"kato\",\n \"katrice\",\n \"katrina\",\n \"kattie\",\n \"katy\",\n \"katz\",\n \"kauffman\",\n \"kaufman\",\n \"kaufmann\",\n \"kautz\",\n \"kavanagh\",\n \"kavanaugh\",\n \"kay\",\n \"kayce\",\n \"kaycee\",\n \"kaye\",\n \"kayla\",\n \"kaylee\",\n \"kayleen\",\n \"kayleigh\",\n \"kaylene\",\n \"kaylor\",\n \"kayser\",\n \"kazuko\",\n \"kean\",\n \"keane\",\n \"kearney\",\n \"kearns\",\n \"kearse\",\n \"keating\",\n \"keaton\",\n \"kecia\",\n \"kee\",\n \"keefe\",\n \"keefer\",\n \"keegan\",\n \"keele\",\n \"keeley\",\n \"keely\",\n \"keena\",\n \"keenan\",\n \"keene\",\n \"keeney\",\n \"keesee\",\n \"keesha\",\n \"keeter\",\n \"keeton\",\n \"keever\",\n \"keffer\",\n \"kehoe\",\n \"keiko\",\n \"keil\",\n \"keila\",\n \"keim\",\n \"keira\",\n \"keiser\",\n \"keisha\",\n \"keith\",\n \"keitha\",\n \"keitt\",\n \"keli\",\n \"kellam\",\n \"kellar\",\n \"kelle\",\n \"kellee\",\n \"kelleher\",\n \"keller\",\n \"kellerman\",\n \"kelley\",\n \"kelli\",\n \"kellie\",\n \"kellner\",\n \"kellogg\",\n \"kellum\",\n \"kelly\",\n \"kellye\",\n \"kelm\",\n \"kelsey\",\n \"kelsi\",\n \"kelsie\",\n \"kelso\",\n \"kelton\",\n \"kemberly\",\n \"kempf\",\n \"kena\",\n \"kenda\",\n \"kendal\",\n \"kendall\",\n \"kendra\",\n \"kendrick\",\n \"kendricks\",\n \"kenia\",\n \"kenisha\",\n \"kenna\",\n \"kennard\",\n \"kennedy\",\n \"kenneth\",\n \"kenney\",\n \"kennon\",\n \"kenny\",\n \"kenya\",\n \"kenyatta\",\n \"kenyetta\",\n \"kenyon\",\n \"keown\",\n \"kephart\",\n \"kepler\",\n \"kera\",\n \"kerby\",\n \"keren\",\n \"keri\",\n \"kerley\",\n \"kerr\",\n \"kerri\",\n \"kerrie\",\n \"kerrigan\",\n \"kerry\",\n \"kershaw\",\n \"kershner\",\n \"kerstin\",\n \"kesha\",\n \"keshia\",\n \"kesler\",\n \"kessel\",\n \"kessinger\",\n \"kessler\",\n \"kester\",\n \"kesterson\",\n \"ketcham\",\n \"ketchum\",\n \"ketron\",\n \"keturah\",\n \"keva\",\n \"kevin\",\n \"keyes\",\n \"keyser\",\n \"khadijah\",\n \"khalilah\",\n \"khoury\",\n \"kia\",\n \"kiana\",\n \"kiara\",\n \"kibler\",\n \"kidd\",\n \"kidwell\",\n \"kiefer\",\n \"kieffer\",\n \"kiel\",\n \"kiely\",\n \"kiera\",\n \"kiernan\",\n \"kiersten\",\n \"kiesha\",\n \"kiger\",\n \"kight\",\n \"kilburn\",\n \"kilby\",\n \"kile\",\n \"kiley\",\n \"kilgore\",\n \"killebrew\",\n \"killen\",\n \"killian\",\n \"killingsworth\",\n \"killion\",\n \"killough\",\n \"kilmer\",\n \"kilpatrick\",\n \"kim\",\n \"kimball\",\n \"kimber\",\n \"kimberely\",\n \"kimberlee\",\n \"kimberley\",\n \"kimberli\",\n \"kimberlie\",\n \"kimberlin\",\n \"kimberly\",\n \"kimbery\",\n \"kimble\",\n \"kimbra\",\n \"kimbrell\",\n \"kimbro\",\n \"kimbrough\",\n \"kimes\",\n \"kimi\",\n \"kimiko\",\n \"kimmel\",\n \"kimsey\",\n \"kimura\",\n \"kina\",\n \"kinard\",\n \"kincaid\",\n \"kindra\",\n \"kingery\",\n \"kingsbury\",\n \"kingsley\",\n \"kingston\",\n \"kinlaw\",\n \"kinnard\",\n \"kinney\",\n \"kinsella\",\n \"kinser\",\n \"kinsey\",\n \"kinsler\",\n \"kinsley\",\n \"kinslow\",\n \"kinzer\",\n \"kira\",\n \"kirby\",\n \"kirchner\",\n \"kirkendall\",\n \"kirkham\",\n \"kirkland\",\n \"kirkpatrick\",\n \"kirksey\",\n \"kirkwood\",\n \"kirschner\",\n \"kirsten\",\n \"kirstie\",\n \"kirstin\",\n \"kirtley\",\n \"kirwan\",\n \"kiser\",\n \"kisha\",\n \"kisner\",\n \"kissinger\",\n \"kistler\",\n \"kittie\",\n \"kittrell\",\n \"kitts\",\n \"kitty\",\n \"kiyoko\",\n \"kizer\",\n \"kizzie\",\n \"kizzy\",\n \"klara\",\n \"klatt\",\n \"klaus\",\n \"klein\",\n \"kline\",\n \"kling\",\n \"klingensmith\",\n \"klinger\",\n \"klink\",\n \"klotz\",\n \"klug\",\n \"knapp\",\n \"knecht\",\n \"knepper\",\n \"knighten\",\n \"knighton\",\n \"knisley\",\n \"knopp\",\n \"knorr\",\n \"knott\",\n \"knotts\",\n \"knowles\",\n \"knowlton\",\n \"knox\",\n \"knudsen\",\n \"knudson\",\n \"knuth\",\n \"knutson\",\n \"kobayashi\",\n \"koch\",\n \"kocher\",\n \"koehler\",\n \"koehn\",\n \"koenig\",\n \"koerner\",\n \"koester\",\n \"koger\",\n \"kohler\",\n \"kohn\",\n \"kolb\",\n \"koller\",\n \"kong\",\n \"konrad\",\n \"koon\",\n \"koonce\",\n \"koons\",\n \"koontz\",\n \"koopman\",\n \"kopp\",\n \"kori\",\n \"korn\",\n \"kornegay\",\n \"korte\",\n \"kortney\",\n \"koski\",\n \"koster\",\n \"kourtney\",\n \"kovac\",\n \"kovach\",\n \"kovacs\",\n \"kowal\",\n \"kowalczyk\",\n \"kowalewski\",\n \"kowalski\",\n \"kozak\",\n \"koziol\",\n \"kozlowski\",\n \"kraemer\",\n \"krall\",\n \"kramer\",\n \"kratz\",\n \"kratzer\",\n \"kraus\",\n \"krause\",\n \"krauss\",\n \"krawczyk\",\n \"krebs\",\n \"kremer\",\n \"kress\",\n \"krick\",\n \"krieg\",\n \"krieger\",\n \"kris\",\n \"krishna\",\n \"krissy\",\n \"krista\",\n \"kristal\",\n \"kristan\",\n \"kristeen\",\n \"kristel\",\n \"kristen\",\n \"kristi\",\n \"kristian\",\n \"kristie\",\n \"kristin\",\n \"kristina\",\n \"kristine\",\n \"kristle\",\n \"kristy\",\n \"kristyn\",\n \"kroeger\",\n \"krohn\",\n \"krol\",\n \"kroll\",\n \"kropp\",\n \"krouse\",\n \"krueger\",\n \"krug\",\n \"kruger\",\n \"krumm\",\n \"kruse\",\n \"krysta\",\n \"krystal\",\n \"krysten\",\n \"krystin\",\n \"krystina\",\n \"krystle\",\n \"krystyna\",\n \"kubiak\",\n \"kucera\",\n \"kuehl\",\n \"kuehn\",\n \"kugler\",\n \"kuhl\",\n \"kuhlman\",\n \"kuhlmann\",\n \"kuhn\",\n \"kuhns\",\n \"kujawa\",\n \"kulp\",\n \"kum\",\n \"kumar\",\n \"kunkel\",\n \"kunkle\",\n \"kuntz\",\n \"kunz\",\n \"kurth\",\n \"kurtz\",\n \"kushner\",\n \"kuster\",\n \"kutz\",\n \"kuykendall\",\n \"kwan\",\n \"kwiatkowski\",\n \"kwon\",\n \"kyla\",\n \"kyle\",\n \"kylee\",\n \"kylie\",\n \"kym\",\n \"kymberly\",\n \"kyoko\",\n \"kyong\",\n \"kyra\",\n \"kyser\",\n \"kyung\",\n \"labarbera\",\n \"labbe\",\n \"labelle\",\n \"labonte\",\n \"laboy\",\n \"labrecque\",\n \"labrie\",\n \"lacasse\",\n \"lacey\",\n \"lach\",\n \"lachance\",\n \"lachelle\",\n \"laci\",\n \"lacie\",\n \"laclair\",\n \"lacombe\",\n \"lacour\",\n \"lacresha\",\n \"lacroix\",\n \"ladawn\",\n \"ladd\",\n \"ladner\",\n \"ladonna\",\n \"lael\",\n \"lafave\",\n \"lafayette\",\n \"lafferty\",\n \"laflamme\",\n \"lafleur\",\n \"lafollette\",\n \"lafond\",\n \"lafontaine\",\n \"lafountain\",\n \"lafrance\",\n \"lafreniere\",\n \"lagasse\",\n \"laguna\",\n \"lagunas\",\n \"lahoma\",\n \"lahr\",\n \"lai\",\n \"lail\",\n \"laila\",\n \"laine\",\n \"laing\",\n \"lajoie\",\n \"lajuana\",\n \"lakeesha\",\n \"lakeisha\",\n \"lakendra\",\n \"lakenya\",\n \"lakesha\",\n \"lakeshia\",\n \"lakey\",\n \"lakia\",\n \"lakiesha\",\n \"lakisha\",\n \"lakita\",\n \"lala\",\n \"laliberte\",\n \"lally\",\n \"lalonde\",\n \"lamanna\",\n \"lamar\",\n \"lambrecht\",\n \"lamere\",\n \"lamkin\",\n \"lamm\",\n \"lamonica\",\n \"lamont\",\n \"lamontagne\",\n \"lamoreaux\",\n \"lamothe\",\n \"lamoureux\",\n \"lampe\",\n \"lampkin\",\n \"lampley\",\n \"lana\",\n \"lancaster\",\n \"landa\",\n \"landeros\",\n \"landes\",\n \"landin\",\n \"landis\",\n \"landon\",\n \"landreth\",\n \"landrum\",\n \"landry\",\n \"lanell\",\n \"lanelle\",\n \"lanette\",\n \"laney\",\n \"lang\",\n \"langan\",\n \"langdon\",\n \"lange\",\n \"langer\",\n \"langevin\",\n \"langford\",\n \"langham\",\n \"langley\",\n \"langlois\",\n \"langston\",\n \"lanham\",\n \"lani\",\n \"lanie\",\n \"lanier\",\n \"lanita\",\n \"lankford\",\n \"lannie\",\n \"lanning\",\n \"lanora\",\n \"lansing\",\n \"lantz\",\n \"lanza\",\n \"lao\",\n \"lapierre\",\n \"laplante\",\n \"lapoint\",\n \"lapointe\",\n \"laporte\",\n \"lapp\",\n \"laquanda\",\n \"laquita\",\n \"lara\",\n \"larae\",\n \"laraine\",\n \"laree\",\n \"largent\",\n \"larhonda\",\n \"larios\",\n \"larisa\",\n \"larissa\",\n \"larita\",\n \"lariviere\",\n \"larkin\",\n \"larkins\",\n \"larocca\",\n \"laroche\",\n \"larochelle\",\n \"larock\",\n \"laronda\",\n \"larosa\",\n \"larose\",\n \"larrabee\",\n \"larraine\",\n \"larry\",\n \"larsen\",\n \"larson\",\n \"larue\",\n \"lasalle\",\n \"lasandra\",\n \"lasater\",\n \"lashanda\",\n \"lashandra\",\n \"lashaun\",\n \"lashaunda\",\n \"lashawn\",\n \"lashawna\",\n \"lashawnda\",\n \"lashay\",\n \"lashell\",\n \"lashley\",\n \"lashon\",\n \"lashonda\",\n \"lashunda\",\n \"laskowski\",\n \"lasky\",\n \"lasley\",\n \"lasonya\",\n \"lasseter\",\n \"lassiter\",\n \"latanya\",\n \"latarsha\",\n \"latasha\",\n \"latashia\",\n \"latesha\",\n \"latham\",\n \"lathan\",\n \"lathrop\",\n \"latia\",\n \"laticia\",\n \"latimer\",\n \"latina\",\n \"latisha\",\n \"latonia\",\n \"latonya\",\n \"latoria\",\n \"latosha\",\n \"latour\",\n \"latoya\",\n \"latoyia\",\n \"latrice\",\n \"latricia\",\n \"latrina\",\n \"latrisha\",\n \"latta\",\n \"lattimore\",\n \"lau\",\n \"lauderdale\",\n \"lauer\",\n \"laughlin\",\n \"launa\",\n \"laura\",\n \"lauralee\",\n \"lauran\",\n \"laure\",\n \"laureano\",\n \"laureen\",\n \"lauren\",\n \"laurena\",\n \"laurence\",\n \"laurene\",\n \"laurent\",\n \"lauretta\",\n \"laurette\",\n \"lauri\",\n \"laurice\",\n \"laurie\",\n \"laurinda\",\n \"laurine\",\n \"lauryn\",\n \"laux\",\n \"lavada\",\n \"lavallee\",\n \"lavalley\",\n \"lavelle\",\n \"lavenia\",\n \"lavera\",\n \"lavergne\",\n \"lavern\",\n \"laverna\",\n \"laverne\",\n \"laverty\",\n \"lavery\",\n \"laveta\",\n \"lavette\",\n \"lavigne\",\n \"lavin\",\n \"lavina\",\n \"lavine\",\n \"lavinia\",\n \"lavoie\",\n \"lavon\",\n \"lavona\",\n \"lavonda\",\n \"lavone\",\n \"lavonia\",\n \"lavonna\",\n \"lavonne\",\n \"lawana\",\n \"lawanda\",\n \"lawanna\",\n \"lawhorn\",\n \"lawler\",\n \"lawlor\",\n \"lawrence\",\n \"lawson\",\n \"lawton\",\n \"layfield\",\n \"layla\",\n \"layne\",\n \"layton\",\n \"lazarus\",\n \"lazo\",\n \"leah\",\n \"leahy\",\n \"leake\",\n \"leana\",\n \"leandra\",\n \"leann\",\n \"leanna\",\n \"leanne\",\n \"leanora\",\n \"leath\",\n \"leatha\",\n \"leatherman\",\n \"leatherwood\",\n \"leatrice\",\n \"leavitt\",\n \"lebeau\",\n \"lebel\",\n \"leblanc\",\n \"leboeuf\",\n \"lebron\",\n \"lebrun\",\n \"lechner\",\n \"lecia\",\n \"leclair\",\n \"leclaire\",\n \"leclerc\",\n \"lecompte\",\n \"leda\",\n \"ledbetter\",\n \"lederman\",\n \"ledesma\",\n \"ledet\",\n \"ledezma\",\n \"ledford\",\n \"ledoux\",\n \"leduc\",\n \"leeann\",\n \"leeanna\",\n \"leeanne\",\n \"leeds\",\n \"leena\",\n \"leeper\",\n \"leesa\",\n \"lefebvre\",\n \"lefevre\",\n \"leffler\",\n \"lefler\",\n \"leflore\",\n \"leftwich\",\n \"legault\",\n \"legere\",\n \"legg\",\n \"leggett\",\n \"legrand\",\n \"lehman\",\n \"lehmann\",\n \"leia\",\n \"leibowitz\",\n \"leida\",\n \"leigh\",\n \"leigha\",\n \"leighann\",\n \"leighton\",\n \"leija\",\n \"leiker\",\n \"leila\",\n \"leilani\",\n \"leininger\",\n \"leisa\",\n \"leisha\",\n \"leith\",\n \"leiva\",\n \"lejeune\",\n \"lekisha\",\n \"lela\",\n \"lelah\",\n \"leland\",\n \"lelia\",\n \"lemaster\",\n \"lemay\",\n \"lemieux\",\n \"lemire\",\n \"lemke\",\n \"lemley\",\n \"lemmon\",\n \"lemmons\",\n \"lemoine\",\n \"lemos\",\n \"lemus\",\n \"lena\",\n \"lenard\",\n \"lenhart\",\n \"lenita\",\n \"lenna\",\n \"lennie\",\n \"lennon\",\n \"lennox\",\n \"lenoir\",\n \"lenora\",\n \"lenore\",\n \"lentz\",\n \"lenz\",\n \"leo\",\n \"leola\",\n \"leoma\",\n \"leon\",\n \"leona\",\n \"leonard\",\n \"leonarda\",\n \"leonardo\",\n \"leone\",\n \"leong\",\n \"leonia\",\n \"leonida\",\n \"leonie\",\n \"leonila\",\n \"leonor\",\n \"leonora\",\n \"leonore\",\n \"leontine\",\n \"leora\",\n \"leos\",\n \"leota\",\n \"lepage\",\n \"lepore\",\n \"lera\",\n \"lerch\",\n \"lerma\",\n \"lerner\",\n \"leroy\",\n \"lesa\",\n \"lesha\",\n \"lesher\",\n \"lesia\",\n \"lesko\",\n \"leslee\",\n \"lesley\",\n \"lesli\",\n \"leslie\",\n \"lessard\",\n \"lessie\",\n \"lester\",\n \"leta\",\n \"letendre\",\n \"letha\",\n \"leticia\",\n \"letisha\",\n \"letitia\",\n \"letourneau\",\n \"lett\",\n \"lettie\",\n \"letty\",\n \"leung\",\n \"levan\",\n \"levasseur\",\n \"leveille\",\n \"leverett\",\n \"levesque\",\n \"levi\",\n \"levine\",\n \"levinson\",\n \"levitt\",\n \"lewallen\",\n \"lewandowski\",\n \"lewellen\",\n \"lewin\",\n \"lewis\",\n \"lexie\",\n \"leyba\",\n \"leyva\",\n \"lezlie\",\n \"lheureux\",\n \"liane\",\n \"lianne\",\n \"libbie\",\n \"libby\",\n \"librada\",\n \"lida\",\n \"liddell\",\n \"liddle\",\n \"lidia\",\n \"lieb\",\n \"lieberman\",\n \"lieselotte\",\n \"liggett\",\n \"liggins\",\n \"lightfoot\",\n \"lightner\",\n \"ligia\",\n \"ligon\",\n \"lila\",\n \"liles\",\n \"lili\",\n \"lilia\",\n \"lilian\",\n \"liliana\",\n \"lilla\",\n \"lillard\",\n \"lilley\",\n \"lilli\",\n \"lillia\",\n \"lilliam\",\n \"lillian\",\n \"lilliana\",\n \"lillie\",\n \"lilly\",\n \"lim\",\n \"limon\",\n \"linares\",\n \"lincoln\",\n \"linda\",\n \"lindahl\",\n \"lindberg\",\n \"lindell\",\n \"lindeman\",\n \"linder\",\n \"linderman\",\n \"lindgren\",\n \"lindholm\",\n \"lindley\",\n \"lindner\",\n \"lindo\",\n \"lindquist\",\n \"lindsay\",\n \"lindsey\",\n \"lindsley\",\n \"lindstrom\",\n \"lindsy\",\n \"lindy\",\n \"lineberry\",\n \"linette\",\n \"ling\",\n \"lingenfelter\",\n \"lingerfelt\",\n \"lingle\",\n \"linh\",\n \"linkous\",\n \"linn\",\n \"linnea\",\n \"linnie\",\n \"linsey\",\n \"linton\",\n \"linville\",\n \"lippert\",\n \"lipps\",\n \"lipscomb\",\n \"lipsey\",\n \"lisa\",\n \"lisabeth\",\n \"lisandra\",\n \"lisbeth\",\n \"lise\",\n \"lisette\",\n \"lisha\",\n \"lissa\",\n \"lissette\",\n \"liston\",\n \"lita\",\n \"litchfield\",\n \"littlefield\",\n \"littlejohn\",\n \"littleton\",\n \"litton\",\n \"littrell\",\n \"liu\",\n \"livengood\",\n \"livesay\",\n \"livia\",\n \"livingston\",\n \"liz\",\n \"liza\",\n \"lizabeth\",\n \"lizarraga\",\n \"lizbeth\",\n \"lizeth\",\n \"lizette\",\n \"lizotte\",\n \"lizzette\",\n \"lizzie\",\n \"llanes\",\n \"llewellyn\",\n \"lloyd\",\n \"lockard\",\n \"locke\",\n \"lockett\",\n \"lockhart\",\n \"locklear\",\n \"lockridge\",\n \"lockwood\",\n \"loeb\",\n \"loeffler\",\n \"loehr\",\n \"loera\",\n \"loesch\",\n \"loftin\",\n \"loftis\",\n \"lofton\",\n \"loftus\",\n \"logan\",\n \"loggins\",\n \"logsdon\",\n \"logue\",\n \"lohman\",\n \"lohr\",\n \"loida\",\n \"lois\",\n \"loise\",\n \"lola\",\n \"lolita\",\n \"lollar\",\n \"lollis\",\n \"loma\",\n \"lomax\",\n \"lombardi\",\n \"lombardo\",\n \"lomeli\",\n \"lona\",\n \"londa\",\n \"london\",\n \"lonergan\",\n \"loney\",\n \"longley\",\n \"longmire\",\n \"longo\",\n \"longoria\",\n \"loni\",\n \"lonna\",\n \"lonnie\",\n \"loomis\",\n \"looney\",\n \"lopez\",\n \"lora\",\n \"loraine\",\n \"loralee\",\n \"lorean\",\n \"loree\",\n \"loreen\",\n \"lorelei\",\n \"loren\",\n \"lorena\",\n \"lorene\",\n \"lorenz\",\n \"lorenza\",\n \"lorenzen\",\n \"lorenzo\",\n \"loreta\",\n \"loretta\",\n \"lorette\",\n \"lori\",\n \"loria\",\n \"loriann\",\n \"lorie\",\n \"lorilee\",\n \"lorina\",\n \"lorinda\",\n \"lorine\",\n \"lorita\",\n \"lorna\",\n \"lorraine\",\n \"lorretta\",\n \"lorri\",\n \"lorriane\",\n \"lorrie\",\n \"lorrine\",\n \"lory\",\n \"lott\",\n \"lottie\",\n \"lotz\",\n \"lou\",\n \"louann\",\n \"louanne\",\n \"loucks\",\n \"loudermilk\",\n \"louella\",\n \"louetta\",\n \"loughlin\",\n \"louie\",\n \"louis\",\n \"louisa\",\n \"louise\",\n \"louque\",\n \"loura\",\n \"lourdes\",\n \"lourie\",\n \"louvenia\",\n \"lovato\",\n \"lovejoy\",\n \"lovelace\",\n \"lovelady\",\n \"loveland\",\n \"lovell\",\n \"lovella\",\n \"lovett\",\n \"lovetta\",\n \"lovie\",\n \"lovins\",\n \"lowder\",\n \"lowell\",\n \"lowman\",\n \"lowrance\",\n \"lowrey\",\n \"lowry\",\n \"lowther\",\n \"loya\",\n \"loyce\",\n \"loyd\",\n \"lozada\",\n \"lozano\",\n \"lozier\",\n \"lozoya\",\n \"luana\",\n \"luann\",\n \"luanna\",\n \"luanne\",\n \"luba\",\n \"lubin\",\n \"lucas\",\n \"lucero\",\n \"luci\",\n \"lucia\",\n \"luciana\",\n \"luciano\",\n \"lucie\",\n \"lucienne\",\n \"lucier\",\n \"lucila\",\n \"lucile\",\n \"lucilla\",\n \"lucille\",\n \"lucina\",\n \"lucinda\",\n \"lucio\",\n \"luckett\",\n \"luckey\",\n \"lucrecia\",\n \"lucretia\",\n \"lucy\",\n \"ludie\",\n \"ludivina\",\n \"ludlow\",\n \"ludwick\",\n \"ludwig\",\n \"lueck\",\n \"luella\",\n \"luetta\",\n \"luevano\",\n \"lugo\",\n \"lui\",\n \"luis\",\n \"luisa\",\n \"luise\",\n \"lujan\",\n \"lukas\",\n \"lukens\",\n \"luker\",\n \"lula\",\n \"lulu\",\n \"luna\",\n \"lund\",\n \"lundberg\",\n \"lunde\",\n \"lundgren\",\n \"lundquist\",\n \"lundy\",\n \"lunn\",\n \"lunsford\",\n \"luong\",\n \"lupe\",\n \"lupita\",\n \"lupo\",\n \"lura\",\n \"lurlene\",\n \"lurline\",\n \"lussier\",\n \"luther\",\n \"luttrell\",\n \"luu\",\n \"luvenia\",\n \"luz\",\n \"lyda\",\n \"lydia\",\n \"lydon\",\n \"lykins\",\n \"lyla\",\n \"lyle\",\n \"lyles\",\n \"lyman\",\n \"lyn\",\n \"lynda\",\n \"lyndia\",\n \"lyndsay\",\n \"lyndsey\",\n \"lynell\",\n \"lynelle\",\n \"lynetta\",\n \"lynette\",\n \"lynn\",\n \"lynna\",\n \"lynne\",\n \"lynnette\",\n \"lynsey\",\n \"lyon\",\n \"lyons\",\n \"lytle\",\n \"mabe\",\n \"mabel\",\n \"mabelle\",\n \"mable\",\n \"mabry\",\n \"macaluso\",\n \"macarthur\",\n \"macdonald\",\n \"macdougall\",\n \"macedo\",\n \"macfarlane\",\n \"macgregor\",\n \"mach\",\n \"machado\",\n \"machelle\",\n \"machuca\",\n \"macias\",\n \"macie\",\n \"maciel\",\n \"mackay\",\n \"mackenzie\",\n \"mackey\",\n \"mackie\",\n \"mackinnon\",\n \"macklin\",\n \"maclean\",\n \"macleod\",\n \"macmillan\",\n \"macneil\",\n \"macomber\",\n \"macon\",\n \"macpherson\",\n \"macy\",\n \"madalene\",\n \"madaline\",\n \"madalyn\",\n \"maddie\",\n \"maddox\",\n \"maddux\",\n \"madelaine\",\n \"madeleine\",\n \"madelene\",\n \"madeline\",\n \"madelyn\",\n \"mader\",\n \"madera\",\n \"madewell\",\n \"madge\",\n \"madie\",\n \"madigan\",\n \"madison\",\n \"madlyn\",\n \"madonna\",\n \"madore\",\n \"madrid\",\n \"madsen\",\n \"madson\",\n \"mae\",\n \"maeda\",\n \"maegan\",\n \"maes\",\n \"maestas\",\n \"mafalda\",\n \"magali\",\n \"magallanes\",\n \"magaly\",\n \"magan\",\n \"magana\",\n \"magaret\",\n \"magda\",\n \"magdalen\",\n \"magdalena\",\n \"magdalene\",\n \"magdaleno\",\n \"magee\",\n \"magen\",\n \"maggard\",\n \"maggie\",\n \"maggio\",\n \"magill\",\n \"magness\",\n \"magnolia\",\n \"magnuson\",\n \"magruder\",\n \"maguire\",\n \"mahaffey\",\n \"mahalia\",\n \"mahan\",\n \"maher\",\n \"mahler\",\n \"mahon\",\n \"mahone\",\n \"mahoney\",\n \"mai\",\n \"maia\",\n \"maida\",\n \"maier\",\n \"maile\",\n \"maines\",\n \"maira\",\n \"maire\",\n \"maisha\",\n \"maisie\",\n \"majewski\",\n \"majorie\",\n \"makeda\",\n \"maki\",\n \"makowski\",\n \"malave\",\n \"malcolm\",\n \"malcom\",\n \"maldonado\",\n \"malek\",\n \"malena\",\n \"maley\",\n \"malia\",\n \"malika\",\n \"malinda\",\n \"malinowski\",\n \"malisa\",\n \"malissa\",\n \"malka\",\n \"mallett\",\n \"mallette\",\n \"malley\",\n \"mallie\",\n \"mallon\",\n \"mallory\",\n \"malloy\",\n \"malone\",\n \"maloney\",\n \"malorie\",\n \"maloy\",\n \"malvina\",\n \"mamie\",\n \"mammie\",\n \"manchester\",\n \"mancilla\",\n \"mancini\",\n \"mancuso\",\n \"manda\",\n \"mandel\",\n \"mandeville\",\n \"mandi\",\n \"mandie\",\n \"mandy\",\n \"maness\",\n \"mangan\",\n \"mangrum\",\n \"mangum\",\n \"manie\",\n \"manion\",\n \"manis\",\n \"manley\",\n \"mann\",\n \"mannino\",\n \"manns\",\n \"manriquez\",\n \"mansell\",\n \"mansfield\",\n \"manson\",\n \"mansour\",\n \"mantooth\",\n \"manuel\",\n \"manuela\",\n \"manzanares\",\n \"manzano\",\n \"manzo\",\n \"mapes\",\n \"mapp\",\n \"marable\",\n \"maragaret\",\n \"maragret\",\n \"maranda\",\n \"marasco\",\n \"marcano\",\n \"marceau\",\n \"marcela\",\n \"marcelene\",\n \"marcelina\",\n \"marceline\",\n \"marcell\",\n \"marcella\",\n \"marcelle\",\n \"marcene\",\n \"marchand\",\n \"marchant\",\n \"marchelle\",\n \"marchetti\",\n \"marci\",\n \"marcia\",\n \"marciano\",\n \"marcie\",\n \"marcotte\",\n \"marcoux\",\n \"marcum\",\n \"marcus\",\n \"marcy\",\n \"mardell\",\n \"marden\",\n \"mardis\",\n \"marek\",\n \"maren\",\n \"margaret\",\n \"margareta\",\n \"margarete\",\n \"margarett\",\n \"margaretta\",\n \"margarette\",\n \"margart\",\n \"marge\",\n \"margene\",\n \"margeret\",\n \"margert\",\n \"margery\",\n \"marget\",\n \"margherita\",\n \"margie\",\n \"margit\",\n \"margo\",\n \"margorie\",\n \"margot\",\n \"margret\",\n \"margrett\",\n \"marguerita\",\n \"marguerite\",\n \"margurite\",\n \"margy\",\n \"marhta\",\n \"mari\",\n \"maria\",\n \"mariah\",\n \"mariam\",\n \"marian\",\n \"mariana\",\n \"marianela\",\n \"mariani\",\n \"mariann\",\n \"marianna\",\n \"marianne\",\n \"mariano\",\n \"maribel\",\n \"maribeth\",\n \"marica\",\n \"maricela\",\n \"maricruz\",\n \"marie\",\n \"mariel\",\n \"mariela\",\n \"mariella\",\n \"marielle\",\n \"marietta\",\n \"mariette\",\n \"mariko\",\n \"marilee\",\n \"marilou\",\n \"marilu\",\n \"marilyn\",\n \"marilynn\",\n \"marin\",\n \"marinda\",\n \"marinelli\",\n \"marino\",\n \"mario\",\n \"marion\",\n \"maris\",\n \"marisa\",\n \"mariscal\",\n \"marisela\",\n \"marisha\",\n \"marisol\",\n \"marissa\",\n \"marita\",\n \"maritza\",\n \"marivel\",\n \"marjorie\",\n \"marjory\",\n \"markel\",\n \"marketta\",\n \"markey\",\n \"markham\",\n \"markita\",\n \"markle\",\n \"markley\",\n \"markowitz\",\n \"markus\",\n \"marla\",\n \"marlana\",\n \"marleen\",\n \"marlen\",\n \"marlena\",\n \"marlene\",\n \"marler\",\n \"marley\",\n \"marlin\",\n \"marline\",\n \"marlo\",\n \"marlow\",\n \"marlowe\",\n \"marlyn\",\n \"marlys\",\n \"marna\",\n \"marni\",\n \"marnie\",\n \"maroney\",\n \"marotta\",\n \"marquardt\",\n \"marquerite\",\n \"marquetta\",\n \"marquez\",\n \"marquita\",\n \"marquitta\",\n \"marr\",\n \"marra\",\n \"marrero\",\n \"marriott\",\n \"marron\",\n \"marroquin\",\n \"marrs\",\n \"marrufo\",\n \"marsha\",\n \"marshall\",\n \"marston\",\n \"marta\",\n \"marte\",\n \"martell\",\n \"marth\",\n \"martha\",\n \"marti\",\n \"martin\",\n \"martina\",\n \"martindale\",\n \"martine\",\n \"martineau\",\n \"martinelli\",\n \"martines\",\n \"martinez\",\n \"martino\",\n \"martinson\",\n \"marty\",\n \"martz\",\n \"marva\",\n \"marvella\",\n \"marvin\",\n \"marvis\",\n \"marx\",\n \"mary\",\n \"marya\",\n \"maryalice\",\n \"maryam\",\n \"maryann\",\n \"maryanna\",\n \"maryanne\",\n \"marybelle\",\n \"marybeth\",\n \"maryellen\",\n \"maryetta\",\n \"maryjane\",\n \"maryjo\",\n \"maryland\",\n \"marylee\",\n \"marylin\",\n \"maryln\",\n \"marylou\",\n \"marylouise\",\n \"marylyn\",\n \"marylynn\",\n \"maryrose\",\n \"masako\",\n \"mascarenas\",\n \"mashburn\",\n \"masse\",\n \"massengale\",\n \"massey\",\n \"massie\",\n \"masterson\",\n \"mastin\",\n \"mata\",\n \"mateo\",\n \"matha\",\n \"matheny\",\n \"mather\",\n \"matherly\",\n \"matherne\",\n \"mathers\",\n \"mathes\",\n \"matheson\",\n \"mathew\",\n \"mathews\",\n \"mathewson\",\n \"mathias\",\n \"mathieu\",\n \"mathilda\",\n \"mathilde\",\n \"mathis\",\n \"mathison\",\n \"matias\",\n \"matilda\",\n \"matilde\",\n \"matlock\",\n \"matney\",\n \"matos\",\n \"matson\",\n \"matsumoto\",\n \"matta\",\n \"mattern\",\n \"matteson\",\n \"matthew\",\n \"matthews\",\n \"mattie\",\n \"mattingly\",\n \"mattison\",\n \"mattos\",\n \"mattox\",\n \"mattson\",\n \"matz\",\n \"maude\",\n \"maudie\",\n \"mauk\",\n \"mauldin\",\n \"mauney\",\n \"maupin\",\n \"maura\",\n \"maureen\",\n \"maurer\",\n \"maurice\",\n \"mauricio\",\n \"maurine\",\n \"maurita\",\n \"mauro\",\n \"maus\",\n \"mavis\",\n \"maxey\",\n \"maxfield\",\n \"maxie\",\n \"maxima\",\n \"maximina\",\n \"maxine\",\n \"maxon\",\n \"maxson\",\n \"maybell\",\n \"maybelle\",\n \"mayberry\",\n \"maye\",\n \"mayer\",\n \"mayers\",\n \"mayes\",\n \"mayfield\",\n \"mayhew\",\n \"mayle\",\n \"mayme\",\n \"maynard\",\n \"mayne\",\n \"maynor\",\n \"mayo\",\n \"mayola\",\n \"mayorga\",\n \"mayra\",\n \"mazie\",\n \"mazur\",\n \"mazurek\",\n \"mazza\",\n \"mazzola\",\n \"mcabee\",\n \"mcadams\",\n \"mcadoo\",\n \"mcafee\",\n \"mcalister\",\n \"mcallister\",\n \"mcalpin\",\n \"mcalpine\",\n \"mcanally\",\n \"mcandrew\",\n \"mcardle\",\n \"mcarthur\",\n \"mcatee\",\n \"mcauley\",\n \"mcauliffe\",\n \"mcavoy\",\n \"mcbee\",\n \"mcbrayer\",\n \"mcbride\",\n \"mcbroom\",\n \"mcbryde\",\n \"mcburney\",\n \"mccabe\",\n \"mccafferty\",\n \"mccaffrey\",\n \"mccain\",\n \"mccaleb\",\n \"mccall\",\n \"mccalla\",\n \"mccallister\",\n \"mccallum\",\n \"mccammon\",\n \"mccandless\",\n \"mccann\",\n \"mccants\",\n \"mccarley\",\n \"mccarron\",\n \"mccarter\",\n \"mccarthy\",\n \"mccartney\",\n \"mccarty\",\n \"mccarver\",\n \"mccary\",\n \"mccaskill\",\n \"mccaslin\",\n \"mccauley\",\n \"mccay\",\n \"mcchesney\",\n \"mcclain\",\n \"mcclanahan\",\n \"mcclary\",\n \"mcclean\",\n \"mccleary\",\n \"mcclellan\",\n \"mcclelland\",\n \"mcclendon\",\n \"mcclintock\",\n \"mcclinton\",\n \"mccloskey\",\n \"mccloud\",\n \"mcclung\",\n \"mcclure\",\n \"mcclurg\",\n \"mccluskey\",\n \"mccollough\",\n \"mccollum\",\n \"mccomas\",\n \"mccomb\",\n \"mccombs\",\n \"mcconnell\",\n \"mccool\",\n \"mccord\",\n \"mccorkle\",\n \"mccormack\",\n \"mccormick\",\n \"mccourt\",\n \"mccowan\",\n \"mccown\",\n \"mccoy\",\n \"mccracken\",\n \"mccrae\",\n \"mccrary\",\n \"mccraw\",\n \"mccray\",\n \"mccrea\",\n \"mccready\",\n \"mccreary\",\n \"mccrory\",\n \"mccubbin\",\n \"mccue\",\n \"mcculley\",\n \"mcculloch\",\n \"mccullough\",\n \"mccullum\",\n \"mccully\",\n \"mccune\",\n \"mccurdy\",\n \"mccurry\",\n \"mccusker\",\n \"mccutchen\",\n \"mccutcheon\",\n \"mcdade\",\n \"mcdaniel\",\n \"mcdaniels\",\n \"mcdavid\",\n \"mcdermott\",\n \"mcdevitt\",\n \"mcdonald\",\n \"mcdonnell\",\n \"mcdonough\",\n \"mcdougal\",\n \"mcdougald\",\n \"mcdougall\",\n \"mcdowell\",\n \"mcduffie\",\n \"mceachern\",\n \"mcelhaney\",\n \"mcelrath\",\n \"mcelroy\",\n \"mcentire\",\n \"mcevoy\",\n \"mcewen\",\n \"mcfadden\",\n \"mcfall\",\n \"mcfarland\",\n \"mcfarlane\",\n \"mcfarlin\",\n \"mcgaha\",\n \"mcgann\",\n \"mcgarry\",\n \"mcgary\",\n \"mcgee\",\n \"mcgehee\",\n \"mcghee\",\n \"mcgill\",\n \"mcginley\",\n \"mcginn\",\n \"mcginnis\",\n \"mcginty\",\n \"mcglone\",\n \"mcglothlin\",\n \"mcglynn\",\n \"mcgough\",\n \"mcgovern\",\n \"mcgowan\",\n \"mcgowen\",\n \"mcgrath\",\n \"mcgraw\",\n \"mcgregor\",\n \"mcgrew\",\n \"mcgriff\",\n \"mcgruder\",\n \"mcguigan\",\n \"mcguinness\",\n \"mcguire\",\n \"mchale\",\n \"mchenry\",\n \"mchugh\",\n \"mcilwain\",\n \"mcinerney\",\n \"mcinnis\",\n \"mcintire\",\n \"mcintosh\",\n \"mcintyre\",\n \"mciver\",\n \"mckamey\",\n \"mckay\",\n \"mckean\",\n \"mckee\",\n \"mckeehan\",\n \"mckeever\",\n \"mckellar\",\n \"mckelvey\",\n \"mckenna\",\n \"mckenney\",\n \"mckenzie\",\n \"mckeon\",\n \"mckeown\",\n \"mckibben\",\n \"mckie\",\n \"mckim\",\n \"mckinley\",\n \"mckinney\",\n \"mckinnie\",\n \"mckinnon\",\n \"mckinzie\",\n \"mckissick\",\n \"mcknight\",\n \"mckown\",\n \"mckoy\",\n \"mclain\",\n \"mclane\",\n \"mclaren\",\n \"mclaughlin\",\n \"mclaurin\",\n \"mclean\",\n \"mclellan\",\n \"mclemore\",\n \"mclendon\",\n \"mcleod\",\n \"mclin\",\n \"mcloughlin\",\n \"mcmahan\",\n \"mcmahon\",\n \"mcmann\",\n \"mcmanus\",\n \"mcmaster\",\n \"mcmasters\",\n \"mcmichael\",\n \"mcmillan\",\n \"mcmillen\",\n \"mcmillian\",\n \"mcmillin\",\n \"mcmillon\",\n \"mcminn\",\n \"mcmorris\",\n \"mcmullen\",\n \"mcmullin\",\n \"mcmurray\",\n \"mcmurry\",\n \"mcnabb\",\n \"mcnair\",\n \"mcnally\",\n \"mcnamara\",\n \"mcnamee\",\n \"mcnary\",\n \"mcneal\",\n \"mcneely\",\n \"mcneese\",\n \"mcneil\",\n \"mcneill\",\n \"mcnew\",\n \"mcniel\",\n \"mcnulty\",\n \"mcnutt\",\n \"mcpeak\",\n \"mcphail\",\n \"mcphee\",\n \"mcpherson\",\n \"mcquade\",\n \"mcqueen\",\n \"mcquiston\",\n \"mcrae\",\n \"mcreynolds\",\n \"mcroberts\",\n \"mcshane\",\n \"mcswain\",\n \"mcsweeney\",\n \"mcvay\",\n \"mcvey\",\n \"mcwhirter\",\n \"mcwhorter\",\n \"mcwilliams\",\n \"meacham\",\n \"meade\",\n \"meader\",\n \"meador\",\n \"meadors\",\n \"meagan\",\n \"meaghan\",\n \"meagher\",\n \"mears\",\n \"mebane\",\n \"mecham\",\n \"mechelle\",\n \"meda\",\n \"medeiros\",\n \"medellin\",\n \"medford\",\n \"medlin\",\n \"medlock\",\n \"medrano\",\n \"mee\",\n \"meehan\",\n \"meekins\",\n \"meeks\",\n \"mefford\",\n \"meg\",\n \"megan\",\n \"meggan\",\n \"meghan\",\n \"meghann\",\n \"mehta\",\n \"mei\",\n \"meier\",\n \"meissner\",\n \"mejia\",\n \"mejias\",\n \"melaine\",\n \"melancon\",\n \"melani\",\n \"melania\",\n \"melanie\",\n \"melanson\",\n \"melany\",\n \"melba\",\n \"melcher\",\n \"melchor\",\n \"melda\",\n \"mele\",\n \"melendez\",\n \"melgar\",\n \"melia\",\n \"melida\",\n \"melina\",\n \"melinda\",\n \"melisa\",\n \"melissa\",\n \"melissia\",\n \"melita\",\n \"mellie\",\n \"mellisa\",\n \"mellissa\",\n \"mello\",\n \"mellon\",\n \"mellott\",\n \"melnick\",\n \"melo\",\n \"melodee\",\n \"melodi\",\n \"melodie\",\n \"melonie\",\n \"melony\",\n \"melson\",\n \"melva\",\n \"melville\",\n \"melvin\",\n \"melvina\",\n \"melynda\",\n \"mena\",\n \"menard\",\n \"menchaca\",\n \"mendenhall\",\n \"mendes\",\n \"mendez\",\n \"mendiola\",\n \"mendoza\",\n \"mendy\",\n \"menefee\",\n \"menendez\",\n \"meneses\",\n \"menjivar\",\n \"menke\",\n \"meraz\",\n \"mercado\",\n \"mercedes\",\n \"mercedez\",\n \"mercier\",\n \"mercurio\",\n \"meredith\",\n \"meri\",\n \"merida\",\n \"merideth\",\n \"meridith\",\n \"merilyn\",\n \"merissa\",\n \"merkel\",\n \"merkle\",\n \"merle\",\n \"merlene\",\n \"merlyn\",\n \"merna\",\n \"merrell\",\n \"merri\",\n \"merrick\",\n \"merrie\",\n \"merrifield\",\n \"merrilee\",\n \"merrill\",\n \"merriman\",\n \"merritt\",\n \"merriweather\",\n \"mertens\",\n \"mertie\",\n \"mertz\",\n \"merwin\",\n \"meryl\",\n \"messer\",\n \"messick\",\n \"messina\",\n \"messinger\",\n \"messner\",\n \"mestas\",\n \"metcalf\",\n \"metcalfe\",\n \"metts\",\n \"metz\",\n \"metzger\",\n \"metzler\",\n \"meunier\",\n \"meyer\",\n \"meyers\",\n \"meza\",\n \"mia\",\n \"mica\",\n \"micaela\",\n \"micah\",\n \"miceli\",\n \"micha\",\n \"michael\",\n \"michaela\",\n \"michaele\",\n \"michaelis\",\n \"michaels\",\n \"michaelson\",\n \"michal\",\n \"michalak\",\n \"michalski\",\n \"michaud\",\n \"micheal\",\n \"michel\",\n \"michele\",\n \"michelina\",\n \"micheline\",\n \"michell\",\n \"michelle\",\n \"michels\",\n \"michiko\",\n \"mickel\",\n \"mickelson\",\n \"mickens\",\n \"mickey\",\n \"micki\",\n \"mickie\",\n \"middaugh\",\n \"middlebrooks\",\n \"middleton\",\n \"midgett\",\n \"midkiff\",\n \"miele\",\n \"mielke\",\n \"mier\",\n \"miesha\",\n \"migdalia\",\n \"mignon\",\n \"miguel\",\n \"miguelina\",\n \"mika\",\n \"mikaela\",\n \"mike\",\n \"mikell\",\n \"mikesell\",\n \"miki\",\n \"mikki\",\n \"mila\",\n \"milagro\",\n \"milagros\",\n \"milam\",\n \"milan\",\n \"milano\",\n \"milburn\",\n \"milda\",\n \"mildred\",\n \"miley\",\n \"milford\",\n \"milissa\",\n \"millan\",\n \"millar\",\n \"millard\",\n \"millen\",\n \"millett\",\n \"millican\",\n \"millicent\",\n \"millie\",\n \"milligan\",\n \"milliken\",\n \"millner\",\n \"millsap\",\n \"millsaps\",\n \"milly\",\n \"milne\",\n \"milner\",\n \"milton\",\n \"mimi\",\n \"mims\",\n \"minard\",\n \"mincey\",\n \"minda\",\n \"mindi\",\n \"mindy\",\n \"minerva\",\n \"ming\",\n \"mingo\",\n \"minh\",\n \"minna\",\n \"minnich\",\n \"minnick\",\n \"minnie\",\n \"minta\",\n \"minton\",\n \"mintz\",\n \"mira\",\n \"miramontes\",\n \"miranda\",\n \"mireille\",\n \"mireles\",\n \"mirella\",\n \"mireya\",\n \"miriam\",\n \"mirian\",\n \"mirna\",\n \"mirta\",\n \"mirtha\",\n \"misha\",\n \"miss\",\n \"missy\",\n \"misti\",\n \"mistie\",\n \"mitchel\",\n \"mitchell\",\n \"mitchem\",\n \"mitchum\",\n \"mitsue\",\n \"mitsuko\",\n \"mittie\",\n \"mitzi\",\n \"mitzie\",\n \"mixon\",\n \"miyamoto\",\n \"miyoko\",\n \"mize\",\n \"mizell\",\n \"moberg\",\n \"mobley\",\n \"modesta\",\n \"modica\",\n \"modlin\",\n \"moeller\",\n \"moen\",\n \"moffatt\",\n \"moffett\",\n \"moffitt\",\n \"mohamed\",\n \"mohammed\",\n \"mohan\",\n \"mohler\",\n \"moira\",\n \"mojica\",\n \"molina\",\n \"moller\",\n \"mollie\",\n \"molloy\",\n \"molly\",\n \"molnar\",\n \"mona\",\n \"monaco\",\n \"monaghan\",\n \"monahan\",\n \"moncada\",\n \"moncrief\",\n \"monday\",\n \"mondragon\",\n \"monet\",\n \"monge\",\n \"monica\",\n \"monika\",\n \"monique\",\n \"moniz\",\n \"monnie\",\n \"monroe\",\n \"monroy\",\n \"monserrate\",\n \"monson\",\n \"montague\",\n \"montalvo\",\n \"montana\",\n \"montanez\",\n \"montano\",\n \"monteiro\",\n \"montelongo\",\n \"montemayor\",\n \"montenegro\",\n \"montez\",\n \"montgomery\",\n \"monti\",\n \"montiel\",\n \"montoya\",\n \"monzon\",\n \"mooney\",\n \"mooneyham\",\n \"moore\",\n \"moorefield\",\n \"moorehead\",\n \"moorer\",\n \"moores\",\n \"moorhead\",\n \"mora\",\n \"morabito\",\n \"moralez\",\n \"moran\",\n \"moreau\",\n \"morehead\",\n \"morehouse\",\n \"moreira\",\n \"moreland\",\n \"morell\",\n \"morelli\",\n \"morelock\",\n \"moreno\",\n \"morey\",\n \"morgan\",\n \"mori\",\n \"moriah\",\n \"moriarty\",\n \"morin\",\n \"moritz\",\n \"morley\",\n \"morman\",\n \"morrell\",\n \"morrill\",\n \"morrison\",\n \"morrissette\",\n \"morrissey\",\n \"mortensen\",\n \"mortenson\",\n \"mortimer\",\n \"morton\",\n \"mosby\",\n \"moseley\",\n \"mosely\",\n \"moser\",\n \"mosher\",\n \"mosier\",\n \"moskowitz\",\n \"mosley\",\n \"mosqueda\",\n \"mota\",\n \"moten\",\n \"moton\",\n \"motta\",\n \"moua\",\n \"moulton\",\n \"moultrie\",\n \"mowery\",\n \"mowry\",\n \"moxley\",\n \"moye\",\n \"moyer\",\n \"moyers\",\n \"moynihan\",\n \"mozell\",\n \"mozella\",\n \"mozelle\",\n \"mudd\",\n \"mueller\",\n \"muhammad\",\n \"mui\",\n \"mulcahy\",\n \"mulder\",\n \"muldoon\",\n \"muldrow\",\n \"mulholland\",\n \"mulkey\",\n \"mullen\",\n \"mullens\",\n \"mullin\",\n \"mullinax\",\n \"mullins\",\n \"mullis\",\n \"mulvaney\",\n \"mulvey\",\n \"mumford\",\n \"muncy\",\n \"munday\",\n \"mundell\",\n \"mundy\",\n \"munford\",\n \"munger\",\n \"munguia\",\n \"muniz\",\n \"munn\",\n \"munos\",\n \"munoz\",\n \"munro\",\n \"munroe\",\n \"munsey\",\n \"munson\",\n \"muoi\",\n \"murchison\",\n \"murdoch\",\n \"murdock\",\n \"murguia\",\n \"muriel\",\n \"murillo\",\n \"muro\",\n \"murphey\",\n \"murphree\",\n \"murr\",\n \"murrell\",\n \"musgrave\",\n \"musgrove\",\n \"musick\",\n \"musselman\",\n \"musser\",\n \"musso\",\n \"muth\",\n \"myatt\",\n \"myer\",\n \"myers\",\n \"myesha\",\n \"myhre\",\n \"myles\",\n \"myong\",\n \"myra\",\n \"myriam\",\n \"myrick\",\n \"myrl\",\n \"myrle\",\n \"myrna\",\n \"myrta\",\n \"myrtice\",\n \"myrtie\",\n \"myrtis\",\n \"myrtle\",\n \"myung\",\n \"nabors\",\n \"nadeau\",\n \"nadene\",\n \"nader\",\n \"nadia\",\n \"nadine\",\n \"nadler\",\n \"nagel\",\n \"nagle\",\n \"nagy\",\n \"naida\",\n \"najera\",\n \"nakamura\",\n \"nakano\",\n \"nakesha\",\n \"nakia\",\n \"nakisha\",\n \"nakita\",\n \"nall\",\n \"nalley\",\n \"nancee\",\n \"nancey\",\n \"nanci\",\n \"nancie\",\n \"nancy\",\n \"nanette\",\n \"nannette\",\n \"nannie\",\n \"naoma\",\n \"naomi\",\n \"napier\",\n \"napoli\",\n \"napolitano\",\n \"naquin\",\n \"naranjo\",\n \"narcisa\",\n \"nardi\",\n \"nardone\",\n \"narvaez\",\n \"nash\",\n \"nason\",\n \"natacha\",\n \"natale\",\n \"natalia\",\n \"natalie\",\n \"natalya\",\n \"natasha\",\n \"natashia\",\n \"nate\",\n \"nathalie\",\n \"nathan\",\n \"natisha\",\n \"natividad\",\n \"natosha\",\n \"naughton\",\n \"naumann\",\n \"nava\",\n \"navarra\",\n \"navarrete\",\n \"navarrette\",\n \"navarro\",\n \"naylor\",\n \"nazario\",\n \"neace\",\n \"neale\",\n \"nealy\",\n \"neary\",\n \"necaise\",\n \"necole\",\n \"neda\",\n \"nedra\",\n \"needham\",\n \"neel\",\n \"neeley\",\n \"neely\",\n \"neff\",\n \"negrete\",\n \"negron\",\n \"neida\",\n \"neil\",\n \"neill\",\n \"neilson\",\n \"nelda\",\n \"nelia\",\n \"nelida\",\n \"nell\",\n \"nella\",\n \"nelle\",\n \"nellie\",\n \"nelly\",\n \"nelms\",\n \"nelsen\",\n \"nemeth\",\n \"nena\",\n \"nenita\",\n \"neoma\",\n \"neomi\",\n \"nereida\",\n \"neri\",\n \"nerissa\",\n \"nero\",\n \"nery\",\n \"nesbit\",\n \"nesbitt\",\n \"nesmith\",\n \"nestor\",\n \"neta\",\n \"nettie\",\n \"neu\",\n \"neubauer\",\n \"neuman\",\n \"neumann\",\n \"neva\",\n \"nevada\",\n \"nevarez\",\n \"neville\",\n \"nevins\",\n \"newberry\",\n \"newby\",\n \"newcomb\",\n \"newhouse\",\n \"newkirk\",\n \"newland\",\n \"newlin\",\n \"newman\",\n \"newport\",\n \"newsom\",\n \"newsome\",\n \"newson\",\n \"ney\",\n \"nez\",\n \"ngan\",\n \"ngo\",\n \"ngoc\",\n \"nguyen\",\n \"nguyet\",\n \"nichelle\",\n \"nichol\",\n \"nicholas\",\n \"nichole\",\n \"nicholle\",\n \"nicholls\",\n \"nichols\",\n \"nicholson\",\n \"nickell\",\n \"nickelson\",\n \"nickens\",\n \"nickerson\",\n \"nicki\",\n \"nickie\",\n \"nickles\",\n \"nickole\",\n \"nicky\",\n \"nicol\",\n \"nicola\",\n \"nicolas\",\n \"nicolasa\",\n \"nicole\",\n \"nicolette\",\n \"nicolle\",\n \"nida\",\n \"nidia\",\n \"nielsen\",\n \"nielson\",\n \"nieman\",\n \"niemann\",\n \"niemeyer\",\n \"niemi\",\n \"niesha\",\n \"nieto\",\n \"nieves\",\n \"nightingale\",\n \"nigro\",\n \"niki\",\n \"nikia\",\n \"nikita\",\n \"nikki\",\n \"nikole\",\n \"nila\",\n \"nilda\",\n \"niles\",\n \"nilsa\",\n \"nilsen\",\n \"nilsson\",\n \"nimmons\",\n \"nina\",\n \"ninfa\",\n \"nino\",\n \"nisha\",\n \"nissen\",\n \"nita\",\n \"nixon\",\n \"noah\",\n \"nobuko\",\n \"noe\",\n \"noel\",\n \"noelia\",\n \"noella\",\n \"noelle\",\n \"noemi\",\n \"nohemi\",\n \"nola\",\n \"nolan\",\n \"noland\",\n \"nolasco\",\n \"nolen\",\n \"noles\",\n \"nolin\",\n \"nolte\",\n \"noma\",\n \"nona\",\n \"noonan\",\n \"nora\",\n \"norah\",\n \"nord\",\n \"nordstrom\",\n \"noreen\",\n \"norene\",\n \"norfleet\",\n \"noriega\",\n \"noriko\",\n \"norine\",\n \"norma\",\n \"norman\",\n \"normand\",\n \"norris\",\n \"norsworthy\",\n \"northcutt\",\n \"northrop\",\n \"northrup\",\n \"norton\",\n \"norvell\",\n \"norwood\",\n \"nottingham\",\n \"novak\",\n \"novotny\",\n \"nowak\",\n \"nowell\",\n \"nowicki\",\n \"nowlin\",\n \"nubia\",\n \"nugent\",\n \"nunes\",\n \"nunez\",\n \"nunley\",\n \"nunn\",\n \"nunnally\",\n \"nuno\",\n \"nuss\",\n \"nussbaum\",\n \"nutt\",\n \"nyberg\",\n \"nydia\",\n \"nygaard\",\n \"nyla\",\n \"nystrom\",\n \"oakes\",\n \"oakley\",\n \"oates\",\n \"obannon\",\n \"obdulia\",\n \"ober\",\n \"oberg\",\n \"obregon\",\n \"obrian\",\n \"obrien\",\n \"obryan\",\n \"obryant\",\n \"ocampo\",\n \"ocasio\",\n \"ochoa\",\n \"ocie\",\n \"oconnell\",\n \"oconner\",\n \"oconnor\",\n \"octavia\",\n \"oda\",\n \"odaniel\",\n \"oday\",\n \"odelia\",\n \"odell\",\n \"oden\",\n \"odessa\",\n \"odette\",\n \"odilia\",\n \"odle\",\n \"odom\",\n \"odonnell\",\n \"odum\",\n \"ofelia\",\n \"offutt\",\n \"ogburn\",\n \"ogden\",\n \"oglesby\",\n \"ogletree\",\n \"ogrady\",\n \"ohalloran\",\n \"ohara\",\n \"ohare\",\n \"ojeda\",\n \"okeefe\",\n \"okelley\",\n \"olander\",\n \"oldham\",\n \"oleary\",\n \"olene\",\n \"oleson\",\n \"oleta\",\n \"olevia\",\n \"olga\",\n \"olguin\",\n \"olimpia\",\n \"olin\",\n \"olinda\",\n \"olinger\",\n \"oliva\",\n \"olivares\",\n \"olivarez\",\n \"olivas\",\n \"oliveira\",\n \"olivera\",\n \"olivia\",\n \"olivier\",\n \"olivo\",\n \"oller\",\n \"ollie\",\n \"ollis\",\n \"olmos\",\n \"olmstead\",\n \"olney\",\n \"oloughlin\",\n \"olsen\",\n \"olson\",\n \"olszewski\",\n \"olvera\",\n \"olympia\",\n \"omalley\",\n \"omar\",\n \"omara\",\n \"omeara\",\n \"oneal\",\n \"oneida\",\n \"oneil\",\n \"oneill\",\n \"oney\",\n \"ong\",\n \"onie\",\n \"onita\",\n \"ontiveros\",\n \"ophelia\",\n \"oquendo\",\n \"oquinn\",\n \"oralee\",\n \"oralia\",\n \"orcutt\",\n \"ordonez\",\n \"ordway\",\n \"oreilly\",\n \"orellana\",\n \"oretha\",\n \"orlando\",\n \"orman\",\n \"ormsby\",\n \"orndorff\",\n \"ornelas\",\n \"orosco\",\n \"orourke\",\n \"orozco\",\n \"orpha\",\n \"orr\",\n \"orta\",\n \"ortega\",\n \"ortego\",\n \"orth\",\n \"ortiz\",\n \"orton\",\n \"osborn\",\n \"osborne\",\n \"osburn\",\n \"oscar\",\n \"osgood\",\n \"oshaughnessy\",\n \"oshea\",\n \"oshiro\",\n \"osman\",\n \"osorio\",\n \"ossie\",\n \"osteen\",\n \"oster\",\n \"osterman\",\n \"ostrander\",\n \"ostrom\",\n \"ostrowski\",\n \"osullivan\",\n \"osuna\",\n \"oswald\",\n \"oswalt\",\n \"otelia\",\n \"otero\",\n \"otey\",\n \"otha\",\n \"otilia\",\n \"otis\",\n \"otoole\",\n \"ott\",\n \"otte\",\n \"otten\",\n \"ottinger\",\n \"oubre\",\n \"ouellette\",\n \"ouida\",\n \"ousley\",\n \"ovalle\",\n \"overcash\",\n \"overstreet\",\n \"overton\",\n \"overturf\",\n \"owen\",\n \"owens\",\n \"owensby\",\n \"owings\",\n \"owsley\",\n \"oxendine\",\n \"oxford\",\n \"oxley\",\n \"oyler\",\n \"ozell\",\n \"ozella\",\n \"ozie\",\n \"ozuna\",\n \"pabon\",\n \"pacheco\",\n \"packard\",\n \"padgett\",\n \"padilla\",\n \"padron\",\n \"paez\",\n \"pagano\",\n \"pagel\",\n \"paige\",\n \"paine\",\n \"paiz\",\n \"pak\",\n \"palacio\",\n \"palacios\",\n \"palermo\",\n \"palladino\",\n \"palma\",\n \"palmieri\",\n \"palmira\",\n \"palmore\",\n \"palomo\",\n \"palumbo\",\n \"pam\",\n \"pamala\",\n \"pamela\",\n \"pamelia\",\n \"pamella\",\n \"pamila\",\n \"pamula\",\n \"panek\",\n \"paniagua\",\n \"pankey\",\n \"pannell\",\n \"pantoja\",\n \"paola\",\n \"pappas\",\n \"paquette\",\n \"paquin\",\n \"parada\",\n \"paradis\",\n \"pardo\",\n \"pardue\",\n \"paredes\",\n \"parenteau\",\n \"parham\",\n \"paris\",\n \"parisi\",\n \"parke\",\n \"parkhurst\",\n \"parkinson\",\n \"parkman\",\n \"parmenter\",\n \"parmer\",\n \"parnell\",\n \"parra\",\n \"parrett\",\n \"parris\",\n \"parrish\",\n \"parrott\",\n \"partain\",\n \"partee\",\n \"parthenia\",\n \"particia\",\n \"partida\",\n \"partin\",\n \"partlow\",\n \"paschall\",\n \"pascoe\",\n \"pasley\",\n \"pasquale\",\n \"passmore\",\n \"pastore\",\n \"patel\",\n \"paterson\",\n \"patino\",\n \"patnode\",\n \"patria\",\n \"patrica\",\n \"patrice\",\n \"patricia\",\n \"patrick\",\n \"patrina\",\n \"patsy\",\n \"patterson\",\n \"patti\",\n \"pattie\",\n \"pattison\",\n \"patton\",\n \"patty\",\n \"paugh\",\n \"paul\",\n \"paula\",\n \"paulene\",\n \"pauletta\",\n \"paulette\",\n \"pauley\",\n \"paulin\",\n \"paulina\",\n \"pauline\",\n \"paulino\",\n \"paulita\",\n \"paulk\",\n \"paulsen\",\n \"paulson\",\n \"paulus\",\n \"paxton\",\n \"payne\",\n \"paynter\",\n \"payton\",\n \"paz\",\n \"peabody\",\n \"peachey\",\n \"peake\",\n \"pearcy\",\n \"pearle\",\n \"pearlene\",\n \"pearlie\",\n \"pearline\",\n \"pearman\",\n \"pearsall\",\n \"pearson\",\n \"peaslee\",\n \"peay\",\n \"peckham\",\n \"pecoraro\",\n \"peden\",\n \"pedersen\",\n \"pederson\",\n \"pedigo\",\n \"pedraza\",\n \"pedroza\",\n \"peebles\",\n \"peele\",\n \"peeples\",\n \"peggie\",\n \"peggy\",\n \"pegram\",\n \"pegues\",\n \"pei\",\n \"peiffer\",\n \"pelayo\",\n \"pelfrey\",\n \"pelkey\",\n \"pellegrini\",\n \"pellegrino\",\n \"pellerin\",\n \"pelletier\",\n \"peloquin\",\n \"peltier\",\n \"pelton\",\n \"peluso\",\n \"pemberton\",\n \"pena\",\n \"pender\",\n \"pendergast\",\n \"pendergrass\",\n \"pendleton\",\n \"pendley\",\n \"penelope\",\n \"penick\",\n \"penland\",\n \"penley\",\n \"penn\",\n \"pennell\",\n \"penney\",\n \"penni\",\n \"pennie\",\n \"pennington\",\n \"penrod\",\n \"penton\",\n \"pepe\",\n \"pepin\",\n \"perales\",\n \"peralta\",\n \"peraza\",\n \"percy\",\n \"perdomo\",\n \"perea\",\n \"peres\",\n \"pereyra\",\n \"perez\",\n \"perla\",\n \"perlman\",\n \"permenter\",\n \"pernell\",\n \"perrault\",\n \"perreault\",\n \"perreira\",\n \"perri\",\n \"perrin\",\n \"perrine\",\n \"perrone\",\n \"perrotta\",\n \"perry\",\n \"perryman\",\n \"persaud\",\n \"persinger\",\n \"pesce\",\n \"pete\",\n \"peter\",\n \"peterkin\",\n \"peterman\",\n \"petersen\",\n \"peterson\",\n \"petra\",\n \"petree\",\n \"petrie\",\n \"petrillo\",\n \"petrina\",\n \"petro\",\n \"petronila\",\n \"petry\",\n \"pettaway\",\n \"petterson\",\n \"pettiford\",\n \"pettigrew\",\n \"pettis\",\n \"pettit\",\n \"pettus\",\n \"pettway\",\n \"peyton\",\n \"pfaff\",\n \"pfeffer\",\n \"pfeifer\",\n \"pfeiffer\",\n \"pfister\",\n \"pham\",\n \"phan\",\n \"pharr\",\n \"phebe\",\n \"phelan\",\n \"phelps\",\n \"phifer\",\n \"philbrick\",\n \"philip\",\n \"philips\",\n \"phillip\",\n \"phillips\",\n \"phillis\",\n \"philomena\",\n \"philpot\",\n \"philpott\",\n \"phinney\",\n \"phipps\",\n \"phoebe\",\n \"phung\",\n \"phuong\",\n \"phylicia\",\n \"phylis\",\n \"phyliss\",\n \"phyllis\",\n \"piatt\",\n \"picard\",\n \"pichardo\",\n \"pickard\",\n \"pickel\",\n \"pickens\",\n \"pickering\",\n \"pickett\",\n \"piedad\",\n \"pieper\",\n \"piercy\",\n \"pierre\",\n \"pierson\",\n \"pifer\",\n \"pigg\",\n \"pilkington\",\n \"pimental\",\n \"pimentel\",\n \"pina\",\n \"pinard\",\n \"pinckney\",\n \"pineda\",\n \"pinero\",\n \"pinkard\",\n \"pinkerton\",\n \"pinkham\",\n \"pinkney\",\n \"pinkston\",\n \"pino\",\n \"pinon\",\n \"pinson\",\n \"piotrowski\",\n \"pires\",\n \"pirtle\",\n \"pisano\",\n \"pitchford\",\n \"pitre\",\n \"pitt\",\n \"pittman\",\n \"pitts\",\n \"pitzer\",\n \"pizarro\",\n \"placencia\",\n \"plante\",\n \"plascencia\",\n \"platt\",\n \"plemmons\",\n \"pless\",\n \"plotkin\",\n \"plott\",\n \"plourde\",\n \"plumlee\",\n \"plumley\",\n \"plummer\",\n \"plunkett\",\n \"plyler\",\n \"poche\",\n \"poe\",\n \"poff\",\n \"pogue\",\n \"pohl\",\n \"poindexter\",\n \"poirier\",\n \"poisson\",\n \"pok\",\n \"polanco\",\n \"poland\",\n \"polito\",\n \"polley\",\n \"polly\",\n \"polson\",\n \"polston\",\n \"pomerleau\",\n \"pomeroy\",\n \"poole\",\n \"pooler\",\n \"poore\",\n \"popham\",\n \"popovich\",\n \"popp\",\n \"porras\",\n \"porsche\",\n \"porsha\",\n \"porterfield\",\n \"portia\",\n \"portillo\",\n \"portis\",\n \"posner\",\n \"poston\",\n \"poteat\",\n \"poteet\",\n \"poulin\",\n \"pouliot\",\n \"poulos\",\n \"poulson\",\n \"powe\",\n \"powell\",\n \"poynter\",\n \"prado\",\n \"prather\",\n \"preciado\",\n \"preece\",\n \"prendergast\",\n \"prentiss\",\n \"prescott\",\n \"presley\",\n \"presnell\",\n \"pressley\",\n \"preston\",\n \"prevost\",\n \"prewitt\",\n \"prichard\",\n \"pricilla\",\n \"prickett\",\n \"priddy\",\n \"pridemore\",\n \"pridgen\",\n \"priester\",\n \"prieto\",\n \"primm\",\n \"prindle\",\n \"prine\",\n \"pringle\",\n \"priscila\",\n \"priscilla\",\n \"pritchard\",\n \"pritchett\",\n \"privett\",\n \"probst\",\n \"proffitt\",\n \"propst\",\n \"prosser\",\n \"proulx\",\n \"prouty\",\n \"provencher\",\n \"providencia\",\n \"pruett\",\n \"pruitt\",\n \"pryor\",\n \"puckett\",\n \"puente\",\n \"puentes\",\n \"puga\",\n \"pugliese\",\n \"puleo\",\n \"pulido\",\n \"pullen\",\n \"pulliam\",\n \"pumphrey\",\n \"pura\",\n \"purcell\",\n \"purdy\",\n \"purifoy\",\n \"purkey\",\n \"purnell\",\n \"pursley\",\n \"purvis\",\n \"puryear\",\n \"putman\",\n \"putnam\",\n \"pyatt\",\n \"pyle\",\n \"pyles\",\n \"qiana\",\n \"quach\",\n \"quackenbush\",\n \"quade\",\n \"qualls\",\n \"quan\",\n \"quattlebaum\",\n \"queenie\",\n \"quesada\",\n \"quesenberry\",\n \"quevedo\",\n \"quezada\",\n \"quiana\",\n \"quigley\",\n \"quijano\",\n \"quiles\",\n \"quillen\",\n \"quimby\",\n \"quinlan\",\n \"quinn\",\n \"quinonez\",\n \"quintana\",\n \"quintanilla\",\n \"quintero\",\n \"quinton\",\n \"quiroz\",\n \"quyen\",\n \"raab\",\n \"rabb\",\n \"rabe\",\n \"raber\",\n \"rabideau\",\n \"rabinowitz\",\n \"rabon\",\n \"raby\",\n \"rachael\",\n \"rachal\",\n \"racheal\",\n \"rachel\",\n \"rachele\",\n \"rachell\",\n \"rachelle\",\n \"racine\",\n \"rackley\",\n \"racquel\",\n \"radcliff\",\n \"radcliffe\",\n \"rademacher\",\n \"rader\",\n \"radford\",\n \"radke\",\n \"radtke\",\n \"rae\",\n \"raeann\",\n \"rael\",\n \"raelene\",\n \"rafaela\",\n \"rafferty\",\n \"ragan\",\n \"ragin\",\n \"ragland\",\n \"ragsdale\",\n \"raguel\",\n \"rahman\",\n \"rahn\",\n \"railey\",\n \"raina\",\n \"rainbolt\",\n \"rainer\",\n \"raines\",\n \"rainey\",\n \"rainwater\",\n \"raisa\",\n \"raleigh\",\n \"raley\",\n \"ralph\",\n \"ralston\",\n \"ramage\",\n \"rambo\",\n \"ramer\",\n \"rameriz\",\n \"ramey\",\n \"ramires\",\n \"ramirez\",\n \"ramon\",\n \"ramona\",\n \"ramonita\",\n \"ramos\",\n \"ramsay\",\n \"ramsdell\",\n \"ramsey\",\n \"ranae\",\n \"rancourt\",\n \"randa\",\n \"randall\",\n \"randazzo\",\n \"randee\",\n \"randel\",\n \"randell\",\n \"randi\",\n \"randle\",\n \"randolph\",\n \"randy\",\n \"ranee\",\n \"raney\",\n \"rangel\",\n \"rankin\",\n \"rankins\",\n \"ransdell\",\n \"ranson\",\n \"rao\",\n \"raphael\",\n \"raposa\",\n \"rapp\",\n \"raquel\",\n \"rasberry\",\n \"rascon\",\n \"rasheeda\",\n \"rashid\",\n \"rashida\",\n \"rasmussen\",\n \"ratchford\",\n \"ratcliff\",\n \"ratcliffe\",\n \"rathbone\",\n \"rathbun\",\n \"ratliff\",\n \"rau\",\n \"rauch\",\n \"rausch\",\n \"rawlings\",\n \"rawlins\",\n \"rawls\",\n \"rawson\",\n \"raya\",\n \"rayborn\",\n \"rayburn\",\n \"raye\",\n \"rayfield\",\n \"rayford\",\n \"raylene\",\n \"raymer\",\n \"raymond\",\n \"raymonde\",\n \"raymund\",\n \"rayna\",\n \"rayner\",\n \"raynor\",\n \"razo\",\n \"rea\",\n \"reagan\",\n \"reanna\",\n \"reardon\",\n \"reatha\",\n \"reavis\",\n \"reba\",\n \"rebbeca\",\n \"rebbecca\",\n \"rebeca\",\n \"rebecca\",\n \"rebecka\",\n \"rebekah\",\n \"reber\",\n \"reda\",\n \"reddick\",\n \"redford\",\n \"redman\",\n \"redmon\",\n \"redmond\",\n \"redwine\",\n \"reece\",\n \"reena\",\n \"reese\",\n \"refugia\",\n \"refugio\",\n \"regalado\",\n \"regan\",\n \"regena\",\n \"regenia\",\n \"regina\",\n \"regine\",\n \"reginia\",\n \"rehm\",\n \"reich\",\n \"reichard\",\n \"reichel\",\n \"reichert\",\n \"reid\",\n \"reiff\",\n \"reiko\",\n \"reilly\",\n \"reimer\",\n \"reimers\",\n \"reina\",\n \"reiner\",\n \"reinert\",\n \"reinhardt\",\n \"reinhart\",\n \"reinhold\",\n \"reinke\",\n \"reiser\",\n \"reiss\",\n \"reita\",\n \"reitz\",\n \"rema\",\n \"rembert\",\n \"remedios\",\n \"remillard\",\n \"remington\",\n \"remona\",\n \"remy\",\n \"rena\",\n \"renae\",\n \"renata\",\n \"renate\",\n \"renaud\",\n \"renay\",\n \"renda\",\n \"rendon\",\n \"rene\",\n \"renea\",\n \"reneau\",\n \"renee\",\n \"renetta\",\n \"renfro\",\n \"renfroe\",\n \"renfrow\",\n \"renita\",\n \"renn\",\n \"renna\",\n \"renner\",\n \"rennie\",\n \"reno\",\n \"renshaw\",\n \"renteria\",\n \"renz\",\n \"resendez\",\n \"resnick\",\n \"ressie\",\n \"ressler\",\n \"reta\",\n \"retha\",\n \"retta\",\n \"reuter\",\n \"reva\",\n \"revell\",\n \"revis\",\n \"rey\",\n \"reyes\",\n \"reyna\",\n \"reynalda\",\n \"reynolds\",\n \"reynoso\",\n \"rhea\",\n \"rheba\",\n \"rhee\",\n \"rhiannon\",\n \"rhinehart\",\n \"rhoades\",\n \"rhoads\",\n \"rhoda\",\n \"rhoden\",\n \"rhodes\",\n \"rhona\",\n \"rhonda\",\n \"rhyne\",\n \"ribeiro\",\n \"ricarda\",\n \"ricci\",\n \"ricciardi\",\n \"riccio\",\n \"richard\",\n \"richards\",\n \"richardson\",\n \"richburg\",\n \"richelle\",\n \"richerson\",\n \"richert\",\n \"richey\",\n \"richie\",\n \"richman\",\n \"richmond\",\n \"rickard\",\n \"rickert\",\n \"ricketts\",\n \"ricki\",\n \"rickie\",\n \"rickman\",\n \"rico\",\n \"riddell\",\n \"riddick\",\n \"ridenhour\",\n \"ridenour\",\n \"rideout\",\n \"ridgway\",\n \"ridley\",\n \"riedel\",\n \"rieger\",\n \"riehl\",\n \"riendeau\",\n \"ries\",\n \"riffe\",\n \"rigby\",\n \"rigdon\",\n \"riggins\",\n \"riggle\",\n \"rigney\",\n \"rigsby\",\n \"riker\",\n \"rikki\",\n \"riley\",\n \"rimmer\",\n \"rinaldi\",\n \"rincon\",\n \"rinehart\",\n \"ringler\",\n \"rinker\",\n \"riojas\",\n \"riordan\",\n \"rios\",\n \"rioux\",\n \"ripley\",\n \"rippy\",\n \"risa\",\n \"risinger\",\n \"risley\",\n \"risner\",\n \"ritchey\",\n \"ritchie\",\n \"rittenhouse\",\n \"ritz\",\n \"rivard\",\n \"rivera\",\n \"rivero\",\n \"rivka\",\n \"rizo\",\n \"rizzo\",\n \"roa\",\n \"roane\",\n \"roark\",\n \"robb\",\n \"robbie\",\n \"robbin\",\n \"robbins\",\n \"robbyn\",\n \"robena\",\n \"roberge\",\n \"roberson\",\n \"robert\",\n \"roberta\",\n \"roberto\",\n \"roberts\",\n \"robertson\",\n \"robeson\",\n \"robey\",\n \"robichaud\",\n \"robichaux\",\n \"robinett\",\n \"robinette\",\n \"robinson\",\n \"robison\",\n \"robledo\",\n \"robson\",\n \"roby\",\n \"robyn\",\n \"rocco\",\n \"rocha\",\n \"roche\",\n \"rochel\",\n \"rochell\",\n \"rochelle\",\n \"rochester\",\n \"rocio\",\n \"rockett\",\n \"rockwell\",\n \"rockwood\",\n \"rodarte\",\n \"rodas\",\n \"roddy\",\n \"roden\",\n \"roderick\",\n \"rodgers\",\n \"rodney\",\n \"rodrigez\",\n \"rodrigue\",\n \"rodrigues\",\n \"rodriguez\",\n \"rodriques\",\n \"rodriquez\",\n \"roeder\",\n \"roemer\",\n \"roesch\",\n \"roesler\",\n \"rogan\",\n \"roger\",\n \"rogers\",\n \"rohde\",\n \"rohr\",\n \"rohrer\",\n \"rojas\",\n \"rojo\",\n \"roland\",\n \"rolanda\",\n \"rolande\",\n \"roldan\",\n \"rolf\",\n \"rolfe\",\n \"rolle\",\n \"rollins\",\n \"rollo\",\n \"rolon\",\n \"romana\",\n \"romano\",\n \"rome\",\n \"romelia\",\n \"romeo\",\n \"romero\",\n \"romine\",\n \"romo\",\n \"romona\",\n \"rona\",\n \"ronald\",\n \"ronda\",\n \"roney\",\n \"roni\",\n \"ronna\",\n \"ronni\",\n \"ronnie\",\n \"rooker\",\n \"rooney\",\n \"rory\",\n \"rosa\",\n \"rosado\",\n \"rosalba\",\n \"rosalee\",\n \"rosales\",\n \"rosalia\",\n \"rosalie\",\n \"rosalina\",\n \"rosalind\",\n \"rosalinda\",\n \"rosaline\",\n \"rosalva\",\n \"rosalyn\",\n \"rosamaria\",\n \"rosamond\",\n \"rosana\",\n \"rosann\",\n \"rosanna\",\n \"rosanne\",\n \"rosaria\",\n \"rosario\",\n \"rosas\",\n \"rosaura\",\n \"roscoe\",\n \"roseann\",\n \"roseanna\",\n \"roseanne\",\n \"roseberry\",\n \"roseboro\",\n \"roselee\",\n \"roselia\",\n \"roseline\",\n \"rosella\",\n \"roselle\",\n \"roselyn\",\n \"roseman\",\n \"rosemarie\",\n \"rosemond\",\n \"rosen\",\n \"rosena\",\n \"rosenbaum\",\n \"rosenberg\",\n \"rosenberger\",\n \"rosenberry\",\n \"rosenblatt\",\n \"rosenblum\",\n \"rosenda\",\n \"rosenfeld\",\n \"rosenthal\",\n \"rosetta\",\n \"rosette\",\n \"rosia\",\n \"rosie\",\n \"rosina\",\n \"rosio\",\n \"rosita\",\n \"roslyn\",\n \"ross\",\n \"rossana\",\n \"rossi\",\n \"rossie\",\n \"rossiter\",\n \"rossman\",\n \"rost\",\n \"roth\",\n \"rothman\",\n \"rothrock\",\n \"rothstein\",\n \"rothwell\",\n \"rotz\",\n \"roundtree\",\n \"roundy\",\n \"rountree\",\n \"rourke\",\n \"roush\",\n \"rousseau\",\n \"roussel\",\n \"rowden\",\n \"rowe\",\n \"rowell\",\n \"rowena\",\n \"rowland\",\n \"rowles\",\n \"rowlett\",\n \"rowley\",\n \"roxana\",\n \"roxane\",\n \"roxann\",\n \"roxanna\",\n \"roxanne\",\n \"roxie\",\n \"roy\",\n \"roybal\",\n \"royce\",\n \"royer\",\n \"royston\",\n \"rozanne\",\n \"rozella\",\n \"rozier\",\n \"ruano\",\n \"rubalcava\",\n \"ruben\",\n \"rubenstein\",\n \"rubi\",\n \"rubie\",\n \"rubin\",\n \"rubino\",\n \"rubio\",\n \"rubye\",\n \"ruch\",\n \"rucker\",\n \"ruckman\",\n \"rudnick\",\n \"rudolph\",\n \"rudy\",\n \"rueda\",\n \"ruelas\",\n \"ruffner\",\n \"rufina\",\n \"rugg\",\n \"ruggiero\",\n \"ruggles\",\n \"ruhl\",\n \"ruiz\",\n \"rummel\",\n \"rumph\",\n \"rumsey\",\n \"rundell\",\n \"runge\",\n \"runion\",\n \"runyan\",\n \"runyon\",\n \"rupe\",\n \"rupert\",\n \"rupp\",\n \"ruppert\",\n \"rusch\",\n \"rushton\",\n \"russ\",\n \"russell\",\n \"russo\",\n \"rutan\",\n \"ruth\",\n \"rutha\",\n \"ruthann\",\n \"ruthanne\",\n \"ruthe\",\n \"ruthie\",\n \"rutkowski\",\n \"rutland\",\n \"rutledge\",\n \"ruvalcaba\",\n \"ryan\",\n \"ryann\",\n \"ryder\",\n \"saad\",\n \"saari\",\n \"saavedra\",\n \"sabina\",\n \"sabine\",\n \"sabo\",\n \"sabol\",\n \"sabra\",\n \"sabrina\",\n \"sacco\",\n \"sacha\",\n \"sachiko\",\n \"sachs\",\n \"sackett\",\n \"sadie\",\n \"sadler\",\n \"sadowski\",\n \"sadye\",\n \"saechao\",\n \"saenz\",\n \"saez\",\n \"safford\",\n \"saito\",\n \"saiz\",\n \"sala\",\n \"salas\",\n \"salazar\",\n \"salcedo\",\n \"salcido\",\n \"saldana\",\n \"saldivar\",\n \"saleh\",\n \"salem\",\n \"salena\",\n \"salerno\",\n \"salgado\",\n \"salisbury\",\n \"salley\",\n \"sallie\",\n \"sally\",\n \"salo\",\n \"salome\",\n \"salomon\",\n \"saltzman\",\n \"salvador\",\n \"salvatore\",\n \"salyer\",\n \"salyers\",\n \"salzman\",\n \"sam\",\n \"samaniego\",\n \"samantha\",\n \"samara\",\n \"samatha\",\n \"samella\",\n \"samira\",\n \"sammie\",\n \"sammons\",\n \"sammy\",\n \"samons\",\n \"samora\",\n \"sampson\",\n \"sams\",\n \"samson\",\n \"samuel\",\n \"samuels\",\n \"samuelson\",\n \"sana\",\n \"sanabria\",\n \"sanborn\",\n \"sanches\",\n \"sanchez\",\n \"sanda\",\n \"sandberg\",\n \"sandee\",\n \"sanderlin\",\n \"sanderson\",\n \"sandi\",\n \"sandidge\",\n \"sandie\",\n \"sandifer\",\n \"sandler\",\n \"sandlin\",\n \"sandoval\",\n \"sandra\",\n \"sandstrom\",\n \"sandusky\",\n \"sanford\",\n \"sanjuana\",\n \"sanjuanita\",\n \"sankey\",\n \"sanmiguel\",\n \"sanora\",\n \"sansom\",\n \"sansone\",\n \"santa\",\n \"santacruz\",\n \"santamaria\",\n \"santana\",\n \"santiago\",\n \"santillan\",\n \"santina\",\n \"santo\",\n \"santoro\",\n \"santos\",\n \"santoyo\",\n \"sapp\",\n \"sappington\",\n \"sara\",\n \"sarabia\",\n \"sarah\",\n \"sarai\",\n \"saran\",\n \"sargeant\",\n \"sargent\",\n \"sari\",\n \"sarina\",\n \"sarita\",\n \"sarmiento\",\n \"sartain\",\n \"sartin\",\n \"sarver\",\n \"sasaki\",\n \"sasha\",\n \"sasser\",\n \"sather\",\n \"sato\",\n \"satterfield\",\n \"satterwhite\",\n \"sattler\",\n \"saturnina\",\n \"sau\",\n \"sauceda\",\n \"saucedo\",\n \"sauer\",\n \"saunders\",\n \"saundra\",\n \"sauter\",\n \"savannah\",\n \"saville\",\n \"savino\",\n \"savoie\",\n \"sawicki\",\n \"saxon\",\n \"saxton\",\n \"sayles\",\n \"saylor\",\n \"sayre\",\n \"scaife\",\n \"scalf\",\n \"scalise\",\n \"scanlan\",\n \"scanlon\",\n \"scarberry\",\n \"scarborough\",\n \"scarbrough\",\n \"scarlett\",\n \"schaaf\",\n \"schaal\",\n \"schade\",\n \"schaefer\",\n \"schaeffer\",\n \"schafer\",\n \"schaffer\",\n \"schaffner\",\n \"schall\",\n \"schaller\",\n \"scharf\",\n \"schatz\",\n \"schaub\",\n \"schauer\",\n \"scheel\",\n \"scheer\",\n \"scheffler\",\n \"schell\",\n \"scheller\",\n \"schenck\",\n \"schenk\",\n \"scherer\",\n \"schermerhorn\",\n \"schexnayder\",\n \"schick\",\n \"schiff\",\n \"schiffman\",\n \"schindler\",\n \"schlegel\",\n \"schleicher\",\n \"schlosser\",\n \"schlueter\",\n \"schmid\",\n \"schmidt\",\n \"schmit\",\n \"schmitt\",\n \"schmitz\",\n \"schneider\",\n \"schock\",\n \"schoen\",\n \"schoenfeld\",\n \"schofield\",\n \"scholl\",\n \"scholz\",\n \"schoonmaker\",\n \"schoonover\",\n \"schott\",\n \"schrader\",\n \"schram\",\n \"schramm\",\n \"schreck\",\n \"schreiber\",\n \"schreiner\",\n \"schrimsher\",\n \"schrock\",\n \"schroder\",\n \"schroeder\",\n \"schubert\",\n \"schuck\",\n \"schuh\",\n \"schuler\",\n \"schuller\",\n \"schulman\",\n \"schulte\",\n \"schultz\",\n \"schulz\",\n \"schulze\",\n \"schumacher\",\n \"schuman\",\n \"schumann\",\n \"schuster\",\n \"schutt\",\n \"schutz\",\n \"schuyler\",\n \"schwab\",\n \"schwartz\",\n \"schwarz\",\n \"schweitzer\",\n \"scofield\",\n \"scoggins\",\n \"scott\",\n \"scottie\",\n \"scoville\",\n \"scribner\",\n \"scrivner\",\n \"scroggins\",\n \"scruggs\",\n \"scully\",\n \"seabolt\",\n \"seabrook\",\n \"seagraves\",\n \"seale\",\n \"sealey\",\n \"sealy\",\n \"sean\",\n \"searcy\",\n \"searle\",\n \"searles\",\n \"seaton\",\n \"seaver\",\n \"seavey\",\n \"seawright\",\n \"seay\",\n \"sebastian\",\n \"sebrina\",\n \"sechrist\",\n \"seda\",\n \"sedillo\",\n \"seeger\",\n \"seeley\",\n \"seema\",\n \"segal\",\n \"segarra\",\n \"seger\",\n \"segovia\",\n \"segura\",\n \"seibel\",\n \"seiber\",\n \"seibert\",\n \"seidel\",\n \"seifert\",\n \"seiler\",\n \"seitz\",\n \"selby\",\n \"selena\",\n \"selene\",\n \"selina\",\n \"sellars\",\n \"selma\",\n \"selman\",\n \"sena\",\n \"senaida\",\n \"seng\",\n \"senn\",\n \"senter\",\n \"sepulveda\",\n \"serafina\",\n \"serena\",\n \"sergent\",\n \"serina\",\n \"serita\",\n \"serna\",\n \"serrano\",\n \"serrato\",\n \"sessoms\",\n \"setser\",\n \"setsuko\",\n \"setzer\",\n \"severson\",\n \"sevier\",\n \"sevigny\",\n \"sevilla\",\n \"seward\",\n \"sewell\",\n \"seymore\",\n \"seymour\",\n \"shackelford\",\n \"shackleford\",\n \"shae\",\n \"shafer\",\n \"shaffer\",\n \"shaina\",\n \"shakia\",\n \"shakira\",\n \"shakita\",\n \"shala\",\n \"shalanda\",\n \"shalon\",\n \"shalonda\",\n \"shamblin\",\n \"shameka\",\n \"shamika\",\n \"shana\",\n \"shanae\",\n \"shanahan\",\n \"shanda\",\n \"shandi\",\n \"shandra\",\n \"shane\",\n \"shaneka\",\n \"shanel\",\n \"shanell\",\n \"shanelle\",\n \"shaner\",\n \"shani\",\n \"shanice\",\n \"shanika\",\n \"shaniqua\",\n \"shanita\",\n \"shankle\",\n \"shanklin\",\n \"shanna\",\n \"shannan\",\n \"shannon\",\n \"shanon\",\n \"shanta\",\n \"shantae\",\n \"shantay\",\n \"shante\",\n \"shantel\",\n \"shantell\",\n \"shantelle\",\n \"shanti\",\n \"shapiro\",\n \"shaquana\",\n \"shaquita\",\n \"shara\",\n \"sharan\",\n \"sharda\",\n \"sharee\",\n \"sharell\",\n \"sharen\",\n \"shari\",\n \"sharice\",\n \"sharie\",\n \"sharika\",\n \"sharilyn\",\n \"sharita\",\n \"sharkey\",\n \"sharla\",\n \"sharleen\",\n \"sharlene\",\n \"sharma\",\n \"sharmaine\",\n \"sharolyn\",\n \"sharon\",\n \"sharonda\",\n \"sharpe\",\n \"sharri\",\n \"sharron\",\n \"sharyl\",\n \"sharyn\",\n \"shasta\",\n \"shattuck\",\n \"shaughnessy\",\n \"shaun\",\n \"shauna\",\n \"shaunda\",\n \"shaunna\",\n \"shaunta\",\n \"shaunte\",\n \"shavon\",\n \"shavonda\",\n \"shavonne\",\n \"shawana\",\n \"shawanda\",\n \"shawanna\",\n \"shawn\",\n \"shawna\",\n \"shawnda\",\n \"shawnee\",\n \"shawnna\",\n \"shawnta\",\n \"shay\",\n \"shayla\",\n \"shayna\",\n \"shayne\",\n \"shea\",\n \"shealy\",\n \"shearin\",\n \"sheba\",\n \"shedd\",\n \"sheehan\",\n \"sheehy\",\n \"sheena\",\n \"sheffield\",\n \"sheila\",\n \"sheilah\",\n \"shela\",\n \"shelba\",\n \"shelby\",\n \"sheldon\",\n \"shelia\",\n \"shella\",\n \"shelley\",\n \"shelli\",\n \"shellie\",\n \"shelly\",\n \"shelton\",\n \"shemeka\",\n \"shemika\",\n \"shena\",\n \"shenika\",\n \"shenita\",\n \"shenk\",\n \"shenna\",\n \"shepard\",\n \"shephard\",\n \"sheppard\",\n \"shera\",\n \"sheree\",\n \"sherell\",\n \"sherer\",\n \"sheri\",\n \"sherice\",\n \"sheridan\",\n \"sherie\",\n \"sherika\",\n \"sherill\",\n \"sherilyn\",\n \"sherise\",\n \"sherita\",\n \"sherlene\",\n \"sherley\",\n \"sherly\",\n \"sherlyn\",\n \"sherman\",\n \"sheron\",\n \"sherrell\",\n \"sherrer\",\n \"sherri\",\n \"sherrie\",\n \"sherril\",\n \"sherrill\",\n \"sherrod\",\n \"sherron\",\n \"sherryl\",\n \"sherwin\",\n \"sherwood\",\n \"shery\",\n \"sheryl\",\n \"sheryll\",\n \"shetler\",\n \"shick\",\n \"shiela\",\n \"shifflett\",\n \"shiflett\",\n \"shila\",\n \"shiloh\",\n \"shinn\",\n \"shipe\",\n \"shipley\",\n \"shipp\",\n \"shippy\",\n \"shira\",\n \"shirely\",\n \"shirey\",\n \"shirl\",\n \"shirlee\",\n \"shirleen\",\n \"shirlene\",\n \"shirley\",\n \"shirly\",\n \"shively\",\n \"shizue\",\n \"shizuko\",\n \"shockey\",\n \"shockley\",\n \"shoemake\",\n \"shoffner\",\n \"shona\",\n \"shonda\",\n \"shondra\",\n \"shonna\",\n \"shonta\",\n \"shoop\",\n \"shortridge\",\n \"shoshana\",\n \"shotwell\",\n \"shoup\",\n \"shouse\",\n \"showalter\",\n \"shrader\",\n \"shreve\",\n \"shropshire\",\n \"shroyer\",\n \"shrum\",\n \"shu\",\n \"shubert\",\n \"shuler\",\n \"shull\",\n \"shults\",\n \"shultz\",\n \"shumaker\",\n \"shuman\",\n \"shumate\",\n \"shumpert\",\n \"shumway\",\n \"shupe\",\n \"shuster\",\n \"shutt\",\n \"shyla\",\n \"sibert\",\n \"sibley\",\n \"sibyl\",\n \"sickler\",\n \"sidney\",\n \"siebert\",\n \"siegel\",\n \"siegfried\",\n \"sievers\",\n \"sifuentes\",\n \"sigler\",\n \"sigman\",\n \"sigmon\",\n \"signe\",\n \"sigrid\",\n \"sikora\",\n \"silas\",\n \"silva\",\n \"silvana\",\n \"silveira\",\n \"silverman\",\n \"silverstein\",\n \"silvey\",\n \"silvia\",\n \"simard\",\n \"simas\",\n \"simmon\",\n \"simmons\",\n \"simms\",\n \"simon\",\n \"simona\",\n \"simonds\",\n \"simone\",\n \"simoneau\",\n \"simoneaux\",\n \"simonne\",\n \"simons\",\n \"simonson\",\n \"simonton\",\n \"simpkins\",\n \"simpson\",\n \"sinclair\",\n \"sindy\",\n \"singh\",\n \"singletary\",\n \"singley\",\n \"siobhan\",\n \"sirena\",\n \"sirois\",\n \"sisco\",\n \"sisk\",\n \"sisneros\",\n \"sisson\",\n \"sistrunk\",\n \"sitton\",\n \"siu\",\n \"sixta\",\n \"sizemore\",\n \"skaggs\",\n \"skeen\",\n \"skeens\",\n \"skelton\",\n \"skidmore\",\n \"skiles\",\n \"skye\",\n \"slagle\",\n \"slaton\",\n \"slavin\",\n \"slayton\",\n \"sloat\",\n \"slocum\",\n \"slone\",\n \"slover\",\n \"slusher\",\n \"slyvia\",\n \"smalley\",\n \"smallwood\",\n \"smedley\",\n \"smelser\",\n \"smitherman\",\n \"smithson\",\n \"smtih\",\n \"smyth\",\n \"smythe\",\n \"snapp\",\n \"snavely\",\n \"snodgrass\",\n \"snowden\",\n \"snyder\",\n \"soares\",\n \"sobel\",\n \"socorro\",\n \"sofia\",\n \"sohn\",\n \"soila\",\n \"soileau\",\n \"sokol\",\n \"solange\",\n \"solberg\",\n \"soledad\",\n \"solis\",\n \"soliz\",\n \"soloman\",\n \"solomon\",\n \"solorio\",\n \"solorzano\",\n \"somer\",\n \"somers\",\n \"somerville\",\n \"sommer\",\n \"sommers\",\n \"sommerville\",\n \"sona\",\n \"sondra\",\n \"songer\",\n \"sonia\",\n \"sonja\",\n \"sonnier\",\n \"sonya\",\n \"soper\",\n \"sophia\",\n \"sophie\",\n \"sophy\",\n \"soraya\",\n \"sorensen\",\n \"sorenson\",\n \"soria\",\n \"soriano\",\n \"sorrell\",\n \"sorrells\",\n \"sosa\",\n \"sotelo\",\n \"soto\",\n \"soucy\",\n \"soukup\",\n \"soule\",\n \"sousa\",\n \"southard\",\n \"southerland\",\n \"southwick\",\n \"southworth\",\n \"souza\",\n \"sowder\",\n \"sowell\",\n \"spalding\",\n \"spann\",\n \"spano\",\n \"sparkman\",\n \"spaulding\",\n \"specht\",\n \"spector\",\n \"speight\",\n \"spellman\",\n \"sperry\",\n \"spiegel\",\n \"spielman\",\n \"spiers\",\n \"spiker\",\n \"spillman\",\n \"spinelli\",\n \"spitler\",\n \"spitzer\",\n \"spivey\",\n \"spooner\",\n \"spradlin\",\n \"spradling\",\n \"spraggins\",\n \"sprague\",\n \"spratt\",\n \"sprayberry\",\n \"spriggs\",\n \"sproul\",\n \"sprouse\",\n \"spruill\",\n \"spurgeon\",\n \"spurlock\",\n \"staats\",\n \"stacee\",\n \"stacey\",\n \"staci\",\n \"stacia\",\n \"stacie\",\n \"stackhouse\",\n \"stacy\",\n \"stadler\",\n \"stafford\",\n \"stagg\",\n \"staggs\",\n \"stagner\",\n \"stahl\",\n \"staley\",\n \"stallard\",\n \"stallworth\",\n \"stalnaker\",\n \"stambaugh\",\n \"stamey\",\n \"stamm\",\n \"stancil\",\n \"standifer\",\n \"standley\",\n \"standridge\",\n \"stanfield\",\n \"stanfill\",\n \"stanford\",\n \"stanger\",\n \"stanley\",\n \"stansberry\",\n \"stansbury\",\n \"stanton\",\n \"stapleton\",\n \"starkey\",\n \"starla\",\n \"starnes\",\n \"starr\",\n \"stasia\",\n \"staten\",\n \"staton\",\n \"staub\",\n \"stauffer\",\n \"stclair\",\n \"stcyr\",\n \"steadman\",\n \"stearns\",\n \"stebbins\",\n \"steck\",\n \"stedman\",\n \"steele\",\n \"steelman\",\n \"stefani\",\n \"stefania\",\n \"stefanie\",\n \"stefany\",\n \"steffanie\",\n \"steffen\",\n \"steffens\",\n \"stegall\",\n \"steger\",\n \"steib\",\n \"steiger\",\n \"steinbach\",\n \"steinberg\",\n \"steiner\",\n \"steinke\",\n \"steinman\",\n \"steinmetz\",\n \"stella\",\n \"stelly\",\n \"stenson\",\n \"stepanie\",\n \"stephaine\",\n \"stephan\",\n \"stephane\",\n \"stephani\",\n \"stephania\",\n \"stephanie\",\n \"stephany\",\n \"stephen\",\n \"stephenie\",\n \"stephens\",\n \"stephenson\",\n \"stephine\",\n \"stephnie\",\n \"stepp\",\n \"sternberg\",\n \"stetson\",\n \"steven\",\n \"stevenson\",\n \"steverson\",\n \"stevie\",\n \"stewart\",\n \"stgermain\",\n \"sthilaire\",\n \"stickney\",\n \"stidham\",\n \"stier\",\n \"stiffler\",\n \"stillman\",\n \"stillwell\",\n \"stiltner\",\n \"stilwell\",\n \"stine\",\n \"stines\",\n \"stinnett\",\n \"stinson\",\n \"stites\",\n \"stith\",\n \"stitt\",\n \"stjohn\",\n \"stlaurent\",\n \"stlouis\",\n \"stockdale\",\n \"stockton\",\n \"stockwell\",\n \"stoddard\",\n \"stoffel\",\n \"stogner\",\n \"stoll\",\n \"stollings\",\n \"stoltz\",\n \"stoltzfus\",\n \"stonge\",\n \"stott\",\n \"stotts\",\n \"stouffer\",\n \"stovall\",\n \"stowe\",\n \"stowell\",\n \"stpeter\",\n \"stpierre\",\n \"strachan\",\n \"strader\",\n \"strahan\",\n \"straka\",\n \"straley\",\n \"strasser\",\n \"stratton\",\n \"straub\",\n \"strauss\",\n \"strawn\",\n \"strawser\",\n \"streeter\",\n \"streit\",\n \"stribling\",\n \"stricker\",\n \"strickland\",\n \"strickler\",\n \"stricklin\",\n \"stringfellow\",\n \"strobel\",\n \"stroh\",\n \"strom\",\n \"stroman\",\n \"stromberg\",\n \"strother\",\n \"strouse\",\n \"struble\",\n \"strunk\",\n \"stuart\",\n \"stubblefield\",\n \"stuckey\",\n \"studer\",\n \"stultz\",\n \"stumpf\",\n \"sturdivant\",\n \"sturges\",\n \"sturgill\",\n \"sturgis\",\n \"sturm\",\n \"sturtevant\",\n \"stutz\",\n \"stutzman\",\n \"suanne\",\n \"suarez\",\n \"suazo\",\n \"sublett\",\n \"sudduth\",\n \"sudie\",\n \"sueann\",\n \"suellen\",\n \"suggs\",\n \"suh\",\n \"suiter\",\n \"suk\",\n \"sulema\",\n \"sullins\",\n \"sullivan\",\n \"sumiko\",\n \"summerlin\",\n \"summerville\",\n \"sumner\",\n \"sumrall\",\n \"sundberg\",\n \"sunderland\",\n \"sunni\",\n \"surber\",\n \"surratt\",\n \"susan\",\n \"susana\",\n \"susann\",\n \"susanna\",\n \"susannah\",\n \"susanne\",\n \"susie\",\n \"sussman\",\n \"susy\",\n \"suter\",\n \"sutherland\",\n \"sutphin\",\n \"sutter\",\n \"sutton\",\n \"suzan\",\n \"suzann\",\n \"suzanna\",\n \"suzanne\",\n \"suzette\",\n \"suzi\",\n \"suzie\",\n \"suzuki\",\n \"suzy\",\n \"svetlana\",\n \"svitlana\",\n \"svoboda\",\n \"swafford\",\n \"swaim\",\n \"swaney\",\n \"swanger\",\n \"swann\",\n \"swanner\",\n \"swanson\",\n \"swarey\",\n \"swartz\",\n \"swearingen\",\n \"sweatt\",\n \"sweitzer\",\n \"swenson\",\n \"swett\",\n \"swick\",\n \"swiger\",\n \"swindell\",\n \"swinford\",\n \"swinney\",\n \"swinson\",\n \"swint\",\n \"swinton\",\n \"switzer\",\n \"swope\",\n \"sybil\",\n \"syble\",\n \"sydney\",\n \"sydnor\",\n \"sylvester\",\n \"sylvia\",\n \"sylvie\",\n \"symons\",\n \"synder\",\n \"synthia\",\n \"syreeta\",\n \"szabo\",\n \"szymanski\",\n \"tabatha\",\n \"tabb\",\n \"taber\",\n \"tabetha\",\n \"tabitha\",\n \"tackett\",\n \"tafoya\",\n \"taft\",\n \"taggart\",\n \"tague\",\n \"taina\",\n \"taisha\",\n \"tajuana\",\n \"takahashi\",\n \"takako\",\n \"takisha\",\n \"talamantes\",\n \"talavera\",\n \"talbert\",\n \"talbott\",\n \"talia\",\n \"taliaferro\",\n \"talisha\",\n \"talitha\",\n \"talkington\",\n \"tallent\",\n \"talley\",\n \"tallman\",\n \"talton\",\n \"tamala\",\n \"tamar\",\n \"tamara\",\n \"tamatha\",\n \"tamayo\",\n \"tambra\",\n \"tameika\",\n \"tameka\",\n \"tamekia\",\n \"tamela\",\n \"tamera\",\n \"tamesha\",\n \"tamez\",\n \"tami\",\n \"tamica\",\n \"tamie\",\n \"tamika\",\n \"tamiko\",\n \"tamisha\",\n \"tammara\",\n \"tammera\",\n \"tammi\",\n \"tammie\",\n \"tammy\",\n \"tamra\",\n \"tana\",\n \"tanaka\",\n \"tandra\",\n \"tandy\",\n \"taneka\",\n \"tanesha\",\n \"tangela\",\n \"tanguay\",\n \"tania\",\n \"tanika\",\n \"tanisha\",\n \"tanja\",\n \"tankersley\",\n \"tanna\",\n \"tanya\",\n \"tapia\",\n \"tapley\",\n \"tapp\",\n \"tara\",\n \"tarah\",\n \"tarango\",\n \"tarbox\",\n \"tardif\",\n \"tardiff\",\n \"taren\",\n \"tari\",\n \"tarpley\",\n \"tarr\",\n \"tarra\",\n \"tarrant\",\n \"tarsha\",\n \"tarver\",\n \"taryn\",\n \"tasha\",\n \"tashia\",\n \"tashina\",\n \"tasia\",\n \"tatiana\",\n \"tatro\",\n \"tatum\",\n \"tatyana\",\n \"taunya\",\n \"tavares\",\n \"tavarez\",\n \"taveras\",\n \"tawana\",\n \"tawanda\",\n \"tawanna\",\n \"tawna\",\n \"tawnya\",\n \"taylor\",\n \"tayna\",\n \"teague\",\n \"teasley\",\n \"tedford\",\n \"teena\",\n \"teets\",\n \"tegan\",\n \"teisha\",\n \"teixeira\",\n \"tejada\",\n \"tejeda\",\n \"telford\",\n \"telles\",\n \"tellez\",\n \"tello\",\n \"telma\",\n \"temeka\",\n \"temika\",\n \"tempie\",\n \"templeton\",\n \"templin\",\n \"tena\",\n \"tenesha\",\n \"tenisha\",\n \"tennant\",\n \"tenney\",\n \"tennie\",\n \"tennille\",\n \"tennison\",\n \"tennyson\",\n \"tenorio\",\n \"teodora\",\n \"teofila\",\n \"tera\",\n \"teran\",\n \"tereasa\",\n \"teresa\",\n \"terese\",\n \"teresia\",\n \"teresita\",\n \"teressa\",\n \"teri\",\n \"terica\",\n \"terina\",\n \"terisa\",\n \"terra\",\n \"terrazas\",\n \"terrell\",\n \"terresa\",\n \"terri\",\n \"terrie\",\n \"terrill\",\n \"terrilyn\",\n \"terry\",\n \"terwilliger\",\n \"tesch\",\n \"tesha\",\n \"tess\",\n \"tessa\",\n \"tessie\",\n \"tessier\",\n \"testerman\",\n \"teter\",\n \"tetreault\",\n \"thach\",\n \"thacker\",\n \"thai\",\n \"thalia\",\n \"thames\",\n \"thanh\",\n \"thao\",\n \"tharp\",\n \"tharpe\",\n \"thaxton\",\n \"thayer\",\n \"thea\",\n \"theda\",\n \"theis\",\n \"theisen\",\n \"theiss\",\n \"thelen\",\n \"thelma\",\n \"theo\",\n \"theobald\",\n \"theodora\",\n \"theodore\",\n \"theola\",\n \"theresa\",\n \"therese\",\n \"theresia\",\n \"theressa\",\n \"theriault\",\n \"theriot\",\n \"therrien\",\n \"thersa\",\n \"thi\",\n \"thibault\",\n \"thibeault\",\n \"thibodeau\",\n \"thibodeaux\",\n \"thiel\",\n \"thiele\",\n \"thielen\",\n \"thies\",\n \"thigpen\",\n \"thom\",\n \"thoma\",\n \"thomas\",\n \"thomasena\",\n \"thomasina\",\n \"thomasine\",\n \"thomason\",\n \"thomasson\",\n \"thompkins\",\n \"thompson\",\n \"thomsen\",\n \"thomson\",\n \"thora\",\n \"thornberry\",\n \"thornburg\",\n \"thorne\",\n \"thornhill\",\n \"thornton\",\n \"thorson\",\n \"thorton\",\n \"threadgill\",\n \"threatt\",\n \"thresa\",\n \"throckmorton\",\n \"thu\",\n \"thurber\",\n \"thurman\",\n \"thurmond\",\n \"thurston\",\n \"thuy\",\n \"tia\",\n \"tiana\",\n \"tianna\",\n \"tibbetts\",\n \"tibbs\",\n \"tidwell\",\n \"tiera\",\n \"tierney\",\n \"tierra\",\n \"tiesha\",\n \"tifany\",\n \"tiffaney\",\n \"tiffani\",\n \"tiffanie\",\n \"tiffany\",\n \"tiffiny\",\n \"tighe\",\n \"tijerina\",\n \"tijuana\",\n \"tilda\",\n \"tilghman\",\n \"tillery\",\n \"tillett\",\n \"tilley\",\n \"tillie\",\n \"tillis\",\n \"tillman\",\n \"tillotson\",\n \"tilton\",\n \"timberlake\",\n \"timika\",\n \"timm\",\n \"timmerman\",\n \"timmons\",\n \"timms\",\n \"timothy\",\n \"tims\",\n \"tina\",\n \"tincher\",\n \"tindall\",\n \"tindle\",\n \"tingley\",\n \"tinisha\",\n \"tinney\",\n \"tinsley\",\n \"tippett\",\n \"tipton\",\n \"tirado\",\n \"tisa\",\n \"tisdale\",\n \"tish\",\n \"tisha\",\n \"titus\",\n \"tobar\",\n \"tobey\",\n \"tobi\",\n \"tobias\",\n \"tobie\",\n \"tobin\",\n \"toby\",\n \"toccara\",\n \"todd\",\n \"toi\",\n \"toland\",\n \"tolbert\",\n \"toledo\",\n \"tolentino\",\n \"toler\",\n \"toliver\",\n \"tolle\",\n \"tollefson\",\n \"tolley\",\n \"tolliver\",\n \"tolman\",\n \"tolson\",\n \"tomas\",\n \"tomasa\",\n \"tomblin\",\n \"tomeka\",\n \"tomi\",\n \"tomika\",\n \"tomiko\",\n \"tomlin\",\n \"tomlinson\",\n \"tommie\",\n \"tommy\",\n \"tommye\",\n \"tomoko\",\n \"tompkins\",\n \"tona\",\n \"tonda\",\n \"tonette\",\n \"toni\",\n \"tonia\",\n \"tonie\",\n \"tonisha\",\n \"tonita\",\n \"tonja\",\n \"tony\",\n \"tonya\",\n \"toole\",\n \"tooley\",\n \"toombs\",\n \"toomer\",\n \"toomey\",\n \"tora\",\n \"torgerson\",\n \"tori\",\n \"torie\",\n \"toro\",\n \"torre\",\n \"torrence\",\n \"torres\",\n \"torrey\",\n \"torrez\",\n \"torri\",\n \"torrie\",\n \"tory\",\n \"toscano\",\n \"tosha\",\n \"toshia\",\n \"toshiko\",\n \"toth\",\n \"totten\",\n \"toussaint\",\n \"tova\",\n \"tovar\",\n \"towanda\",\n \"towe\",\n \"towle\",\n \"towne\",\n \"towner\",\n \"townes\",\n \"townley\",\n \"townsend\",\n \"townsley\",\n \"toya\",\n \"tracee\",\n \"tracey\",\n \"traci\",\n \"tracie\",\n \"tracy\",\n \"trahan\",\n \"trainor\",\n \"tramel\",\n \"trammell\",\n \"tran\",\n \"trang\",\n \"trantham\",\n \"trapp\",\n \"trask\",\n \"travers\",\n \"travis\",\n \"trawick\",\n \"traylor\",\n \"traynor\",\n \"treadway\",\n \"treadwell\",\n \"treasa\",\n \"treece\",\n \"treena\",\n \"trejo\",\n \"tremblay\",\n \"trena\",\n \"trent\",\n \"tresa\",\n \"tressa\",\n \"tressie\",\n \"treva\",\n \"trevino\",\n \"trexler\",\n \"tricia\",\n \"trigg\",\n \"trimble\",\n \"trina\",\n \"trinh\",\n \"trinidad\",\n \"triplett\",\n \"tripp\",\n \"trish\",\n \"trisha\",\n \"trista\",\n \"tristan\",\n \"trombley\",\n \"trost\",\n \"trotman\",\n \"trott\",\n \"trottier\",\n \"troup\",\n \"troutman\",\n \"trowbridge\",\n \"troxell\",\n \"troxler\",\n \"troy\",\n \"troyer\",\n \"truax\",\n \"trudeau\",\n \"trudi\",\n \"trudie\",\n \"trudy\",\n \"trueblood\",\n \"truelove\",\n \"truesdale\",\n \"truett\",\n \"truitt\",\n \"trujillo\",\n \"trula\",\n \"truman\",\n \"truong\",\n \"trussell\",\n \"tsai\",\n \"tsang\",\n \"tse\",\n \"tso\",\n \"tsosie\",\n \"tubbs\",\n \"tucci\",\n \"tudor\",\n \"tuggle\",\n \"tula\",\n \"tull\",\n \"tullis\",\n \"tully\",\n \"tunnell\",\n \"tunstall\",\n \"tupper\",\n \"turcotte\",\n \"turgeon\",\n \"turk\",\n \"turley\",\n \"turman\",\n \"turnage\",\n \"turnbow\",\n \"turnbull\",\n \"turney\",\n \"turpin\",\n \"tutt\",\n \"tuttle\",\n \"tuyet\",\n \"twana\",\n \"twanda\",\n \"twanna\",\n \"twigg\",\n \"twila\",\n \"twilley\",\n \"twitty\",\n \"twombly\",\n \"twomey\",\n \"twyla\",\n \"twyman\",\n \"tyesha\",\n \"tyisha\",\n \"tyler\",\n \"tyndall\",\n \"tyner\",\n \"tynisha\",\n \"tyra\",\n \"tyree\",\n \"tyrrell\",\n \"tyson\",\n \"tyus\",\n \"uhl\",\n \"ulibarri\",\n \"ullman\",\n \"ulloa\",\n \"ullrich\",\n \"ulmer\",\n \"ulrich\",\n \"ulrike\",\n \"underhill\",\n \"ung\",\n \"unger\",\n \"unknow\",\n \"unruh\",\n \"upchurch\",\n \"upshaw\",\n \"upton\",\n \"urbina\",\n \"urias\",\n \"uribe\",\n \"urquhart\",\n \"urrutia\",\n \"ursula\",\n \"usha\",\n \"ussery\",\n \"ute\",\n \"utley\",\n \"vaca\",\n \"vaccaro\",\n \"vachon\",\n \"vada\",\n \"vaden\",\n \"vadnais\",\n \"vaillancourt\",\n \"val\",\n \"valadez\",\n \"valarie\",\n \"valda\",\n \"valdes\",\n \"valdez\",\n \"valdivia\",\n \"valdovinos\",\n \"valencia\",\n \"valene\",\n \"valente\",\n \"valenti\",\n \"valentin\",\n \"valentina\",\n \"valentino\",\n \"valenzuela\",\n \"valeri\",\n \"valeria\",\n \"valerie\",\n \"valerio\",\n \"valero\",\n \"valery\",\n \"valladares\",\n \"valle\",\n \"vallee\",\n \"vallejo\",\n \"valles\",\n \"vallie\",\n \"valliere\",\n \"valorie\",\n \"valrie\",\n \"valverde\",\n \"vanatta\",\n \"vanburen\",\n \"vanbuskirk\",\n \"vance\",\n \"vancleave\",\n \"vanda\",\n \"vandenberg\",\n \"vanderpool\",\n \"vandiver\",\n \"vandusen\",\n \"vandyke\",\n \"vanegas\",\n \"vanesa\",\n \"vanessa\",\n \"vanetta\",\n \"vanhook\",\n \"vanhoose\",\n \"vanhorn\",\n \"vanhouten\",\n \"vania\",\n \"vanita\",\n \"vankirk\",\n \"vanlandingham\",\n \"vanmeter\",\n \"vann\",\n \"vanna\",\n \"vannatta\",\n \"vannesa\",\n \"vanness\",\n \"vannessa\",\n \"vannoy\",\n \"vanover\",\n \"vanpelt\",\n \"vanscoy\",\n \"vansickle\",\n \"vantassel\",\n \"vanwinkle\",\n \"vanzandt\",\n \"vanzant\",\n \"varela\",\n \"varga\",\n \"vargas\",\n \"vargo\",\n \"varnado\",\n \"varner\",\n \"varney\",\n \"vashti\",\n \"vasiliki\",\n \"vasques\",\n \"vasquez\",\n \"vassallo\",\n \"vassar\",\n \"vaughan\",\n \"vaughn\",\n \"vaught\",\n \"vazquez\",\n \"veach\",\n \"veasey\",\n \"veda\",\n \"veilleux\",\n \"velarde\",\n \"velasco\",\n \"velasquez\",\n \"velazquez\",\n \"velda\",\n \"velez\",\n \"velia\",\n \"veliz\",\n \"vella\",\n \"velma\",\n \"veloz\",\n \"velva\",\n \"vena\",\n \"venable\",\n \"venegas\",\n \"venessa\",\n \"venetta\",\n \"venice\",\n \"venita\",\n \"vennie\",\n \"ventura\",\n \"veola\",\n \"vera\",\n \"verda\",\n \"verdell\",\n \"verdie\",\n \"verdugo\",\n \"verduzco\",\n \"vereen\",\n \"verena\",\n \"vergara\",\n \"vergie\",\n \"verla\",\n \"verlene\",\n \"verlie\",\n \"verline\",\n \"vermillion\",\n \"verna\",\n \"vernell\",\n \"vernetta\",\n \"vernia\",\n \"vernice\",\n \"vernie\",\n \"vernita\",\n \"vernon\",\n \"verona\",\n \"veronica\",\n \"veronika\",\n \"veronique\",\n \"verret\",\n \"versie\",\n \"vertie\",\n \"vesta\",\n \"veta\",\n \"vetter\",\n \"vicenta\",\n \"vick\",\n \"vickers\",\n \"vickery\",\n \"vickey\",\n \"vicki\",\n \"vickie\",\n \"vicky\",\n \"victoria\",\n \"victorina\",\n \"vida\",\n \"vidal\",\n \"vidrine\",\n \"vieira\",\n \"viera\",\n \"vierra\",\n \"vigue\",\n \"viki\",\n \"vikki\",\n \"villagomez\",\n \"villalba\",\n \"villalobos\",\n \"villalpando\",\n \"villanueva\",\n \"villareal\",\n \"villarreal\",\n \"villasenor\",\n \"villatoro\",\n \"villegas\",\n \"villeneuve\",\n \"vilma\",\n \"vincent\",\n \"vincenza\",\n \"vinita\",\n \"vinnie\",\n \"vinson\",\n \"violeta\",\n \"violette\",\n \"virgen\",\n \"virgie\",\n \"virgil\",\n \"virgina\",\n \"virginia\",\n \"visser\",\n \"vitale\",\n \"vivan\",\n \"vivian\",\n \"viviana\",\n \"vivien\",\n \"vivienne\",\n \"voelker\",\n \"vogel\",\n \"vogler\",\n \"vogt\",\n \"voight\",\n \"voigt\",\n \"volkman\",\n \"vollmer\",\n \"volpe\",\n \"volz\",\n \"voncile\",\n \"vonda\",\n \"vonnie\",\n \"voorhees\",\n \"voss\",\n \"vowell\",\n \"voyles\",\n \"vue\",\n \"vuong\",\n \"wachter\",\n \"waddell\",\n \"wadley\",\n \"wadsworth\",\n \"wagner\",\n \"wagstaff\",\n \"wahl\",\n \"wai\",\n \"waite\",\n \"waites\",\n \"wakefield\",\n \"walcott\",\n \"walczak\",\n \"walden\",\n \"waldman\",\n \"waldon\",\n \"waldron\",\n \"waldrop\",\n \"waldrup\",\n \"wallace\",\n \"wallen\",\n \"walley\",\n \"wallin\",\n \"wallis\",\n \"walsh\",\n \"walston\",\n \"walter\",\n \"walters\",\n \"walther\",\n \"waltman\",\n \"walton\",\n \"waltraud\",\n \"walz\",\n \"wampler\",\n \"wanda\",\n \"waneta\",\n \"wanetta\",\n \"wanita\",\n \"wardell\",\n \"wardlaw\",\n \"warfield\",\n \"wargo\",\n \"warnke\",\n \"warnock\",\n \"warr\",\n \"warrick\",\n \"warrington\",\n \"warwick\",\n \"washburn\",\n \"washington\",\n \"wasson\",\n \"watanabe\",\n \"waterhouse\",\n \"watford\",\n \"watkins\",\n \"watson\",\n \"watters\",\n \"watterson\",\n \"wava\",\n \"wayland\",\n \"wayman\",\n \"wayne\",\n \"weatherby\",\n \"weatherford\",\n \"weathersby\",\n \"weatherspoon\",\n \"webb\",\n \"webber\",\n \"weddle\",\n \"weeden\",\n \"weekley\",\n \"weese\",\n \"wegner\",\n \"wei\",\n \"weidman\",\n \"weidner\",\n \"weigand\",\n \"weigel\",\n \"weiland\",\n \"weiler\",\n \"weimer\",\n \"weinberg\",\n \"weinberger\",\n \"weiner\",\n \"weinstein\",\n \"weintraub\",\n \"weis\",\n \"weisberg\",\n \"weise\",\n \"weiser\",\n \"weisman\",\n \"weiss\",\n \"weissman\",\n \"weitzel\",\n \"welborn\",\n \"weldon\",\n \"welker\",\n \"weller\",\n \"wellington\",\n \"wellman\",\n \"welton\",\n \"welty\",\n \"wendel\",\n \"wendell\",\n \"wendi\",\n \"wendie\",\n \"wendling\",\n \"wendolyn\",\n \"wendt\",\n \"wendy\",\n \"wenger\",\n \"wenona\",\n \"wentworth\",\n \"wentz\",\n \"wentzel\",\n \"wenzel\",\n \"werner\",\n \"werth\",\n \"wertz\",\n \"wescott\",\n \"wesley\",\n \"wessel\",\n \"wessels\",\n \"wesson\",\n \"westberry\",\n \"westbrook\",\n \"westbrooks\",\n \"westcott\",\n \"westerfield\",\n \"westerman\",\n \"westfall\",\n \"westlund\",\n \"westmoreland\",\n \"weston\",\n \"westover\",\n \"westphal\",\n \"wethington\",\n \"wetmore\",\n \"wetzel\",\n \"wexler\",\n \"whalen\",\n \"whaley\",\n \"wharton\",\n \"whatley\",\n \"wheatley\",\n \"wheaton\",\n \"wheelock\",\n \"whelan\",\n \"whipple\",\n \"whisenant\",\n \"whisenhunt\",\n \"whisler\",\n \"whitacre\",\n \"whitaker\",\n \"whitcomb\",\n \"whitehead\",\n \"whitehouse\",\n \"whitehurst\",\n \"whiteley\",\n \"whiteman\",\n \"whitesell\",\n \"whiteside\",\n \"whitfield\",\n \"whitford\",\n \"whitley\",\n \"whitlock\",\n \"whitman\",\n \"whitmer\",\n \"whitmire\",\n \"whitmore\",\n \"whitney\",\n \"whitson\",\n \"whitt\",\n \"whittaker\",\n \"whitted\",\n \"whittemore\",\n \"whitten\",\n \"whittier\",\n \"whittington\",\n \"whitton\",\n \"whitworth\",\n \"whorton\",\n \"whyte\",\n \"wickham\",\n \"wicklund\",\n \"wickman\",\n \"wideman\",\n \"widmer\",\n \"widner\",\n \"wiegand\",\n \"wieland\",\n \"wiener\",\n \"wiese\",\n \"wigfall\",\n \"wiggins\",\n \"wiggs\",\n \"wigley\",\n \"wilbanks\",\n \"wilber\",\n \"wilborn\",\n \"wilbourn\",\n \"wilbur\",\n \"wilburn\",\n \"wilcher\",\n \"wilcox\",\n \"wilda\",\n \"wilde\",\n \"wildman\",\n \"wiley\",\n \"wilfong\",\n \"wilford\",\n \"wilhelm\",\n \"wilhelmina\",\n \"wilhemina\",\n \"wilhite\",\n \"wilhoit\",\n \"wilk\",\n \"wilke\",\n \"wilkens\",\n \"wilkerson\",\n \"wilkes\",\n \"wilkey\",\n \"wilkie\",\n \"wilkins\",\n \"wilkinson\",\n \"wilks\",\n \"willa\",\n \"willaims\",\n \"willams\",\n \"willard\",\n \"wille\",\n \"willena\",\n \"willene\",\n \"willett\",\n \"willetta\",\n \"willette\",\n \"willhite\",\n \"willia\",\n \"william\",\n \"williams\",\n \"williamson\",\n \"willie\",\n \"williemae\",\n \"williford\",\n \"willingham\",\n \"willis\",\n \"willison\",\n \"willman\",\n \"willodean\",\n \"willoughby\",\n \"willson\",\n \"wilma\",\n \"wilmot\",\n \"wilmoth\",\n \"wilson\",\n \"wilton\",\n \"wimberly\",\n \"wimbush\",\n \"wimer\",\n \"wimmer\",\n \"winburn\",\n \"winchell\",\n \"winchester\",\n \"windham\",\n \"windom\",\n \"windsor\",\n \"winegar\",\n \"winfield\",\n \"winfrey\",\n \"wingard\",\n \"wingate\",\n \"wingfield\",\n \"wingo\",\n \"winifred\",\n \"winkelman\",\n \"winkler\",\n \"winn\",\n \"winnie\",\n \"winnifred\",\n \"winona\",\n \"winslow\",\n \"winstead\",\n \"winston\",\n \"winton\",\n \"wirth\",\n \"wiseman\",\n \"wisner\",\n \"wisniewski\",\n \"witcher\",\n \"witham\",\n \"witherspoon\",\n \"withrow\",\n \"witkowski\",\n \"witmer\",\n \"witt\",\n \"witte\",\n \"witten\",\n \"wittman\",\n \"wofford\",\n \"wojcik\",\n \"wolcott\",\n \"wolfe\",\n \"wolfenbarger\",\n \"wolff\",\n \"wolfgang\",\n \"wolford\",\n \"wolfson\",\n \"wolter\",\n \"wolters\",\n \"womack\",\n \"wonda\",\n \"wong\",\n \"woodall\",\n \"woodard\",\n \"woodbury\",\n \"woodford\",\n \"woodham\",\n \"woodley\",\n \"woodring\",\n \"woodrow\",\n \"woodrum\",\n \"woodson\",\n \"woodworth\",\n \"woolard\",\n \"wooldridge\",\n \"woolery\",\n \"wooley\",\n \"woolf\",\n \"woolfolk\",\n \"woolley\",\n \"woolridge\",\n \"woosley\",\n \"wooster\",\n \"wooten\",\n \"wooton\",\n \"worden\",\n \"worley\",\n \"worrell\",\n \"worsham\",\n \"worsley\",\n \"wortham\",\n \"worthen\",\n \"worthington\",\n \"wortman\",\n \"wozniak\",\n \"wray\",\n \"wrenn\",\n \"wulf\",\n \"wunderlich\",\n \"wurth\",\n \"wyant\",\n \"wyatt\",\n \"wyche\",\n \"wyckoff\",\n \"wylie\",\n \"wyman\",\n \"wynell\",\n \"wynne\",\n \"wynona\",\n \"wyrick\",\n \"wysocki\",\n \"xenia\",\n \"xiao\",\n \"xiomara\",\n \"xiong\",\n \"xochitl\",\n \"xuan\",\n \"yadira\",\n \"yaeko\",\n \"yael\",\n \"yahaira\",\n \"yajaira\",\n \"yamada\",\n \"yamamoto\",\n \"yan\",\n \"yancey\",\n \"yancy\",\n \"yandell\",\n \"yanez\",\n \"yanira\",\n \"yarber\",\n \"yarborough\",\n \"yarbrough\",\n \"yasmin\",\n \"yasmine\",\n \"yasuko\",\n \"yates\",\n \"yazzie\",\n \"ybarra\",\n \"yeager\",\n \"yee\",\n \"yeh\",\n \"yelena\",\n \"yepez\",\n \"yer\",\n \"yesenia\",\n \"yessenia\",\n \"yetta\",\n \"yeung\",\n \"yevette\",\n \"yi\",\n \"yim\",\n \"ying\",\n \"yingling\",\n \"yoakum\",\n \"yockey\",\n \"yocum\",\n \"yoder\",\n \"yoel\",\n \"yoho\",\n \"yoko\",\n \"yolanda\",\n \"yolande\",\n \"yolando\",\n \"yolonda\",\n \"yong\",\n \"yoo\",\n \"yoon\",\n \"yoshida\",\n \"yoshie\",\n \"yoshiko\",\n \"yost\",\n \"youlanda\",\n \"youmans\",\n \"youngblood\",\n \"youngman\",\n \"youngs\",\n \"yount\",\n \"younts\",\n \"yu\",\n \"yuen\",\n \"yuette\",\n \"yuk\",\n \"yuki\",\n \"yukiko\",\n \"yuko\",\n \"yulanda\",\n \"yun\",\n \"yung\",\n \"yuonne\",\n \"yuri\",\n \"yuriko\",\n \"yvette\",\n \"yvone\",\n \"yvonne\",\n \"zachary\",\n \"zack\",\n \"zada\",\n \"zahn\",\n \"zaida\",\n \"zajac\",\n \"zak\",\n \"zamarripa\",\n \"zambrano\",\n \"zamora\",\n \"zamudio\",\n \"zana\",\n \"zandra\",\n \"zaragoza\",\n \"zarate\",\n \"zavala\",\n \"zayas\",\n \"zeigler\",\n \"zelaya\",\n \"zelda\",\n \"zella\",\n \"zeller\",\n \"zellers\",\n \"zelma\",\n \"zena\",\n \"zenaida\",\n \"zendejas\",\n \"zenia\",\n \"zenobia\",\n \"zepeda\",\n \"zeringue\",\n \"zetta\",\n \"zhang\",\n \"zhao\",\n \"ziegler\",\n \"zielinski\",\n \"zimmerman\",\n \"zimmermann\",\n \"zina\",\n \"zink\",\n \"zinn\",\n \"zita\",\n \"zito\",\n \"zoe\",\n \"zofia\",\n \"zoila\",\n \"zola\",\n \"zona\",\n \"zonia\",\n \"zook\",\n \"zora\",\n \"zoraida\",\n \"zorn\",\n \"zuber\",\n \"zucker\",\n \"zula\",\n \"zulema\",\n \"zulma\",\n \"zumwalt\",\n \"zuniga\"\n ]","import { ISyncRedactor } from '../types';\nimport _wellKnownNames from './well-known-names';\n\nconst greetingRegex = /(^|\\.\\s+)(dear|hi|hello|greetings|hey|hey there)/gi;\nconst closingRegex =\n /(thx|thanks|thank you|regards|best|[a-z]+ly|[a-z]+ regards|all the best|happy [a-z]+ing|take care|have a [a-z]+ (weekend|night|day))/gi;\n\nconst greetingOrClosing = new RegExp(\n '(((' + greetingRegex.source + ')|(' + closingRegex.source + '\\\\s*[,.!]*))[\\\\s-]*)',\n 'gi'\n);\nconst genericName = new RegExp('( ?(([A-Z][a-z]+)|([A-Z]\\\\.)))+([,.]|[,.]?$)', 'gm');\n\nconst wellKnownNames = new RegExp('\\\\b(\\\\s*)(\\\\s*(' + _wellKnownNames.join('|') + '))+\\\\b', 'gim');\n\nexport class NameRedactor implements ISyncRedactor {\n constructor(private replaceWith = 'PERSON_NAME') {}\n\n redact(textToRedact: string) {\n greetingOrClosing.lastIndex = 0;\n genericName.lastIndex = 0;\n let greetingOrClosingMatch = greetingOrClosing.exec(textToRedact);\n while (greetingOrClosingMatch !== null) {\n genericName.lastIndex = greetingOrClosing.lastIndex;\n let genericNameMatch = genericName.exec(textToRedact);\n if (genericNameMatch !== null && genericNameMatch.index === greetingOrClosing.lastIndex) {\n let suffix = genericNameMatch[5] === null ? '' : genericNameMatch[5];\n textToRedact =\n textToRedact.slice(0, genericNameMatch.index) +\n this.replaceWith +\n suffix +\n textToRedact.slice(genericNameMatch.index + genericNameMatch[0].length);\n }\n greetingOrClosingMatch = greetingOrClosing.exec(textToRedact);\n }\n\n textToRedact = textToRedact.replace(wellKnownNames, '$1' + this.replaceWith);\n\n return textToRedact;\n }\n}","const aptRegex = /(apt|bldg|dept|fl|hngr|lot|pier|rm|ste|slip|trlr|unit|#)\\.? *[a-z0-9-]+\\b/gi;\nconst poBoxRegex = /P\\.? ?O\\.? *Box +\\d+/gi;\nconst roadRegex = /(street|st|road|rd|avenue|ave|drive|dr|loop|court|ct|circle|cir|lane|ln|boulevard|blvd|way)\\.?\\b/gi;\n\nexport const creditCardNumber = /\\d{4}[ -]?\\d{4}[ -]?\\d{4}[ -]?\\d{4}|\\d{4}[ -]?\\d{6}[ -]?\\d{4}\\d?/g;\nexport const streetAddress = new RegExp(\n '(\\\\d+\\\\s*(\\\\w+ ){1,2}' + roadRegex.source + '(\\\\s+' + aptRegex.source + ')?)|(' + poBoxRegex.source + ')',\n 'gi'\n);\nexport const zipcode = /\\b\\d{5}\\b(-\\d{4})?\\b/g;\nexport const phoneNumber =\n /(\\(?\\+?[0-9]{1,2}\\)?[-. ]?)?(\\(?[0-9]{3}\\)?|[0-9]{3})[-. ]?([0-9]{3}[-. ]?[0-9]{4}|\\b[A-Z0-9]{7}\\b)/g;\nexport const ipAddress = /(\\d{1,3}(\\.\\d{1,3}){3}|[0-9A-F]{4}(:[0-9A-F]{4}){5}(::|(:0000)+))/gi;\nexport const usSocialSecurityNumber = /\\b\\d{3}[ -.]\\d{2}[ -.]\\d{4}\\b/g;\nexport const emailAddress = /([a-z0-9_\\-.+]+)@\\w+(\\.\\w+)*/gi;\nexport const username = /(user( ?name)?|login): \\S+/gi;\nexport const password = /(pass(word|phrase)?|secret): \\S+/gi;\nexport const credentials = /(login( cred(ential)?s| info(rmation)?)?|cred(ential)?s) ?:\\s*\\S+\\s+\\/?\\s*\\S+/gi;\nexport const digits = /\\b\\d{4,}\\b/g;\nexport const url = /([^\\s:/?#]+):\\/\\/([^/?#\\s]*)([^?#\\s]*)(\\?([^#\\s]*))?(#([^\\s]*))?/g;","import { SimpleRegexpCustomRedactorConfig, AsyncCustomRedactorConfig, ISyncRedactor, IRedactor } from './types';\n\nexport function isSimpleRegexpCustomRedactorConfig(\n redactor: AsyncCustomRedactorConfig\n): redactor is SimpleRegexpCustomRedactorConfig {\n return typeof (redactor as SimpleRegexpCustomRedactorConfig).regexpPattern !== 'undefined';\n}\n\nexport function isSyncRedactor(redactor: IRedactor): redactor is ISyncRedactor {\n return typeof (redactor as ISyncRedactor).redact === 'function';\n}\n\nexport function snakeCase(str: string) {\n return str.replace(/[A-Z]/g, (letter, index) => (index !== 0 ? `_${letter.toLowerCase()}` : letter.toLowerCase()));\n}","import { ISyncRedactor } from '../types';\nimport { snakeCase } from '../utils';\n\nexport class SimpleRegexpRedactor implements ISyncRedactor {\n regexpMatcher: RegExp;\n replaceWith: string;\n\n constructor({\n replaceWith = snakeCase('default').toUpperCase(),\n regexpPattern: regexpMatcher,\n }: {\n replaceWith: string;\n regexpPattern: RegExp;\n }) {\n this.replaceWith = replaceWith;\n this.regexpMatcher = regexpMatcher;\n }\n\n redact(textToRedact: string) {\n return textToRedact.replace(this.regexpMatcher, this.replaceWith);\n }\n}","import { NameRedactor } from './built-ins/NameRedactor';\nimport * as simpleRegexpBuiltIns from './built-ins/simple-regexp-patterns';\nimport { SimpleRegexpRedactor } from './built-ins/SimpleRegexpRedactor';\nimport {\n AsyncCustomRedactorConfig,\n IAsyncRedactor,\n CompositeRedactorOptions,\n SyncCustomRedactorConfig,\n ISyncRedactor,\n} from './types';\nimport { isSimpleRegexpCustomRedactorConfig, snakeCase } from './utils';\n\nfunction normalizeCustomRedactorConfig(redactorConfig: any) {\n return isSimpleRegexpCustomRedactorConfig(redactorConfig)\n ? new SimpleRegexpRedactor({\n regexpPattern: redactorConfig.regexpPattern,\n replaceWith: redactorConfig.replaceWith,\n })\n : redactorConfig;\n}\n\nexport function composeChildRedactors<T extends AsyncCustomRedactorConfig>(opts: CompositeRedactorOptions<T> = {}) {\n const childRedactors: T extends SyncCustomRedactorConfig\n ? Array<ISyncRedactor>\n : Array<IAsyncRedactor | ISyncRedactor> = [] as any;\n\n if (opts.customRedactors && opts.customRedactors.before) {\n opts.customRedactors.before.map(normalizeCustomRedactorConfig).forEach((redactor) => childRedactors.push(redactor));\n }\n\n for (const regexpName of Object.keys(simpleRegexpBuiltIns)) {\n if (\n !opts.builtInRedactors ||\n !(opts.builtInRedactors as any)[regexpName] ||\n (opts.builtInRedactors as any)[regexpName].enabled !== false\n ) {\n childRedactors.push(\n new SimpleRegexpRedactor({\n regexpPattern: (simpleRegexpBuiltIns as any)[regexpName],\n replaceWith: opts.globalReplaceWith || snakeCase(regexpName).toUpperCase(),\n })\n );\n }\n }\n\n if (!opts.builtInRedactors || !opts.builtInRedactors.names || opts.builtInRedactors.names.enabled !== false) {\n childRedactors.push(new NameRedactor(opts.globalReplaceWith));\n }\n\n if (opts.customRedactors && opts.customRedactors.after) {\n opts.customRedactors.after.map(normalizeCustomRedactorConfig).forEach((redactor) => childRedactors.push(redactor));\n }\n return childRedactors;\n}","import { composeChildRedactors } from './composition';\nimport { CompositeRedactorOptions, ISyncRedactor, SyncCustomRedactorConfig } from './types';\n\n/** @public */\nexport interface SyncCompositeRedactorOptions extends CompositeRedactorOptions<SyncCustomRedactorConfig> {}\n\n/** @public */\nexport class SyncRedactor implements ISyncRedactor {\n private childRedactors: ISyncRedactor[] = [];\n\n constructor(opts?: SyncCompositeRedactorOptions) {\n this.childRedactors = composeChildRedactors(opts);\n }\n\n redact = (textToRedact: string) => {\n for (const redactor of this.childRedactors) {\n textToRedact = redactor.redact(textToRedact);\n }\n return textToRedact;\n };\n}","import { SyncRedactor } from \"./../redact/index\";\n\nconst customRedactors = {\n before: [\n {\n regexpPattern: /\\b[A-Z]\\d{7}\\b/g,\n replaceWith: 'PASSPORT_NUMBER'\n },\n {\n regexpPattern: /(?<=password: )(.*)/gi,\n replaceWith: '[REDACTED]'\n }\n ],\n};\n\n// Function to redact PII in text content\nfunction redactTextContent(text: string): string {\n const redactor = new SyncRedactor({\n builtInRedactors: {\n names: {\n replaceWith: 'ANONYMOUS_PERSON'\n }\n },\n customRedactors\n });\n return redactor.redact(text);\n}\n\n// Function to recursively find and redact PII in text nodes\nfunction redactPIIInDOM(element: Element) {\n const treeWalker = document.createTreeWalker(element, NodeFilter.SHOW_TEXT, null);\n let currentNode;\n\n while ((currentNode = treeWalker.nextNode())) {\n const originalText = currentNode.nodeValue as string;\n const redactedText = redactTextContent(originalText);\n\n if (originalText !== redactedText) {\n currentNode.nodeValue = redactedText;\n }\n }\n\n // Redact PII in input fields\n redactPIIInInputs(element);\n}\n\n// Function to redact PII from passwords in input fields\nfunction redactPIIInInputs(element: Element) {\n const inputs = Array.from(element.querySelectorAll('input[type=\"password\"]'));\n inputs.forEach(input => {\n const passwordInput = input as HTMLInputElement;\n passwordInput.value = '[REDACTED]';\n });\n}\n\nexport { redactPIIInDOM, redactTextContent };\n\n","/**\n * Options for checking render stability\n */\ninterface RenderStabilityOptions {\n /** Maximum time to wait for stability in milliseconds */\n maxWaitTime?: number;\n /** Number of stable frames required before considering the render complete */\n minStableFrames?: number;\n /** CSS selectors for elements that must be present and visible */\n requiredSelectors?: string[];\n}\n\n/**\n * Waits for the page render to stabilize by monitoring visual changes\n * Uses requestAnimationFrame for better performance and cross-browser compatibility\n */\nasync function waitForStableRender(\n options: RenderStabilityOptions = {}\n): Promise<void> {\n const {\n maxWaitTime = 2000,\n minStableFrames = 3,\n requiredSelectors = [],\n } = options;\n\n return new Promise<void>((resolve) => {\n const startTime = performance.now();\n let stableFrameCount = 0;\n let lastHeight = 0;\n let rafId: number;\n\n // Check if required elements are present and visible\n const checkRequiredElements = (): boolean => {\n return requiredSelectors.every((selector) => {\n const element = document.querySelector(selector);\n if (!element) return false;\n const rect = element.getBoundingClientRect();\n return rect.width > 0 && rect.height > 0;\n });\n };\n\n const checkStability = (): void => {\n // Check if we've exceeded maxWaitTime\n if (performance.now() - startTime > maxWaitTime) {\n cancelAnimationFrame(rafId);\n resolve();\n return;\n }\n\n // Get current document height\n const currentHeight = document.documentElement.offsetHeight;\n\n // Check if height is stable and required elements are present\n if (\n currentHeight === lastHeight &&\n (!requiredSelectors.length || checkRequiredElements())\n ) {\n stableFrameCount++;\n if (stableFrameCount >= minStableFrames) {\n cancelAnimationFrame(rafId);\n resolve();\n return;\n }\n } else {\n stableFrameCount = 0;\n }\n\n lastHeight = currentHeight;\n rafId = requestAnimationFrame(checkStability);\n };\n\n // Start checking once the document is ready\n if (document.readyState === 'loading') {\n document.addEventListener(\n 'DOMContentLoaded',\n () => {\n rafId = requestAnimationFrame(checkStability);\n },\n { once: true }\n );\n } else {\n rafId = requestAnimationFrame(checkStability);\n }\n });\n}\n\nexport { waitForStableRender, RenderStabilityOptions };\n","var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var 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 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 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 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 || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\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, i, 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 (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 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};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","class StackFrame {\r\n constructor(obj) {\r\n this.fileName = obj.fileName || '';\r\n this.functionName = obj.functionName || '';\r\n this.lineNumber = obj.lineNumber;\r\n this.columnNumber = obj.columnNumber;\r\n }\r\n toString() {\r\n const lineNumber = this.lineNumber || '';\r\n const columnNumber = this.columnNumber || '';\r\n if (this.functionName)\r\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\r\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\r\n }\r\n}\r\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\r\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\r\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\r\nconst ErrorStackParser = {\r\n parse: function (error) {\r\n if (!error) {\r\n return [];\r\n }\r\n if (typeof error.stacktrace !== 'undefined' ||\r\n typeof error['opera#sourceloc'] !== 'undefined') {\r\n return this.parseOpera(error);\r\n }\r\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\r\n return this.parseV8OrIE(error);\r\n }\r\n else if (error.stack) {\r\n return this.parseFFOrSafari(error);\r\n }\r\n else {\r\n throw new Error('Cannot parse given Error object');\r\n }\r\n },\r\n extractLocation: function (urlLike) {\r\n if (urlLike.indexOf(':') === -1) {\r\n return [urlLike];\r\n }\r\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\r\n const parts = regExp.exec(urlLike.replace(/[()]/g, ''));\r\n if (!parts)\r\n throw new Error(`Cannot parse given url: ${urlLike}`);\r\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\r\n },\r\n parseV8OrIE: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !!line.match(CHROME_IE_STACK_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf('(eval ') > -1) {\r\n line = line\r\n .replace(/eval code/g, 'eval')\r\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\r\n }\r\n let sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\r\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\r\n sanitizedLine = location\r\n ? sanitizedLine.replace(location[0], '')\r\n : sanitizedLine;\r\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\r\n const locationParts = this.extractLocation(location ? location[1] : tokens.pop());\r\n const functionName = tokens.join(' ') || undefined;\r\n const fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\r\n ? undefined\r\n : locationParts[0];\r\n return new StackFrame({\r\n functionName,\r\n fileName,\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n parseFFOrSafari: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf(' > eval') > -1) {\r\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\r\n }\r\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\r\n return new StackFrame({\r\n functionName: line,\r\n });\r\n }\r\n else {\r\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\r\n const matches = line.match(functionNameRegex);\r\n const functionName = matches && matches[1] ? matches[1] : undefined;\r\n const locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }\r\n }, this);\r\n },\r\n parseOpera: function (e) {\r\n if (!e.stacktrace ||\r\n (e.message.indexOf('\\n') > -1 &&\r\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\r\n return this.parseOpera9(e);\r\n }\r\n else if (!e.stack) {\r\n return this.parseOpera10(e);\r\n }\r\n else {\r\n return this.parseOpera11(e);\r\n }\r\n },\r\n parseOpera9: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\r\n const lines = e.message.split('\\n');\r\n const result = [];\r\n for (let i = 2, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera10: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\r\n const lines = e.stacktrace.split('\\n');\r\n const result = [];\r\n for (let i = 0, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n functionName: match[3] || undefined,\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera11: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\r\n !line.match(/^Error created at/));\r\n }, this);\r\n return filtered.map(function (line) {\r\n const tokens = line.split('@');\r\n const locationParts = this.extractLocation(tokens.pop());\r\n const functionCall = tokens.shift() || '';\r\n const functionName = functionCall\r\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\r\n .replace(/\\([^)]*\\)/g, '') || undefined;\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n};\n\nexport { ErrorStackParser, StackFrame };\n","function pathToSelector(node) {\r\n if (!node || !node.outerHTML) {\r\n return '';\r\n }\r\n let path = '';\r\n while (node.parentElement) {\r\n let name = node.localName;\r\n if (!name) {\r\n break;\r\n }\r\n name = name.toLowerCase();\r\n const parent = node.parentElement;\r\n const domSiblings = [];\r\n if (parent.children && parent.children.length > 0) {\r\n for (let i = 0; i < parent.children.length; i++) {\r\n const sibling = parent.children[i];\r\n if (sibling.localName && sibling.localName.toLowerCase) {\r\n if (sibling.localName.toLowerCase() === name) {\r\n domSiblings.push(sibling);\r\n }\r\n }\r\n }\r\n }\r\n if (domSiblings.length > 1) {\r\n name += `:eq(${domSiblings.indexOf(node)})`;\r\n }\r\n path = name + (path ? '>' + path : '');\r\n node = parent;\r\n }\r\n return path;\r\n}\r\nfunction isObject(obj) {\r\n return Object.prototype.toString.call(obj) === '[object Object]';\r\n}\r\nfunction isObjTooDeep(obj, limit) {\r\n if (limit === 0) {\r\n return true;\r\n }\r\n const keys = Object.keys(obj);\r\n for (const key of keys) {\r\n if (isObject(obj[key]) &&\r\n isObjTooDeep(obj[key], limit - 1)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction stringify(obj, stringifyOptions) {\r\n const options = {\r\n numOfKeysLimit: 50,\r\n depthOfLimit: 4,\r\n };\r\n Object.assign(options, stringifyOptions);\r\n const stack = [];\r\n const keys = [];\r\n return JSON.stringify(obj, function (key, value) {\r\n if (stack.length > 0) {\r\n const thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value)) {\r\n if (stack[0] === value) {\r\n value = '[Circular ~]';\r\n }\r\n else {\r\n value =\r\n '[Circular ~.' +\r\n keys.slice(0, stack.indexOf(value)).join('.') +\r\n ']';\r\n }\r\n }\r\n }\r\n else {\r\n stack.push(value);\r\n }\r\n if (value === null)\r\n return value;\r\n if (value === undefined)\r\n return 'undefined';\r\n if (shouldIgnore(value)) {\r\n return toString(value);\r\n }\r\n if (value instanceof Event) {\r\n const eventResult = {};\r\n for (const eventKey in value) {\r\n const eventValue = value[eventKey];\r\n if (Array.isArray(eventValue)) {\r\n eventResult[eventKey] = pathToSelector((eventValue.length ? eventValue[0] : null));\r\n }\r\n else {\r\n eventResult[eventKey] = eventValue;\r\n }\r\n }\r\n return eventResult;\r\n }\r\n else if (value instanceof Node) {\r\n if (value instanceof HTMLElement) {\r\n return value ? value.outerHTML : '';\r\n }\r\n return value.nodeName;\r\n }\r\n else if (value instanceof Error) {\r\n return value.stack\r\n ? value.stack + '\\nEnd of stack for Error object'\r\n : value.name + ': ' + value.message;\r\n }\r\n return value;\r\n });\r\n function shouldIgnore(_obj) {\r\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\r\n return true;\r\n }\r\n if (typeof _obj === 'function') {\r\n return true;\r\n }\r\n if (isObject(_obj) &&\r\n isObjTooDeep(_obj, options.depthOfLimit)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n function toString(_obj) {\r\n let str = _obj.toString();\r\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\r\n str = `${str.slice(0, options.stringLengthLimit)}...`;\r\n }\r\n return str;\r\n }\r\n}\n\nexport { stringify };\n","import { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nconst defaultLogOptions = {\r\n level: [\r\n 'assert',\r\n 'clear',\r\n 'count',\r\n 'countReset',\r\n 'debug',\r\n 'dir',\r\n 'dirxml',\r\n 'error',\r\n 'group',\r\n 'groupCollapsed',\r\n 'groupEnd',\r\n 'info',\r\n 'log',\r\n 'table',\r\n 'time',\r\n 'timeEnd',\r\n 'timeLog',\r\n 'trace',\r\n 'warn',\r\n ],\r\n lengthThreshold: 1000,\r\n logger: 'console',\r\n};\r\nfunction initLogObserver(cb, win, options) {\r\n const logOptions = (options\r\n ? Object.assign({}, defaultLogOptions, options)\r\n : defaultLogOptions);\r\n const loggerType = logOptions.logger;\r\n if (!loggerType) {\r\n return () => {\r\n };\r\n }\r\n let logger;\r\n if (typeof loggerType === 'string') {\r\n logger = win[loggerType];\r\n }\r\n else {\r\n logger = loggerType;\r\n }\r\n let logCount = 0;\r\n const cancelHandlers = [];\r\n if (logOptions.level.includes('error')) {\r\n if (window) {\r\n const errorHandler = (event) => {\r\n const message = event.message, error = event.error;\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n const payload = [stringify(message, logOptions.stringifyOptions)];\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n window.addEventListener('error', errorHandler);\r\n cancelHandlers.push(() => {\r\n if (window)\r\n window.removeEventListener('error', errorHandler);\r\n });\r\n }\r\n }\r\n for (const levelType of logOptions.level) {\r\n cancelHandlers.push(replace(logger, levelType));\r\n }\r\n return () => {\r\n cancelHandlers.forEach((h) => h());\r\n };\r\n function replace(_logger, level) {\r\n if (!_logger[level]) {\r\n return () => {\r\n };\r\n }\r\n return patch(_logger, level, (original) => {\r\n return (...args) => {\r\n original.apply(this, args);\r\n try {\r\n const trace = ErrorStackParser.parse(new Error())\r\n .map((stackFrame) => stackFrame.toString())\r\n .splice(1);\r\n const payload = args.map((s) => stringify(s, logOptions.stringifyOptions));\r\n logCount++;\r\n if (logCount < logOptions.lengthThreshold) {\r\n cb({\r\n level,\r\n trace,\r\n payload,\r\n });\r\n }\r\n else if (logCount === logOptions.lengthThreshold) {\r\n cb({\r\n level: 'warn',\r\n trace: [],\r\n payload: [\r\n stringify('The number of log records reached the threshold.'),\r\n ],\r\n });\r\n }\r\n }\r\n catch (error) {\r\n original('rrweb logger error:', error, ...args);\r\n }\r\n };\r\n });\r\n }\r\n}\r\nconst PLUGIN_NAME = 'rrweb/console@1';\r\nconst getRecordConsolePlugin = (options) => ({\r\n name: PLUGIN_NAME,\r\n observer: initLogObserver,\r\n options: options,\r\n});\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","class EventBuffer extends Array {\n constructor() {\n super();\n }\n\n isEmpty() {\n return this.length === 0;\n }\n\n isFull() {\n return this.length === 10;\n }\n\n flush() {\n return this.splice(0, this.length);\n }\n}\n\nexport default EventBuffer;\n","import { EventType } from 'rrweb';\nimport Agent from '.';\nimport EventBuffer from './eventBuffer';\n\nclass Sender {\n agent: Agent;\n eventBuffer: EventBuffer;\n\n constructor(agent: Agent) {\n this.agent = agent;\n this.eventBuffer = new EventBuffer();\n }\n\n start() {\n document.addEventListener('visibilitychange', () => {\n if (document.visibilityState === 'hidden') this.send();\n });\n }\n\n handle(event: any) {\n if (\n event.type === EventType.FullSnapshot &&\n this.eventBuffer.find((e) => e.type === EventType.FullSnapshot)\n ) {\n console.warn('Full snapshot already in buffer, ignoring...');\n return;\n }\n this.eventBuffer.push(event);\n if (this.eventBuffer.isFull()) this.send();\n }\n\n async send() {\n if (this.eventBuffer.isEmpty()) return;\n\n if (this.agent.sendEvents) {\n const events = this.eventBuffer.flush();\n await this.agent.sendEvents(events);\n } else {\n console.warn('No send function provided to Agent');\n }\n }\n}\n\nexport default Sender;\n","var 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 || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=types.js.map\n","import { getRecordConsolePlugin, record } from 'rrweb';\n\nconst defaultOptions = {\n recordOptions: {\n blockClass: 'data-bf-suppress',\n blockSelector: undefined,\n ignoreClass: 'data-bf-ignore',\n ignoreCSSAttributes: undefined,\n maskTextClass: 'data-bf-mask',\n maskTextSelector: undefined,\n maskAllInputs: true,\n maskInputOptions: { password: true },\n maskInputFn: undefined,\n maskTextFn: undefined,\n },\n recordConsolePlugin: {\n level: ['error'],\n lengthThreshold: Number.POSITIVE_INFINITY,\n stringifyOptions: {\n stringLengthLimit: Number.POSITIVE_INFINITY,\n numOfKeysLimit: Number.POSITIVE_INFINITY,\n depthOfLimit: Number.POSITIVE_INFINITY,\n },\n },\n};\n\nclass Recorder {\n static mockImplementation(arg0: () => any) {\n throw new Error('Method not implemented.');\n }\n options;\n stop: (() => void) | null;\n\n constructor(handleEvent: { (event: any): void; (event: any): void }) {\n this.options = {\n ...defaultOptions.recordOptions,\n recordConsolePlugin: defaultOptions.recordConsolePlugin, \n emit: handleEvent,\n plugins: [getRecordConsolePlugin()],\n // add custom options here\n };\n this.stop = null;\n }\n\n start() {\n this.stop = record(this.options) ?? null;\n }\n\n getMirror() {\n return record.mirror;\n }\n\n takeFullSnapshot() {\n return record.takeFullSnapshot();\n }\n}\n\nexport default Recorder;\n","import RecordingManager from './recordingManager';\n\nclass Stasher {\n recordingManager: RecordingManager;\n isRunning: boolean;\n events: any[][];\n\n constructor(recordingManager: RecordingManager) {\n this.recordingManager = recordingManager;\n this.isRunning = false;\n this.events = [];\n }\n\n start() {\n this.isRunning = true;\n }\n\n handle(event: any) {\n this.isInitializingEvent(event)\n ? this.events.push(event)\n : this.stop(event);\n }\n\n isInitializingEvent(event: { type: number }) {\n return (\n [2, 4].includes(event.type) ||\n this.isSelectionEvent(event) ||\n this.isConsoleEvent(event)\n );\n }\n\n isSelectionEvent(event: { type: any; data?: any }) {\n return event.type === 3 && event.data.source === 14;\n }\n\n isConsoleEvent(event: { type: any }) {\n return event.type === 6;\n }\n\n stop(event: any) {\n this.stamp(this.events, event.timestamp - 1);\n this.publish(...this.events, event);\n this.events = [];\n this.isRunning = false;\n }\n\n stamp(events: any[], timestamp: number) {\n events.forEach((event) => (event.timestamp = timestamp));\n }\n\n publish(...events: any[][][]) {\n events.forEach((event) => {\n this.recordingManager.publishEvent(event);\n });\n }\n}\n\nexport default Stasher;\n","/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n while (i < str.length) {\n var char = str[i];\n if (char === \"*\" || char === \"+\" || char === \"?\") {\n tokens.push({ type: \"MODIFIER\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"\\\\\") {\n tokens.push({ type: \"ESCAPED_CHAR\", index: i++, value: str[i++] });\n continue;\n }\n if (char === \"{\") {\n tokens.push({ type: \"OPEN\", index: i, value: str[i++] });\n continue;\n }\n if (char === \"}\") {\n tokens.push({ type: \"CLOSE\", index: i, value: str[i++] });\n continue;\n }\n if (char === \":\") {\n var name = \"\";\n var j = i + 1;\n while (j < str.length) {\n var code = str.charCodeAt(j);\n if (\n // `0-9`\n (code >= 48 && code <= 57) ||\n // `A-Z`\n (code >= 65 && code <= 90) ||\n // `a-z`\n (code >= 97 && code <= 122) ||\n // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n break;\n }\n if (!name)\n throw new TypeError(\"Missing parameter name at \".concat(i));\n tokens.push({ type: \"NAME\", index: i, value: name });\n i = j;\n continue;\n }\n if (char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \".concat(j));\n }\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n if (str[j] === \")\") {\n count--;\n if (count === 0) {\n j++;\n break;\n }\n }\n else if (str[j] === \"(\") {\n count++;\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \".concat(j));\n }\n }\n pattern += str[j++];\n }\n if (count)\n throw new TypeError(\"Unbalanced pattern at \".concat(i));\n if (!pattern)\n throw new TypeError(\"Missing pattern at \".concat(i));\n tokens.push({ type: \"PATTERN\", index: i, value: pattern });\n i = j;\n continue;\n }\n tokens.push({ type: \"CHAR\", index: i, value: str[i++] });\n }\n tokens.push({ type: \"END\", index: i, value: \"\" });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str, options) {\n if (options === void 0) { options = {}; }\n var tokens = lexer(str);\n var _a = options.prefixes, prefixes = _a === void 0 ? \"./\" : _a, _b = options.delimiter, delimiter = _b === void 0 ? \"/#?\" : _b;\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type)\n return tokens[i++].value;\n };\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined)\n return value;\n var _a = tokens[i], nextType = _a.type, index = _a.index;\n throw new TypeError(\"Unexpected \".concat(nextType, \" at \").concat(index, \", expected \").concat(type));\n };\n var consumeText = function () {\n var result = \"\";\n var value;\n while ((value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\"))) {\n result += value;\n }\n return result;\n };\n var isSafe = function (value) {\n for (var _i = 0, delimiter_1 = delimiter; _i < delimiter_1.length; _i++) {\n var char = delimiter_1[_i];\n if (value.indexOf(char) > -1)\n return true;\n }\n return false;\n };\n var safePattern = function (prefix) {\n var prev = result[result.length - 1];\n var prevText = prefix || (prev && typeof prev === \"string\" ? prev : \"\");\n if (prev && !prevText) {\n throw new TypeError(\"Must have text between two parameters, missing text after \\\"\".concat(prev.name, \"\\\"\"));\n }\n if (!prevText || isSafe(prevText))\n return \"[^\".concat(escapeString(delimiter), \"]+?\");\n return \"(?:(?!\".concat(escapeString(prevText), \")[^\").concat(escapeString(delimiter), \"])+?\");\n };\n while (i < tokens.length) {\n var char = tryConsume(\"CHAR\");\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n if (name || pattern) {\n var prefix = char || \"\";\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || safePattern(prefix),\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n var value = char || tryConsume(\"ESCAPED_CHAR\");\n if (value) {\n path += value;\n continue;\n }\n if (path) {\n result.push(path);\n path = \"\";\n }\n var open = tryConsume(\"OPEN\");\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? safePattern(prefix) : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\",\n });\n continue;\n }\n mustConsume(\"END\");\n }\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\nexport function tokensToFunction(tokens, options) {\n if (options === void 0) { options = {}; }\n var reFlags = flags(options);\n var _a = options.encode, encode = _a === void 0 ? function (x) { return x; } : _a, _b = options.validate, validate = _b === void 0 ? true : _b;\n // Compile all the tokens into regexps.\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\".concat(token.pattern, \")$\"), reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not repeat, but got an array\"));\n }\n if (value.length === 0) {\n if (optional)\n continue;\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to not be empty\"));\n }\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n }\n continue;\n }\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to match \\\"\").concat(token.pattern, \"\\\", but got \\\"\").concat(segment, \"\\\"\"));\n }\n path += token.prefix + segment + token.suffix;\n continue;\n }\n if (optional)\n continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\".concat(token.name, \"\\\" to be \").concat(typeOfMessage));\n }\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\nexport function match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\nexport function regexpToFunction(re, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.decode, decode = _a === void 0 ? function (x) { return x; } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m)\n return false;\n var path = m[0], index = m.index;\n var params = Object.create(null);\n var _loop_1 = function (i) {\n if (m[i] === undefined)\n return \"continue\";\n var key = keys[i - 1];\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n }\n else {\n params[key.name] = decode(m[i], key);\n }\n };\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n return { path: path, index: index, params: params };\n };\n}\n/**\n * Escape a regular expression string.\n */\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\nfunction regexpToRegexp(path, keys) {\n if (!keys)\n return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\",\n });\n execResult = groupsRegex.exec(path.source);\n }\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) { return pathToRegexp(path, keys, options).source; });\n return new RegExp(\"(?:\".concat(parts.join(\"|\"), \")\"), flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\nexport function tokensToRegexp(tokens, keys, options) {\n if (options === void 0) { options = {}; }\n var _a = options.strict, strict = _a === void 0 ? false : _a, _b = options.start, start = _b === void 0 ? true : _b, _c = options.end, end = _c === void 0 ? true : _c, _d = options.encode, encode = _d === void 0 ? function (x) { return x; } : _d, _e = options.delimiter, delimiter = _e === void 0 ? \"/#?\" : _e, _f = options.endsWith, endsWith = _f === void 0 ? \"\" : _f;\n var endsWithRe = \"[\".concat(escapeString(endsWith), \"]|$\");\n var delimiterRe = \"[\".concat(escapeString(delimiter), \"]\");\n var route = start ? \"^\" : \"\";\n // Iterate over the tokens and create our regexp string.\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n }\n else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n if (token.pattern) {\n if (keys)\n keys.push(token);\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\".concat(prefix, \"((?:\").concat(token.pattern, \")(?:\").concat(suffix).concat(prefix, \"(?:\").concat(token.pattern, \"))*)\").concat(suffix, \")\").concat(mod);\n }\n else {\n route += \"(?:\".concat(prefix, \"(\").concat(token.pattern, \")\").concat(suffix, \")\").concat(token.modifier);\n }\n }\n else {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n throw new TypeError(\"Can not repeat \\\"\".concat(token.name, \"\\\" without a prefix and suffix\"));\n }\n route += \"(\".concat(token.pattern, \")\").concat(token.modifier);\n }\n }\n else {\n route += \"(?:\".concat(prefix).concat(suffix, \")\").concat(token.modifier);\n }\n }\n }\n if (end) {\n if (!strict)\n route += \"\".concat(delimiterRe, \"?\");\n route += !options.endsWith ? \"$\" : \"(?=\".concat(endsWithRe, \")\");\n }\n else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\"\n ? delimiterRe.indexOf(endToken[endToken.length - 1]) > -1\n : endToken === undefined;\n if (!strict) {\n route += \"(?:\".concat(delimiterRe, \"(?=\").concat(endsWithRe, \"))?\");\n }\n if (!isEndDelimited) {\n route += \"(?=\".concat(delimiterRe, \"|\").concat(endsWithRe, \")\");\n }\n }\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\nexport function pathToRegexp(path, keys, options) {\n if (path instanceof RegExp)\n return regexpToRegexp(path, keys);\n if (Array.isArray(path))\n return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n}\n//# sourceMappingURL=index.js.map","import { match } from 'path-to-regexp';\nimport isLocal from './isLocal';\n\n/**\n * Determines if the current page can be discovered for recording purposes.\n *\n * @param recordingBlocklist - List of path patterns that should not be recorded\n * @param allowLocalhostRecording - Override to allow recording on localhost/127.0.0.1\n * @returns boolean - true if the current page can be discovered, false otherwise\n */\nexport default function canDiscover(\n recordingBlocklist: string[],\n allowLocalhostRecording?: boolean\n): boolean {\n if (isLocal() && !allowLocalhostRecording) {\n return false;\n }\n\n const currentPath = window.location.pathname;\n\n for (const pattern of recordingBlocklist) {\n try {\n const matchFn = match(pattern, { decode: decodeURIComponent });\n if (matchFn(currentPath)) {\n return false;\n }\n } catch (e) {\n // If pattern is not valid for path-to-regexp, try exact match\n if (pattern === currentPath) {\n return false;\n }\n }\n }\n\n return true;\n}\n","/**\n * Checks if the current hostname is a local development environment\n *\n * @returns boolean - true if the hostname is localhost or 127.0.0.1, false otherwise\n */\nexport default function isLocal() {\n if (typeof window === 'undefined') {\n return false;\n }\n\n const hostname = window.location.hostname;\n return hostname === 'localhost' || hostname === '127.0.0.1';\n}\n","import { record } from 'rrweb';\nimport { EventType, IncrementalSource, MouseInteractions } from '@rrweb/types';\nimport Agent from '.';\nimport Recorder from './recorder';\nimport Stasher from './stasher';\nimport canDiscover from '../common/canDiscover';\n\nconst USER_ACTIONS = [\n IncrementalSource.MouseMove,\n IncrementalSource.MouseInteraction,\n IncrementalSource.Scroll,\n IncrementalSource.ViewportResize,\n IncrementalSource.Input,\n IncrementalSource.TouchMove,\n IncrementalSource.MediaInteraction,\n IncrementalSource.Drag,\n];\n\nclass RecordingManager {\n agent: Agent;\n recorder: Recorder;\n stasher: Stasher;\n\n constructor(agent: Agent) {\n this.agent = agent;\n this.recorder = new Recorder(this.handleEvent.bind(this));\n this.stasher = new Stasher(this);\n }\n\n start() {\n this.recorder.start();\n }\n\n handleEvent(event: any) {\n const url = new URL(window.location.href);\n const cleanUrl = url.origin + url.pathname;\n\n if (\n !canDiscover(\n this.agent.recordingBlocklist,\n this.agent._allowLocalhostRecording\n )\n ) {\n return;\n }\n\n if (this.agent.sessionManager.isIdle) {\n if (this.isInteractiveEvent(event)) {\n this.agent.handleActivityDuringIdle();\n } else {\n // if the session is idle, discard non-interactive events to avoid session refresh\n return;\n }\n }\n\n if (this.isClick(event)) {\n let clickedNode = record.mirror.getNode(event.data.id);\n if (clickedNode && this.nodeIsInteresting(clickedNode)) {\n event['conversionData'] = {};\n event.conversionData.eventType = 'click';\n event.conversionData.textContent = (\n clickedNode as unknown as HTMLElement\n ).textContent;\n event.conversionData.htmlElement = (\n clickedNode as unknown as HTMLElement\n ).nodeName?.toLowerCase();\n event.conversionData.location = cleanUrl;\n }\n }\n\n if (this.isCustom(event)) {\n event['conversionData'] = {};\n event.conversionData.eventType = 'custom';\n event.conversionData.customEventType = event.data.tag;\n event.conversionData.location = cleanUrl;\n }\n\n if (this.stasher.isRunning) {\n this.stasher.handle(event);\n return;\n }\n\n this.publishEvent(event);\n }\n\n publishEvent(event: any) {\n this.agent.sender.handle(event);\n // restart the timer\n if (this.agent.timer) {\n this.agent.timer.restart();\n }\n }\n\n startRecorderWithStasher() {\n this.stasher.start();\n this.recorder = new Recorder(this.handleEvent.bind(this));\n this.recorder.start();\n }\n\n private isClick(event: {\n type: number;\n data: { source: number; type: number };\n }) {\n return (\n event.type === EventType.IncrementalSnapshot && // incremental snapshot event\n event.data.source === IncrementalSource.MouseInteraction && // source of incremental snapshot is a mouse action\n event.data.type === MouseInteractions.Click // mouse action is a click\n );\n }\n\n private nodeIsInteresting(clickedNode: Node): boolean {\n return (\n clickedNode.nodeName === 'BUTTON' || clickedNode.nodeName === 'ANCHOR'\n );\n }\n\n private isCustom(event: { type: number }) {\n return event.type === EventType.Custom;\n }\n\n private isInteractiveEvent(event: any) {\n return (\n event.type === EventType.IncrementalSnapshot &&\n USER_ACTIONS.includes(event.data?.source)\n );\n }\n}\n\nexport default RecordingManager;\n","import Agent from '.';\n\nclass Timer {\n agent: Agent;\n MAX_IDLE_TIME: number;\n timeoutId: number;\n\n constructor(agent: Agent, MAX_IDLE_TIME: number) {\n this.agent = agent;\n this.MAX_IDLE_TIME = MAX_IDLE_TIME;\n this.timeoutId = 0;\n }\n\n restart() {\n this.stop();\n this.start();\n }\n\n stop() {\n clearTimeout(this.timeoutId);\n }\n\n start() {\n this.timeoutId = window.setTimeout(\n this.agent.handleTimeout.bind(this.agent),\n this.MAX_IDLE_TIME\n );\n }\n}\n\nexport default Timer;\n","export type SessionCallbacks = {\n takeFullSnapshot?: () => void;\n};\n\ntype SessionState = 'new' | 'changed' | 'active' | 'expired';\n\n/**\n * Manages session state and transitions for the tracker\n * This mostly concerns session recording events as the analytics events are considered the 'master' session\n * and the session recording needs to know the session state from the backend which is initiated by analytic events\n */\nexport class SessionManager {\n private static instance: SessionManager;\n private sessionId: string | null = null;\n private lastScreenViewEventTime: number = 0;\n public isIdle: boolean = false;\n\n static getInstance(): SessionManager {\n if (!SessionManager.instance) {\n SessionManager.instance = new SessionManager();\n }\n return SessionManager.instance;\n }\n\n /**\n * Determines the current session state based on previous and current session IDs\n */\n private determineSessionState(newSessionId: string | null): SessionState {\n if (!this.sessionId && newSessionId) {\n return 'new';\n }\n if (this.sessionId && newSessionId && this.sessionId !== newSessionId) {\n return 'changed';\n }\n if (this.sessionId === newSessionId && this.sessionId !== null) {\n return 'active';\n }\n return 'expired';\n }\n\n /**\n * Handles session state transitions and triggers appropriate actions\n */\n private handleSessionTransition(\n state: SessionState,\n callbacks: SessionCallbacks\n ): void {\n switch (state) {\n case 'new':\n case 'changed':\n this.updateIdleStatus(false);\n callbacks.takeFullSnapshot?.();\n break;\n }\n }\n\n /**\n * Updates the session state based on a new session ID\n * @param newSessionId The new session ID from the server\n * @param callbacks Optional callbacks for session state changes\n */\n updateSession(\n newSessionId: string | null,\n callbacks: SessionCallbacks = {}\n ): void {\n const sessionState = this.determineSessionState(newSessionId);\n this.handleSessionTransition(sessionState, callbacks);\n this.sessionId = newSessionId;\n }\n\n updateLastScreenViewEventTime() {\n this.lastScreenViewEventTime = Date.now();\n }\n\n updateIdleStatus(isIdle: boolean) {\n this.isIdle = isIdle;\n }\n\n getLastScreenViewEventTime() {\n return this.lastScreenViewEventTime;\n }\n\n getCurrentSessionId(): string | null {\n return this.sessionId;\n }\n}\n\nexport default SessionManager;\n","import { record } from 'rrweb';\nimport Sender from './sender';\nimport RecordingManager from './recordingManager';\nimport Timer from './timer';\nimport SessionManager from '../session/sessionManager';\n\n// set idle time to 60 seconds\nconst MAX_IDLE_TIME = 60 * 1000;\nconst SCREEN_VIEW_EVENT_COOLDOWN = 5 * 1000;\n\nexport default class Agent {\n recordingManager: RecordingManager;\n sender: Sender;\n MAX_IDLE_TIME: any;\n timer: Timer | undefined;\n sendEvents: ((events: any[]) => Promise<void>) | undefined;\n sendScreenViewEvent: ((props: any) => void) | undefined;\n recordingBlocklist: string[] = [];\n _allowLocalhostRecording?: boolean;\n _allowScreenRecording?: boolean; // New property for screen recording\n private sessionCreationPromise: Promise<void> | null = null;\n private static _sessionManager: SessionManager = SessionManager.getInstance();\n\n get sessionManager(): SessionManager {\n return Agent._sessionManager;\n }\n\n constructor() {\n this.recordingManager = new RecordingManager(this);\n this.sender = new Sender(this);\n }\n\n async start({\n sendEvents,\n sendScreenViewEvent,\n recordingBlocklist,\n _allowLocalhostRecording,\n _allowScreenRecording,\n }: {\n sendEvents: (events: any[]) => Promise<void>;\n sendScreenViewEvent: (props: any) => void;\n recordingBlocklist: string[];\n _allowLocalhostRecording?: boolean;\n _allowScreenRecording?: boolean;\n }) {\n this.sendEvents = sendEvents;\n this.sendScreenViewEvent = sendScreenViewEvent;\n this.recordingBlocklist = recordingBlocklist;\n this._allowLocalhostRecording = _allowLocalhostRecording;\n this._allowScreenRecording = _allowScreenRecording;\n this.MAX_IDLE_TIME = MAX_IDLE_TIME || 60 * 1000;\n this.timer = new Timer(this, this.MAX_IDLE_TIME);\n\n this.sender.start();\n this.recordingManager.start();\n }\n\n handleTimeout() {\n if (this.recordingManager.recorder.stop) {\n this.recordingManager.recorder.stop();\n }\n this.sender.send();\n this.recordingManager.startRecorderWithStasher();\n Agent._sessionManager.updateIdleStatus(true);\n }\n\n handleActivityDuringIdle() {\n if (Agent._sessionManager.getCurrentSessionId() !== null) {\n return;\n }\n\n // if a screen view event was sent less than 5 seconds ago, do not send another one\n if (\n Agent._sessionManager.getLastScreenViewEventTime() >\n Date.now() - SCREEN_VIEW_EVENT_COOLDOWN\n ) {\n return;\n }\n\n // if session creation is already in progress, do not attempt to create another one\n if (this.sessionCreationPromise) {\n return;\n }\n\n this.sessionCreationPromise = this.createSession().finally(() => {\n this.sessionCreationPromise = null;\n });\n }\n\n takeFullSnapshot() {\n return this.recordingManager.recorder.takeFullSnapshot();\n }\n\n static handleCustomEvent(customEventType: string) {\n record.addCustomEvent(customEventType, null);\n }\n\n private async createSession(): Promise<void> {\n if (!this.sendScreenViewEvent) {\n return;\n }\n\n try {\n this.sendScreenViewEvent({\n __path: window.location.href,\n __title: document.title,\n __is_session_refresh: true,\n });\n } catch (error) {\n console.error('Failed to send screen_view event:', error);\n }\n }\n}\n","/* eslint-disable @typescript-eslint/unbound-method */\n\nimport type {\n TrackerSdkOptions,\n TrackProperties,\n} from '@brainfish-ai/tracker-sdk';\nimport { TrackerSdk } from '@brainfish-ai/tracker-sdk';\nimport { screenshot } from './screenshot/snapshot';\nimport Agent from './record';\nimport SessionManager from './session/sessionManager';\nimport canDiscover from './common/canDiscover';\n\nexport type * from '@brainfish-ai/tracker-sdk';\n\nexport type TrackerOptions = TrackerSdkOptions & {\n trackOutgoingLinks?: boolean;\n trackScreenViews?: boolean;\n trackAttributes?: boolean;\n trackHashChanges?: boolean;\n enableRecording?: boolean;\n recordingBlocklist?: string[];\n _allowLocalhostRecording?: boolean;\n _allowScreenRecording?: boolean;\n};\n\nfunction toCamelCase(str: string) {\n return str.replace(/([-_][a-z])/gi, ($1) =>\n $1.toUpperCase().replace('-', '').replace('_', '')\n );\n}\n\nexport const VERSION = import.meta.env.PACKAGE_VERSION as string;\n\nexport class Tracker extends TrackerSdk {\n private lastPath = '';\n private debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private readonly agent: Agent;\n private readonly sessionManager = SessionManager.getInstance();\n private readonly recordingBlocklist: string[] = [];\n private readonly MAX_SCREENSHOT_SIZE = 750 * 1024; // 750KB\n\n constructor(public options: TrackerOptions) {\n super({\n sdk: 'web',\n sdkVersion: VERSION,\n ...options,\n });\n\n this.agent = new Agent();\n this.recordingBlocklist = options.recordingBlocklist || [];\n\n if (!this.isServer()) {\n this.setGlobalProperties({\n __referrer: document.referrer,\n });\n\n // track outgoing links\n if (this.options.trackOutgoingLinks) {\n this.trackOutgoingLinks();\n }\n\n // track screen views\n if (this.options.trackScreenViews) {\n this.trackScreenViews();\n }\n\n // track attributes on buttons and links\n if (this.options.trackAttributes) {\n this.trackAttributes();\n }\n\n // start recording events if recording is enabled\n if (this.options.enableRecording && this.options._allowScreenRecording) {\n this.startRecording();\n }\n }\n }\n\n private debounce(func: () => void, delay: number) {\n this.debounceTimer && clearTimeout(this.debounceTimer);\n this.debounceTimer = setTimeout(func, delay);\n }\n\n private isServer() {\n return typeof document === 'undefined';\n }\n\n public trackOutgoingLinks() {\n if (this.isServer()) {\n return;\n }\n\n document.addEventListener('click', (event) => {\n const target = event.target as HTMLElement;\n const link = target.closest('a');\n if (link && target) {\n const href = link.getAttribute('href');\n if (href?.startsWith('http')) {\n super.track('link_out', {\n href,\n text:\n link.innerText ||\n link.getAttribute('title') ||\n target.getAttribute('alt') ||\n target.getAttribute('title'),\n });\n }\n }\n });\n }\n\n public trackScreenViews() {\n if (this.isServer()) {\n return;\n }\n\n this.screenView();\n\n const oldPushState = history.pushState;\n history.pushState = function pushState(...args) {\n const ret = oldPushState.apply(this, args);\n window.dispatchEvent(new Event('pushstate'));\n window.dispatchEvent(new Event('locationchange'));\n return ret;\n };\n\n const oldReplaceState = history.replaceState;\n history.replaceState = function replaceState(...args) {\n const ret = oldReplaceState.apply(this, args);\n window.dispatchEvent(new Event('replacestate'));\n window.dispatchEvent(new Event('locationchange'));\n return ret;\n };\n\n window.addEventListener('popstate', function () {\n window.dispatchEvent(new Event('locationchange'));\n });\n\n // Use a longer debounce to allow for render stability check\n const eventHandler = () => this.debounce(() => this.screenView(), 100);\n\n if (this.options.trackHashChanges) {\n window.addEventListener('hashchange', eventHandler);\n } else {\n window.addEventListener('locationchange', eventHandler);\n }\n }\n\n public trackAttributes() {\n if (this.isServer()) {\n return;\n }\n\n document.addEventListener('click', (event) => {\n const target = event.target as HTMLElement;\n const btn = target.closest('button');\n const anchor = target.closest('a');\n const element = btn?.getAttribute('data-track')\n ? btn\n : anchor?.getAttribute('data-track')\n ? anchor\n : null;\n if (element) {\n const properties: Record<string, unknown> = {};\n for (const attr of element.attributes) {\n if (attr.name.startsWith('data-') && attr.name !== 'data-track') {\n properties[toCamelCase(attr.name.replace(/^data-/, ''))] =\n attr.value;\n }\n }\n const name = element.getAttribute('data-track');\n if (name) {\n super.track(name, properties);\n }\n }\n });\n }\n\n public startRecording() {\n if (this.isServer()) {\n return;\n }\n\n // start recording events\n this.agent.start({\n sendEvents: this.recordEventsToServer.bind(this),\n sendScreenViewEvent: this.sendScreenViewEvent.bind(this),\n recordingBlocklist: this.recordingBlocklist,\n _allowLocalhostRecording: this.options._allowLocalhostRecording,\n });\n }\n\n async screenView(properties?: TrackProperties): Promise<void>;\n async screenView(path: string, properties?: TrackProperties): Promise<void>;\n async screenView(\n pathOrProperties?: string | TrackProperties,\n propertiesOrUndefined?: TrackProperties\n ): Promise<void> {\n if (this.isServer()) {\n return;\n }\n\n let path: string;\n let properties: TrackProperties | undefined;\n\n if (typeof pathOrProperties === 'string') {\n path = pathOrProperties;\n properties = propertiesOrUndefined;\n } else {\n path = window.location.href;\n properties = pathOrProperties;\n }\n\n if (this.lastPath === path) {\n return;\n }\n\n this.lastPath = path;\n\n const trackProps: any = {\n ...(properties ?? {}),\n __path: path,\n __title: document.title,\n };\n\n // only capture screenshot if recording is enabled\n if (\n this.options.enableRecording &&\n canDiscover(\n this.recordingBlocklist,\n this.options._allowLocalhostRecording\n )\n ) {\n try {\n const snapshot = await screenshot();\n if (snapshot) {\n if (snapshot.length <= this.MAX_SCREENSHOT_SIZE) {\n trackProps.__screenshot = snapshot;\n } else {\n trackProps.__screenshotOmitted = true;\n trackProps.__screenshotSizeInBytes = snapshot.length;\n }\n }\n } catch (err: any) {\n trackProps.__screenshotOmitted = true;\n trackProps.__screenshotError = err.message;\n }\n }\n\n this.sendScreenViewEvent(trackProps);\n }\n\n /**\n * Handles recording events to the server and manages session state transitions.\n * @param events Array of events to be recorded\n * @returns Promise that resolves when events are recorded and session is managed\n */\n\n // NB: this responds to the websocket request, payload is the response\n private async recordEventsToServer(events: unknown[]): Promise<void> {\n this.record(events, (payload: { sessionId: string | null }) => {\n this.sessionManager.updateSession(payload.sessionId, {\n takeFullSnapshot: () => {\n this.agent.takeFullSnapshot();\n },\n });\n });\n }\n\n private sendScreenViewEvent(props: any) {\n super.track('screen_view', props);\n this.sessionManager.updateLastScreenViewEventTime();\n }\n}\n","import { captureScreenshot } from \"./capture\";\nimport { redactPIIInDOM } from \"./redact\";\nimport { waitForStableRender, RenderStabilityOptions } from \"./renderStability\";\n\n/**\n * Takes a screenshot of the current page after ensuring content is stably rendered\n * @param options Optional configuration for render stability checking\n * @returns Promise resolving to the screenshot as a data URL\n */\nasync function screenshot(options?: RenderStabilityOptions) {\n try {\n // Wait for page to be stably rendered\n await waitForStableRender(options);\n\n // Clone the document body to avoid modifying the original\n const clonedBody = document.body.cloneNode(true) as HTMLElement;\n\n // Redact PII in text content\n redactPIIInDOM(clonedBody);\n\n // Capture the screenshot\n const imageDataUrl = await captureScreenshot(clonedBody);\n\n return imageDataUrl;\n } catch (error) {\n console.error('An error occurred:', error);\n }\n}\n\nexport { screenshot };\n"],"names":["PACKET_TYPES","Object","create","PACKET_TYPES_REVERSE","keys","forEach","key","ERROR_PACKET","type","data","withNativeBlob","Blob","prototype","toString","call","withNativeArrayBuffer","ArrayBuffer","isView","obj","buffer","encodePacket","supportsBinary","callback","encodeBlobAsBase64","fileReader","FileReader","onload","content","result","split","readAsDataURL","toArray","Uint8Array","byteOffset","byteLength","TEXT_ENCODER","chars","lookup","i","charCodeAt","decodePacket","encodedPacket","binaryType","mapBinary","charAt","decodeBase64Packet","substring","length","decoded","base64","encoded1","encoded2","encoded3","encoded4","bufferLength","len","p","arraybuffer","bytes","SEPARATOR","String","createPacketEncoderStream","TransformStream","packet","controller","arrayBuffer","then","encoded","TextEncoder","encode","payloadLength","header","DataView","setUint8","view","setUint16","setBigUint64","BigInt","enqueue","TEXT_DECODER","totalLength","chunks","reduce","acc","chunk","concatChunks","size","shift","j","slice","Emitter","on","addEventListener","event","fn","this","_callbacks","push","once","off","apply","arguments","removeListener","removeAllListeners","removeEventListener","cb","callbacks","splice","emit","args","Array","emitReserved","listeners","hasListeners","nextTick","Promise","resolve","setTimeoutFn","globalThisShim","self","window","Function","pick","attr","k","hasOwnProperty","NATIVE_SET_TIMEOUT","globalThis","setTimeout","NATIVE_CLEAR_TIMEOUT","clearTimeout","installTimerFunctions","opts","useNativeTimers","bind","clearTimeoutFn","randomString","Date","now","Math","random","TransportError","Error","reason","description","context","super","Transport","writable","query","socket","forceBase64","open","readyState","doOpen","doClose","onClose","packets","write","onOpen","onPacket","details","onPause","schema","_hostname","_port","path","_query","hostname","indexOf","port","secure","Number","encodedQuery","str","encodeURIComponent","Polling","_polling","name","_poll","pause","total","doPoll","encodedPayload","encodedPackets","decodedPacket","close","count","join","doWrite","timestampRequests","timestampParam","sid","b64","createUri","value","XMLHttpRequest","err","hasCORS","empty","BaseXHR","location","isSSL","protocol","xd","req","request","method","xhrStatus","onError","onData","pollXhr","Request","createRequest","uri","_opts","_method","_uri","_data","undefined","_create","_a","xdomain","xhr","_xhr","extraHeaders","setDisableHeaderCheck","setRequestHeader","e","cookieJar","addCookies","withCredentials","requestTimeout","timeout","onreadystatechange","parseCookies","getResponseHeader","status","_onLoad","_onError","send","document","_index","requestsCount","requests","_cleanup","fromError","abort","responseText","attachEvent","unloadHandler","hasXHR2","newRequest","responseType","concat","isReactNative","navigator","product","toLowerCase","BaseWS","protocols","headers","ws","createSocket","addEventListeners","onopen","autoUnref","_socket","unref","onclose","closeEvent","onmessage","ev","onerror","lastPacket","WebSocketCtor","WebSocket","MozWebSocket","transports","websocket","_packet","webtransport","_transport","WebTransport","transportOptions","closed","catch","ready","createBidirectionalStream","stream","decoderStream","maxPayload","TextDecoder","state","expectedLength","isBinary","headerArray","getUint16","n","getUint32","pow","decode","MAX_SAFE_INTEGER","reader","readable","pipeThrough","getReader","encoderStream","pipeTo","_writer","getWriter","read","done","polling","assign","re","parts","parse","src","b","replace","m","exec","source","host","authority","ipv6uri","pathNames","regx","names","queryKey","$0","$1","$2","withEventListeners","OFFLINE_EVENT_LISTENERS","listener","SocketWithoutUpgrade","writeBuffer","_prevBufferLen","_pingInterval","_pingTimeout","_maxPayload","_pingTimeoutTime","Infinity","parsedUri","_transportsByName","t","transportName","agent","upgrade","rememberUpgrade","addTrailingSlash","rejectUnauthorized","perMessageDeflate","threshold","closeOnBeforeunload","qs","qry","pairs","l","pair","decodeURIComponent","_beforeunloadEventListener","transport","_offlineEventListener","_onClose","_cookieJar","createCookieJar","_open","EIO","id","priorWebsocketSuccess","createTransport","setTransport","_onDrain","_onPacket","flush","onHandshake","JSON","_sendPacket","_resetPingTimeout","code","pingInterval","pingTimeout","_pingTimeoutTimer","delay","upgrading","_getWritablePackets","payloadSize","c","ceil","hasExpired","msg","options","compress","cleanupAndClose","waitForUpgrade","tryAllTransports","SocketWithUpgrade","constructor","_upgrades","_probe","failed","onTransportOpen","cleanup","freezeTransport","error","onTransportClose","onupgrade","to","_filterUpgrades","upgrades","filteredUpgrades","o","map","DEFAULT_TRANSPORTS","filter","withNativeFile","File","hasBinary","toJSON","isArray","deconstructPacket","buffers","packetData","pack","_deconstructPacket","attachments","placeholder","_placeholder","num","newData","reconstructPacket","_reconstructPacket","RESERVED_EVENTS","PacketType","isObject","Decoder","reviver","reconstructor","decodeString","isBinaryEvent","BINARY_EVENT","BINARY_ACK","EVENT","ACK","BinaryReconstructor","takeBinaryData","start","buf","nsp","next","payload","tryParse","substr","isPayloadValid","CONNECT","DISCONNECT","CONNECT_ERROR","destroy","finishedReconstruction","reconPack","binData","replacer","encodeAsString","encodeAsBinary","stringify","deconstruction","unshift","freeze","connect","connect_error","disconnect","disconnecting","newListener","Socket","io","connected","recovered","receiveBuffer","sendBuffer","_queue","_queueSeq","ids","acks","flags","auth","_autoConnect","disconnected","subEvents","subs","onpacket","_readyState","_b","_c","retries","fromQueue","volatile","_addToQueue","ack","pop","_registerAckCallback","isTransportWritable","engine","isConnected","_hasPingExpired","notifyOutgoingListeners","ackTimeout","timer","withError","reject","arg1","arg2","tryCount","pending","responseArgs","_drainQueue","force","_sendConnectPacket","_pid","pid","offset","_lastOffset","_clearAcks","some","onconnect","onevent","onack","ondisconnect","message","emitEvent","_anyListeners","sent","emitBuffered","subDestroy","_anyOutgoingListeners","Backoff","ms","min","max","factor","jitter","attempts","duration","rand","deviation","floor","reset","setMin","setMax","setJitter","Manager","nsps","reconnection","reconnectionAttempts","reconnectionDelay","reconnectionDelayMax","randomizationFactor","backoff","_parser","parser","encoder","Encoder","decoder","autoConnect","v","_reconnection","skipReconnect","_reconnectionAttempts","_reconnectionDelay","_randomizationFactor","_reconnectionDelayMax","_timeout","_reconnecting","reconnect","Engine","openSubDestroy","maybeReconnectOnOpen","errorSub","onping","ondata","ondecoded","add","active","_close","onreconnect","attempt","cache","parsed","loc","test","href","sameNamespace","forceNew","multiplex","Client","config","baseUrl","token","authToken","text","uint8Array","btoa","binaryString","from","byte","fromCharCode","Buffer","atob","eventName","responseCallback","handler","TTLSet","defaultTTL","items","Map","setInterval","item","ttl","effectiveTTL","expireAt","set","get","delete","clear","entries","NudgeCTABlockActionType","NudgeCTABlockType","TrackerSdk","client","userId","global","queue","knownEvents","eventListeners","recentNudgeIds","sdk_name","sdk","sdk_version","sdkVersion","apiUrl","accessKey","setupIncomingPayloadHandler","init","waitForUser","handleIncomingPayload","nudgeId","has","dispatchEventListeners","includes","h","disabled","properties","__spreadValues","track","iframe","querySelector","sendMessage","contentWindow","postMessage","__spreadProps","events","__async","alias","increment","uuid","counter","__pow","arrayLike","arr","px","node","styleProperty","val","ownerDocument","defaultView","getComputedStyle","getPropertyValue","parseFloat","getImageSize","targetNode","width","leftBorder","rightBorder","clientWidth","height","topBorder","bottomBorder","clientHeight","canvasDimensionLimit","createImage","url","img","Image","crossOrigin","decoding","async","nodeToDataURL","xmlns","svg","createElementNS","foreignObject","setAttribute","appendChild","XMLSerializer","serializeToString","html","isInstanceOfElement","instance","nodePrototype","getPrototypeOf","getPseudoElementStyle","className","pseudo","style","selector","cssText","getPropertyPriority","createTextNode","clonePseudoElement","nativeNode","clonedNode","styleElement","createElement","WOFF","JPEG","mimes","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","webp","getMimeType","extension","match","isDataUrl","search","fetchAsDataURL","process","res","fetch","blob","onloadend","resourceToDataURL","resourceUrl","contentType","cacheKey","includeQueryParams","dataURL","cacheBust","getTime","fetchRequestInit","mimeType","imagePlaceholder","console","warn","cloneSingleNode","HTMLCanvasElement","canvas","toDataURL","cloneNode","HTMLVideoElement","video","currentSrc","ctx","getContext","drawImage","poster","HTMLIFrameElement","contentDocument","body","isSlotElement","tagName","toUpperCase","decorate","Element","targetStyle","sourceStyle","transformOrigin","endsWith","reducedFont","getAttribute","setProperty","HTMLTextAreaElement","innerHTML","HTMLInputElement","HTMLSelectElement","clonedSelect","selectedOption","children","find","child","isRoot","assignedNodes","childNodes","shadowRoot","deferred","clonedChild","clone","uses","querySelectorAll","processedDefs","exist","definition","nodes","values","ns","position","overflow","display","defs","URL_REGEX","URL_WITH_FORMAT_REGEX","FONT_SRC_REGEX","embed","resourceURL","baseURL","getContentFromUrl","resolvedURL","doc","implementation","createHTMLDocument","base","a","head","escaped","RegExp","shouldEmbed","embedResources","filteredCSSText","preferredFontFormat","format","urls","raw","quotation","css","embedProp","propName","propValue","cssString","embedImages","isImageElement","HTMLImageElement","SVGImageElement","baseVal","image","loading","srcset","deferreds","all","cssFetchCache","fetchCSS","embedFonts","regexUrl","loadFonts","startsWith","URL","parseCSS","keyframesRegex","matches","importRegex","unifiedRegex","lastIndex","parseWebFontRules","styleSheets","cssRules","ret","sheet","index","CSSRule","IMPORT_RULE","importIndex","metadata","rule","insertRule","inline","FONT_FACE_RULE","embedWebFonts","fontEmbedCSS","skipFonts","rules","parentStyleSheet","styleNode","sytleContent","firstChild","insertBefore","toSvg","backgroundColor","manual","toCanvas","ratio","pixelRatio","FINAL_PROCESS","env","devicePixelRatio","parseInt","isNaN","canvasWidth","canvasHeight","skipAutoScale","fillStyle","fillRect","captureScreenshot","domBody","documentElement","scrollHeight","scrollWidth","styles","styleSheet","textContent","quality","transform","mode","classname","classList","contains","removeChild","greetingOrClosing","genericName","wellKnownNames","NameRedactor","replaceWith","textToRedact","greetingOrClosingMatch","genericNameMatch","suffix","streetAddress","snakeCase","letter","SimpleRegexpRedactor","regexpMatcher","regexpPattern","normalizeCustomRedactorConfig","redactorConfig","SyncRedactor","childRedactors","redact","redactor","customRedactors","before","regexpName","simpleRegexpBuiltIns","builtInRedactors","enabled","globalReplaceWith","after","redactPIIInDOM","element","treeWalker","createTreeWalker","NodeFilter","SHOW_TEXT","currentNode","nextNode","originalText","nodeValue","redactedText","input","waitForStableRender","maxWaitTime","minStableFrames","requiredSelectors","startTime","performance","rafId","stableFrameCount","lastHeight","checkStability","cancelAnimationFrame","currentHeight","offsetHeight","every","rect","getBoundingClientRect","requestAnimationFrame","NodeType","isShadowRoot","isNativeShadowDom","getCssRulesString","s","getCssRuleString","cssStringified","Mirror","idNodeMap","nodeMetaMap","WeakMap","getId","getMeta","getNode","getIds","removeNodeFromMap","_this","childNode","hasNode","meta","oldNode","maskInputValue","maskInputOptions","maskInputFn","repeat","ORIGINAL_ATTRIBUTE_NAME","canvasService","canvasCtx","_id","tagNameRegex","genId","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","stack","_i","parts_1","part","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","attributeValue","trim","isSVGElement","el","Boolean","ownerSVGElement","getHref","transformAttribute","pos","collectCharacters","regEx","output","descriptorsStr","inParens","classMatchesRegex","regex","checkAncestors","nodeType","ELEMENT_NODE","parentNode","eIndex","needMaskingText","maskTextClass","maskTextSelector","parentElement","closest","serializeNode","mirror","blockClass","blockSelector","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","docId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","HTMLFormElement","processedTagName","attributes","stylesheet","rel","_cssText","innerText","checked","selected","__context","x","y","getImageData","originalGetImageData","Uint32Array","pixel","rr_dataURL","canvasDataURL","blankCanvas","image_1","oldValue_1","recordInlineImage","naturalWidth","naturalHeight","removeAttribute","complete","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","_d","class","rr_width","rr_height","rr_src","isSVG","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","lowerIfExists","maybeAttr","serializeNodeWithId","skipChild","slimDOMOptions","_e","_f","onSerialize","onIframeLoad","_g","iframeLoadTimeout","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","_k","_l","preserveWhiteSpace","_serializedNode","sn","comment","script","as","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","serializedNode","recordChild","isShadowHost","headWhitespace","bypassOptions","_m","serializedChildNode","_o","_p","isShadow","iframeEl","win","fired","blankUrl","timer_1","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","serializedLinkNode","target","capture","passive","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","func","wait","previous","leading","remaining","trailing","hookSetter","d","isRevoked","original","getOwnPropertyDescriptor","defineProperty","patch","replacement","wrapped","defineProperties","__rrweb_original__","enumerable","getWindowHeight","innerHeight","getWindowWidth","innerWidth","isBlocked","isIgnored","isAncestorRemoved","isTouchEvent","changedTouches","isSerializedIframe","nodeName","isSerializedStylesheet","hasShadowRoot","Proxy","Reflect","prop","receiver","StyleSheetMirror","styleIDMap","idStyleMap","newId","generateId","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","CanvasContext","CanvasContext2","isNodeInLinkedList","DoubleLinkedList","current","__ln","moveKey","parentId","MutationBuffer","frozen","locked","texts","removes","mapRemoves","movedMap","addedSet","Set","movedSet","droppedSet","processMutations","mutations","processMutation","adds","addList","getNextId","nextId","pushAdd","shadowHost","getRootNode","Node","DOCUMENT_FRAGMENT_NODE","rootShadowHost","notInDoc","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","childSn","attachIframe","observeAttachShadow","attachLinkElement","isParentRemoved","isAncestorInSet","candidate","_node","unhandledNode","removeNode","attribute","mutationCb","oldValue","attributeName","old","styleObj","pname","newValue","newPriority","addedNodes","genAdds","removedNodes","nodeId","deepDelete","targetId","childN","canvasManager","unfreeze","lock","unlock","addsSet","_isParentRemoved","r","_isAncestorInSet","mutationBuffers","isCSSGroupingRuleSupported","CSSGroupingRule","isCSSMediaRuleSupported","CSSMediaRule","isCSSSupportsRuleSupported","CSSSupportsRule","isCSSConditionRuleSupported","CSSConditionRule","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","eventKey","clientX","clientY","initScrollObserver","scrollCb","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","enable","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","parentRule","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","configurable","sheets","adoptStyleSheets","initObservers","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","mutation","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","mutationObserver","mousemoveHandler","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","isChecked","cbWithDedup","lastInputValue","propertyDescriptor","hookProperties","HTMLOptionElement","mediaInteractionHandler","volume","muted","playbackRate","media","styleSheetObserver","CSSStyleSheet","deleteRule","replaceSync","supportedNestedCSSRuleTypes","unmodifiedFunctions","typeKey","adoptedStyleSheetObserver","styleDeclarationObserver","ignoreCSSAttributes","CSSStyleDeclaration","priority","removeProperty","remove","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","restoreHandler","fonts","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","end","pluginHandlers","plugin","plugins","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","loadListener","isAttachIframe","adoptedStyleSheets","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","iframeMirror","ShadowDomManager","shadowDoms","WeakSet","restorePatches","manager","option","iframeElement","HTMLElement","restorePatch","__awaiter","thisArg","_arguments","P","generator","fulfilled","step","rejected","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list","ctor","contextMap","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ImageData","serializeArgs","initCanvasContextObserver","contextType","patchGLPrototype","props","getOwnPropertyNames","recordArgs","hookHandler","setter","WorkerClass","WorkerThreads","module","require","__non_webpack_require__","Worker","createBase64WorkerFactory","sourcemapArg","enableUnicodeArg","eval","createURL","createObjectURL","kIsNodeJS","WorkerFactory","createBase64WorkerFactory$1","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","initCanvasFPSObserver","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","commands","timeBetweenSnapshots","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getContextAttributes","preserveDrawingBuffer","COLOR_BUFFER_BIT","bitmap","createImageBitmap","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","getOwnPropertySymbols","propertyIsEnumerable","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","wrapEvent","takeFullSnapshot","recording","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","inEmittingFrame","parent","passEmitsToParent","color","date","email","month","number","tel","time","week","textarea","select","password","lastFullSnapshotEvent","NodeList","DOMTokenList","TypeError","polyfill","incrementalSnapshotCount","eventProcessor","isFrozen","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","gn","getMirror","nodeMirror","slimDOM","initialOffset","left","pageXOffset","top","pageYOffset","addLoadListener","addCustomEvent","tag","freezePage","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","line","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","pathToSelector","outerHTML","localName","domSiblings","sibling","isObjTooDeep","limit","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","_obj","stringLengthLimit","Event","eventResult","eventValue","defaultLogOptions","level","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","cancelHandlers","errorHandler","trace","stackFrame","levelType","_logger","EventBuffer","Sender","eventBuffer","visibilityState","isFull","isEmpty","sendEvents","defaultOptions","recordOptions","recordConsolePlugin","POSITIVE_INFINITY","Recorder","handleEvent","stop","mockImplementation","arg0","Stasher","recordingManager","isRunning","isInitializingEvent","isSelectionEvent","isConsoleEvent","stamp","publish","publishEvent","char","pattern","prefixes","delimiter","tryConsume","mustConsume","nextType","consumeText","safePattern","prefix","prev","prevText","delimiter_1","escapeString","modifier","name_1","pattern_1","pathname","params","_loop_1","pathToRegexp","sensitive","stringToRegexp","strict","endsWithRe","delimiterRe","route","tokens_1","mod","endToken","isEndDelimited","groupsRegex","execResult","paths","canDiscover","recordingBlocklist","allowLocalhostRecording","currentPath","USER_ACTIONS","RecordingManager","recorder","stasher","cleanUrl","_allowLocalhostRecording","sessionManager","isIdle","isInteractiveEvent","handleActivityDuringIdle","isClick","clickedNode","nodeIsInteresting","conversionData","eventType","htmlElement","isCustom","customEventType","handle","sender","restart","Click","Timer","MAX_IDLE_TIME","timeoutId","handleTimeout","SessionManager","static","sessionId","lastScreenViewEventTime","newSessionId","updateIdleStatus","sessionState","determineSessionState","handleSessionTransition","_Yn","Agent","sendScreenViewEvent","_allowScreenRecording","sessionCreationPromise","_sessionManager","startRecorderWithStasher","getCurrentSessionId","getLastScreenViewEventTime","createSession","finally","handleCustomEvent","__path","__title","title","__is_session_refresh","getInstance","_Jn","VERSION","lastPath","debounceTimer","MAX_SCREENSHOT_SIZE","isServer","setGlobalProperties","__referrer","referrer","trackOutgoingLinks","trackScreenViews","trackAttributes","enableRecording","startRecording","screenView","oldPushState","history","pushState","dispatchEvent","oldReplaceState","replaceState","debounce","trackHashChanges","btn","anchor","recordEventsToServer","pathOrProperties","propertiesOrUndefined","trackProps","snapshot","clonedBody","screenshot","__screenshot","__screenshotOmitted","__screenshotSizeInBytes","__screenshotError","updateSession","updateLastScreenViewEventTime"],"mappings":"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ACA,WACA,QACA,SACA,QACA,SACA,UACA,UACA,WACA,WACA,SACA,UACA,WACA,QACA,SACA,QACA,QACA,QACA,SACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,UACA,UACA,WACA,SACA,QACA,SACA,QACA,QACA,MACA,QACA,MACA,SACA,UACA,OACA,SACA,QACA,SACA,OACA,SACA,SACA,QACA,YACA,QACA,SACA,MACA,OACA,QACA,QACA,SACA,QACA,SACA,SACA,OACA,QACA,QACA,SACA,SACA,SACA,UACA,SACA,OACA,WACA,SACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,UACA,YACA,QACA,SACA,WACA,WACA,YACA,SACA,WACA,YACA,UACA,SACA,OACA,SACA,QACA,WACA,WACA,UACA,WACA,SACA,SACA,QACA,SACA,UACA,YACA,cACA,YACA,SACA,QACA,QACA,SACA,UACA,SACA,aACA,SACA,QACA,SACA,UACA,UACA,OACA,QACA,YACA,YACA,aACA,SACA,SACA,SACA,SACA,UACA,SACA,SACA,UACA,WACA,QACA,MACA,OACA,QACA,QACA,SACA,SACA,QACA,QACA,QACA,QACA,QACA,SACA,UACA,SACA,SACA,SACA,QACA,OACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,SACA,UACA,UACA,QACA,SACA,UACA,SACA,SACA,SACA,QACA,UACA,OACA,UACA,UACA,UACA,SACA,UACA,SACA,UACA,QACA,SACA,SACA,SACA,SACA,QACA,OACA,aACA,aACA,QACA,SACA,SACA,QACA,OACA,WACA,UACA,UACA,SACA,UACA,WACA,UACA,QACA,QACA,SACA,QACA,QACA,SACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,OACA,SACA,SACA,QACA,QACA,QACA,QACA,UACA,SACA,UACA,OACA,SACA,UACA,UACA,OACA,OACA,QACA,OACA,QACA,OACA,QACA,QACA,WACA,QACA,OACA,SACA,WACA,MACA,SACA,UACA,WACA,YACA,YACA,QACA,UACA,SACA,SACA,WACA,WACA,WACA,QACA,SACA,QACA,UACA,QACA,SACA,SACA,SACA,WACA,UACA,SACA,UACA,SACA,SACA,SACA,OACA,SACA,SACA,WACA,UACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,SACA,UACA,SACA,UACA,QACA,SACA,QACA,SACA,SACA,WACA,SACA,QACA,MACA,QACA,QACA,SACA,SACA,QACA,SACA,OACA,YACA,WACA,MACA,OACA,UACA,WACA,YACA,UACA,WACA,UACA,YACA,YACA,OACA,YACA,UACA,YACA,SACA,UACA,UACA,SACA,QACA,SACA,QACA,SACA,WACA,UACA,SACA,QACA,UACA,aACA,UACA,aACA,QACA,YACA,YACA,YACA,UACA,aACA,WACA,UACA,OACA,WACA,UACA,WACA,SACA,UACA,YACA,WACA,aACA,UACA,QACA,UACA,SACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,SACA,SACA,WACA,WACA,OACA,UACA,YACA,cACA,YACA,SACA,YACA,YACA,SACA,UACA,SACA,UACA,UACA,QACA,SACA,SACA,WACA,SACA,UACA,UACA,YACA,OACA,YACA,WACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,QACA,UACA,OACA,SACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,SACA,SACA,UACA,YACA,aACA,aACA,UACA,aACA,QACA,SACA,SACA,UACA,YACA,WACA,WACA,YACA,QACA,UACA,SACA,UACA,UACA,SACA,SACA,SACA,UACA,YACA,UACA,UACA,YACA,UACA,WACA,SACA,YACA,UACA,SACA,QACA,QACA,UACA,SACA,SACA,SACA,UACA,SACA,OACA,UACA,WACA,UACA,QACA,WACA,OACA,SACA,QACA,UACA,SACA,SACA,WACA,SACA,QACA,SACA,QACA,SACA,UACA,SACA,WACA,OACA,SACA,QACA,UACA,QACA,SACA,WACA,WACA,UACA,UACA,SACA,WACA,QACA,SACA,WACA,UACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,QACA,UACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,UACA,WACA,YACA,YACA,WACA,OACA,UACA,UACA,QACA,UACA,SACA,SACA,SACA,QACA,SACA,QACA,MACA,SACA,SACA,UACA,QACA,UACA,UACA,QACA,QACA,SACA,QACA,OACA,QACA,SACA,QACA,QACA,QACA,SACA,SACA,OACA,QACA,SACA,SACA,SACA,OACA,UACA,UACA,QACA,SACA,OACA,UACA,QACA,UACA,QACA,YACA,OACA,UACA,UACA,SACA,QACA,UACA,UACA,OACA,OACA,QACA,QACA,UACA,SACA,UACA,SACA,OACA,QACA,SACA,SACA,cACA,QACA,OACA,SACA,OACA,QACA,UACA,QACA,SACA,SACA,QACA,SACA,WACA,YACA,UACA,WACA,UACA,YACA,aACA,cACA,SACA,YACA,SACA,WACA,SACA,QACA,QACA,WACA,WACA,WACA,SACA,QACA,WACA,MACA,WACA,WACA,WACA,UACA,QACA,aACA,QACA,SACA,UACA,SACA,UACA,WACA,UACA,UACA,UACA,SACA,UACA,SACA,WACA,SACA,WACA,SACA,SACA,WACA,UACA,YACA,SACA,UACA,SACA,SACA,UACA,WACA,WACA,WACA,SACA,WACA,SACA,OACA,WACA,UACA,UACA,UACA,UACA,UACA,SACA,aACA,YACA,aACA,SACA,SACA,QACA,QACA,SACA,UACA,UACA,QACA,cACA,WACA,UACA,QACA,QACA,SACA,SACA,SACA,UACA,WACA,cACA,SACA,UACA,UACA,aACA,YACA,UACA,QACA,UACA,SACA,YACA,WACA,SACA,OACA,SACA,QACA,QACA,UACA,WACA,OACA,SACA,UACA,cACA,cACA,WACA,SACA,QACA,UACA,SACA,QACA,QACA,WACA,SACA,OACA,QACA,QACA,QACA,SACA,SACA,QACA,UACA,YACA,UACA,SACA,SACA,WACA,UACA,UACA,UACA,SACA,QACA,YACA,YACA,WACA,UACA,UACA,WACA,WACA,aACA,OACA,UACA,UACA,WACA,SACA,UACA,WACA,UACA,QACA,SACA,UACA,UACA,UACA,WACA,QACA,SACA,SACA,UACA,UACA,QACA,UACA,SACA,OACA,SACA,QACA,UACA,SACA,QACA,QACA,SACA,UACA,OACA,UACA,WACA,WACA,SACA,QACA,QACA,QACA,UACA,UACA,OACA,SACA,UACA,QACA,UACA,QACA,SACA,YACA,QACA,SACA,UACA,QACA,QACA,QACA,UACA,YACA,YACA,SACA,YACA,WACA,YACA,WACA,UACA,QACA,SACA,SACA,UACA,UACA,OACA,SACA,UACA,SACA,UACA,aACA,SACA,SACA,UACA,SACA,QACA,OACA,SACA,WACA,SACA,SACA,WACA,SACA,WACA,UACA,WACA,YACA,YACA,SACA,UACA,YACA,SACA,WACA,QACA,aACA,YACA,SACA,UACA,WACA,aACA,aACA,WACA,SACA,WACA,SACA,WACA,YACA,UACA,SACA,WACA,UACA,UACA,YACA,UACA,YACA,WACA,QACA,SACA,SACA,UACA,WACA,SACA,QACA,OACA,WACA,SACA,aACA,OACA,WACA,UACA,UACA,SACA,SACA,UACA,SACA,QACA,QACA,cACA,SACA,UACA,SACA,QACA,QACA,WACA,SACA,OACA,QACA,SACA,MACA,QACA,YACA,WACA,WACA,UACA,SACA,QACA,SACA,QACA,SACA,UACA,SACA,OACA,QACA,SACA,cACA,WACA,SACA,UACA,SACA,UACA,UACA,UACA,cACA,SACA,SACA,SACA,UACA,SACA,QACA,SACA,cACA,aACA,UACA,UACA,QACA,SACA,WACA,SACA,UACA,UACA,WACA,UACA,SACA,UACA,QACA,aACA,WACA,WACA,WACA,SACA,aACA,WACA,OACA,WACA,UACA,cACA,SACA,UACA,SACA,SACA,QACA,SACA,YACA,YACA,WACA,WACA,YACA,aACA,aACA,aACA,YACA,SACA,QACA,QACA,YACA,QACA,UACA,YACA,WACA,YACA,SACA,UACA,UACA,UACA,QACA,SACA,SACA,YACA,UACA,aACA,WACA,SACA,cACA,UACA,WACA,UACA,UACA,QACA,WACA,YACA,WACA,aACA,aACA,SACA,SACA,QACA,OACA,QACA,aACA,MACA,SACA,WACA,YACA,aACA,OACA,QACA,SACA,UACA,QACA,SACA,UACA,OACA,YACA,SACA,QACA,SACA,SACA,QACA,YACA,SACA,SACA,QACA,UACA,QACA,WACA,WACA,OACA,WACA,YACA,MACA,SACA,UACA,UACA,QACA,SACA,QACA,QACA,SACA,QACA,SACA,WACA,YACA,SACA,UACA,QACA,QACA,UACA,QACA,SACA,UACA,QACA,SACA,UACA,SACA,UACA,SACA,SACA,QACA,OACA,SACA,SACA,UACA,QACA,SACA,OACA,YACA,WACA,WACA,WACA,SACA,QACA,OACA,SACA,QACA,YACA,WACA,UACA,UACA,QACA,QACA,QACA,SACA,OACA,SACA,UACA,WACA,UACA,WACA,UACA,UACA,WACA,UACA,WACA,YACA,WACA,WACA,QACA,YACA,UACA,WACA,WACA,UACA,WACA,SACA,SACA,WACA,OACA,OACA,SACA,OACA,QACA,SACA,QACA,QACA,SACA,SACA,SACA,QACA,OACA,QACA,QACA,SACA,UACA,SACA,UACA,SACA,QACA,SACA,UACA,UACA,UACA,SACA,WACA,QACA,YACA,WACA,WACA,SACA,SACA,YACA,WACA,UACA,WACA,QACA,UACA,QACA,WACA,cACA,SACA,YACA,WACA,UACA,SACA,SACA,UACA,cACA,UACA,SACA,UACA,UACA,SACA,UACA,QACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,SACA,WACA,WACA,WACA,UACA,QACA,SACA,QACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,UACA,UACA,UACA,SACA,YACA,eACA,OACA,UACA,YACA,QACA,QACA,UACA,SACA,SACA,SACA,UACA,YACA,UACA,YACA,QACA,QACA,UACA,aACA,UACA,QACA,SACA,UACA,UACA,QACA,UACA,UACA,UACA,YACA,WACA,UACA,WACA,YACA,cACA,QACA,WACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,WACA,WACA,UACA,UACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACA,QACA,QACA,SACA,WACA,YACA,WACA,YACA,WACA,WACA,cACA,WACA,UACA,UACA,UACA,YACA,WACA,WACA,UACA,aACA,SACA,cACA,WACA,WACA,YACA,UACA,SACA,UACA,QACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,WACA,aACA,SACA,aACA,SACA,aACA,YACA,YACA,UACA,SACA,SACA,WACA,aACA,WACA,UACA,WACA,QACA,YACA,YACA,UACA,WACA,QACA,WACA,QACA,WACA,SACA,WACA,UACA,QACA,QACA,UACA,SACA,QACA,UACA,SACA,QACA,QACA,SACA,QACA,WACA,SACA,WACA,aACA,UACA,UACA,UACA,OACA,QACA,UACA,QACA,QACA,QACA,aACA,WACA,aACA,UACA,QACA,SACA,OACA,QACA,MACA,OACA,OACA,QACA,UACA,SACA,SACA,aACA,UACA,SACA,SACA,aACA,YACA,OACA,UACA,SACA,UACA,QACA,UACA,WACA,WACA,YACA,aACA,UACA,WACA,UACA,UACA,UACA,QACA,UACA,SACA,SACA,UACA,SACA,aACA,YACA,WACA,aACA,WACA,WACA,aACA,QACA,aACA,UACA,UACA,WACA,SACA,UACA,UACA,UACA,SACA,YACA,SACA,UACA,SACA,OACA,UACA,QACA,SACA,WACA,UACA,QACA,UACA,SACA,aACA,SACA,cACA,cACA,OACA,SACA,UACA,QACA,QACA,OACA,SACA,QACA,WACA,QACA,QACA,OACA,QACA,SACA,QACA,QACA,YACA,QACA,OACA,SACA,WACA,UACA,UACA,UACA,SACA,UACA,OACA,SACA,QACA,SACA,SACA,QACA,SACA,UACA,UACA,UACA,WACA,SACA,WACA,WACA,SACA,UACA,UACA,YACA,WACA,WACA,SACA,YACA,SACA,WACA,SACA,WACA,WACA,SACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,WACA,UACA,YACA,UACA,UACA,WACA,UACA,OACA,QACA,SACA,UACA,UACA,SACA,UACA,SACA,QACA,WACA,YACA,SACA,UACA,SACA,UACA,UACA,WACA,aACA,aACA,QACA,UACA,UACA,SACA,SACA,UACA,SACA,UACA,UACA,OACA,UACA,WACA,QACA,WACA,MACA,QACA,SACA,QACA,UACA,UACA,SACA,OACA,YACA,WACA,WACA,UACA,SACA,WACA,SACA,YACA,UACA,UACA,UACA,WACA,QACA,QACA,UACA,UACA,OACA,UACA,QACA,UACA,QACA,SACA,SACA,UACA,SACA,OACA,QACA,SACA,UACA,UACA,UACA,WACA,WACA,SACA,QACA,SACA,UACA,SACA,UACA,WACA,UACA,QACA,SACA,UACA,WACA,UACA,UACA,UACA,QACA,UACA,SACA,QACA,UACA,SACA,SACA,UACA,WACA,YACA,YACA,WACA,SACA,aACA,UACA,UACA,SACA,UACA,WACA,SACA,SACA,OACA,SACA,WACA,SACA,UACA,UACA,WACA,WACA,SACA,UACA,WACA,WACA,QACA,YACA,UACA,SACA,WACA,WACA,eACA,UACA,UACA,UACA,UACA,QACA,UACA,SACA,WACA,WACA,aACA,aACA,SACA,UACA,UACA,aACA,SACA,WACA,YACA,UACA,QACA,SACA,YACA,WACA,WACA,OACA,QACA,UACA,QACA,WACA,WACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,QACA,WACA,WACA,SACA,QACA,SACA,OACA,UACA,YACA,aACA,SACA,UACA,SACA,QACA,UACA,SACA,UACA,YACA,QACA,YACA,UACA,WACA,UACA,aACA,cACA,WACA,WACA,cACA,YACA,QACA,SACA,YACA,SACA,UACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,SACA,WACA,WACA,UACA,QACA,SACA,UACA,SACA,OACA,QACA,UACA,UACA,SACA,UACA,UACA,SACA,YACA,UACA,YACA,UACA,WACA,QACA,WACA,SACA,UACA,QACA,SACA,UACA,SACA,WACA,UACA,QACA,SACA,SACA,UACA,UACA,SACA,SACA,UACA,OACA,SACA,UACA,UACA,YACA,YACA,QACA,SACA,UACA,SACA,QACA,UACA,QACA,SACA,QACA,YACA,YACA,SACA,SACA,WACA,WACA,OACA,UACA,UACA,SACA,WACA,WACA,WACA,cACA,aACA,WACA,YACA,YACA,WACA,WACA,OACA,QACA,SACA,UACA,SACA,UACA,WACA,SACA,QACA,UACA,UACA,SACA,UACA,WACA,YACA,OACA,QACA,WACA,SACA,UACA,WACA,UACA,QACA,cACA,UACA,WACA,SACA,UACA,WACA,WACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,cACA,YACA,UACA,UACA,WACA,WACA,YACA,WACA,WACA,UACA,WACA,YACA,aACA,UACA,WACA,UACA,UACA,WACA,WACA,WACA,UACA,UACA,OACA,YACA,UACA,SACA,SACA,UACA,SACA,QACA,WACA,OACA,UACA,UACA,UACA,OACA,WACA,SACA,QACA,YACA,OACA,QACA,SACA,WACA,QACA,SACA,WACA,UACA,SACA,UACA,SACA,UACA,UACA,QACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,SACA,YACA,SACA,WACA,YACA,SACA,UACA,QACA,QACA,UACA,WACA,WACA,QACA,UACA,WACA,OACA,QACA,MACA,SACA,OACA,OACA,QACA,YACA,QACA,WACA,UACA,SACA,UACA,WACA,YACA,WACA,WACA,YACA,YACA,cACA,cACA,UACA,WACA,YACA,aACA,aACA,eACA,eACA,WACA,WACA,YACA,YACA,aACA,YACA,YACA,YACA,cACA,gBACA,UACA,aACA,WACA,MACA,OACA,QACA,YACA,aACA,QACA,SACA,QACA,SACA,SACA,QACA,aACA,QACA,SACA,QACA,UACA,UACA,SACA,OACA,WACA,QACA,YACA,QACA,SACA,SACA,UACA,QACA,QACA,SACA,QACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,SACA,UACA,WACA,UACA,QACA,SACA,WACA,UACA,SACA,YACA,UACA,UACA,WACA,UACA,QACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,UACA,UACA,SACA,QACA,WACA,UACA,SACA,YACA,UACA,WACA,aACA,aACA,WACA,UACA,UACA,WACA,UACA,OACA,YACA,SACA,YACA,QACA,YACA,YACA,WACA,UACA,cACA,UACA,YACA,QACA,WACA,WACA,SACA,WACA,SACA,UACA,QACA,QACA,UACA,QACA,SACA,UACA,OACA,SACA,QACA,SACA,UACA,WACA,YACA,WACA,OACA,OACA,MACA,SACA,OACA,QACA,UACA,SACA,UACA,UACA,QACA,UACA,WACA,QACA,OACA,QACA,YACA,UACA,UACA,QACA,WACA,SACA,UACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,UACA,eACA,SACA,SACA,UACA,WACA,SACA,UACA,SACA,UACA,UACA,SACA,UACA,SACA,UACA,UACA,WACA,SACA,UACA,aACA,WACA,SACA,WACA,QACA,SACA,UACA,UACA,SACA,SACA,SACA,WACA,UACA,WACA,SACA,WACA,SACA,UACA,UACA,SACA,SACA,YACA,cACA,cACA,WACA,WACA,WACA,QACA,YACA,SACA,UACA,UACA,QACA,UACA,UACA,SACA,WACA,SACA,SACA,WACA,aACA,SACA,UACA,UACA,OACA,UACA,UACA,UACA,UACA,SACA,UACA,WACA,WACA,WACA,UACA,SACA,UACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,UACA,QACA,OACA,QACA,SACA,SACA,UACA,UACA,SACA,UACA,UACA,UACA,WACA,aACA,YACA,UACA,UACA,WACA,WACA,UACA,SACA,OACA,WACA,SACA,UACA,UACA,SACA,WACA,SACA,UACA,UACA,WACA,YACA,SACA,SACA,UACA,SACA,UACA,QACA,SACA,OACA,QACA,YACA,WACA,QACA,SACA,WACA,WACA,SACA,OACA,UACA,SACA,aACA,SACA,QACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,cACA,YACA,SACA,SACA,SACA,QACA,UACA,SACA,SACA,QACA,QACA,SACA,QACA,WACA,WACA,UACA,YACA,QACA,SACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,SACA,YACA,YACA,WACA,SACA,SACA,WACA,QACA,SACA,SACA,UACA,OACA,SACA,UACA,OACA,WACA,QACA,WACA,SACA,QACA,SACA,UACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,WACA,SACA,aACA,UACA,WACA,SACA,WACA,SACA,QACA,SACA,YACA,WACA,WACA,UACA,UACA,SACA,QACA,UACA,QACA,UACA,UACA,WACA,OACA,QACA,OACA,UACA,WACA,WACA,WACA,cACA,OACA,SACA,UACA,MACA,UACA,SACA,aACA,WACA,SACA,SACA,SACA,OACA,YACA,UACA,WACA,UACA,QACA,aACA,QACA,OACA,SACA,UACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,UACA,SACA,SACA,cACA,WACA,WACA,QACA,QACA,UACA,MACA,UACA,QACA,SACA,QACA,SACA,QACA,UACA,OACA,UACA,SACA,QACA,YACA,WACA,WACA,SACA,SACA,OACA,SACA,QACA,QACA,SACA,SACA,OACA,SACA,cACA,WACA,QACA,QACA,SACA,SACA,YACA,SACA,OACA,UACA,SACA,YACA,UACA,SACA,UACA,SACA,QACA,UACA,SACA,MACA,OACA,QACA,QACA,UACA,YACA,UACA,UACA,UACA,WACA,UACA,cACA,OACA,QACA,SACA,SACA,UACA,UACA,UACA,WACA,WACA,UACA,YACA,SACA,UACA,SACA,SACA,OACA,QACA,SACA,WACA,SACA,YACA,SACA,WACA,SACA,SACA,UACA,WACA,MACA,UACA,SACA,OACA,QACA,SACA,SACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,UACA,UACA,UACA,UACA,UACA,OACA,SACA,QACA,WACA,UACA,YACA,WACA,QACA,QACA,QACA,SACA,WACA,QACA,SACA,SACA,SACA,QACA,UACA,WACA,OACA,QACA,UACA,QACA,QACA,SACA,OACA,QACA,QACA,QACA,SACA,SACA,QACA,SACA,UACA,WACA,QACA,YACA,WACA,QACA,SACA,SACA,WACA,UACA,UACA,OACA,SACA,SACA,SACA,MACA,QACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,SACA,UACA,SACA,QACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,OACA,QACA,MACA,SACA,UACA,SACA,SACA,SACA,OACA,OACA,QACA,UACA,QACA,SACA,UACA,WACA,SACA,UACA,WACA,SACA,UACA,YACA,SACA,SACA,UACA,QACA,OACA,UACA,SACA,WACA,aACA,YACA,UACA,SACA,WACA,UACA,SACA,QACA,UACA,WACA,YACA,SACA,SACA,SACA,UACA,aACA,UACA,QACA,UACA,SACA,UACA,UACA,SACA,UACA,OACA,OACA,QACA,YACA,QACA,QACA,UACA,SACA,UACA,SACA,SACA,UACA,YACA,UACA,UACA,UACA,cACA,WACA,OACA,SACA,UACA,WACA,SACA,aACA,SACA,UACA,SACA,SACA,WACA,aACA,UACA,SACA,UACA,SACA,UACA,WACA,YACA,YACA,SACA,SACA,UACA,OACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,SACA,UACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,UACA,WACA,QACA,WACA,SACA,SACA,SACA,OACA,SACA,UACA,QACA,WACA,SACA,SACA,WACA,UACA,OACA,aACA,QACA,UACA,WACA,UACA,WACA,UACA,UACA,aACA,YACA,UACA,UACA,UACA,UACA,aACA,aACA,SACA,YACA,QACA,WACA,UACA,UACA,WACA,UACA,QACA,UACA,QACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,QACA,OACA,UACA,MACA,OACA,QACA,QACA,QACA,SACA,SACA,OACA,OACA,UACA,SACA,YACA,YACA,YACA,UACA,UACA,SACA,SACA,QACA,QACA,OACA,UACA,WACA,QACA,OACA,UACA,QACA,YACA,aACA,QACA,UACA,SACA,SACA,aACA,UACA,UACA,SACA,SACA,YACA,WACA,WACA,UACA,UACA,OACA,QACA,SACA,UACA,UACA,OACA,UACA,UACA,WACA,OACA,QACA,SACA,SACA,SACA,WACA,UACA,UACA,SACA,YACA,UACA,UACA,SACA,MACA,QACA,QACA,SACA,QACA,OACA,OACA,QACA,QACA,SACA,OACA,UACA,OACA,QACA,QACA,SACA,UACA,QACA,UACA,UACA,SACA,QACA,SACA,UACA,UACA,aACA,WACA,UACA,UACA,YACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,OACA,UACA,SACA,YACA,SACA,UACA,UACA,WACA,UACA,UACA,QACA,SACA,SACA,QACA,UACA,WACA,SACA,WACA,WACA,SACA,WACA,UACA,UACA,UACA,QACA,QACA,SACA,YACA,OACA,QACA,UACA,SACA,OACA,WACA,SACA,SACA,UACA,WACA,UACA,OACA,QACA,SACA,QACA,UACA,SACA,QACA,QACA,SACA,OACA,UACA,WACA,UACA,SACA,UACA,SACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,SACA,SACA,QACA,WACA,OACA,YACA,UACA,WACA,QACA,UACA,SACA,SACA,UACA,SACA,SACA,QACA,QACA,UACA,SACA,SACA,QACA,UACA,UACA,WACA,QACA,SACA,WACA,WACA,WACA,SACA,WACA,QACA,WACA,QACA,WACA,SACA,OACA,SACA,OACA,SACA,SACA,WACA,UACA,YACA,SACA,OACA,QACA,SACA,SACA,SACA,QACA,SACA,UACA,WACA,QACA,QACA,SACA,SACA,UACA,QACA,UACA,QACA,SACA,QACA,QACA,SACA,UACA,UACA,SACA,SACA,UACA,SACA,SACA,UACA,SACA,SACA,SACA,WACA,SACA,OACA,QACA,SACA,UACA,SACA,QACA,YACA,SACA,QACA,SACA,SACA,SACA,QACA,WACA,QACA,SACA,UACA,SACA,SACA,QACA,SACA,SACA,SACA,SACA,QACA,OACA,UACA,QACA,SACA,UACA,QACA,SACA,QACA,SACA,SACA,QACA,QACA,OACA,UACA,QACA,QACA,QACA,OACA,OACA,QACA,QACA,SACA,QACA,QACA,QACA,UACA,UACA,UACA,SACA,SACA,UACA,aACA,OACA,SACA,SACA,QACA,YACA,UACA,SACA,WACA,SACA,QACA,YACA,SACA,SACA,WACA,QACA,QACA,QACA,SACA,MACA,SACA,aACA,aACA,SACA,MACA,SACA,YACA,QACA,SACA,WACA,UACA,SACA,WACA,MACA,OACA,QACA,UACA,YACA,SACA,UACA,WACA,YACA,OACA,QACA,QACA,WACA,YACA,OACA,WACA,SACA,QACA,WACA,SACA,UACA,YACA,WACA,UACA,YACA,OACA,OACA,QACA,QACA,SACA,UACA,SACA,QACA,SACA,QACA,OACA,SACA,SACA,YACA,SACA,UACA,QACA,eACA,SACA,WACA,UACA,SACA,SACA,SACA,SACA,SACA,YACA,SACA,MACA,SACA,SACA,SACA,OACA,QACA,QACA,SACA,SACA,OACA,SACA,OACA,SACA,SACA,WACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,QACA,SACA,UACA,UACA,UACA,WACA,WACA,OACA,UACA,WACA,WACA,QACA,OACA,SACA,QACA,UACA,SACA,QACA,SACA,OACA,QACA,SACA,UACA,QACA,YACA,QACA,SACA,SACA,OACA,QACA,WACA,YACA,WACA,YACA,WACA,OACA,SACA,OACA,UACA,QACA,UACA,QACA,SACA,WACA,QACA,OACA,QACA,WACA,YACA,YACA,SACA,UACA,QACA,UACA,YACA,OACA,QACA,OACA,QACA,SACA,SACA,OACA,SACA,SACA,QACA,SACA,SACA,UACA,QACA,OACA,QACA,QACA,SACA,UACA,OACA,OACA,SACA,QACA,QACA,SACA,SACA,UACA,SACA,SACA,MACA,QACA,OACA,MACA,UACA,SACA,SACA,QACA,SACA,SACA,UACA,UACA,QACA,UACA,UACA,UACA,QACA,SACA,SACA,SACA,QACA,OACA,WACA,SACA,SACA,QACA,SACA,OACA,UACA,QACA,SACA,SACA,cACA,SACA,OACA,WACA,SACA,UACA,UACA,SACA,MACA,QACA,aACA,UACA,QACA,WACA,SACA,UACA,UACA,WACA,OACA,QACA,QACA,QACA,QACA,OACA,UACA,YACA,WACA,QACA,WACA,QACA,WACA,OACA,UACA,MACA,SACA,UACA,OACA,QACA,SACA,WACA,UACA,QACA,OACA,QACA,SACA,UACA,SACA,OACA,YACA,UACA,OACA,SACA,YACA,YACA,QACA,UACA,QACA,QACA,OACA,YACA,WACA,YACA,UACA,WACA,WACA,QACA,WACA,WACA,YACA,UACA,YACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,OACA,YACA,WACA,SACA,SACA,UACA,UACA,QACA,QACA,QACA,UACA,SACA,UACA,WACA,OACA,QACA,WACA,UACA,YACA,WACA,QACA,UACA,SACA,OACA,QACA,QACA,SACA,UACA,OACA,UACA,SACA,SACA,UACA,UACA,QACA,UACA,MACA,OACA,SACA,OACA,OACA,UACA,WACA,MACA,SACA,OACA,aACA,aACA,cACA,QACA,UACA,SACA,SACA,UACA,UACA,SACA,UACA,UACA,UACA,UACA,WACA,WACA,QACA,WACA,UACA,SACA,OACA,OACA,QACA,OACA,SACA,MACA,QACA,QACA,QACA,OACA,OACA,QACA,QACA,SACA,QACA,SACA,UACA,WACA,QACA,QACA,YACA,YACA,YACA,YACA,UACA,SACA,UACA,QACA,UACA,WACA,UACA,OACA,UACA,SACA,UACA,UACA,OACA,SACA,SACA,QACA,OACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,UACA,aACA,OACA,SACA,SACA,UACA,aACA,SACA,UACA,SACA,UACA,SACA,UACA,UACA,SACA,QACA,WACA,QACA,WACA,UACA,UACA,OACA,QACA,cACA,eACA,UACA,QACA,WACA,SACA,SACA,OACA,WACA,YACA,SACA,UACA,UACA,SACA,SACA,UACA,YACA,YACA,WACA,YACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,SACA,YACA,UACA,OACA,UACA,SACA,SACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,WACA,YACA,YACA,WACA,QACA,WACA,UACA,UACA,SACA,WACA,UACA,SACA,WACA,QACA,SACA,SACA,QACA,UACA,SACA,OACA,SACA,UACA,SACA,UACA,SACA,UACA,WACA,OACA,QACA,WACA,WACA,UACA,UACA,UACA,QACA,cACA,SACA,SACA,SACA,OACA,WACA,UACA,SACA,QACA,QACA,UACA,SACA,UACA,QACA,OACA,OACA,aACA,WACA,cACA,cACA,YACA,QACA,WACA,WACA,WACA,WACA,WACA,QACA,SACA,UACA,YACA,YACA,aACA,WACA,QACA,aACA,QACA,WACA,YACA,UACA,aACA,SACA,WACA,SACA,SACA,WACA,UACA,SACA,UACA,UACA,WACA,OACA,QACA,WACA,SACA,QACA,QACA,UACA,QACA,OACA,QACA,UACA,QACA,SACA,QACA,QACA,OACA,UACA,WACA,UACA,WACA,WACA,SACA,QACA,QACA,SACA,SACA,UACA,QACA,UACA,QACA,SACA,SACA,UACA,YACA,WACA,UACA,UACA,WACA,cACA,UACA,SACA,UACA,UACA,UACA,UACA,YACA,OACA,WACA,QACA,QACA,UACA,WACA,QACA,QACA,SACA,WACA,OACA,SACA,WACA,UACA,YACA,aACA,UACA,WACA,WACA,UACA,YACA,YACA,SACA,SACA,WACA,YACA,SACA,UACA,UACA,SACA,YACA,SACA,QACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,YACA,OACA,QACA,SACA,UACA,YACA,YACA,aACA,aACA,eACA,WACA,SACA,WACA,YACA,cACA,SACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,SACA,OACA,QACA,QACA,SACA,QACA,SACA,SACA,WACA,YACA,QACA,WACA,UACA,QACA,UACA,UACA,SACA,SACA,SACA,QACA,WACA,YACA,QACA,QACA,OACA,QACA,UACA,SACA,UACA,WACA,YACA,UACA,UACA,OACA,YACA,QACA,YACA,UACA,SACA,SACA,QACA,QACA,SACA,UACA,aACA,OACA,QACA,aACA,QACA,SACA,OACA,QACA,UACA,QACA,UACA,QACA,UACA,MACA,QACA,UACA,WACA,WACA,YACA,YACA,SACA,QACA,SACA,UACA,WACA,YACA,QACA,SACA,SACA,SACA,SACA,SACA,UACA,QACA,UACA,YACA,YACA,UACA,SACA,UACA,YACA,WACA,WACA,WACA,UACA,WACA,WACA,UACA,UACA,QACA,WACA,SACA,SACA,SACA,SACA,UACA,UACA,SACA,WACA,QACA,QACA,OACA,SACA,QACA,QACA,QACA,QACA,SACA,SACA,OACA,WACA,UACA,WACA,UACA,SACA,SACA,SACA,SACA,UACA,WACA,UACA,YACA,UACA,UACA,UACA,SACA,UACA,SACA,QACA,UACA,SACA,SACA,SACA,SACA,OACA,QACA,UACA,UACA,SACA,UACA,OACA,WACA,WACA,SACA,WACA,SACA,UACA,SACA,QACA,SACA,WACA,WACA,UACA,OACA,QACA,WACA,SACA,QACA,SACA,OACA,QACA,QACA,UACA,SACA,UACA,UACA,WACA,SACA,SACA,SACA,WACA,YACA,QACA,WACA,UACA,SACA,OACA,UACA,SACA,QACA,SACA,OACA,UACA,UACA,SACA,OACA,UACA,UACA,YACA,WACA,QACA,QACA,SACA,QACA,WACA,WACA,WACA,SACA,YACA,aACA,WACA,YACA,YACA,UACA,YACA,YACA,aACA,aACA,UACA,WACA,WACA,SACA,YACA,UACA,SACA,SACA,QACA,SACA,SACA,WACA,UACA,OACA,UACA,WACA,UACA,QACA,QACA,SACA,SACA,UACA,WACA,YACA,UACA,UACA,QACA,QACA,OACA,QACA,YACA,WACA,MACA,SACA,OACA,QACA,SACA,UACA,WACA,SACA,SACA,QACA,SACA,UACA,OACA,SACA,UACA,MACA,WACA,aACA,YACA,YACA,QACA,OACA,QACA,SACA,SACA,UACA,SACA,cACA,SACA,YACA,UACA,WACA,SACA,UACA,UACA,WACA,WACA,YACA,SACA,YACA,UACA,SACA,QACA,SACA,SACA,UACA,SACA,WACA,SACA,SACA,WACA,OACA,SACA,UACA,YACA,UACA,WACA,QACA,WACA,SACA,WACA,WACA,SACA,SACA,SACA,SACA,SACA,UACA,OACA,OACA,UACA,aACA,SACA,SACA,UACA,YACA,QACA,SACA,SACA,UACA,UACA,YACA,UACA,SACA,UACA,SACA,WACA,QACA,SACA,UACA,UACA,QACA,UACA,YACA,SACA,UACA,SACA,QACA,SACA,SACA,QACA,QACA,QACA,SACA,UACA,UACA,QACA,UACA,QACA,SACA,SACA,SACA,QACA,UACA,SACA,QACA,QACA,WACA,WACA,UACA,UACA,aACA,YACA,QACA,QACA,WACA,YACA,WACA,WACA,QACA,UACA,UACA,QACA,UACA,SACA,SACA,UACA,UACA,YACA,WACA,UACA,WACA,UACA,UACA,UACA,SACA,SACA,QACA,QACA,SACA,SACA,UACA,SACA,SACA,UACA,UACA,OACA,WACA,UACA,OACA,WACA,aACA,QACA,QACA,SACA,UACA,UACA,QACA,OACA,QACA,QACA,QACA,UACA,SACA,YACA,SACA,SACA,WACA,QACA,OACA,QACA,UACA,QACA,SACA,UACA,UACA,UACA,WACA,WACA,YACA,SACA,OACA,UACA,UACA,WACA,SACA,UACA,WACA,UACA,aACA,QACA,UACA,YACA,SACA,WACA,WACA,YACA,WACA,YACA,WACA,YACA,QACA,UACA,QACA,WACA,SACA,WACA,WACA,UACA,QACA,UACA,UACA,UACA,QACA,WACA,SACA,WACA,SACA,SACA,SACA,QACA,UACA,UACA,UACA,WACA,YACA,QACA,SACA,UACA,WACA,SACA,WACA,WACA,QACA,WACA,WACA,UACA,SACA,SACA,SACA,WACA,UACA,UACA,WACA,QACA,QACA,SACA,OACA,QACA,WACA,SACA,QACA,SACA,QACA,SACA,QACA,SACA,SACA,YACA,WACA,WACA,UACA,OACA,SACA,WACA,SACA,SACA,WACA,UACA,UACA,SACA,QACA,SACA,WACA,UACA,cACA,YACA,WACA,UACA,UACA,QACA,SACA,WACA,UACA,OACA,OACA,YACA,OACA,UACA,QACA,SACA,SACA,UACA,SACA,SACA,SACA,YACA,SACA,OACA,UACA,YACA,WACA,QACA,UACA,SACA,SACA,OACA,SACA,YACA,QACA,OACA,QACA,OACA,UACA,OACA,OACA,QACA,QACA,WACA,UACA,UACA,YACA,SACA,SACA,WACA,SACA,UACA,MACA,QACA,UACA,SACA,OACA,QACA,SACA,QACA,OACA,UACA,QACA,QACA,WACA,UACA,WACA,SACA,SACA,QACA,OACA,OACA,QACA,SACA,QACA,SACA,SACA,QACA,WACA,UACA,QACA,QACA,UACA,SACA,QACA,SACA,UACA,SACA,cACA,WACA,SACA,UACA,UACA,WACA,YACA,UACA,SACA,SACA,WACA,YACA,YACA,YACA,SACA,UACA,WACA,QACA,QACA,QACA,SACA,WACA,UACA,SACA,OACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,UACA,SACA,UACA,UACA,UACA,MACA,OACA,UACA,UACA,QACA,QACA,OACA,QACA,UACA,SACA,SACA,OACA,QACA,SACA,SACA,YACA,SACA,WACA,SACA,WACA,OACA,SACA,SACA,WACA,SACA,SACA,WACA,WACA,aACA,SACA,WACA,WACA,SACA,WACA,SACA,UACA,WACA,UACA,WACA,WACA,UACA,SACA,WACA,WACA,SACA,SACA,UACA,WACA,SACA,UACA,SACA,SACA,SACA,SACA,SACA,OACA,SACA,OACA,UACA,YACA,UACA,WACA,YACA,WACA,WACA,aACA,SACA,WACA,SACA,UACA,SACA,YACA,WACA,SACA,UACA,UACA,WACA,WACA,WACA,aACA,WACA,UACA,WACA,UACA,QACA,QACA,WACA,UACA,UACA,SACA,WACA,SACA,UACA,UACA,YACA,UACA,UACA,OACA,SACA,UACA,UACA,SACA,UACA,SACA,WACA,WACA,WACA,WACA,UACA,SACA,SACA,SACA,SACA,QACA,OACA,SACA,OACA,QACA,SACA,SACA,WACA,QACA,SACA,UACA,YACA,SACA,OACA,UACA,YACA,UACA,SACA,SACA,SACA,QACA,UACA,SACA,SACA,SACA,SACA,SACA,UACA,WACA,YACA,QACA,UACA,UACA,UACA,WACA,SACA,QACA,SACA,QACA,SACA,UACA,YACA,SACA,SACA,QACA,SACA,UACA,SACA,YACA,UACA,SACA,OACA,MACA,YACA,UACA,SACA,SACA,UACA,QACA,QACA,QACA,QACA,OACA,UACA,OACA,OACA,QACA,WACA,QACA,SACA,QACA,QACA,SACA,UACA,UACA,QACA,SACA,SACA,WACA,QACA,WACA,SACA,UACA,SACA,SACA,UACA,UACA,SACA,SACA,UACA,YACA,WACA,aACA,YACA,UACA,SACA,UACA,WACA,YACA,cACA,UACA,SACA,QACA,SACA,SACA,YACA,WACA,YACA,YACA,YACA,YACA,YACA,QACA,SACA,UACA,UACA,SACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,WACA,QACA,SACA,UACA,aACA,SACA,UACA,UACA,UACA,WACA,aACA,WACA,YACA,YACA,UACA,QACA,SACA,OACA,SACA,UACA,UACA,SACA,aACA,WACA,SACA,SACA,SACA,QACA,cACA,UACA,QACA,SACA,SACA,SACA,OACA,QACA,SACA,SACA,UACA,SACA,SACA,QACA,SACA,SACA,UACA,QACA,UACA,UACA,QACA,UACA,UACA,UACA,QACA,YACA,UACA,SACA,SACA,UACA,QACA,OACA,QACA,OACA,SACA,SACA,eACA,UACA,QACA,YACA,YACA,SACA,UACA,SACA,UACA,UACA,QACA,QACA,aACA,cACA,YACA,aACA,UACA,WACA,UACA,QACA,UACA,UACA,SACA,WACA,SACA,UACA,UACA,QACA,SACA,QACA,WACA,UACA,OACA,QACA,SACA,UACA,SACA,WACA,WACA,UACA,SACA,SACA,QACA,OACA,OACA,SACA,SACA,QACA,SACA,YACA,OACA,OACA,MACA,QACA,SACA,MACA,OACA,WACA,QACA,SACA,QACA,SACA,OACA,cACA,cACA,UACA,QACA,SACA,WACA,UACA,SACA,WACA,YACA,OACA,QACA,OACA,SACA,UACA,WACA,UACA,UACA,QACA,UACA,WACA,UACA,WACA,UACA,YACA,WACA,YACA,SACA,aACA,SACA,QACA,WACA,SACA,aACA,WACA,YACA,eACA,gBACA,UACA,SACA,YACA,WACA,WACA,YACA,SACA,WACA,SACA,WACA,YACA,YACA,QACA,WACA,UACA,SACA,SACA,QACA,SACA,MACA,QACA,UACA,QACA,YACA,SACA,SACA,UACA,QACA,SACA,QACA,OACA,SACA,WACA,WACA,QACA,UACA,WACA,WACA,UACA,QACA,YACA,WACA,YACA,SACA,UACA,QACA,UACA,SACA,YACA,YACA,YACA,WACA,QACA,WACA,OACA,QACA,WACA,cACA,SACA,UACA,UACA,UACA,QACA,QACA,SACA,UACA,SACA,UACA,QACA,WACA,QACA,UACA,UACA,QACA,QACA,OACA,QACA,QACA,OACA,OACA,MACA,MACA,QACA,UACA,UACA,SACA,QACA,QACA,SACA,UACA,QACA,aACA,UACA,UACA,UACA,SACA,WACA,UACA,SACA,UACA,OACA,UACA,UACA,UACA,SACA,SACA,QACA,MACA,OACA,UACA,QACA,SACA,QACA,SACA,UACA,OACA,QACA,WACA,YACA,YACA,UACA,YACA,aACA,SACA,YACA,WACA,aACA,UACA,QACA,OACA,OACA,WACA,UACA,SACA,SACA,SACA,SACA,WACA,aACA,YACA,YACA,WACA,aACA,YACA,OACA,SACA,OACA,QACA,SACA,QACA,MACA,QACA,WACA,QACA,OACA,QACA,QACA,MACA,SACA,SACA,QACA,QACA,MACA,OACA,SACA,OACA,SACA,SACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,QACA,OACA,SACA,QACA,QACA,SACA,QACA,OACA,YACA,SACA,OACA,SACA,UACA,QACA,SACA,QACA,OACA,OACA,OACA,UACA,WACA,YACA,SACA,WACA,SACA,QACA,YACA,OACA,OACA,MACA,SACA,OACA,UACA,QACA,QACA,QACA,QACA,QACA,WACA,OACA,UACA,QACA,SACA,SACA,QACA,QACA,MACA,QACA,SACA,WACA,SACA,UACA,WACA,WACA,UACA,SACA,SACA,QACA,WACA,QACA,SACA,OACA,QACA,QACA,SACA,OACA,OACA,SACA,MACA,QACA,WACA,UACA,OACA,SACA,OACA,OACA,SACA,YACA,SACA,QACA,OACA,YACA,UACA,UACA,UACA,UACA,UACA,YACA,WACA,QACA,SACA,UACA,cACA,UACA,SACA,OACA,QACA,SACA,SACA,SACA,WACA,WACA,SACA,aACA,SACA,YACA,aACA,YACA,aACA,aACA,UACA,YACA,UACA,SACA,UACA,aACA,YACA,WACA,OACA,UACA,MACA,QACA,OACA,SACA,QACA,SACA,SACA,SACA,UACA,UACA,SACA,OACA,OACA,QACA,WACA,QACA,UACA,QACA,OACA,QACA,WACA,SACA,SACA,UACA,SACA,MACA,OACA,QACA,QACA,OACA,SACA,QACA,SACA,QACA,SACA,UACA,UACA,SACA,UACA,QACA,SACA,SACA,UACA,UACA,QACA,OACA,SACA,QACA,UACA,SACA,SACA,QACA,SACA,SACA,YACA,OACA,QACA,SACA,WACA,SACA,SACA,SACA,UACA,SACA,YACA,WACA,SACA,SACA,OACA,YACA,SACA,UACA,SACA,SACA,UACA,UACA,SACA,QACA,QACA,UACA,WACA,SACA,WACA,OACA,QACA,SACA,QACA,QACA,SACA,SACA,UACA,QACA,eACA,QACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,YACA,YACA,SACA,SACA,YACA,YACA,UACA,WACA,WACA,YACA,UACA,YACA,UACA,SACA,UACA,WACA,WACA,UACA,MACA,OACA,QACA,OACA,QACA,SACA,UACA,UACA,SACA,OACA,SACA,UACA,WACA,SACA,SACA,UACA,QACA,QACA,WACA,UACA,WACA,QACA,SACA,WACA,YACA,UACA,WACA,QACA,SACA,SACA,SACA,YACA,SACA,OACA,SACA,UACA,UACA,WACA,SACA,QACA,UACA,SACA,QACA,UACA,SACA,QACA,QACA,SACA,SACA,WACA,QACA,SACA,UACA,SACA,UACA,SACA,UACA,QACA,SACA,WACA,QACA,OACA,QACA,SACA,SACA,SACA,QACA,OACA,UACA,MACA,UACA,WACA,UACA,SACA,OACA,QACA,QACA,SACA,QACA,SACA,SACA,UACA,WACA,OACA,UACA,QACA,OACA,QACA,OACA,MACA,SACA,OACA,SACA,SACA,UACA,UACA,SACA,SACA,SACA,OACA,SACA,UACA,UACA,WACA,WACA,OACA,QACA,WACA,WACA,SACA,SACA,UACA,SACA,UACA,UACA,UACA,WACA,YACA,MACA,OACA,UACA,SACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,MACA,OACA,QACA,OACA,SACA,UACA,QACA,OACA,OACA,QACA,QACA,SACA,SACA,SACA,SACA,QACA,YACA,YACA,OACA,SACA,WACA,WACA,UACA,SACA,YACA,YACA,YACA,UACA,QACA,SACA,QACA,SACA,SACA,WACA,OACA,UACA,QACA,SACA,SACA,OACA,QACA,WACA,OACA,SACA,OACA,QACA,UACA,SACA,OACA,OACA,OACA,QACA,SACA,UACA,SACA,OACA,OACA,QACA,SACA,OACA,QACA,SACA,UACA,UACA,UACA,WACA,WACA,QACA,WACA,SACA,WACA,SACA,UACA,WACA,WACA,QACA,UACA,SACA,OACA,QACA,SACA,QACA,SACA,QACA,SACA,UACA,UACA,SACA,QACA,QACA,OACA,QACA,OACA,YACA,OACA,QACA,SACA,OACA,QACA,UACA,UACA,OACA,UACA,QACA,OACA,SACA,QACA,MACA,SACA,OACA,UACA,WACA,WACA,WACA,OACA,UACA,QACA,UACA,SACA,SACA,QACA,OACA,UACA,UACA,SACA,MACA,SACA,OACA,OACA,QACA,SACA,QACA,SACA,QACA,OACA,QACA,SACA,QACA,SACA,SACA,SACA,UACA,OACA,QACA,UACA,UACA,QACA,SACA,SACA,SACA,QACA,QACA,SACA,WACA,UACA,QACA,OACA,OACA,SACA,QACA,SACA,QACA,OACA,QACA,QACA,WACA,QACA,QACA,OACA,QACA,SACA,OACA,YACA,SACA,SACA,UACA,OACA,UACA,UACA,WACA,WACA,QACA,YACA,YACA,YACA,WACA,QACA,YACA,WACA,YACA,YACA,UACA,WACA,SACA,QACA,SACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,QACA,UACA,OACA,QACA,QACA,SACA,SACA,OACA,UACA,UACA,SACA,OACA,OACA,WACA,UACA,WACA,QACA,WACA,YACA,MACA,QACA,SACA,OACA,QACA,SACA,UACA,WACA,UACA,SACA,SACA,SACA,OACA,QACA,UACA,SACA,SACA,UACA,SACA,QACA,MACA,QACA,SACA,SACA,QACA,SACA,QACA,QACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,QACA,OACA,QACA,OACA,QACA,SACA,SACA,QACA,SACA,QACA,OACA,SACA,SACA,QACA,SACA,WACA,SACA,YACA,SACA,QACA,SACA,UACA,UACA,SACA,QACA,SACA,OACA,SACA,QACA,SACA,QACA,SACA,WACA,QACA,OACA,QACA,SACA,UACA,SACA,WACA,YACA,QACA,UACA,QACA,UACA,UACA,UACA,SACA,SACA,QACA,QACA,WACA,WACA,SACA,QACA,UACA,SACA,OACA,QACA,QACA,OACA,SACA,OACA,QACA,SACA,WACA,QACA,UACA,WACA,UACA,QACA,SACA,SACA,SACA,YACA,UACA,SACA,YACA,UACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,WACA,WACA,SACA,MACA,QACA,QACA,SACA,OACA,UACA,SACA,UACA,OACA,QACA,QACA,UACA,WACA,SACA,QACA,QACA,UACA,QACA,OACA,QACA,UACA,YACA,SACA,UACA,gBACA,UACA,WACA,SACA,aACA,MACA,UACA,SACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,UACA,SACA,SACA,WACA,SACA,YACA,QACA,OACA,SACA,SACA,SACA,SACA,OACA,SACA,UACA,SACA,UACA,YACA,WACA,WACA,SACA,UACA,SACA,WACA,SACA,SACA,UACA,UACA,UACA,SACA,OACA,QACA,WACA,aACA,UACA,WACA,cACA,UACA,WACA,YACA,UACA,UACA,UACA,UACA,SACA,QACA,QACA,SACA,YACA,UACA,SACA,WACA,QACA,QACA,SACA,QACA,SACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,eACA,UACA,QACA,QACA,OACA,QACA,SACA,UACA,WACA,WACA,UACA,QACA,QACA,QACA,SACA,UACA,WACA,OACA,UACA,UACA,QACA,UACA,YACA,OACA,SACA,UACA,QACA,SACA,UACA,UACA,QACA,SACA,OACA,OACA,SACA,OACA,SACA,OACA,SACA,QACA,SACA,UACA,OACA,OACA,OACA,WACA,QACA,UACA,QACA,SACA,WACA,QACA,SACA,SACA,QACA,YACA,aACA,WACA,QACA,SACA,YACA,UACA,QACA,SACA,QACA,UACA,QACA,SACA,SACA,WACA,QACA,SACA,QACA,QACA,QACA,UACA,OACA,UACA,SACA,SACA,UACA,UACA,WACA,UACA,UACA,SACA,WACA,UACA,UACA,WACA,WACA,UACA,SACA,UACA,UACA,QACA,OACA,QACA,QACA,SACA,UACA,OACA,SACA,QACA,QACA,SACA,UACA,UACA,UACA,WACA,UACA,WACA,SACA,SACA,QACA,QACA,SACA,OACA,UACA,WACA,OACA,QACA,SACA,OACA,MACA,QACA,SACA,SACA,QACA,OACA,QACA,QACA,UACA,SACA,OACA,aACA,OACA,cACA,OACA,OACA,OACA,QACA,QACA,MACA,WACA,QACA,QACA,OACA,QACA,QACA,YACA,QACA,UACA,UACA,QACA,YACA,SACA,UACA,QACA,OACA,WACA,WACA,OACA,QACA,UACA,UACA,SACA,WACA,UACA,SACA,OACA,SACA,UACA,OACA,SACA,YACA,WACA,WACA,UACA,aACA,SACA,aACA,aACA,WACA,aACA,UACA,SACA,UACA,SACA,OACA,MACA,OACA,QACA,QACA,QACA,SACA,UACA,WACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,WACA,UACA,SACA,OACA,YACA,QACA,UACA,UACA,QACA,YACA,SACA,SACA,OACA,WACA,SACA,aACA,YACA,UACA,YACA,QACA,UACA,UACA,OACA,YACA,QACA,WACA,SACA,SACA,SACA,SACA,WACA,UACA,SACA,SACA,UACA,UACA,QACA,OACA,SACA,UACA,QACA,SACA,WACA,WACA,UACA,UACA,WACA,WACA,SACA,OACA,QACA,SACA,SACA,WACA,SACA,UACA,SACA,UACA,QACA,QACA,MACA,WACA,WACA,UACA,WACA,UACA,OACA,WACA,UACA,OACA,QACA,UACA,QACA,UACA,WACA,SACA,SACA,UACA,SACA,YACA,SACA,UACA,UACA,UACA,aACA,SACA,UACA,SACA,SACA,WACA,WACA,QACA,SACA,SACA,QACA,UACA,WACA,UACA,WACA,YACA,UACA,YACA,UACA,WACA,YACA,SACA,UACA,UACA,SACA,WACA,WACA,YACA,QACA,SACA,UACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,SACA,SACA,UACA,QACA,UACA,UACA,SACA,UACA,UACA,UACA,UACA,UACA,SACA,SACA,UACA,UACA,WACA,UACA,WACA,QACA,YACA,MACA,aACA,QACA,WACA,QACA,QACA,WACA,SACA,QACA,WACA,UACA,SACA,UACA,WACA,UACA,UACA,WACA,WACA,QACA,UACA,SACA,WACA,UACA,SACA,OACA,SACA,WACA,WACA,UACA,UACA,SACA,WACA,SACA,UACA,UACA,UACA,SACA,SACA,UACA,UACA,QACA,SACA,SACA,UACA,SACA,QACA,SACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,UACA,UACA,SACA,SACA,WACA,SACA,SACA,WACA,QACA,QACA,SACA,UACA,OACA,OACA,QACA,QACA,QACA,UACA,QACA,SACA,SACA,UACA,QACA,SACA,aACA,cACA,WACA,UACA,SACA,QACA,UACA,UACA,SACA,SACA,UACA,QACA,UACA,WACA,UACA,WACA,OACA,YACA,WACA,UACA,QACA,UACA,UACA,SACA,QACA,SACA,UACA,UACA,QACA,QACA,SACA,QACA,WACA,UACA,UACA,SACA,UACA,WACA,UACA,SACA,OACA,UACA,UACA,SACA,UACA,OACA,YACA,QACA,QACA,SACA,WACA,WACA,QACA,SACA,QACA,UACA,YACA,QACA,SACA,QACA,QACA,UACA,UACA,OACA,QACA,SACA,QACA,WACA,QACA,UACA,SACA,QACA,SACA,SACA,UACA,UACA,QACA,QACA,OACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,SACA,QACA,OACA,MACA,QACA,QACA,OACA,QACA,UACA,WACA,WACA,QACA,QACA,SACA,UACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,OACA,QACA,SACA,SACA,OACA,QACA,QACA,SACA,QACA,OACA,QACA,SACA,QACA,QACA,SACA,SACA,QACA,SACA,UACA,SACA,SACA,OACA,WACA,QACA,UACA,UACA,UACA,aACA,OACA,SACA,QACA,QACA,QACA,YACA,WACA,WACA,WACA,OACA,SACA,WACA,SACA,WACA,cACA,WACA,QACA,QACA,QACA,QACA,QACA,SACA,WACA,QACA,SACA,SACA,QACA,UACA,OACA,UACA,SACA,QACA,OACA,YACA,aACA,UACA,UACA,YACA,WACA,QACA,QACA,OACA,QACA,OACA,QACA,SACA,UACA,QACA,UACA,SACA,QACA,SACA,UACA,UACA,WACA,SACA,QACA,MACA,QACA,UACA,UACA,QACA,UACA,WACA,UACA,WACA,SACA,YACA,WACA,WACA,UACA,UACA,QACA,YACA,UACA,UACA,WACA,YACA,SACA,QACA,YACA,UACA,OACA,eACA,aACA,SACA,OACA,UACA,OACA,SACA,SACA,SACA,SACA,WACA,UACA,QACA,WACA,SACA,OACA,WACA,WACA,UACA,OACA,UACA,QACA,QACA,WACA,SACA,OACA,aACA,cACA,aACA,YACA,SACA,WACA,MACA,YACA,UACA,QACA,aACA,MACA,OACA,WACA,YACA,UACA,SACA,UACA,UACA,WACA,SACA,SACA,YACA,QACA,UACA,QACA,UACA,WACA,WACA,YACA,WACA,OACA,WACA,QACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,UACA,UACA,QACA,SACA,OACA,QACA,OACA,QACA,OACA,SACA,SACA,SACA,OACA,QACA,WACA,WACA,SACA,OACA,QACA,SACA,WACA,QACA,UACA,WACA,QACA,WACA,OACA,QACA,SACA,SACA,SACA,QACA,OACA,UACA,UACA,SACA,QACA,SACA,UACA,QACA,SACA,SACA,SACA,UACA,WACA,UACA,SACA,UACA,UACA,OACA,QACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,QACA,WACA,WACA,QACA,WACA,SACA,UACA,OACA,OACA,SACA,OACA,MACA,SACA,UACA,SACA,aACA,UACA,UACA,WACA,QACA,QACA,SACA,SACA,SACA,QACA,UACA,SACA,WACA,SACA,UACA,WACA,WACA,WACA,SACA,UACA,SACA,UACA,QACA,SACA,SACA,SACA,SACA,WACA,SACA,QACA,UACA,OACA,QACA,OACA,SACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,OACA,QACA,QACA,SACA,OACA,QACA,UACA,UACA,QACA,WACA,SACA,SACA,SACA,UACA,UACA,SACA,UACA,QACA,UACA,SACA,WACA,WACA,OACA,QACA,WACA,SACA,UACA,SACA,QACA,SACA,SACA,UACA,OACA,MACA,OACA,QACA,QACA,QACA,QACA,SACA,QACA,OACA,OACA,OACA,OACA,WACA,QACA,WACA,YACA,QACA,OACA,WACA,QACA,OACA,SACA,OACA,OACA,UACA,UACA,UACA,SACA,WACA,MACA,UACA,MACA,OACA,QACA,QACA,SACA,OACA,OACA,QACA,QACA,MACA,QACA,SACA,UACA,UACA,SACA,UACA,UACA,UACA,OACA,QACA,QACA,WACA,SACA,OACA,QACA,QACA,OACA,QACA,UACA,QACA,QACA,WACA,YACA,YACA,aACA,SACA,aACA,YACA,OACA,UACA,WACA,UACA,SACA,QACA,SACA,SACA,YACA,SACA,SACA,YACA,UACA,UACA,UACA,YACA,UACA,WACA,QACA,aACA,OACA,WACA,WACA,UACA,SACA,SACA,SACA,YACA,YACA,WACA,WACA,UACA,QACA,SACA,WACA,QACA,QACA,UACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,MACA,QACA,SACA,OACA,UACA,UACA,SACA,aACA,SACA,QACA,SACA,UACA,QACA,WACA,YACA,YACA,YACA,QACA,QACA,UACA,SACA,SACA,SACA,UACA,WACA,WACA,WACA,UACA,WACA,UACA,QACA,QACA,SACA,QACA,SACA,UACA,MACA,OACA,QACA,QACA,QACA,SACA,QACA,QACA,SACA,SACA,WACA,UACA,SACA,OACA,WACA,SACA,UACA,SACA,YACA,QACA,SACA,QACA,QACA,SACA,UACA,aACA,SACA,UACA,QACA,UACA,WACA,SACA,SACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,UACA,QACA,SACA,aACA,WACA,UACA,UACA,QACA,SACA,aACA,QACA,SACA,QACA,SACA,SACA,UACA,SACA,QACA,SACA,QACA,SACA,OACA,UACA,QACA,YACA,UACA,YACA,SACA,UACA,WACA,SACA,UACA,aACA,UACA,QACA,QACA,OACA,UACA,YACA,WACA,UACA,UACA,UACA,UACA,UACA,YACA,YACA,YACA,UACA,WACA,WACA,UACA,WACA,WACA,YACA,YACA,QACA,SACA,WACA,SACA,WACA,UACA,SACA,SACA,QACA,UACA,SACA,SACA,QACA,QACA,WACA,YACA,YACA,YACA,aACA,aACA,UACA,QACA,UACA,WACA,UACA,UACA,SACA,aACA,SACA,SACA,QACA,WACA,SACA,UACA,WACA,aACA,aACA,YACA,QACA,SACA,OACA,QACA,SACA,SACA,SACA,UACA,YACA,UACA,UACA,WACA,WACA,UACA,UACA,WACA,SACA,WACA,WACA,QACA,SACA,UACA,WACA,WACA,WACA,WACA,SACA,UACA,UACA,SACA,UACA,WACA,QACA,UACA,YACA,SACA,QACA,SACA,QACA,SACA,WACA,WACA,UACA,UACA,UACA,SACA,UACA,UACA,WACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,UACA,YACA,SACA,QACA,UACA,UACA,SACA,UACA,UACA,SACA,SACA,SACA,UACA,QACA,SACA,UACA,SACA,SACA,QACA,QACA,SACA,UACA,UACA,YACA,aACA,YACA,UACA,WACA,YACA,OACA,QACA,UACA,WACA,SACA,YACA,QACA,UACA,SACA,WACA,UACA,QACA,QACA,UACA,QACA,SACA,QACA,SACA,UACA,aACA,UACA,YACA,aACA,WACA,WACA,UACA,YACA,QACA,QACA,QACA,WACA,SACA,SACA,OACA,OACA,QACA,YACA,SACA,UACA,WACA,WACA,YACA,WACA,YACA,WACA,WACA,SACA,WACA,UACA,UACA,SACA,UACA,aACA,UACA,WACA,WACA,SACA,aACA,WACA,QACA,aACA,SACA,SACA,YACA,SACA,OACA,QACA,QACA,UACA,SACA,WACA,WACA,UACA,SACA,WACA,SACA,UACA,YACA,UACA,UACA,WACA,WACA,SACA,WACA,SACA,UACA,UACA,UACA,SACA,QACA,SACA,YACA,QACA,UACA,WACA,UACA,WACA,SACA,YACA,WACA,SACA,SACA,UACA,OACA,QACA,SACA,OACA,UACA,SACA,SACA,QACA,UACA,SACA,UACA,WACA,UACA,UACA,QACA,OACA,QACA,QACA,WACA,QACA,SACA,WACA,SACA,QACA,SACA,UACA,WACA,WACA,OACA,QACA,SACA,QACA,WACA,SACA,QACA,QACA,UACA,QACA,SACA,OACA,SACA,UACA,QACA,QACA,QACA,UACA,QACA,UACA,SACA,UACA,SACA,SACA,YACA,aACA,UACA,WACA,WACA,WACA,UACA,WACA,SACA,UACA,YACA,SACA,QACA,WACA,UACA,UACA,UACA,WACA,SACA,aACA,YACA,SACA,UACA,SACA,UACA,cACA,WACA,WACA,aACA,SACA,UACA,WACA,WACA,WACA,WACA,YACA,UACA,WACA,SACA,YACA,WACA,WACA,QACA,YACA,UACA,aACA,UACA,UACA,WACA,YACA,aACA,YACA,aACA,YACA,YACA,UACA,UACA,UACA,UACA,YACA,aACA,WACA,UACA,SACA,UACA,YACA,SACA,SACA,WACA,YACA,YACA,UACA,UACA,SACA,QACA,YACA,SACA,UACA,SACA,SACA,SACA,WACA,WACA,UACA,WACA,QACA,WACA,YACA,aACA,WACA,UACA,SACA,UACA,UACA,WACA,YACA,aACA,SACA,WACA,YACA,UACA,YACA,WACA,WACA,YACA,YACA,WACA,YACA,YACA,WACA,WACA,YACA,YACA,WACA,UACA,WACA,SACA,SACA,WACA,SACA,YACA,YACA,WACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,SACA,WACA,SACA,WACA,UACA,UACA,aACA,UACA,UACA,WACA,UACA,UACA,UACA,SACA,WACA,SACA,UACA,WACA,WACA,aACA,UACA,SACA,UACA,SACA,WACA,YACA,UACA,WACA,WACA,WACA,SACA,UACA,QACA,SACA,QACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,SACA,UACA,WACA,QACA,QACA,WACA,WACA,WACA,WACA,WACA,YACA,WACA,SACA,QACA,SACA,SACA,UACA,aACA,WACA,SACA,WACA,WACA,WACA,SACA,QACA,aACA,UACA,UACA,SACA,UACA,WACA,YACA,YACA,WACA,WACA,YACA,WACA,WACA,SACA,WACA,WACA,WACA,WACA,UACA,SACA,SACA,UACA,WACA,UACA,SACA,SACA,UACA,UACA,SACA,UACA,QACA,SACA,UACA,SACA,SACA,UACA,SACA,YACA,UACA,UACA,YACA,QACA,aACA,YACA,UACA,UACA,YACA,QACA,QACA,YACA,YACA,aACA,UACA,QACA,SACA,SACA,UACA,SACA,UACA,UACA,QACA,SACA,SACA,WACA,OACA,WACA,WACA,UACA,SACA,UACA,UACA,MACA,SACA,UACA,QACA,UACA,MACA,QACA,SACA,SACA,UACA,QACA,MACA,QACA,WACA,QACA,SACA,UACA,WACA,SACA,UACA,UACA,WACA,SACA,QACA,UACA,UACA,QACA,OACA,WACA,SACA,QACA,SACA,SACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,WACA,QACA,SACA,UACA,UACA,OACA,UACA,SACA,UACA,UACA,SACA,SACA,QACA,WACA,SACA,UACA,UACA,OACA,SACA,WACA,aACA,SACA,SACA,WACA,UACA,QACA,UACA,WACA,UACA,WACA,QACA,QACA,UACA,WACA,WACA,UACA,WACA,WACA,OACA,SACA,WACA,WACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,QACA,UACA,QACA,UACA,SACA,aACA,WACA,UACA,WACA,UACA,eACA,UACA,SACA,QACA,SACA,QACA,SACA,UACA,UACA,YACA,UACA,SACA,UACA,WACA,QACA,OACA,UACA,UACA,UACA,QACA,SACA,OACA,MACA,OACA,UACA,QACA,SACA,QACA,UACA,WACA,WACA,YACA,WACA,aACA,SACA,WACA,YACA,UACA,UACA,SACA,UACA,YACA,YACA,UACA,WACA,UACA,UACA,SACA,YACA,UACA,SACA,QACA,SACA,WACA,eACA,YACA,UACA,UACA,QACA,SACA,OACA,SACA,WACA,SACA,SACA,YACA,OACA,UACA,OACA,SACA,WACA,OACA,QACA,OACA,UACA,WACA,QACA,QACA,SACA,UACA,QACA,UACA,QACA,UACA,UACA,SACA,SACA,UACA,SACA,UACA,WACA,YACA,SACA,WACA,WACA,UACA,UACA,WACA,QACA,QACA,SACA,SACA,OACA,OACA,SACA,SACA,QACA,QACA,QACA,UACA,OACA,QACA,OACA,QACA,UACA,UACA,SACA,QACA,SACA,QACA,OACA,aACA,UACA,WACA,UACA,UACA,SACA,SACA,SACA,QACA,QACA,SACA,QACA,OACA,QACA,QACA,SACA,UACA,WACA,UACA,UACA,SACA,UACA,SACA,QACA,SACA,QACA,WACA,SACA,OACA,SACA,SACA,SACA,UACA,SACA,SACA,UACA,OACA,UACA,UACA,UACA,UACA,WACA,QACA,SACA,QACA,SACA,SACA,SACA,SACA,SACA,QACA,SACA,OACA,SACA,WACA,UACA,UACA,WACA,SACA,YACA,QACA,QACA,SACA,SACA,UACA,QACA,SACA,SACA,SACA,aACA,SACA,WACA,WACA,UACA,WACA,UACA,WACA,aACA,aACA,aACA,SACA,aACA,QACA,UACA,UACA,SACA,SACA,YACA,QACA,aACA,YACA,SACA,SACA,WACA,OACA,WACA,UACA,QACA,SACA,WACA,YACA,UACA,WACA,SACA,UACA,WACA,SACA,QACA,SACA,OACA,SACA,WACA,QACA,SACA,SACA,SACA,UACA,UACA,WACA,cACA,YACA,YACA,YACA,WACA,SACA,QACA,UACA,SACA,QACA,SACA,SACA,YACA,SACA,WACA,OACA,QACA,QACA,QACA,OACA,UACA,WACA,SACA,QACA,SACA,OACA,QACA,SACA,WACA,SACA,UACA,UACA,OACA,UACA,WACA,MACA,UACA,SACA,UACA,UACA,aACA,SACA,SACA,UACA,SACA,WACA,UACA,SACA,WACA,SACA,UACA,QACA,SACA,UACA,QACA,UACA,SACA,UACA,QACA,OACA,QACA,QACA,QACA,SACA,SACA,SACA,OACA,YACA,UACA,UACA,UACA,SACA,UACA,OACA,UACA,WACA,OACA,UACA,WACA,WACA,SACA,YACA,SACA,QACA,OACA,QACA,OACA,QACA,SACA,QACA,QACA,QACA,OACA,SACA,SACA,OACA,QACA,QACA,QACA,UACA,SACA,SACA,SACA,QACA,SACA,SACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,OACA,QACA,SACA,WACA,SACA,UACA,QACA,UACA,SACA,OACA,SACA,SACA,SACA,QACA,SACA,QACA,UACA,WACA,SACA,QACA,QACA,SACA,SACA,aACA,SACA,UACA,UACA,QACA,UACA,UACA,OACA,QACA,UACA,SACA,UACA,UACA,UACA,UACA,WACA,OACA,WACA,SACA,UACA,YACA,UACA,WACA,UACA,OACA,UACA,YACA,aACA,UACA,SACA,UACA,QACA,QACA,QACA,QACA,UACA,SACA,OACA,QACA,UACA,OACA,SACA,QACA,OACA,UACA,SACA,QACA,OACA,QACA,UACA,QACA,QACA,SACA,OACA,QACA,QACA,SACA,QACA,QACA,SACA,SACA,OACA,SACA,QACA,QACA,UACA,OACA,UACA,OACA,OACA,SACA,UACA,UACA,SACA,OACA,SACA,MACA,WACA,SACA,UACA,OACA,SACA,UACA,UACA,SACA,WACA,QACA,UACA,WACA,UACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,MACA,MACA,OACA,MACA,OACA,SACA,SACA,WACA,SACA,WACA,UACA,WACA,WACA,UACA,YACA,UACA,YACA,UACA,YACA,QACA,SACA,UACA,UACA,QACA,QACA,SACA,UACA,WACA,SACA,YACA,UACA,OACA,QACA,UACA,UACA,SACA,UACA,WACA,QACA,SACA,QACA,SACA,cACA,QACA,OACA,QACA,SACA,QACA,SACA,OACA,QACA,QACA,QACA,SACA,UACA,UACA,OACA,QACA,OACA,QACA,SACA,OACA,QACA,OACA,SACA,MACA,OACA,SACA,SACA,SACA,QACA,SACA,OACA,QACA,SACA,UACA,QACA,QACA,QACA,QACA,OACA,OACA,SACA,OACA,QACA,OACA,YACA,SACA,SACA,WACA,UACA,SACA,SACA,QACA,SACA,UACA,SACA,aACA,YACA,WACA,WACA,SACA,UACA,UACA,aACA,QACA,UACA,QACA,SACA,UACA,SACA,QACA,SACA,QACA,QACA,SACA,OACA,WACA,OACA,OACA,WACA,OACA,SACA,QACA,UACA,OACA,UACA,QACA,SACA,QACA,UACA,UACA,OACA,QACA,UACA,SACA,SACA,SACA,UACA,SACA,SACA,QACA,OACA,WACA,UACA,UACA,UACA,MACA,UACA,OACA,SACA,QACA,OACA,SACA,SACA,SACA,OACA,OACA,WACA,OACA,SACA,SACA,SACA,QACA,UACA,WACA,SACA,YACA,QACA,QACA,QACA,SACA,UACA,UACA,SACA,SACA,QACA,SACA,QACA,SACA,OACA,SACA,UACA,OACA,SACA,UACA,QACA,WACA,WACA,SACA,WACA,UACA,SACA,UACA,QACA,QACA,QACA,QACA,QACA,WACA,QACA,YACA,QACA,QACA,YACA,SACA,UACA,UACA,OACA,QACA,SACA,QACA,SACA,QACA,SACA,OACA,MACA,OACA,QACA,YACA,UACA,UACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,WACA,SACA,UACA,QACA,SACA,WACA,UACA,SACA,UACA,SACA,QACA,MACA,OACA,SACA,SACA,OACA,QACA,QACA,SACA,UACA,SACA,QACA,SACA,eACA,QACA,SACA,QACA,SACA,QACA,SACA,QACA,WACA,YACA,SACA,YACA,YACA,QACA,SACA,SACA,SACA,QACA,OACA,OACA,SACA,OACA,SACA,MACA,OACA,QACA,WACA,QACA,YACA,QACA,SACA,SACA,WACA,aACA,UACA,WACA,OACA,QACA,UACA,SACA,SACA,WACA,SACA,QACA,QACA,QACA,SACA,OACA,QACA,QACA,UACA,UACA,UACA,UACA,SACA,OACA,SACA,QACA,QACA,QACA,OACA,MACA,UACA,WACA,UACA,YACA,QACA,WACA,UACA,UACA,SACA,UACA,MACA,SACA,SACA,UACA,UACA,SACA,SACA,QACA,WACA,SACA,UACA,UACA,QACA,SACA,WACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,SACA,QACA,SACA,QACA,YACA,YACA,UACA,YACA,SACA,UACA,QACA,UACA,SACA,UACA,UACA,UACA,SACA,YACA,WACA,UACA,SACA,UACA,WACA,SACA,SACA,WACA,WACA,UACA,QACA,WACA,SACA,UACA,SACA,UACA,UACA,WACA,UACA,UACA,QACA,YACA,QACA,SACA,WACA,SACA,QACA,QACA,OACA,QACA,UACA,WACA,WACA,SACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,UACA,SACA,SACA,QACA,UACA,SACA,MACA,UACA,UACA,QACA,SACA,SACA,WACA,UACA,WACA,UACA,WACA,UACA,UACA,OACA,UACA,WACA,QACA,WACA,WACA,SACA,UACA,UACA,UACA,QACA,UACA,SACA,QACA,SACA,SACA,MACA,UACA,SACA,UACA,SACA,aACA,aACA,WACA,YACA,WACA,UACA,SACA,SACA,YACA,OACA,SACA,aACA,cACA,YACA,UACA,WACA,SACA,UACA,SACA,OACA,UACA,SACA,QACA,SACA,aACA,SACA,SACA,OACA,QACA,UACA,UACA,SACA,QACA,UACA,QACA,QACA,UACA,QACA,QACA,UACA,YACA,UACA,WACA,YACA,WACA,QACA,SACA,UACA,UACA,WACA,QACA,WACA,UACA,YACA,QACA,OACA,QACA,WACA,WACA,WACA,WACA,QACA,SACA,SACA,WACA,UACA,QACA,YACA,QACA,WACA,YACA,YACA,YACA,SACA,SACA,SACA,UACA,SACA,QACA,UACA,UACA,WACA,UACA,OACA,OACA,QACA,QACA,SACA,SACA,SACA,YACA,SACA,UACA,UACA,WACA,UACA,YACA,UACA,WACA,UACA,SACA,SACA,QACA,SACA,WACA,SACA,UACA,UACA,QACA,SACA,WACA,UACA,SACA,UACA,YACA,UACA,SACA,SACA,SACA,SACA,UACA,QACA,OACA,aACA,WACA,WACA,OACA,SACA,WACA,SACA,SACA,UACA,YACA,UACA,UACA,WACA,OACA,QACA,SACA,aACA,QACA,SACA,SACA,YACA,QACA,OACA,UACA,QACA,SACA,UACA,YACA,SACA,aACA,QACA,WACA,QACA,UACA,QACA,UACA,UACA,UACA,UACA,WACA,SACA,QACA,MACA,OACA,QACA,OACA,aACA,UACA,UACA,MACA,UACA,SACA,SACA,SACA,QACA,SACA,UACA,YACA,UACA,QACA,SACA,QACA,SACA,WACA,OACA,SACA,UACA,SACA,cACA,SACA,WACA,SACA,SACA,SACA,SACA,SACA,SACA,UACA,SACA,UACA,OACA,SACA,UACA,QACA,UACA,WACA,SACA,cACA,WACA,WACA,UACA,WACA,WACA,UACA,UACA,UACA,WACA,WACA,WACA,SACA,YACA,UACA,WACA,SACA,QACA,UACA,QACA,UACA,WACA,YACA,YACA,YACA,UACA,SACA,WACA,SACA,UACA,SACA,SACA,aACA,cACA,SACA,SACA,QACA,UACA,SACA,UACA,OACA,WACA,QACA,SACA,SACA,UACA,WACA,OACA,UACA,QACA,UACA,SACA,UACA,UACA,SACA,UACA,SACA,SACA,QACA,OACA,QACA,QACA,QACA,cACA,QACA,SACA,OACA,cACA,UACA,UACA,cACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,SACA,UACA,QACA,WACA,WACA,cACA,WACA,UACA,SACA,QACA,OACA,OACA,OACA,QACA,WACA,aACA,QACA,OACA,UACA,SACA,UACA,SACA,UACA,UACA,WACA,SACA,UACA,UACA,WACA,YACA,aACA,QACA,UACA,QACA,SACA,MACA,SACA,OACA,UACA,UACA,WACA,QACA,QACA,UACA,WACA,SACA,SACA,OACA,SACA,QACA,WACA,SACA,SACA,SACA,YACA,QACA,UACA,QACA,QACA,UACA,SACA,QACA,QACA,UACA,QACA,UACA,UACA,QACA,SACA,WACA,QACA,SACA,WACA,SACA,QACA,WACA,QACA,UACA,WACA,SACA,SACA,UACA,QACA,SACA,WACA,QACA,QACA,QACA,SACA,SACA,UACA,WACA,SACA,MACA,UACA,SACA,OACA,SACA,WACA,SACA,WACA,SACA,UACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,MACA,QACA,SACA,WACA,UACA,QACA,SACA,OACA,UACA,UACA,OACA,WACA,UACA,UACA,SACA,UACA,WACA,UACA,QACA,SACA,SACA,OACA,MACA,SACA,SACA,UACA,SACA,SACA,OACA,UACA,WACA,SACA,UACA,UACA,UACA,QACA,OACA,UACA,UACA,SACA,SACA,UACA,UACA,QACA,QACA,QACA,UACA,UACA,WACA,QACA,SACA,UACA,SACA,SACA,UACA,OACA,QACA,WACA,UACA,WACA,OACA,QACA,QACA,SACA,SACA,UACA,QACA,SACA,UACA,YACA,WACA,WACA,SACA,SACA,QACA,QACA,QACA,OACA,UACA,WACA,YACA,YACA,SACA,OACA,OACA,QACA,SACA,SACA,SACA,QACA,QACA,SACA,OACA,QACA,SACA,QACA,UACA,SACA,UACA,UACA,SACA,OACA,QACA,SACA,SACA,OACA,UACA,WACA,OACA,WACA,UACA,SACA,UACA,OACA,QACA,QACA,SACA,OACA,SACA,QACA,MACA,QACA,QACA,WACA,WACA,UACA,OACA,QACA,OACA,WACA,YACA,UACA,SACA,QACA,SACA,SACA,QACA,SACA,QACA,UACA,UACA,QACA,YACA,SACA,UACA,WACA,aACA,WACA,WACA,YACA,UACA,SACA,SACA,UACA,WACA,UACA,UACA,WACA,QACA,SACA,UACA,OACA,UACA,UACA,YACA,WACA,UACA,UACA,SACA,SACA,SACA,QACA,WACA,OACA,QACA,QACA,SACA,UACA,SACA,SACA,SACA,QACA,QACA,QACA,SACA,UACA,SACA,WACA,UACA,SACA,SACA,UACA,OACA,QACA,SACA,QACA,OACA,WACA,SACA,SACA,UACA,UACA,cACA,OACA,SACA,SACA,SACA,QACA,OACA,QACA,MACA,QACA,QACA,OACA,SACA,SACA,UACA,SACA,SACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,UACA,QACA,YACA,YACA,WACA,YACA,WACA,UACA,UACA,SACA,OACA,QACA,QACA,QACA,QACA,SACA,UACA,WACA,YACA,QACA,UACA,WACA,WACA,UACA,QACA,QACA,QACA,WACA,UACA,SACA,WACA,WACA,YACA,YACA,YACA,YACA,SACA,SACA,SACA,UACA,QACA,QACA,SACA,QACA,OACA,SACA,QACA,OACA,SACA,UACA,UACA,SACA,OACA,QACA,QACA,UACA,QACA,QACA,SACA,SACA,OACA,UACA,QACA,SACA,SACA,OACA,SACA,OACA,SACA,QACA,QACA,OACA,QACA,QACA,SACA,SACA,SACA,OACA,OACA,SACA,UACA,UACA,UACA,UACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,YACA,WACA,SACA,SACA,UACA,UACA,UACA,UACA,QACA,UACA,SACA,UACA,WACA,WACA,YACA,WACA,UACA,UACA,WACA,UACA,UACA,UACA,UACA,YACA,WACA,QACA,SACA,YACA,YACA,cACA,aACA,aACA,YACA,UACA,YACA,YACA,UACA,UACA,QACA,QACA,SACA,QACA,SACA,SACA,OACA,UACA,QACA,SACA,WACA,UACA,OACA,OACA,UACA,WACA,YACA,WACA,OACA,YACA,SACA,WACA,SACA,QACA,WACA,UACA,SACA,OACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,SACA,SACA,UACA,UACA,QACA,MACA,SACA,QACA,QACA,UACA,UACA,UACA,SACA,QACA,YACA,QACA,aACA,OACA,QACA,QACA,SACA,QACA,QACA,OACA,SACA,UACA,UACA,UACA,OACA,QACA,SACA,UACA,SACA,OACA,WACA,UACA,OACA,OACA,SACA,QACA,SACA,UACA,QACA,SACA,SACA,SACA,OACA,SACA,OACA,UACA,QACA,UACA,OACA,UACA,QACA,QACA,OACA,QACA,UACA,WACA,QACA,SACA,YACA,UACA,WACA,YACA,OACA,QACA,QACA,OACA,QACA,WACA,SACA,SACA,OACA,QACA,QACA,UACA,QACA,QACA,UACA,QACA,UACA,QACA,SACA,WACA,QACA,UACA,QACA,OACA,UACA,QACA,OACA,OACA,QACA,UACA,UACA,UACA,UACA,WACA,QACA,QACA,SACA,UACA,UACA,YACA,SACA,SACA,QACA,OACA,SACA,UACA,WACA,WACA,YACA,SACA,UACA,UACA,MACA,YACA,WACA,SACA,UACA,UACA,SACA,SACA,UACA,QACA,SACA,SACA,UACA,OACA,SACA,SACA,UACA,YACA,OACA,WACA,UACA,UACA,UACA,QACA,WACA,SACA,YACA,YACA,QACA,WACA,SACA,WACA,UACA,UACA,WACA,SACA,YACA,WACA,UACA,WACA,aACA,SACA,YACA,SACA,SACA,UACA,QACA,YACA,aACA,UACA,WACA,YACA,UACA,QACA,UACA,SACA,UACA,OACA,aACA,OACA,UACA,QACA,QACA,QACA,WACA,UACA,OACA,SACA,SACA,YACA,UACA,SACA,SACA,SACA,QACA,SACA,SACA,OACA,cACA,cACA,UACA,YACA,MACA,UACA,UACA,QACA,WACA,UACA,SACA,WACA,UACA,SACA,SACA,UACA,QACA,SACA,SACA,SACA,QACA,SACA,QACA,UACA,UACA,UACA,YACA,cACA,aACA,WACA,SACA,SACA,SACA,WACA,YACA,UACA,WACA,YACA,SACA,WACA,SACA,SACA,SACA,UACA,SACA,SACA,YACA,SACA,WACA,UACA,SACA,UACA,eACA,cACA,SACA,SACA,YACA,YACA,WACA,aACA,YACA,YACA,SACA,UACA,SACA,UACA,UACA,YACA,SACA,SACA,aACA,YACA,SACA,SACA,cACA,aACA,SACA,WACA,SACA,UACA,UACA,YACA,YACA,aACA,UACA,WACA,YACA,WACA,SACA,QACA,UACA,WACA,WACA,UACA,UACA,SACA,UACA,aACA,UACA,WACA,WACA,SACA,SACA,WACA,SACA,WACA,UACA,aACA,WACA,WACA,QACA,UACA,WACA,WACA,WACA,YACA,UACA,SACA,UACA,WACA,YACA,QACA,SACA,QACA,OACA,SACA,SACA,UACA,SACA,SACA,SACA,YACA,OACA,YACA,UACA,WACA,OACA,UACA,SACA,SACA,QACA,QACA,UACA,QACA,UACA,SACA,SACA,SACA,UACA,SACA,UACA,SACA,QACA,QACA,SACA,SACA,SACA,UACA,QACA,SACA,OACA,UACA,OACA,OACA,SACA,YACA,WACA,SACA,UACA,SACA,SACA,QACA,UACA,UACA,UACA,SACA,UACA,SACA,WACA,SACA,UACA,UACA,SACA,SACA,UACA,UACA,cACA,cACA,OACA,SACA,UACA,SACA,SACA,UACA,UACA,QACA,WACA,SACA,WACA,WACA,UACA,UACA,QACA,SACA,WACA,SACA,SACA,UACA,QACA,UACA,SACA,UACA,WACA,SACA,QACA,UACA,UACA,WACA,UACA,UACA,WACA,SACA,UACA,UACA,SACA,SACA,UACA,UACA,SACA,UACA,WACA,YACA,SACA,UACA,WACA,WACA,QACA,SACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,UACA,WACA,UACA,UACA,SACA,WACA,WACA,SACA,YACA,WACA,SACA,WACA,SACA,SACA,UACA,SACA,SACA,SACA,WACA,cACA,QACA,SACA,UACA,UACA,UACA,UACA,SACA,WACA,WACA,UACA,WACA,WACA,QACA,SACA,UACA,UACA,UACA,UACA,OACA,SACA,SACA,SACA,OACA,SACA,UACA,QACA,QACA,UACA,SACA,SACA,YACA,SACA,UACA,QACA,SACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,UACA,UACA,UACA,QACA,UACA,UACA,QACA,SACA,UACA,WACA,WACA,QACA,SACA,UACA,SACA,QACA,UACA,WACA,SACA,UACA,UACA,WACA,UACA,UACA,WACA,UACA,SACA,UACA,UACA,SACA,WACA,UACA,SACA,UACA,UACA,WACA,UACA,UACA,UACA,UACA,WACA,QACA,SACA,UACA,UACA,QACA,SACA,YACA,WACA,QACA,SACA,QACA,QACA,UACA,QACA,SACA,QACA,UACA,SACA,QACA,UACA,WACA,WACA,UACA,SACA,UACA,SACA,UACA,UACA,WACA,WACA,WACA,QACA,SACA,UACA,SACA,SACA,QACA,aACA,WACA,WACA,QACA,SACA,YACA,UACA,SACA,aACA,UACA,QACA,MACA,UACA,SACA,QACA,SACA,SACA,WACA,SACA,UACA,WACA,UACA,QACA,UACA,QACA,QACA,SACA,SACA,QACA,UACA,SACA,UACA,SACA,YACA,UACA,YACA,SACA,SACA,SACA,QACA,SACA,SACA,QACA,QACA,UACA,WACA,YACA,cACA,SACA,SACA,SACA,QACA,SACA,UACA,QACA,QACA,SACA,UACA,SACA,WACA,YACA,UACA,SACA,WACA,WACA,WACA,UACA,WACA,QACA,QACA,aACA,UACA,UACA,SACA,SACA,QACA,OACA,WACA,SACA,WACA,SACA,MACA,QACA,WACA,SACA,QACA,SACA,UACA,WACA,SACA,OACA,SACA,SACA,SACA,UACA,QACA,SACA,QACA,SACA,UACA,SACA,UACA,YACA,UACA,UACA,aACA,WACA,QACA,QACA,SACA,QACA,UACA,YACA,UACA,SACA,SACA,QACA,UACA,QACA,OACA,QACA,UACA,QACA,UACA,UACA,UACA,QACA,QACA,UACA,UACA,UACA,YACA,QACA,SACA,aACA,SACA,UACA,cACA,OACA,SACA,SACA,QACA,QACA,UACA,QACA,QACA,SACA,SACA,QACA,SACA,WACA,WACA,QACA,UACA,UACA,WACA,OACA,SACA,OACA,QACA,SACA,QACA,QACA,WACA,cACA,YACA,aACA,QACA,SACA,SACA,WACA,QACA,QACA,WACA,YACA,SACA,UACA,UACA,WACA,SACA,UACA,WACA,SACA,SACA,WACA,WACA,UACA,UACA,SACA,UACA,WACA,YACA,YACA,UACA,SACA,aACA,UACA,SACA,UACA,UACA,WACA,WACA,SACA,SACA,SACA,QACA,SACA,SACA,aACA,QACA,UACA,WACA,QACA,SACA,UACA,QACA,SACA,WACA,aACA,YACA,YACA,SACA,QACA,UACA,YACA,WACA,aACA,YACA,WACA,WACA,UACA,UACA,aACA,YACA,UACA,YACA,UACA,SACA,UACA,QACA,SACA,SACA,SACA,QACA,WACA,UACA,QACA,WACA,UACA,WACA,QACA,UACA,SACA,WACA,UACA,WACA,WACA,UACA,YACA,UACA,WACA,UACA,SACA,QACA,UACA,YACA,YACA,UACA,UACA,WACA,YACA,SACA,SACA,UACA,WACA,YACA,UACA,WACA,WACA,YACA,YACA,WACA,UACA,YACA,WACA,aACA,WACA,WACA,QACA,YACA,UACA,SACA,YACA,YACA,SACA,UACA,YACA,YACA,WACA,UACA,QACA,WACA,WACA,YACA,WACA,WACA,QACA,SACA,WACA,UACA,SACA,QACA,QACA,SACA,YACA,UACA,YACA,WACA,YACA,WACA,UACA,UACA,QACA,YACA,SACA,YACA,SACA,QACA,SACA,WACA,UACA,QACA,UACA,UACA,WACA,WACA,UACA,UACA,SACA,UACA,WACA,WACA,SACA,UACA,SACA,WACA,WACA,SACA,YACA,WACA,aACA,YACA,YACA,eACA,UACA,QACA,QACA,UACA,YACA,WACA,UACA,UACA,SACA,SACA,eACA,UACA,SACA,SACA,SACA,aACA,UACA,WACA,UACA,QACA,aACA,QACA,WACA,SACA,SACA,QACA,UACA,UACA,QACA,SACA,UACA,QACA,MACA,SACA,MACA,SACA,UACA,WACA,SACA,YACA,cACA,SACA,UACA,WACA,aACA,QACA,SACA,UACA,QACA,SACA,SACA,UACA,WACA,UACA,QACA,UACA,OACA,QACA,aACA,UACA,SACA,SACA,QACA,SACA,UACA,UACA,UACA,OACA,QACA,SACA,OACA,WACA,WACA,UACA,WACA,QACA,SACA,UACA,QACA,UACA,UACA,SACA,SACA,aACA,SACA,WACA,UACA,QACA,QACA,SACA,WACA,WACA,UACA,UACA,QACA,UACA,UACA,QACA,QACA,QACA,SACA,SACA,YACA,SACA,SACA,SACA,SACA,UACA,UACA,QACA,YACA,UACA,OACA,QACA,UACA,UACA,UACA,SACA,OACA,UACA,QACA,QACA,SACA,UACA,YACA,SACA,UACA,aACA,WACA,UACA,UACA,QACA,aACA,UACA,UACA,aACA,UACA,SACA,UACA,SACA,SACA,QACA,SACA,UACA,SACA,SACA,UACA,SACA,UACA,SACA,SACA,UACA,QACA,OACA,SACA,QACA,SACA,SACA,UACA,UACA,UACA,QACA,SACA,QACA,QACA,OACA,SACA,SACA,QACA,SACA,UACA,UACA,UACA,QACA,SACA,UACA,QACA,aACA,QACA,QACA,QACA,SACA,OACA,OACA,QACA,UACA,SACA,SACA,UACA,QACA,OACA,UACA,OACA,QACA,UACA,SACA,SACA,QACA,QACA,SACA,UACA,QACA,UACA,QACA,QACA,UACA,SACA,UACA,UACA,UACA,SACA,UACA,UACA,QACA,SACA,SACA,QACA,SACA,UACA,UACA,QACA,QACA,QACA,SACA,WACA,SACA,SACA,UACA,SACA,SACA,QACA,QACA,SACA,SACA,SACA,YACA,UACA,OACA,UACA,UACA,UACA,SACA,SACA,WACA,WACA,WACA,UACA,UACA,UACA,OACA,QACA,UACA,SACA,SACA,UACA,WACA,UACA,OACA,SACA,SACA,SACA,QACA,WACA,UACA,UACA,QACA,SACA,UACA,WACA,QACA,cACA,QACA,QACA,OACA,QACA,SACA,UACA,YACA,QACA,YACA,QACA,UACA,OACA,SACA,SACA,QACA,OACA,QACA,SACA,UACA,SACA,OACA,QACA,QACA,UACA,SACA,SACA,SACA,OACA,WACA,WACA,WACA,SACA,UACA,UACA,WACA,WACA,YACA,UACA,WACA,SACA,MACA,WACA,YACA,YACA,aACA,QACA,SACA,UACA,QACA,UACA,OACA,QACA,SACA,YACA,YACA,YACA,WACA,YACA,YACA,WACA,UACA,UACA,QACA,aACA,YACA,SACA,YACA,WACA,UACA,UACA,aACA,UACA,SACA,eACA,MACA,UACA,UACA,WACA,WACA,OACA,MACA,QACA,SACA,WACA,QACA,UACA,QACA,UACA,SACA,SACA,SACA,WACA,UACA,WACA,UACA,UACA,QACA,WACA,UACA,QACA,WACA,UACA,UACA,SACA,SACA,SACA,UACA,YACA,SACA,aACA,SACA,OACA,YACA,UACA,QACA,UACA,OACA,OACA,UACA,UACA,SACA,UACA,UACA,SACA,UACA,UACA,SACA,SACA,OACA,UACA,OACA,QACA,QACA,QACA,QACA,OACA,SACA,QACA,QACA,OACA,UACA,OACA,MACA,SACA,UACA,SACA,YACA,QACA,UACA,QACA,YACA,SACA,WACA,SACA,SACA,QACA,SACA,UACA,SACA,OACA,SACA,SACA,SACA,YACA,SACA,QACA,SACA,SACA,WACA,OACA,QACA,UACA,OACA,QACA,QACA,UACA,SACA,QACA,OACA,QACA,QACA,SACA,SACA,SACA,SACA,OACA,YACA,OACA,QACA,OACA,QACA,WACA,SACA,SACA,SACA,QACA,SACA,OACA,UACA,QACA,SACA,UACA,OACA,SACA,YACA,OACA,QACA,UACA,OACA,QACA,QACA,SACA,SACA,UACA,WACA,WACA,OACA,SACA,SACA,QACA,SACA,QACA,SACA,UACA,SACA,WACA,OACA,QACA,WACA,QACA,QACA,UACA,SACA,UACA,UACA,UACA,WACA,YACA,SACA,SACA,SACA,QACA,WACA,QACA,QACA,QACA,SACA,UACA,QACA,UACA,UACA,SACA,QACA,UACA,QACA,QACA,WACA,WACA,QACA,QACA,SACA,SACA,UACA,WACA,QACA,UACA,QACA,WACA,QACA,WACA,aACA,UACA,UACA,OACA,SACA,QACA,UACA,QACA,SACA,QACA,YACA,WACA,YACA,SACA,SACA,WACA,QACA,SACA,SACA,WACA,OACA,QACA,MACA,MACA,SACA,QACA,QACA,QACA,SACA,OACA,OACA,SACA,QACA,UACA,WACA,SACA,WACA,UACA,OACA,SACA,SACA,UACA,UACA,WACA,SACA,SACA,OACA,SACA,QACA,QACA,SACA,SACA,QACA,QACA,UACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,QACA,UACA,QACA,UACA,OACA,QACA,UACA,QACA,OACA,MACA,WACA,SACA,QACA,UACA,QACA,SACA,SACA,YACA,MACA,QACA,SACA,QACA,WACA,SACA,QACA,SACA,QACA,QACA,WACA,UACA,SACA,OACA,SACA,MACA,QACA,OACA,UACA,SACA,OACA,QACA,UACA,eACA,MACA,UACA,UACA,QACA,SACA,SACA,WACA,aACA,WACA,SACA,UACA,UACA,WACA,YACA,YACA,aACA,SACA,UACA,UACA,UACA,SACA,SACA,aACA,QACA,SACA,UACA,SACA,SACA,WACA,UACA,SACA,WACA,UACA,WACA,aACA,QACA,YACA,QACA,aACA,aACA,WACA,WACA,UACA,UACA,SACA,UACA,UACA,UACA,WACA,UACA,YACA,QACA,SACA,UACA,gBACA,WACA,OACA,QACA,WACA,UACA,UACA,WACA,SACA,UACA,UACA,UACA,YACA,YACA,YACA,WACA,UACA,SACA,QACA,SACA,QACA,UACA,SACA,SACA,SACA,WACA,UACA,UACA,WACA,SACA,UACA,SACA,SACA,UACA,QACA,SACA,OACA,WACA,UACA,UACA,YACA,YACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,QACA,OACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,UACA,QACA,OACA,QACA,UACA,SACA,UACA,WACA,SACA,SACA,UACA,SACA,QACA,UACA,SACA,UACA,aACA,QACA,UACA,WACA,SACA,UACA,SACA,UACA,SACA,SACA,WACA,WACA,YACA,SACA,SACA,SACA,QACA,OACA,SACA,UACA,OACA,UACA,UACA,SACA,QACA,SACA,QACA,WACA,YACA,OACA,QACA,UACA,SACA,QACA,SACA,QACA,OACA,QACA,aACA,WACA,aACA,cACA,aACA,YACA,aACA,aACA,YACA,WACA,aACA,QACA,UACA,WACA,SACA,SACA,SACA,UACA,WACA,SACA,SACA,SACA,UACA,WACA,SACA,SACA,QACA,SACA,UACA,SACA,WACA,UACA,QACA,SACA,OACA,SACA,QACA,UACA,UACA,QACA,OACA,UACA,QACA,SACA,WACA,OACA,SACA,SACA,MACA,QACA,UACA,UACA,SACA,YACA,SACA,WACA,OACA,MACA,QACA,SACA,YACA,UACA,UACA,SACA,UACA,SACA,UACA,UACA,UACA,UACA,SACA,SACA,SACA,SACA,QACA,UACA,SACA,UACA,UACA,UACA,SACA,WACA,OACA,UACA,QACA,SACA,UACA,SACA,UACA,UACA,WACA,QACA,SACA,UACA,OACA,UACA,aACA,UACA,WACA,aACA,SACA,WACA,aACA,UACA,UACA,SACA,UACA,YACA,OACA,UACA,SACA,QACA,YACA,cACA,aACA,eACA,OACA,SACA,SACA,SACA,UACA,QACA,SACA,MACA,UACA,UACA,UACA,SACA,UACA,SACA,SACA,WACA,aACA,SACA,YACA,YACA,OACA,WACA,QACA,SACA,UACA,QACA,WACA,UACA,UACA,SACA,SACA,SACA,aACA,UACA,SACA,QACA,SACA,UACA,QACA,SACA,WACA,WACA,QACA,QACA,SACA,SACA,YACA,QACA,UACA,SACA,SACA,QACA,QACA,UACA,SACA,SACA,UACA,SACA,YACA,YACA,aACA,WACA,cACA,YACA,WACA,WACA,eACA,SACA,WACA,WACA,aACA,UACA,SACA,SACA,SACA,SACA,UACA,UACA,WACA,UACA,WACA,SACA,UACA,YACA,aACA,UACA,WACA,WACA,WACA,YACA,aACA,aACA,WACA,WACA,YACA,YACA,YACA,WACA,UACA,WACA,UACA,UACA,WACA,WACA,UACA,UACA,QACA,YACA,UACA,aACA,UACA,WACA,cACA,UACA,YACA,UACA,QACA,UACA,WACA,UACA,UACA,SACA,SACA,UACA,UACA,SACA,QACA,UACA,UACA,QACA,SACA,WACA,SACA,UACA,WACA,SACA,UACA,UACA,SACA,QACA,QACA,UACA,QACA,UACA,UACA,UACA,aACA,YACA,UACA,UACA,OACA,QACA,UACA,YACA,SACA,SACA,SACA,UACA,YACA,QACA,QACA,WACA,UACA,UACA,QACA,UACA,UACA,UACA,WACA,WACA,WACA,SACA,UACA,WACA,aACA,SACA,YACA,YACA,aACA,SACA,WACA,UACA,YACA,aACA,UACA,QACA,SACA,UACA,SACA,SACA,WACA,UACA,QACA,SACA,UACA,WACA,aACA,UACA,SACA,UACA,UACA,WACA,UACA,UACA,UACA,YACA,QACA,WACA,YACA,UACA,OACA,SACA,YACA,SACA,UACA,WACA,UACA,SACA,QACA,UACA,SACA,aACA,UACA,SACA,cACA,UACA,YACA,SACA,OACA,QACA,SACA,UACA,UACA,SACA,UACA,QACA,eACA,QACA,WACA,UACA,UACA,SACA,UACA,SACA,QACA,OACA,UACA,UACA,WACA,WACA,UACA,UACA,WACA,UACA,UACA,UACA,YACA,UACA,aACA,UACA,SACA,QACA,WACA,UACA,YACA,UACA,UACA,SACA,SACA,SACA,SACA,UACA,UACA,UACA,UACA,UACA,cACA,UACA,UACA,OACA,QACA,OACA,aACA,QACA,QACA,QACA,QACA,UACA,QACA,QACA,SACA,QACA,SACA,SACA,UACA,QACA,OACA,UACA,QACA,UACA,OACA,SACA,QACA,OACA,UACA,UACA,SACA,WACA,MACA,SACA,QACA,UACA,QACA,SACA,SACA,aACA,YACA,SACA,UACA,SACA,QACA,SACA,SACA,SACA,MACA,MACA,SACA,QACA,MACA,UACA,WACA,QACA,QACA,UACA,KACA,MACA,OACA,WACA,SACA,SACA,QACA,QACA,OACA,OACA,OACA,UACA,UACA,UACA,UACA,OACA,MACA,OACA,UACA,SACA,UACA,OACA,WACA,UACA,aACA,WACA,SACA,QACA,SACA,KACA,OACA,SACA,MACA,OACA,SACA,OACA,UACA,MACA,OACA,SACA,OACA,SACA,SACA,QACA,SACA,UACA,OACA,OACA,OACA,QACA,QACA,MACA,YACA,WACA,SACA,UACA,OACA,SACA,WACA,SACA,SACA,QACA,UACA,SACA,QACA,QACA,SACA,UACA,QACA,OACA,UACA,WACA,QACA,UACA,SACA,WACA,QACA,QACA,OACA,UACA,YACA,YACA,aACA,OACA,OACA,OACA,OACA,OACA,MACA,QACA,QACA,OACA,OACA,QACA,OACA,OACA,UACA,OACA,QACA,SACA,OACA,SACA,QACA,UACA,QCxwWkEpoB,EAAAA,KAAK,GAAO,EAAA,SAAU,OAErF,MAAMkuB,EAAAA,CACX,YAAoBC,EAAc,cAAA,CAAdh0B,KAAAg0B,YAAAA,CAA8B,CAElD,OAAOC,EACLL,CAAAA,GAAkBvD,UAAY,EAC9BwD,GAAYxD,UAAY,EACpB,IAAA6D,EAAyBN,GAAkBzlB,KAAK8lB,CACpD,EAAA,KAAOC,IAA2B,MAA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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,31,32,33,34,35,36,37,38,39,40,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,79,82]}