@azure/web-pubsub-chat-client 1.0.0-beta.1
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.
- package/CHANGELOG.md +5 -0
- package/README.md +175 -0
- package/dist/browser/index.js +4754 -0
- package/dist/browser/index.js.map +7 -0
- package/dist/chatClient.d.ts +253 -0
- package/dist/chatClient.d.ts.map +1 -0
- package/dist/constant.d.ts +21 -0
- package/dist/constant.d.ts.map +1 -0
- package/dist/events.d.ts +70 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/generatedTypes.d.ts +406 -0
- package/dist/generatedTypes.d.ts.map +1 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2620 -0
- package/dist/index.js.map +7 -0
- package/dist/logger.d.ts +5 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/modelGuards.d.ts +2 -0
- package/dist/modelGuards.d.ts.map +1 -0
- package/dist/models.d.ts +71 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/options.d.ts +69 -0
- package/dist/options.d.ts.map +1 -0
- package/dist/utils.d.ts +11 -0
- package/dist/utils.d.ts.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../node_modules/@jspm/core/nodelibs/browser/chunk-DtuTasat.js", "../../node_modules/@jspm/core/nodelibs/browser/buffer.js", "../../node_modules/@typespec/ts-http-runtime/src/util/bytesEncoding.common.ts", "../../node_modules/@typespec/ts-http-runtime/src/util/uuidUtils.common.ts", "../../node_modules/@typespec/ts-http-runtime/src/util/uuidUtils-browser.mts", "../../node_modules/@typespec/ts-http-runtime/src/env-browser.mts", "../../node_modules/@azure/abort-controller/src/AbortError.ts", "../../node_modules/@azure/core-util/src/createAbortablePromise.ts", "../../node_modules/@azure/core-util/src/delay.ts", "../../node_modules/@jspm/core/nodelibs/browser/events.js", "../../node_modules/@azure/web-pubsub-client/src/errors/index.ts", "../../node_modules/@typespec/ts-http-runtime/src/logger/log.common.ts", "../../node_modules/@typespec/ts-http-runtime/src/logger/debug.ts", "../../node_modules/@typespec/ts-http-runtime/src/logger/logger.ts", "../../node_modules/@azure/logger/src/index.ts", "../../node_modules/@azure/web-pubsub-client/src/logger.ts", "../../node_modules/@azure/web-pubsub-client/src/protocols/jsonProtocolBase.ts", "../../node_modules/@azure/web-pubsub-client/src/protocols/webPubSubJsonReliableProtocol.ts", "../../node_modules/@azure/web-pubsub-client/src/protocols/index.ts", "../../node_modules/@azure/web-pubsub-client/src/websocket/websocketClient.ts", "../../node_modules/@azure/web-pubsub-client/src/utils/abortablePromise.ts", "../../node_modules/@azure/web-pubsub-client/src/ackManager.ts", "../../node_modules/@azure/web-pubsub-client/src/invocationManager.ts", "../../node_modules/@azure/web-pubsub-client/src/webPubSubClient.ts", "../../node_modules/tslib/tslib.es6.mjs", "../../node_modules/@azure/core-paging/src/getPagedAsyncIterator.ts", "../../src/constant.ts", "../../src/logger.ts", "../../src/utils.ts", "../../src/chatClient.ts", "../../src/index.ts"],
|
|
4
|
+
"sourcesContent": ["var exports$2 = {},\n _dewExec$2 = false;\nfunction dew$2() {\n if (_dewExec$2) return exports$2;\n _dewExec$2 = true;\n exports$2.byteLength = byteLength;\n exports$2.toByteArray = toByteArray;\n exports$2.fromByteArray = fromByteArray;\n var lookup = [];\n var revLookup = [];\n var Arr = typeof Uint8Array !== \"undefined\" ? Uint8Array : Array;\n var code = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";\n for (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n }\n\n // Support decoding URL-safe base64 strings, as Node.js does.\n // See: https://en.wikipedia.org/wiki/Base64#URL_applications\n revLookup[\"-\".charCodeAt(0)] = 62;\n revLookup[\"_\".charCodeAt(0)] = 63;\n function getLens(b64) {\n var len = b64.length;\n if (len % 4 > 0) {\n throw new Error(\"Invalid string. Length must be a multiple of 4\");\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf(\"=\");\n if (validLen === -1) validLen = len;\n var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;\n return [validLen, placeHoldersLen];\n }\n\n // base64 is 4/3 + up to two characters of the original data\n function byteLength(b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n function _byteLength(b64, validLen, placeHoldersLen) {\n return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;\n }\n function toByteArray(b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0 ? validLen - 4 : validLen;\n var i;\n for (i = 0; i < len; i += 4) {\n tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = tmp >> 16 & 255;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n if (placeHoldersLen === 2) {\n tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;\n arr[curByte++] = tmp & 255;\n }\n if (placeHoldersLen === 1) {\n tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;\n arr[curByte++] = tmp >> 8 & 255;\n arr[curByte++] = tmp & 255;\n }\n return arr;\n }\n function tripletToBase64(num) {\n return lookup[num >> 18 & 63] + lookup[num >> 12 & 63] + lookup[num >> 6 & 63] + lookup[num & 63];\n }\n function encodeChunk(uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp = (uint8[i] << 16 & 16711680) + (uint8[i + 1] << 8 & 65280) + (uint8[i + 2] & 255);\n output.push(tripletToBase64(tmp));\n }\n return output.join(\"\");\n }\n function fromByteArray(uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 63] + \"==\");\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 63] + lookup[tmp << 2 & 63] + \"=\");\n }\n return parts.join(\"\");\n }\n return exports$2;\n}\n\nvar exports$1 = {},\n _dewExec$1 = false;\nfunction dew$1() {\n if (_dewExec$1) return exports$1;\n _dewExec$1 = true;\n /*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n exports$1.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? nBytes - 1 : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n i += d;\n e = s & (1 << -nBits) - 1;\n s >>= -nBits;\n nBits += eLen;\n for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n m = e & (1 << -nBits) - 1;\n e >>= -nBits;\n nBits += mLen;\n for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : (s ? -1 : 1) * Infinity;\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen);\n };\n exports$1.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = nBytes * 8 - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;\n var i = isLE ? 0 : nBytes - 1;\n var d = isLE ? 1 : -1;\n var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;\n value = Math.abs(value);\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = (value * c - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n for (; mLen >= 8; buffer[offset + i] = m & 255, i += d, m /= 256, mLen -= 8) {}\n e = e << mLen | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 255, i += d, e /= 256, eLen -= 8) {}\n buffer[offset + i - d] |= s * 128;\n };\n return exports$1;\n}\n\nvar exports = {},\n _dewExec = false;\nfunction dew() {\n if (_dewExec) return exports;\n _dewExec = true;\n const base64 = dew$2();\n const ieee754 = dew$1();\n const customInspectSymbol = typeof Symbol === \"function\" && typeof Symbol[\"for\"] === \"function\" // eslint-disable-line dot-notation\n ? Symbol[\"for\"](\"nodejs.util.inspect.custom\") // eslint-disable-line dot-notation\n : null;\n exports.Buffer = Buffer;\n exports.SlowBuffer = SlowBuffer;\n exports.INSPECT_MAX_BYTES = 50;\n const K_MAX_LENGTH = 2147483647;\n exports.kMaxLength = K_MAX_LENGTH;\n\n /**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\n Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== \"undefined\" && typeof console.error === \"function\") {\n console.error(\"This browser lacks typed array (Uint8Array) support which is required by \" + \"`buffer` v5.x. Use `buffer` v4.x if you require old browser support.\");\n }\n function typedArraySupport() {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1);\n const proto = {\n foo: function () {\n return 42;\n }\n };\n Object.setPrototypeOf(proto, Uint8Array.prototype);\n Object.setPrototypeOf(arr, proto);\n return arr.foo() === 42;\n } catch (e) {\n return false;\n }\n }\n Object.defineProperty(Buffer.prototype, \"parent\", {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.buffer;\n }\n });\n Object.defineProperty(Buffer.prototype, \"offset\", {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined;\n return this.byteOffset;\n }\n });\n function createBuffer(length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError(\"The value \\\"\" + length + \"\\\" is invalid for option \\\"size\\\"\");\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\n\n /**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\n function Buffer(arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === \"number\") {\n if (typeof encodingOrOffset === \"string\") {\n throw new TypeError(\"The \\\"string\\\" argument must be of type string. Received type number\");\n }\n return allocUnsafe(arg);\n }\n return from(arg, encodingOrOffset, length);\n }\n Buffer.poolSize = 8192; // not used by this implementation\n\n function from(value, encodingOrOffset, length) {\n if (typeof value === \"string\") {\n return fromString(value, encodingOrOffset);\n }\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value);\n }\n if (value == null) {\n throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n }\n if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof SharedArrayBuffer !== \"undefined\" && (isInstance(value, SharedArrayBuffer) || value && isInstance(value.buffer, SharedArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length);\n }\n if (typeof value === \"number\") {\n throw new TypeError(\"The \\\"value\\\" argument must not be of type number. Received type number\");\n }\n const valueOf = value.valueOf && value.valueOf();\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length);\n }\n const b = fromObject(value);\n if (b) return b;\n if (typeof Symbol !== \"undefined\" && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === \"function\") {\n return Buffer.from(value[Symbol.toPrimitive](\"string\"), encodingOrOffset, length);\n }\n throw new TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, \" + \"or Array-like Object. Received type \" + typeof value);\n }\n\n /**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\n Buffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length);\n };\n\n // Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n // https://github.com/feross/buffer/pull/148\n Object.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\n Object.setPrototypeOf(Buffer, Uint8Array);\n function assertSize(size) {\n if (typeof size !== \"number\") {\n throw new TypeError(\"\\\"size\\\" argument must be of type number\");\n } else if (size < 0) {\n throw new RangeError(\"The value \\\"\" + size + \"\\\" is invalid for option \\\"size\\\"\");\n }\n }\n function alloc(size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(size);\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === \"string\" ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);\n }\n return createBuffer(size);\n }\n\n /**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\n Buffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding);\n };\n function allocUnsafe(size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0);\n }\n\n /**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\n Buffer.allocUnsafe = function (size) {\n return allocUnsafe(size);\n };\n /**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\n Buffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size);\n };\n function fromString(string, encoding) {\n if (typeof encoding !== \"string\" || encoding === \"\") {\n encoding = \"utf8\";\n }\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n const length = byteLength(string, encoding) | 0;\n let buf = createBuffer(length);\n const actual = buf.write(string, encoding);\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual);\n }\n return buf;\n }\n function fromArrayLike(array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0;\n const buf = createBuffer(length);\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n return buf;\n }\n function fromArrayView(arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView);\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength);\n }\n return fromArrayLike(arrayView);\n }\n function fromArrayBuffer(array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError(\"\\\"offset\\\" is outside of buffer bounds\");\n }\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError(\"\\\"length\\\" is outside of buffer bounds\");\n }\n let buf;\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array);\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf;\n }\n function fromObject(obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0;\n const buf = createBuffer(len);\n if (buf.length === 0) {\n return buf;\n }\n obj.copy(buf, 0, 0, len);\n return buf;\n }\n if (obj.length !== undefined) {\n if (typeof obj.length !== \"number\" || numberIsNaN(obj.length)) {\n return createBuffer(0);\n }\n return fromArrayLike(obj);\n }\n if (obj.type === \"Buffer\" && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data);\n }\n }\n function checked(length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError(\"Attempt to allocate Buffer larger than maximum \" + \"size: 0x\" + K_MAX_LENGTH.toString(16) + \" bytes\");\n }\n return length | 0;\n }\n function SlowBuffer(length) {\n if (+length != length) {\n // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length);\n }\n Buffer.isBuffer = function isBuffer(b) {\n return b != null && b._isBuffer === true && b !== Buffer.prototype; // so Buffer.isBuffer(Buffer.prototype) will be false\n };\n Buffer.compare = function compare(a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\"The \\\"buf1\\\", \\\"buf2\\\" arguments must be one of type Buffer or Uint8Array\");\n }\n if (a === b) return 0;\n let x = a.length;\n let y = b.length;\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n Buffer.isEncoding = function isEncoding(encoding) {\n switch (String(encoding).toLowerCase()) {\n case \"hex\":\n case \"utf8\":\n case \"utf-8\":\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n case \"base64\":\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return true;\n default:\n return false;\n }\n };\n Buffer.concat = function concat(list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n }\n if (list.length === 0) {\n return Buffer.alloc(0);\n }\n let i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n const buffer = Buffer.allocUnsafe(length);\n let pos = 0;\n for (i = 0; i < list.length; ++i) {\n let buf = list[i];\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n buf.copy(buffer, pos);\n } else {\n Uint8Array.prototype.set.call(buffer, buf, pos);\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError(\"\\\"list\\\" argument must be an Array of Buffers\");\n } else {\n buf.copy(buffer, pos);\n }\n pos += buf.length;\n }\n return buffer;\n };\n function byteLength(string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length;\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength;\n }\n if (typeof string !== \"string\") {\n throw new TypeError(\"The \\\"string\\\" argument must be one of type string, Buffer, or ArrayBuffer. \" + \"Received type \" + typeof string);\n }\n const len = string.length;\n const mustMatch = arguments.length > 2 && arguments[2] === true;\n if (!mustMatch && len === 0) return 0;\n\n // Use a for loop to avoid recursion\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return len;\n case \"utf8\":\n case \"utf-8\":\n return utf8ToBytes(string).length;\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return len * 2;\n case \"hex\":\n return len >>> 1;\n case \"base64\":\n return base64ToBytes(string).length;\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length; // assume utf8\n }\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n }\n Buffer.byteLength = byteLength;\n function slowToString(encoding, start, end) {\n let loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return \"\";\n }\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n if (end <= 0) {\n return \"\";\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n if (end <= start) {\n return \"\";\n }\n if (!encoding) encoding = \"utf8\";\n while (true) {\n switch (encoding) {\n case \"hex\":\n return hexSlice(this, start, end);\n case \"utf8\":\n case \"utf-8\":\n return utf8Slice(this, start, end);\n case \"ascii\":\n return asciiSlice(this, start, end);\n case \"latin1\":\n case \"binary\":\n return latin1Slice(this, start, end);\n case \"base64\":\n return base64Slice(this, start, end);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return utf16leSlice(this, start, end);\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (encoding + \"\").toLowerCase();\n loweredCase = true;\n }\n }\n }\n\n // This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n // to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n // reliably in a browserify context because there could be multiple different\n // copies of the 'buffer' package in use. This method works even for Buffer\n // instances that were created from another copy of the `buffer` package.\n // See: https://github.com/feross/buffer/issues/154\n Buffer.prototype._isBuffer = true;\n function swap(b, n, m) {\n const i = b[n];\n b[n] = b[m];\n b[m] = i;\n }\n Buffer.prototype.swap16 = function swap16() {\n const len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 16-bits\");\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this;\n };\n Buffer.prototype.swap32 = function swap32() {\n const len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 32-bits\");\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this;\n };\n Buffer.prototype.swap64 = function swap64() {\n const len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError(\"Buffer size must be a multiple of 64-bits\");\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this;\n };\n Buffer.prototype.toString = function toString() {\n const length = this.length;\n if (length === 0) return \"\";\n if (arguments.length === 0) return utf8Slice(this, 0, length);\n return slowToString.apply(this, arguments);\n };\n Buffer.prototype.toLocaleString = Buffer.prototype.toString;\n Buffer.prototype.equals = function equals(b) {\n if (!Buffer.isBuffer(b)) throw new TypeError(\"Argument must be a Buffer\");\n if (this === b) return true;\n return Buffer.compare(this, b) === 0;\n };\n Buffer.prototype.inspect = function inspect() {\n let str = \"\";\n const max = exports.INSPECT_MAX_BYTES;\n str = this.toString(\"hex\", 0, max).replace(/(.{2})/g, \"$1 \").trim();\n if (this.length > max) str += \" ... \";\n return \"<Buffer \" + str + \">\";\n };\n if (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n }\n Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength);\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\"The \\\"target\\\" argument must be one of type Buffer or Uint8Array. \" + \"Received type \" + typeof target);\n }\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError(\"out of range index\");\n }\n if (thisStart >= thisEnd && start >= end) {\n return 0;\n }\n if (thisStart >= thisEnd) {\n return -1;\n }\n if (start >= end) {\n return 1;\n }\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n if (this === target) return 0;\n let x = thisEnd - thisStart;\n let y = end - start;\n const len = Math.min(x, y);\n const thisCopy = this.slice(thisStart, thisEnd);\n const targetCopy = target.slice(start, end);\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break;\n }\n }\n if (x < y) return -1;\n if (y < x) return 1;\n return 0;\n };\n\n // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n // OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n //\n // Arguments:\n // - buffer - a Buffer to search\n // - val - a string, Buffer, or number\n // - byteOffset - an index into `buffer`; will be clamped to an int32\n // - encoding - an optional encoding, relevant is val is a string\n // - dir - true for indexOf, false for lastIndexOf\n function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1;\n\n // Normalize byteOffset\n if (typeof byteOffset === \"string\") {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 2147483647) {\n byteOffset = 2147483647;\n } else if (byteOffset < -2147483648) {\n byteOffset = -2147483648;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : buffer.length - 1;\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1;else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;else return -1;\n }\n\n // Normalize val\n if (typeof val === \"string\") {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1;\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir);\n } else if (typeof val === \"number\") {\n val = val & 255; // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === \"function\") {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);\n }\n throw new TypeError(\"val must be string, number or Buffer\");\n }\n function arrayIndexOf(arr, val, byteOffset, encoding, dir) {\n let indexSize = 1;\n let arrLength = arr.length;\n let valLength = val.length;\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === \"ucs2\" || encoding === \"ucs-2\" || encoding === \"utf16le\" || encoding === \"utf-16le\") {\n if (arr.length < 2 || val.length < 2) {\n return -1;\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n function read(buf, i) {\n if (indexSize === 1) {\n return buf[i];\n } else {\n return buf.readUInt16BE(i * indexSize);\n }\n }\n let i;\n if (dir) {\n let foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n let found = true;\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break;\n }\n }\n if (found) return i;\n }\n }\n return -1;\n }\n Buffer.prototype.includes = function includes(val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1;\n };\n Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true);\n };\n Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false);\n };\n function hexWrite(buf, string, offset, length) {\n offset = Number(offset) || 0;\n const remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n const strLen = string.length;\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n let i;\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16);\n if (numberIsNaN(parsed)) return i;\n buf[offset + i] = parsed;\n }\n return i;\n }\n function utf8Write(buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);\n }\n function asciiWrite(buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length);\n }\n function base64Write(buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length);\n }\n function ucs2Write(buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);\n }\n Buffer.prototype.write = function write(string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = \"utf8\";\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === \"string\") {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\n if (isFinite(length)) {\n length = length >>> 0;\n if (encoding === undefined) encoding = \"utf8\";\n } else {\n encoding = length;\n length = undefined;\n }\n } else {\n throw new Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");\n }\n const remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {\n throw new RangeError(\"Attempt to write outside buffer bounds\");\n }\n if (!encoding) encoding = \"utf8\";\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case \"hex\":\n return hexWrite(this, string, offset, length);\n case \"utf8\":\n case \"utf-8\":\n return utf8Write(this, string, offset, length);\n case \"ascii\":\n case \"latin1\":\n case \"binary\":\n return asciiWrite(this, string, offset, length);\n case \"base64\":\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length);\n case \"ucs2\":\n case \"ucs-2\":\n case \"utf16le\":\n case \"utf-16le\":\n return ucs2Write(this, string, offset, length);\n default:\n if (loweredCase) throw new TypeError(\"Unknown encoding: \" + encoding);\n encoding = (\"\" + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n };\n Buffer.prototype.toJSON = function toJSON() {\n return {\n type: \"Buffer\",\n data: Array.prototype.slice.call(this._arr || this, 0)\n };\n };\n function base64Slice(buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf);\n } else {\n return base64.fromByteArray(buf.slice(start, end));\n }\n }\n function utf8Slice(buf, start, end) {\n end = Math.min(buf.length, end);\n const res = [];\n let i = start;\n while (i < end) {\n const firstByte = buf[i];\n let codePoint = null;\n let bytesPerSequence = firstByte > 239 ? 4 : firstByte > 223 ? 3 : firstByte > 191 ? 2 : 1;\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 128) {\n codePoint = firstByte;\n }\n break;\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 192) === 128) {\n tempCodePoint = (firstByte & 31) << 6 | secondByte & 63;\n if (tempCodePoint > 127) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 12 | (secondByte & 63) << 6 | thirdByte & 63;\n if (tempCodePoint > 2047 && (tempCodePoint < 55296 || tempCodePoint > 57343)) {\n codePoint = tempCodePoint;\n }\n }\n break;\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 192) === 128 && (thirdByte & 192) === 128 && (fourthByte & 192) === 128) {\n tempCodePoint = (firstByte & 15) << 18 | (secondByte & 63) << 12 | (thirdByte & 63) << 6 | fourthByte & 63;\n if (tempCodePoint > 65535 && tempCodePoint < 1114112) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 65533;\n bytesPerSequence = 1;\n } else if (codePoint > 65535) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 65536;\n res.push(codePoint >>> 10 & 1023 | 55296);\n codePoint = 56320 | codePoint & 1023;\n }\n res.push(codePoint);\n i += bytesPerSequence;\n }\n return decodeCodePointsArray(res);\n }\n\n // Based on http://stackoverflow.com/a/22747272/680742, the browser with\n // the lowest limit is Chrome, with 0x10000 args.\n // We go 1 magnitude less, for safety\n const MAX_ARGUMENTS_LENGTH = 4096;\n function decodeCodePointsArray(codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints); // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = \"\";\n let i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));\n }\n return res;\n }\n function asciiSlice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 127);\n }\n return ret;\n }\n function latin1Slice(buf, start, end) {\n let ret = \"\";\n end = Math.min(buf.length, end);\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret;\n }\n function hexSlice(buf, start, end) {\n const len = buf.length;\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n let out = \"\";\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n return out;\n }\n function utf16leSlice(buf, start, end) {\n const bytes = buf.slice(start, end);\n let res = \"\";\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);\n }\n return res;\n }\n Buffer.prototype.slice = function slice(start, end) {\n const len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n if (end < start) end = start;\n const newBuf = this.subarray(start, end);\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype);\n return newBuf;\n };\n\n /*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\n function checkOffset(offset, ext, length) {\n if (offset % 1 !== 0 || offset < 0) throw new RangeError(\"offset is not uint\");\n if (offset + ext > length) throw new RangeError(\"Trying to access beyond buffer length\");\n }\n Buffer.prototype.readUintLE = Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n return val;\n };\n Buffer.prototype.readUintBE = Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n let val = this[offset + --byteLength];\n let mul = 1;\n while (byteLength > 0 && (mul *= 256)) {\n val += this[offset + --byteLength] * mul;\n }\n return val;\n };\n Buffer.prototype.readUint8 = Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset];\n };\n Buffer.prototype.readUint16LE = Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | this[offset + 1] << 8;\n };\n Buffer.prototype.readUint16BE = Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] << 8 | this[offset + 1];\n };\n Buffer.prototype.readUint32LE = Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 16777216;\n };\n Buffer.prototype.readUint32BE = Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] * 16777216 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);\n };\n Buffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const lo = first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24;\n const hi = this[++offset] + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + last * 2 ** 24;\n return BigInt(lo) + (BigInt(hi) << BigInt(32));\n });\n Buffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const hi = first * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n const lo = this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last;\n return (BigInt(hi) << BigInt(32)) + BigInt(lo);\n });\n Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 256)) {\n val += this[offset + i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n };\n Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n let i = byteLength;\n let mul = 1;\n let val = this[offset + --i];\n while (i > 0 && (mul *= 256)) {\n val += this[offset + --i] * mul;\n }\n mul *= 128;\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n return val;\n };\n Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 128)) return this[offset];\n return (255 - this[offset] + 1) * -1;\n };\n Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset] | this[offset + 1] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset + 1] | this[offset] << 8;\n return val & 32768 ? val | 4294901760 : val;\n };\n Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;\n };\n Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];\n };\n Buffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const val = this[offset + 4] + this[offset + 5] * 2 ** 8 + this[offset + 6] * 2 ** 16 + (last << 24); // Overflow\n\n return (BigInt(val) << BigInt(32)) + BigInt(first + this[++offset] * 2 ** 8 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 24);\n });\n Buffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE(offset) {\n offset = offset >>> 0;\n validateNumber(offset, \"offset\");\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n const val = (first << 24) +\n // Overflow\n this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + this[++offset];\n return (BigInt(val) << BigInt(32)) + BigInt(this[++offset] * 2 ** 24 + this[++offset] * 2 ** 16 + this[++offset] * 2 ** 8 + last);\n });\n Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, true, 23, 4);\n };\n Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754.read(this, offset, false, 23, 4);\n };\n Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, true, 52, 8);\n };\n Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754.read(this, offset, false, 52, 8);\n };\n function checkInt(buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError(\"\\\"buffer\\\" argument must be a Buffer instance\");\n if (value > max || value < min) throw new RangeError(\"\\\"value\\\" argument is out of bounds\");\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n }\n Buffer.prototype.writeUintLE = Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n let mul = 1;\n let i = 0;\n this[offset] = value & 255;\n while (++i < byteLength && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength;\n };\n Buffer.prototype.writeUintBE = Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n let i = byteLength - 1;\n let mul = 1;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n this[offset + i] = value / mul & 255;\n }\n return offset + byteLength;\n };\n Buffer.prototype.writeUint8 = Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 255, 0);\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer.prototype.writeUint16LE = Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n Buffer.prototype.writeUint16BE = Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 65535, 0);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n Buffer.prototype.writeUint32LE = Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset + 3] = value >>> 24;\n this[offset + 2] = value >>> 16;\n this[offset + 1] = value >>> 8;\n this[offset] = value & 255;\n return offset + 4;\n };\n Buffer.prototype.writeUint32BE = Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 4294967295, 0);\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n function wrtBigUInt64LE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n return offset;\n }\n function wrtBigUInt64BE(buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n let lo = Number(value & BigInt(4294967295));\n buf[offset + 7] = lo;\n lo = lo >> 8;\n buf[offset + 6] = lo;\n lo = lo >> 8;\n buf[offset + 5] = lo;\n lo = lo >> 8;\n buf[offset + 4] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(4294967295));\n buf[offset + 3] = hi;\n hi = hi >> 8;\n buf[offset + 2] = hi;\n hi = hi >> 8;\n buf[offset + 1] = hi;\n hi = hi >> 8;\n buf[offset] = hi;\n return offset + 8;\n }\n Buffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n Buffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt(\"0xffffffffffffffff\"));\n });\n Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n let i = 0;\n let mul = 1;\n let sub = 0;\n this[offset] = value & 255;\n while (++i < byteLength && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength;\n };\n Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, 8 * byteLength - 1);\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n let i = byteLength - 1;\n let mul = 1;\n let sub = 0;\n this[offset + i] = value & 255;\n while (--i >= 0 && (mul *= 256)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = (value / mul >> 0) - sub & 255;\n }\n return offset + byteLength;\n };\n Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 127, -128);\n if (value < 0) value = 255 + value + 1;\n this[offset] = value & 255;\n return offset + 1;\n };\n Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n return offset + 2;\n };\n Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 32767, -32768);\n this[offset] = value >>> 8;\n this[offset + 1] = value & 255;\n return offset + 2;\n };\n Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n this[offset] = value & 255;\n this[offset + 1] = value >>> 8;\n this[offset + 2] = value >>> 16;\n this[offset + 3] = value >>> 24;\n return offset + 4;\n };\n Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 2147483647, -2147483648);\n if (value < 0) value = 4294967295 + value + 1;\n this[offset] = value >>> 24;\n this[offset + 1] = value >>> 16;\n this[offset + 2] = value >>> 8;\n this[offset + 3] = value & 255;\n return offset + 4;\n };\n Buffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE(value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n Buffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE(value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt(\"0x8000000000000000\"), BigInt(\"0x7fffffffffffffff\"));\n });\n function checkIEEE754(buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError(\"Index out of range\");\n if (offset < 0) throw new RangeError(\"Index out of range\");\n }\n function writeFloat(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4;\n }\n Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert);\n };\n Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert);\n };\n function writeDouble(buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8;\n }\n Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert);\n };\n Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert);\n };\n\n // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n Buffer.prototype.copy = function copy(target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError(\"argument should be a Buffer\");\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0;\n if (target.length === 0 || this.length === 0) return 0;\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError(\"targetStart out of bounds\");\n }\n if (start < 0 || start >= this.length) throw new RangeError(\"Index out of range\");\n if (end < 0) throw new RangeError(\"sourceEnd out of bounds\");\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n const len = end - start;\n if (this === target && typeof Uint8Array.prototype.copyWithin === \"function\") {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end);\n } else {\n Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);\n }\n return len;\n };\n\n // Usage:\n // buffer.fill(number[, offset[, end]])\n // buffer.fill(buffer[, offset[, end]])\n // buffer.fill(string[, offset[, end]][, encoding])\n Buffer.prototype.fill = function fill(val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === \"string\") {\n if (typeof start === \"string\") {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === \"string\") {\n encoding = end;\n end = this.length;\n }\n if (encoding !== undefined && typeof encoding !== \"string\") {\n throw new TypeError(\"encoding must be a string\");\n }\n if (typeof encoding === \"string\" && !Buffer.isEncoding(encoding)) {\n throw new TypeError(\"Unknown encoding: \" + encoding);\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0);\n if (encoding === \"utf8\" && code < 128 || encoding === \"latin1\") {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code;\n }\n }\n } else if (typeof val === \"number\") {\n val = val & 255;\n } else if (typeof val === \"boolean\") {\n val = Number(val);\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError(\"Out of range index\");\n }\n if (end <= start) {\n return this;\n }\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n if (!val) val = 0;\n let i;\n if (typeof val === \"number\") {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n const bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);\n const len = bytes.length;\n if (len === 0) {\n throw new TypeError(\"The value \\\"\" + val + \"\\\" is invalid for argument \\\"value\\\"\");\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n return this;\n };\n\n // CUSTOM ERRORS\n // =============\n\n // Simplified versions from Node, changed for Buffer-only usage\n const errors = {};\n function E(sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor() {\n super();\n Object.defineProperty(this, \"message\", {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n });\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`;\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack; // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name;\n }\n get code() {\n return sym;\n }\n set code(value) {\n Object.defineProperty(this, \"code\", {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n toString() {\n return `${this.name} [${sym}]: ${this.message}`;\n }\n };\n }\n E(\"ERR_BUFFER_OUT_OF_BOUNDS\", function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`;\n }\n return \"Attempt to access memory outside buffer bounds\";\n }, RangeError);\n E(\"ERR_INVALID_ARG_TYPE\", function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`;\n }, TypeError);\n E(\"ERR_OUT_OF_RANGE\", function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`;\n let received = input;\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input));\n } else if (typeof input === \"bigint\") {\n received = String(input);\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n received += \"n\";\n }\n msg += ` It must be ${range}. Received ${received}`;\n return msg;\n }, RangeError);\n function addNumericalSeparator(val) {\n let res = \"\";\n let i = val.length;\n const start = val[0] === \"-\" ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`;\n }\n return `${val.slice(0, i)}${res}`;\n }\n\n // CHECK FUNCTIONS\n // ===============\n\n function checkBounds(buf, offset, byteLength) {\n validateNumber(offset, \"offset\");\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1));\n }\n }\n function checkIntBI(value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === \"bigint\" ? \"n\" : \"\";\n let range;\n {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` + `${(byteLength + 1) * 8 - 1}${n}`;\n }\n }\n throw new errors.ERR_OUT_OF_RANGE(\"value\", range, value);\n }\n checkBounds(buf, offset, byteLength);\n }\n function validateNumber(value, name) {\n if (typeof value !== \"number\") {\n throw new errors.ERR_INVALID_ARG_TYPE(name, \"number\", value);\n }\n }\n function boundsError(value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(\"offset\", \"an integer\", value);\n }\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS();\n }\n throw new errors.ERR_OUT_OF_RANGE(\"offset\", `>= ${0} and <= ${length}`, value);\n }\n\n // HELPER FUNCTIONS\n // ================\n\n const INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n function base64clean(str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split(\"=\")[0];\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, \"\");\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return \"\";\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + \"=\";\n }\n return str;\n }\n function utf8ToBytes(string, units) {\n units = units || Infinity;\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 55295 && codePoint < 57344) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 56319) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n continue;\n }\n\n // valid lead\n leadSurrogate = codePoint;\n continue;\n }\n\n // 2 leads in a row\n if (codePoint < 56320) {\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n leadSurrogate = codePoint;\n continue;\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 55296 << 10 | codePoint - 56320) + 65536;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(239, 191, 189);\n }\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 128) {\n if ((units -= 1) < 0) break;\n bytes.push(codePoint);\n } else if (codePoint < 2048) {\n if ((units -= 2) < 0) break;\n bytes.push(codePoint >> 6 | 192, codePoint & 63 | 128);\n } else if (codePoint < 65536) {\n if ((units -= 3) < 0) break;\n bytes.push(codePoint >> 12 | 224, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else if (codePoint < 1114112) {\n if ((units -= 4) < 0) break;\n bytes.push(codePoint >> 18 | 240, codePoint >> 12 & 63 | 128, codePoint >> 6 & 63 | 128, codePoint & 63 | 128);\n } else {\n throw new Error(\"Invalid code point\");\n }\n }\n return bytes;\n }\n function asciiToBytes(str) {\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 255);\n }\n return byteArray;\n }\n function utf16leToBytes(str, units) {\n let c, hi, lo;\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break;\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n return byteArray;\n }\n function base64ToBytes(str) {\n return base64.toByteArray(base64clean(str));\n }\n function blitBuffer(src, dst, offset, length) {\n let i;\n for (i = 0; i < length; ++i) {\n if (i + offset >= dst.length || i >= src.length) break;\n dst[i + offset] = src[i];\n }\n return i;\n }\n\n // ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n // the `instanceof` check but they should be treated as of that type.\n // See: https://github.com/feross/buffer/issues/166\n function isInstance(obj, type) {\n return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;\n }\n function numberIsNaN(obj) {\n // For IE11 support\n return obj !== obj; // eslint-disable-line no-self-compare\n }\n\n // Create lookup table for `toString('hex')`\n // See: https://github.com/feross/buffer/issues/219\n const hexSliceLookupTable = function () {\n const alphabet = \"0123456789abcdef\";\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table;\n }();\n\n // Return not function with Error if BigInt not supported\n function defineBigIntMethod(fn) {\n return typeof BigInt === \"undefined\" ? BufferBigIntNotDefined : fn;\n }\n function BufferBigIntNotDefined() {\n throw new Error(\"BigInt not supported\");\n }\n return exports;\n}\n\nexport { dew as d };\n", "import { d as dew } from './chunk-DtuTasat.js';\n\nconst exports = dew();\nexports['Buffer']; exports['SlowBuffer']; exports['INSPECT_MAX_BYTES']; exports['kMaxLength'];\n\nvar Buffer = exports.Buffer;\r\nvar INSPECT_MAX_BYTES = exports.INSPECT_MAX_BYTES;\r\nvar kMaxLength = exports.kMaxLength;\n\nexport { Buffer, INSPECT_MAX_BYTES, exports as default, kMaxLength };\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { decodeUtf8, encodeUtf8 } from \"#platform/encoding\";\n\ndeclare global {\n // stub these out for the browser\n function btoa(input: string): string;\n function atob(input: string): string;\n}\n\n/** The supported character encoding type */\nexport type EncodingType = \"utf-8\" | \"base64\" | \"base64url\" | \"hex\";\n\n/**\n * The helper that transforms bytes with specific character encoding into string\n * @param bytes - the uint8array bytes\n * @param format - the format we use to encode the byte\n * @returns a string of the encoded string\n */\nexport function uint8ArrayToString(bytes: Uint8Array, format: EncodingType): string {\n switch (format) {\n case \"utf-8\":\n return uint8ArrayToUtf8String(bytes);\n case \"base64\":\n return uint8ArrayToBase64(bytes);\n case \"base64url\":\n return uint8ArrayToBase64Url(bytes);\n case \"hex\":\n return uint8ArrayToHexString(bytes);\n }\n}\n\n/**\n * The helper that transforms string to specific character encoded bytes array.\n * @param value - the string to be converted\n * @param format - the format we use to decode the value\n * @returns a uint8array\n */\nexport function stringToUint8Array(value: string, format: EncodingType): Uint8Array {\n switch (format) {\n case \"utf-8\":\n return utf8StringToUint8Array(value);\n case \"base64\":\n return base64ToUint8Array(value);\n case \"base64url\":\n return base64UrlToUint8Array(value);\n case \"hex\":\n return hexStringToUint8Array(value);\n }\n}\n\n/**\n * Decodes a Uint8Array into a Base64 string.\n * @internal\n */\nexport function uint8ArrayToBase64(bytes: Uint8Array): string {\n return btoa([...bytes].map((x) => String.fromCharCode(x)).join(\"\"));\n}\n\n/**\n * Decodes a Uint8Array into a Base64Url string.\n * @internal\n */\nexport function uint8ArrayToBase64Url(bytes: Uint8Array): string {\n return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\n\n/**\n * Decodes a Uint8Array into a javascript string.\n * @internal\n */\nexport function uint8ArrayToUtf8String(bytes: Uint8Array): string {\n return decodeUtf8(bytes);\n}\n\n/**\n * Decodes a Uint8Array into a hex string\n * @internal\n */\nexport function uint8ArrayToHexString(bytes: Uint8Array): string {\n return [...bytes].map((x) => x.toString(16).padStart(2, \"0\")).join(\"\");\n}\n\n/**\n * Encodes a JavaScript string into a Uint8Array.\n * @internal\n */\nexport function utf8StringToUint8Array(value: string): Uint8Array<ArrayBuffer> {\n return encodeUtf8(value);\n}\n\n/**\n * Encodes a Base64 string into a Uint8Array.\n * @internal\n */\nexport function base64ToUint8Array(value: string): Uint8Array<ArrayBuffer> {\n return new Uint8Array([...atob(value)].map((x) => x.charCodeAt(0)));\n}\n\n/**\n * Encodes a Base64Url string into a Uint8Array.\n * @internal\n */\nexport function base64UrlToUint8Array(value: string): Uint8Array<ArrayBuffer> {\n const base64String = value.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return base64ToUint8Array(base64String);\n}\n\nconst hexDigits = new Set(\"0123456789abcdefABCDEF\");\n\n/**\n * Encodes a hex string into a Uint8Array\n * @internal\n */\nexport function hexStringToUint8Array(value: string): Uint8Array<ArrayBuffer> {\n // If value has odd length, the last character will be ignored, consistent with NodeJS Buffer behavior\n const bytes = new Uint8Array(value.length / 2);\n for (let i = 0; i < value.length / 2; ++i) {\n const highNibble = value[2 * i];\n const lowNibble = value[2 * i + 1];\n if (!hexDigits.has(highNibble) || !hexDigits.has(lowNibble)) {\n // Replicate Node Buffer behavior by exiting early when we encounter an invalid byte\n return bytes.slice(0, i);\n }\n\n bytes[i] = parseInt(`${highNibble}${lowNibble}`, 16);\n }\n\n return bytes;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function generateUUID(): string {\n let uuid = \"\";\n for (let i = 0; i < 32; i++) {\n // Generate a random number between 0 and 15\n const randomNumber = Math.floor(Math.random() * 16);\n // Set the UUID version to 4 in the 13th position\n if (i === 12) {\n uuid += \"4\";\n } else if (i === 16) {\n // Set the UUID variant to \"10\" in the 17th position\n uuid += ((randomNumber & 0x3) | 0x8).toString(16);\n } else {\n // Add a random hexadecimal digit to the UUID string\n uuid += randomNumber.toString(16);\n }\n // Add hyphens to the UUID string at the appropriate positions\n if (i === 7 || i === 11 || i === 15 || i === 19) {\n uuid += \"-\";\n }\n }\n return uuid;\n}\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return generateUUID();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { generateUUID } from \"./uuidUtils.common.js\";\n\ninterface Crypto {\n randomUUID(): string;\n}\n\ndeclare const globalThis: {\n crypto: Crypto;\n};\n\n// NOTE: This could be undefined if not used in a secure context\nconst uuidFunction =\n typeof globalThis?.crypto?.randomUUID === \"function\"\n ? globalThis.crypto.randomUUID.bind(globalThis.crypto)\n : generateUUID;\n\n/**\n * Generated Universally Unique Identifier\n *\n * @returns RFC4122 v4 UUID.\n */\nexport function randomUUID(): string {\n return uuidFunction();\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\n// Bundlers and test frameworks (e.g. vitest's `define`) may inject a `process.env`\n// object into browser bundles. Declare the minimal shape on globalThis so we can\n// access it type-safely without pulling in @types/node.\n// Using `globalThis.process` (property access) instead of bare `process` avoids\n// ReferenceError when the binding doesn't exist at all.\ndeclare global {\n // eslint-disable-next-line no-var\n var process:\n | { env?: Record<string, string | undefined>; emitWarning?: (warning: string) => void }\n | undefined;\n}\n\n/**\n * Returns the value of the specified environment variable.\n * In browser environments, this checks for a globally-defined `process.env`\n * which may be injected by bundlers or test frameworks (e.g. vitest's `define`).\n *\n * @internal\n */\nexport function getEnvironmentVariable(name: string): string | undefined {\n return globalThis.process?.env?.[name];\n}\n\n/**\n * Emits a warning via `process.emitWarning` if available.\n *\n * @internal\n */\nexport function emitNodeWarning(warning: string): void {\n globalThis.process?.emitWarning?.(warning);\n}\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Browser.\n */\n// eslint-disable-next-line @azure/azure-sdk/ts-no-window\nexport const isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\";\n\n/**\n * A constant that indicates whether the environment the code is running is a Web Worker.\n */\nexport const isWebWorker =\n typeof self === \"object\" &&\n \"importScripts\" in self &&\n typeof self.importScripts === \"function\" &&\n (self.constructor?.name === \"DedicatedWorkerGlobalScope\" ||\n self.constructor?.name === \"ServiceWorkerGlobalScope\" ||\n self.constructor?.name === \"SharedWorkerGlobalScope\");\n\n/**\n * A constant that indicates whether the environment the code is running is Deno.\n */\nexport const isDeno: boolean = false;\n\n/**\n * A constant that indicates whether the environment the code is running is Bun.sh.\n */\nexport const isBun: boolean = false;\n\n/**\n * A constant that indicates whether the environment the code is running is a Node.js compatible environment.\n */\nexport const isNodeLike: boolean = false;\n\n/**\n * A constant that indicates whether the environment the code is running is Node.JS.\n */\nexport const isNodeRuntime: boolean = false;\n\n/**\n * A constant that indicates whether the environment the code is running is in React-Native.\n */\nexport const isReactNative: boolean = false;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\n/**\n * This error is thrown when an asynchronous operation has been aborted.\n * Check for this error by testing the `name` that the name property of the\n * error matches `\"AbortError\"`.\n *\n * @example\n * ```ts\n * const controller = new AbortController();\n * controller.abort();\n * try {\n * doAsyncWork(controller.signal)\n * } catch (e) {\n * if (e.name === 'AbortError') {\n * // handle abort error here.\n * }\n * }\n * ```\n */\nexport class AbortError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"AbortError\";\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { AbortError } from \"@azure/abort-controller\";\nimport type { AbortOptions } from \"./aborterUtils.js\";\n\n/**\n * Options for the createAbortablePromise function.\n */\nexport interface CreateAbortablePromiseOptions extends AbortOptions {\n /** A function to be called if the promise was aborted */\n cleanupBeforeAbort?: () => void;\n}\n\n/**\n * Creates an abortable promise.\n * @param buildPromise - A function that takes the resolve and reject functions as parameters.\n * @param options - The options for the abortable promise.\n * @returns A promise that can be aborted.\n */\nexport function createAbortablePromise<T>(\n buildPromise: (\n resolve: (value: T | PromiseLike<T>) => void,\n reject: (reason?: any) => void,\n ) => void,\n options?: CreateAbortablePromiseOptions,\n): Promise<T> {\n const { cleanupBeforeAbort, abortSignal, abortErrorMsg } = options ?? {};\n return new Promise((resolve, reject) => {\n function rejectOnAbort(): void {\n reject(new AbortError(abortErrorMsg ?? \"The operation was aborted.\"));\n }\n function removeListeners(): void {\n abortSignal?.removeEventListener(\"abort\", onAbort);\n }\n function onAbort(): void {\n cleanupBeforeAbort?.();\n removeListeners();\n rejectOnAbort();\n }\n if (abortSignal?.aborted) {\n return rejectOnAbort();\n }\n try {\n buildPromise(\n (x) => {\n removeListeners();\n resolve(x);\n },\n (x) => {\n removeListeners();\n reject(x);\n },\n );\n } catch (err) {\n reject(err);\n }\n abortSignal?.addEventListener(\"abort\", onAbort);\n });\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortOptions } from \"./aborterUtils.js\";\nimport { createAbortablePromise } from \"./createAbortablePromise.js\";\nimport { getRandomIntegerInclusive } from \"@typespec/ts-http-runtime/internal/util\";\n\nconst StandardAbortMessage = \"The delay was aborted.\";\n\n/**\n * Options for support abort functionality for the delay method\n */\nexport interface DelayOptions extends AbortOptions {}\n\n/**\n * A wrapper for setTimeout that resolves a promise after timeInMs milliseconds.\n * @param timeInMs - The number of milliseconds to be delayed.\n * @param options - The options for delay - currently abort options\n * @returns Promise that is resolved after timeInMs\n */\nexport function delay(timeInMs: number, options?: DelayOptions): Promise<void> {\n let token: ReturnType<typeof setTimeout>;\n const { abortSignal, abortErrorMsg } = options ?? {};\n return createAbortablePromise(\n (resolve) => {\n token = setTimeout(resolve, timeInMs);\n },\n {\n cleanupBeforeAbort: () => clearTimeout(token),\n abortSignal,\n abortErrorMsg: abortErrorMsg ?? StandardAbortMessage,\n },\n );\n}\n\n/**\n * Calculates the delay interval for retry attempts using exponential delay with jitter.\n * @param retryAttempt - The current retry attempt number.\n * @param config - The exponential retry configuration.\n * @returns An object containing the calculated retry delay.\n */\nexport function calculateRetryDelay(\n retryAttempt: number,\n config: {\n retryDelayInMs: number;\n maxRetryDelayInMs: number;\n },\n): { retryAfterInMs: number } {\n // Exponentially increase the delay each time\n const exponentialDelay = config.retryDelayInMs * Math.pow(2, retryAttempt);\n\n // Don't let the delay exceed the maximum\n const clampedDelay = Math.min(config.maxRetryDelayInMs, exponentialDelay);\n\n // Allow the final value to have some \"jitter\" (within 50% of the delay size) so\n // that retries across multiple clients don't occur simultaneously.\n const retryAfterInMs = clampedDelay / 2 + getRandomIntegerInclusive(0, clampedDelay / 2);\n\n return { retryAfterInMs };\n}\n", "var exports$1 = {},\n _dewExec = false;\nfunction dew() {\n if (_dewExec) return exports$1;\n _dewExec = true;\n var R = typeof Reflect === \"object\" ? Reflect : null;\n var ReflectApply = R && typeof R.apply === \"function\" ? R.apply : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n };\n var ReflectOwnKeys;\n if (R && typeof R.ownKeys === \"function\") {\n ReflectOwnKeys = R.ownKeys;\n } else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target));\n };\n } else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n }\n function ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n }\n var NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n };\n function EventEmitter() {\n EventEmitter.init.call(this);\n }\n exports$1 = EventEmitter;\n exports$1.once = once;\n\n // Backwards-compat with node 0.10.x\n EventEmitter.EventEmitter = EventEmitter;\n EventEmitter.prototype._events = undefined;\n EventEmitter.prototype._eventsCount = 0;\n EventEmitter.prototype._maxListeners = undefined;\n\n // By default EventEmitters will print a warning if more than 10 listeners are\n // added to it. This is a useful default which helps finding memory leaks.\n var defaultMaxListeners = 10;\n function checkListener(listener) {\n if (typeof listener !== \"function\") {\n throw new TypeError(\"The \\\"listener\\\" argument must be of type Function. Received type \" + typeof listener);\n }\n }\n Object.defineProperty(EventEmitter, \"defaultMaxListeners\", {\n enumerable: true,\n get: function () {\n return defaultMaxListeners;\n },\n set: function (arg) {\n if (typeof arg !== \"number\" || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError(\"The value of \\\"defaultMaxListeners\\\" is out of range. It must be a non-negative number. Received \" + arg + \".\");\n }\n defaultMaxListeners = arg;\n }\n });\n EventEmitter.init = function () {\n if (this._events === undefined || this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n this._maxListeners = this._maxListeners || undefined;\n };\n\n // Obviously not all Emitters should be limited to 10. This function allows\n // that to be increased. Set to zero for unlimited.\n EventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== \"number\" || n < 0 || NumberIsNaN(n)) {\n throw new RangeError(\"The value of \\\"n\\\" is out of range. It must be a non-negative number. Received \" + n + \".\");\n }\n this._maxListeners = n;\n return this;\n };\n function _getMaxListeners(that) {\n if (that._maxListeners === undefined) return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n }\n EventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n };\n EventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = type === \"error\";\n var events = this._events;\n if (events !== undefined) doError = doError && events.error === undefined;else if (!doError) return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0) er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error(\"Unhandled error.\" + (er ? \" (\" + er.message + \")\" : \"\"));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n var handler = events[type];\n if (handler === undefined) return false;\n if (typeof handler === \"function\") {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i) ReflectApply(listeners[i], this, args);\n }\n return true;\n };\n function _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n checkListener(listener);\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit(\"newListener\", type, listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === \"function\") {\n // Adding the second element, need to change to array.\n existing = events[type] = prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error(\"Possible EventEmitter memory leak detected. \" + existing.length + \" \" + String(type) + \" listeners \" + \"added. Use emitter.setMaxListeners() to \" + \"increase limit\");\n w.name = \"MaxListenersExceededWarning\";\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n return target;\n }\n EventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n };\n EventEmitter.prototype.on = EventEmitter.prototype.addListener;\n EventEmitter.prototype.prependListener = function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n function onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0) return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n }\n function _onceWrap(target, type, listener) {\n var state = {\n fired: false,\n wrapFn: undefined,\n target: target,\n type: type,\n listener: listener\n };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n }\n EventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n };\n EventEmitter.prototype.prependOnceListener = function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n // Emits a 'removeListener' event if and only if the listener was removed.\n EventEmitter.prototype.removeListener = function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n checkListener(listener);\n events = this._events;\n if (events === undefined) return this;\n list = events[type];\n if (list === undefined) return this;\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else {\n delete events[type];\n if (events.removeListener) this.emit(\"removeListener\", type, list.listener || listener);\n }\n } else if (typeof list !== \"function\") {\n position = -1;\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n if (position < 0) return this;\n if (position === 0) list.shift();else {\n spliceOne(list, position);\n }\n if (list.length === 1) events[type] = list[0];\n if (events.removeListener !== undefined) this.emit(\"removeListener\", type, originalListener || listener);\n }\n return this;\n };\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) {\n var listeners, events, i;\n events = this._events;\n if (events === undefined) return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0) this._events = Object.create(null);else delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === \"removeListener\") continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners(\"removeListener\");\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n listeners = events[type];\n if (typeof listeners === \"function\") {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n return this;\n };\n function _listeners(target, type, unwrap) {\n var events = target._events;\n if (events === undefined) return [];\n var evlistener = events[type];\n if (evlistener === undefined) return [];\n if (typeof evlistener === \"function\") return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n return unwrap ? unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n }\n EventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n };\n EventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n };\n EventEmitter.listenerCount = function (emitter, type) {\n if (typeof emitter.listenerCount === \"function\") {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n };\n EventEmitter.prototype.listenerCount = listenerCount;\n function listenerCount(type) {\n var events = this._events;\n if (events !== undefined) {\n var evlistener = events[type];\n if (typeof evlistener === \"function\") {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n return 0;\n }\n EventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n };\n function arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i) copy[i] = arr[i];\n return copy;\n }\n function spliceOne(list, index) {\n for (; index + 1 < list.length; index++) list[index] = list[index + 1];\n list.pop();\n }\n function unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n }\n function once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n function resolver() {\n if (typeof emitter.removeListener === \"function\") {\n emitter.removeListener(\"error\", errorListener);\n }\n resolve([].slice.call(arguments));\n }\n eventTargetAgnosticAddListener(emitter, name, resolver, {\n once: true\n });\n if (name !== \"error\") {\n addErrorHandlerIfEventEmitter(emitter, errorListener, {\n once: true\n });\n }\n });\n }\n function addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === \"function\") {\n eventTargetAgnosticAddListener(emitter, \"error\", handler, flags);\n }\n }\n function eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === \"function\") {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === \"function\") {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError(\"The \\\"emitter\\\" argument must be of type EventEmitter. Received type \" + typeof emitter);\n }\n }\n return exports$1;\n}\n\nconst exports = dew();\nexports['once'];\n\n// https://github.com/denoland/deno_std/blob/d005433c709054af87aca54f57a446b4f7966f11/node/events.ts#L501-L638\r\nexports.once = function (emitter, event) {\r\n return new Promise((resolve, reject) => {\r\n function eventListener(...args) {\r\n if (errorListener !== undefined) {\r\n emitter.removeListener('error', errorListener);\r\n }\r\n resolve(args);\r\n }\r\n let errorListener;\r\n if (event !== 'error') {\r\n // deno-lint-ignore no-explicit-any\r\n errorListener = (err) => {\r\n emitter.removeListener(name, eventListener);\r\n reject(err);\r\n };\r\n\r\n emitter.once('error', errorListener);\r\n }\r\n\r\n emitter.once(event, eventListener);\r\n });\r\n};\r\nexports.on = function (emitter, event) {\r\n const unconsumedEventValues = [];\r\n const unconsumedPromises = [];\r\n let error = null;\r\n let finished = false;\r\n\r\n const iterator = {\r\n async next() {\r\n const value = unconsumedEventValues.shift();\r\n if (value) {\r\n return createIterResult(value, false);\r\n }\r\n\r\n if (error) {\r\n const p = Promise.reject(error);\r\n error = null;\r\n return p;\r\n }\r\n\r\n if (finished) {\r\n return createIterResult(undefined, true);\r\n }\r\n\r\n return new Promise((resolve, reject) => unconsumedPromises.push({ resolve, reject }));\r\n },\r\n async return() {\r\n emitter.removeListener(event, eventHandler);\r\n emitter.removeListener('error', errorHandler);\r\n finished = true;\r\n\r\n for (const promise of unconsumedPromises) {\r\n promise.resolve(createIterResult(undefined, true));\r\n }\r\n\r\n return createIterResult(undefined, true);\r\n },\r\n throw(err) {\r\n error = err;\r\n emitter.removeListener(event, eventHandler);\r\n emitter.removeListener('error', errorHandler);\r\n },\r\n [Symbol.asyncIterator]() {\r\n return this;\r\n },\r\n };\r\n\r\n emitter.on(event, eventHandler);\r\n emitter.on('error', errorHandler);\r\n\r\n return iterator;\r\n\r\n function eventHandler(...args) {\r\n const promise = unconsumedPromises.shift();\r\n if (promise) {\r\n promise.resolve(createIterResult(args, false));\r\n } else {\r\n unconsumedEventValues.push(args);\r\n }\r\n }\r\n\r\n function errorHandler(err) {\r\n finished = true;\r\n const toError = unconsumedPromises.shift();\r\n if (toError) {\r\n toError.reject(err);\r\n } else {\r\n error = err;\r\n }\r\n iterator.return();\r\n }\r\n};\r\nconst {\r\n EventEmitter,\r\n defaultMaxListeners,\r\n init,\r\n listenerCount,\r\n on,\r\n once,\r\n} = exports;\n\nexport { EventEmitter, exports as default, defaultMaxListeners, init, listenerCount, on, once };\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AckMessageError, InvokeResponseError } from \"../models/messages.js\";\n\n/**\n * Error when sending message failed\n */\nexport class SendMessageError extends Error {\n /**\n * Error name\n */\n public name: string;\n /**\n * The ack id of the message\n */\n public ackId?: number;\n /**\n * The error details from the service\n */\n public errorDetail?: AckMessageError;\n /**\n * Initialize a SendMessageError\n * @param message - The error message\n * @param ackMessage - The ack message\n */\n constructor(message: string, options: SendMessageErrorOptions) {\n super(message);\n this.name = \"SendMessageError\";\n this.ackId = options.ackId;\n this.errorDetail = options.errorDetail;\n }\n}\n\nexport interface SendMessageErrorOptions {\n /**\n * The ack id of the message\n */\n ackId?: number;\n /**\n * The error details from the service\n */\n errorDetail?: AckMessageError;\n}\n\nexport interface InvocationErrorOptions {\n /**\n * The invocation id of the request.\n */\n invocationId: string;\n /**\n * Error details from the service if available.\n */\n errorDetail?: InvokeResponseError;\n}\n\n/**\n * Error thrown when an invocation fails or is cancelled.\n */\nexport class InvocationError extends Error {\n /**\n * The invocation id of the request.\n */\n public invocationId: string;\n /**\n * Error details from the service if available.\n */\n public errorDetail?: InvokeResponseError;\n\n constructor(message: string, options: InvocationErrorOptions) {\n super(message);\n this.name = \"InvocationError\";\n this.invocationId = options.invocationId;\n this.errorDetail = options.errorDetail;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport function log(...args: any[]): void {\n if (args.length > 0) {\n const firstArg = String(args[0]);\n if (firstArg.includes(\":error\")) {\n console.error(...args);\n } else if (firstArg.includes(\":warning\")) {\n console.warn(...args);\n } else if (firstArg.includes(\":info\")) {\n console.info(...args);\n } else if (firstArg.includes(\":verbose\")) {\n console.debug(...args);\n } else {\n console.debug(...args);\n }\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { log } from \"#platform/log\";\nimport { getEnvironmentVariable } from \"#platform/env\";\n\n/**\n * A simple mechanism for enabling logging.\n * Intended to mimic the publicly available `debug` package.\n */\nexport interface Debug {\n /**\n * Creates a new logger with the given namespace.\n */\n (namespace: string): Debugger;\n /**\n * The default log method (defaults to console)\n */\n log: (...args: any[]) => void;\n /**\n * Enables a particular set of namespaces.\n * To enable multiple separate them with commas, e.g. \"info,debug\".\n * Supports wildcards, e.g. \"typeSpecRuntime:*\"\n * Supports skip syntax, e.g. \"typeSpecRuntime:*,-typeSpecRuntime:storage:*\" will enable\n * everything under typeSpecRuntime except for things under typeSpecRuntime:storage.\n */\n enable: (namespaces: string) => void;\n /**\n * Checks if a particular namespace is enabled.\n */\n enabled: (namespace: string) => boolean;\n /**\n * Disables all logging, returns what was previously enabled.\n */\n disable: () => string;\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\nconst debugEnvVariable = getEnvironmentVariable(\"DEBUG\");\n\nlet enabledString: string | undefined;\nlet enabledNamespaces: string[] = [];\nlet skippedNamespaces: string[] = [];\nconst debuggers: Debugger[] = [];\n\nif (debugEnvVariable) {\n enable(debugEnvVariable);\n}\n\nconst debugObj: Debug = Object.assign(\n (namespace: string): Debugger => {\n return createDebugger(namespace);\n },\n {\n enable,\n enabled,\n disable,\n log,\n },\n);\n\nfunction enable(namespaces: string): void {\n enabledString = namespaces;\n enabledNamespaces = [];\n skippedNamespaces = [];\n const namespaceList = namespaces.split(\",\").map((ns) => ns.trim());\n for (const ns of namespaceList) {\n if (ns.startsWith(\"-\")) {\n skippedNamespaces.push(ns.substring(1));\n } else {\n enabledNamespaces.push(ns);\n }\n }\n for (const instance of debuggers) {\n instance.enabled = enabled(instance.namespace);\n }\n}\n\nfunction enabled(namespace: string): boolean {\n if (namespace.endsWith(\"*\")) {\n return true;\n }\n\n for (const skipped of skippedNamespaces) {\n if (namespaceMatches(namespace, skipped)) {\n return false;\n }\n }\n for (const enabledNamespace of enabledNamespaces) {\n if (namespaceMatches(namespace, enabledNamespace)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * Given a namespace, check if it matches a pattern.\n * Patterns only have a single wildcard character which is *.\n * The behavior of * is that it matches zero or more other characters.\n */\nfunction namespaceMatches(namespace: string, patternToMatch: string): boolean {\n // simple case, no pattern matching required\n if (patternToMatch.indexOf(\"*\") === -1) {\n return namespace === patternToMatch;\n }\n\n let pattern = patternToMatch;\n\n // normalize successive * if needed\n if (patternToMatch.indexOf(\"**\") !== -1) {\n const patternParts = [];\n let lastCharacter = \"\";\n for (const character of patternToMatch) {\n if (character === \"*\" && lastCharacter === \"*\") {\n continue;\n } else {\n lastCharacter = character;\n patternParts.push(character);\n }\n }\n pattern = patternParts.join(\"\");\n }\n\n let namespaceIndex = 0;\n let patternIndex = 0;\n const patternLength = pattern.length;\n const namespaceLength = namespace.length;\n let lastWildcard = -1;\n let lastWildcardNamespace = -1;\n\n while (namespaceIndex < namespaceLength && patternIndex < patternLength) {\n if (pattern[patternIndex] === \"*\") {\n lastWildcard = patternIndex;\n patternIndex++;\n if (patternIndex === patternLength) {\n // if wildcard is the last character, it will match the remaining namespace string\n return true;\n }\n // now we let the wildcard eat characters until we match the next literal in the pattern\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n // reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n\n // now that we have a match, let's try to continue on\n // however, it's possible we could find a later match\n // so keep a reference in case we have to backtrack\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n } else if (pattern[patternIndex] === namespace[namespaceIndex]) {\n // simple case: literal pattern matches so keep going\n patternIndex++;\n namespaceIndex++;\n } else if (lastWildcard >= 0) {\n // special case: we don't have a literal match, but there is a previous wildcard\n // which we can backtrack to and try having the wildcard eat the match instead\n patternIndex = lastWildcard + 1;\n namespaceIndex = lastWildcardNamespace + 1;\n // we've reached the end of the namespace without a match\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n // similar to the previous logic, let's keep going until we find the next literal match\n while (namespace[namespaceIndex] !== pattern[patternIndex]) {\n namespaceIndex++;\n if (namespaceIndex === namespaceLength) {\n return false;\n }\n }\n lastWildcardNamespace = namespaceIndex;\n namespaceIndex++;\n patternIndex++;\n continue;\n } else {\n return false;\n }\n }\n\n const namespaceDone = namespaceIndex === namespace.length;\n const patternDone = patternIndex === pattern.length;\n // this is to detect the case of an unneeded final wildcard\n // e.g. the pattern `ab*` should match the string `ab`\n const trailingWildCard = patternIndex === pattern.length - 1 && pattern[patternIndex] === \"*\";\n return namespaceDone && (patternDone || trailingWildCard);\n}\n\nfunction disable(): string {\n const result = enabledString || \"\";\n enable(\"\");\n return result;\n}\n\nfunction createDebugger(namespace: string): Debugger {\n const newDebugger: Debugger = Object.assign(debug, {\n enabled: enabled(namespace),\n destroy,\n log: debugObj.log,\n namespace,\n extend,\n });\n\n function debug(...args: any[]): void {\n if (!newDebugger.enabled) {\n return;\n }\n if (args.length > 0) {\n args[0] = `${namespace} ${args[0]}`;\n }\n newDebugger.log(...args);\n }\n\n debuggers.push(newDebugger);\n\n return newDebugger;\n}\n\nfunction destroy(this: Debugger): boolean {\n const index = debuggers.indexOf(this);\n if (index >= 0) {\n debuggers.splice(index, 1);\n return true;\n }\n return false;\n}\n\nfunction extend(this: Debugger, namespace: string): Debugger {\n const newDebugger = createDebugger(`${this.namespace}:${namespace}`);\n newDebugger.log = this.log;\n return newDebugger;\n}\n\nexport default debugObj;\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport debug from \"./debug.js\";\nimport { getEnvironmentVariable } from \"#platform/env\";\n\nimport type { Debugger } from \"./debug.js\";\nexport type { Debugger };\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type TypeSpecRuntimeLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\n\n/**\n * A TypeSpecRuntimeClientLogger is a function that can log to an appropriate severity level.\n */\nexport type TypeSpecRuntimeClientLogger = Debugger;\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\nexport interface TypeSpecRuntimeLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n\n/**\n * todo doc\n */\nexport interface LoggerContext {\n /**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n setLogLevel(logLevel?: TypeSpecRuntimeLogLevel): void;\n\n /**\n * Retrieves the currently specified log level.\n */\n getLogLevel(): TypeSpecRuntimeLogLevel | undefined;\n\n /**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\n createClientLogger(namespace: string): TypeSpecRuntimeLogger;\n\n /**\n * The TypeSpecRuntimeClientLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\n logger: TypeSpecRuntimeClientLogger;\n}\n\n/**\n * Option for creating a TypeSpecRuntimeLoggerContext.\n */\nexport interface CreateLoggerContextOptions {\n /**\n * The name of the environment variable to check for the log level.\n */\n logLevelEnvVarName: string;\n\n /**\n * The namespace of the logger.\n */\n namespace: string;\n}\n\nconst TYPESPEC_RUNTIME_LOG_LEVELS = [\"verbose\", \"info\", \"warning\", \"error\"];\n\ntype DebuggerWithLogLevel = Debugger & { level: TypeSpecRuntimeLogLevel };\n\nconst levelMap = {\n verbose: 400,\n info: 300,\n warning: 200,\n error: 100,\n};\n\nfunction patchLogMethod(\n parent: TypeSpecRuntimeClientLogger,\n child: TypeSpecRuntimeClientLogger | DebuggerWithLogLevel,\n): void {\n child.log = (...args) => {\n parent.log(...args);\n };\n}\n\nfunction isTypeSpecRuntimeLogLevel(level: string): level is TypeSpecRuntimeLogLevel {\n return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level);\n}\n\n/**\n * Creates a logger context base on the provided options.\n * @param options - The options for creating a logger context.\n * @returns The logger context.\n */\nexport function createLoggerContext(options: CreateLoggerContextOptions): LoggerContext {\n const registeredLoggers = new Set<DebuggerWithLogLevel>();\n const logLevelFromEnv = getEnvironmentVariable(options.logLevelEnvVarName);\n\n let logLevel: TypeSpecRuntimeLogLevel | undefined;\n\n const clientLogger: TypeSpecRuntimeClientLogger = debug(options.namespace);\n clientLogger.log = (...args) => {\n debug.log(...args);\n };\n\n function contextSetLogLevel(level?: TypeSpecRuntimeLogLevel): void {\n if (level && !isTypeSpecRuntimeLogLevel(level)) {\n throw new Error(\n `Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\",\")}`,\n );\n }\n logLevel = level;\n\n const enabledNamespaces = [];\n for (const logger of registeredLoggers) {\n if (shouldEnable(logger)) {\n enabledNamespaces.push(logger.namespace);\n }\n }\n\n debug.enable(enabledNamespaces.join(\",\"));\n }\n\n if (logLevelFromEnv) {\n // avoid calling setLogLevel because we don't want a mis-set environment variable to crash\n if (isTypeSpecRuntimeLogLevel(logLevelFromEnv)) {\n contextSetLogLevel(logLevelFromEnv);\n } else {\n console.error(\n `${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(\n \", \",\n )}.`,\n );\n }\n }\n\n function shouldEnable(logger: DebuggerWithLogLevel): boolean {\n return Boolean(logLevel && levelMap[logger.level] <= levelMap[logLevel]);\n }\n\n function createLogger(\n parent: TypeSpecRuntimeClientLogger,\n level: TypeSpecRuntimeLogLevel,\n ): DebuggerWithLogLevel {\n const logger: DebuggerWithLogLevel = Object.assign(parent.extend(level), {\n level,\n });\n\n patchLogMethod(parent, logger);\n\n if (shouldEnable(logger)) {\n const enabledNamespaces = debug.disable();\n debug.enable(enabledNamespaces + \",\" + logger.namespace);\n }\n\n registeredLoggers.add(logger);\n\n return logger;\n }\n\n function contextGetLogLevel(): TypeSpecRuntimeLogLevel | undefined {\n return logLevel;\n }\n\n function contextCreateClientLogger(namespace: string): TypeSpecRuntimeLogger {\n const clientRootLogger: TypeSpecRuntimeClientLogger = clientLogger.extend(namespace);\n patchLogMethod(clientLogger, clientRootLogger);\n return {\n error: createLogger(clientRootLogger, \"error\"),\n warning: createLogger(clientRootLogger, \"warning\"),\n info: createLogger(clientRootLogger, \"info\"),\n verbose: createLogger(clientRootLogger, \"verbose\"),\n };\n }\n\n return {\n setLogLevel: contextSetLogLevel,\n getLogLevel: contextGetLogLevel,\n createClientLogger: contextCreateClientLogger,\n logger: clientLogger,\n };\n}\n\nconst context = createLoggerContext({\n logLevelEnvVarName: \"TYPESPEC_RUNTIME_LOG_LEVEL\",\n namespace: \"typeSpecRuntime\",\n});\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport const TypeSpecRuntimeLogger: TypeSpecRuntimeClientLogger = context.logger;\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function setLogLevel(logLevel?: TypeSpecRuntimeLogLevel): void {\n context.setLogLevel(logLevel);\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): TypeSpecRuntimeLogLevel | undefined {\n return context.getLogLevel();\n}\n\n/**\n * Creates a logger for use by the SDKs that inherits from `TypeSpecRuntimeLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): TypeSpecRuntimeLogger {\n return context.createClientLogger(namespace);\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createLoggerContext } from \"@typespec/ts-http-runtime/internal/logger\";\n\nconst context = createLoggerContext({\n logLevelEnvVarName: \"AZURE_LOG_LEVEL\",\n namespace: \"azure\",\n});\n\n/**\n * The AzureLogger provides a mechanism for overriding where logs are output to.\n * By default, logs are sent to stderr.\n * Override the `log` method to redirect logs to another location.\n */\nexport const AzureLogger: AzureClientLogger = context.logger;\n\n/**\n * Immediately enables logging at the specified log level. If no level is specified, logging is disabled.\n * @param level - The log level to enable for logging.\n * Options from most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport function setLogLevel(level?: AzureLogLevel): void {\n context.setLogLevel(level);\n}\n\n/**\n * Retrieves the currently specified log level.\n */\nexport function getLogLevel(): AzureLogLevel | undefined {\n return context.getLogLevel();\n}\n\n/**\n * Creates a logger for use by the Azure SDKs that inherits from `AzureLogger`.\n * @param namespace - The name of the SDK package.\n * @hidden\n */\nexport function createClientLogger(namespace: string): AzureLogger {\n return context.createClientLogger(namespace);\n}\n\n/**\n * A log function that can be dynamically enabled and redirected.\n */\nexport interface Debugger {\n /**\n * Logs the given arguments to the `log` method.\n */\n (...args: any[]): void;\n /**\n * True if this logger is active and logging.\n */\n enabled: boolean;\n /**\n * Used to cleanup/remove this logger.\n */\n destroy: () => boolean;\n /**\n * The current log method. Can be overridden to redirect output.\n */\n log: (...args: any[]) => void;\n /**\n * The namespace of this logger.\n */\n namespace: string;\n /**\n * Extends this logger with a child namespace.\n * Namespaces are separated with a ':' character.\n */\n extend: (namespace: string) => Debugger;\n}\n\n/**\n * The log levels supported by the logger.\n * The log levels in order of most verbose to least verbose are:\n * - verbose\n * - info\n * - warning\n * - error\n */\nexport type AzureLogLevel = \"verbose\" | \"info\" | \"warning\" | \"error\";\n\n/**\n * An AzureClientLogger is a function that can log to an appropriate severity level.\n */\nexport type AzureClientLogger = Debugger;\n\n/**\n * Defines the methods available on the SDK-facing logger.\n */\n// eslint-disable-next-line @typescript-eslint/no-redeclare\nexport interface AzureLogger {\n /**\n * Used for failures the program is unlikely to recover from,\n * such as Out of Memory.\n */\n error: Debugger;\n /**\n * Used when a function fails to perform its intended task.\n * Usually this means the function will throw an exception.\n * Not used for self-healing events (e.g. automatic retry)\n */\n warning: Debugger;\n /**\n * Used when a function operates normally.\n */\n info: Debugger;\n /**\n * Used for detailed troubleshooting scenarios. This is\n * intended for use by developers / system administrators\n * for diagnosing specific failures.\n */\n verbose: Debugger;\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure\\/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"web-pubsub-client\");\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type {\n AckMessage,\n CancelInvocationMessage,\n PongMessage,\n ConnectedMessage,\n DisconnectedMessage,\n GroupDataMessage,\n InvokeResponseMessage,\n ServerDataMessage,\n WebPubSubDataType,\n WebPubSubMessage,\n} from \"../models/messages.js\";\nimport type { JSONTypes } from \"../webPubSubClient.js\";\nimport { Buffer } from \"buffer\";\n\nexport function parseMessages(input: string): WebPubSubMessage | null {\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\n if (typeof input !== \"string\") {\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\n }\n\n if (!input) {\n throw new Error(\"No input\");\n }\n\n const parsedMessage = JSON.parse(input);\n const typedMessage = parsedMessage as { type: string; from: string; event: string };\n let returnMessage: WebPubSubMessage;\n\n if (typedMessage.type === \"system\") {\n if (typedMessage.event === \"connected\") {\n returnMessage = { ...parsedMessage, kind: \"connected\" } as ConnectedMessage;\n } else if (typedMessage.event === \"disconnected\") {\n returnMessage = { ...parsedMessage, kind: \"disconnected\" } as DisconnectedMessage;\n } else {\n // Forward compatible\n return null;\n }\n } else if (typedMessage.type === \"message\") {\n if (typedMessage.from === \"group\") {\n const data = parsePayload(parsedMessage.data, parsedMessage.dataType as WebPubSubDataType);\n if (data === null) {\n return null;\n }\n returnMessage = { ...parsedMessage, data: data, kind: \"groupData\" } as GroupDataMessage;\n } else if (typedMessage.from === \"server\") {\n const data = parsePayload(parsedMessage.data, parsedMessage.dataType as WebPubSubDataType);\n if (data === null) {\n return null;\n }\n returnMessage = {\n ...parsedMessage,\n data: data,\n kind: \"serverData\",\n } as ServerDataMessage;\n } else {\n // Forward compatible\n return null;\n }\n } else if (typedMessage.type === \"ack\") {\n returnMessage = { ...parsedMessage, kind: \"ack\" } as AckMessage;\n } else if (typedMessage.type === \"invokeResponse\") {\n let data: JSONTypes | ArrayBuffer | undefined;\n if (parsedMessage.dataType != null) {\n const parsedData = parsePayload(parsedMessage.data, parsedMessage.dataType);\n if (parsedData === null) {\n return null;\n }\n data = parsedData;\n }\n\n returnMessage = {\n kind: \"invokeResponse\",\n invocationId: parsedMessage.invocationId,\n success: parsedMessage.success,\n dataType: parsedMessage.dataType,\n data,\n error: parsedMessage.error,\n } as InvokeResponseMessage;\n } else if (typedMessage.type === \"cancelInvocation\") {\n returnMessage = {\n ...parsedMessage,\n kind: \"cancelInvocation\",\n } as CancelInvocationMessage;\n } else if (typedMessage.type === \"pong\") {\n returnMessage = { ...parsedMessage, kind: \"pong\" } as PongMessage;\n } else {\n // Forward compatible\n return null;\n }\n return returnMessage;\n}\n\nexport function writeMessage(message: WebPubSubMessage): string {\n let data: any;\n switch (message.kind) {\n case \"joinGroup\": {\n data = { type: \"joinGroup\", group: message.group, ackId: message.ackId } as JoinGroupData;\n break;\n }\n case \"leaveGroup\": {\n data = { type: \"leaveGroup\", group: message.group, ackId: message.ackId } as LeaveGroupData;\n break;\n }\n case \"sendEvent\": {\n data = {\n type: \"event\",\n event: message.event,\n ackId: message.ackId,\n dataType: message.dataType,\n data: getPayload(message.data, message.dataType),\n } as SendEventData;\n break;\n }\n case \"sendToGroup\": {\n data = {\n type: \"sendToGroup\",\n group: message.group,\n ackId: message.ackId,\n dataType: message.dataType,\n data: getPayload(message.data, message.dataType),\n noEcho: message.noEcho,\n } as SendToGroupData;\n break;\n }\n case \"sequenceAck\": {\n data = { type: \"sequenceAck\", sequenceId: message.sequenceId } as SequenceAckData;\n break;\n }\n case \"invoke\": {\n const invokePayload: InvokeData = {\n type: \"invoke\",\n invocationId: message.invocationId,\n target: message.target,\n event: message.event,\n };\n\n if (message.dataType != null && message.data != null) {\n invokePayload.dataType = message.dataType;\n invokePayload.data = getPayload(message.data, message.dataType);\n }\n\n data = invokePayload;\n break;\n }\n case \"invokeResponse\": {\n const invokeResponse: InvokeResponseData = {\n type: \"invokeResponse\",\n invocationId: message.invocationId,\n success: message.success,\n error: message.error,\n };\n\n if (message.dataType != null && message.data != null) {\n invokeResponse.dataType = message.dataType;\n invokeResponse.data = getPayload(message.data, message.dataType);\n }\n\n data = invokeResponse;\n break;\n }\n case \"cancelInvocation\": {\n data = {\n type: \"cancelInvocation\",\n invocationId: message.invocationId,\n } as CancelInvocationData;\n break;\n }\n case \"ping\": {\n data = { type: \"ping\" } as PingData;\n break;\n }\n default: {\n throw new Error(`Unsupported type: ${message.kind}`);\n }\n }\n\n return JSON.stringify(data);\n}\n\ninterface JoinGroupData {\n readonly type: \"joinGroup\";\n group: string;\n ackId?: number;\n}\n\ninterface LeaveGroupData {\n readonly type: \"leaveGroup\";\n group: string;\n ackId?: number;\n}\n\ninterface SendToGroupData {\n readonly type: \"sendToGroup\";\n group: string;\n ackId?: number;\n dataType: WebPubSubDataType;\n data: any;\n noEcho: boolean;\n}\n\ninterface SendEventData {\n readonly type: \"event\";\n ackId?: number;\n dataType: WebPubSubDataType;\n data: any;\n event: string;\n}\n\ninterface SequenceAckData {\n readonly type: \"sequenceAck\";\n sequenceId: number;\n}\n\ninterface InvokeData {\n readonly type: \"invoke\";\n invocationId: string;\n target?: \"event\" | \"group\";\n event?: string;\n dataType?: WebPubSubDataType;\n data?: any;\n}\n\ninterface InvokeResponseData {\n readonly type: \"invokeResponse\";\n invocationId: string;\n success?: boolean;\n error?: { name: string; message: string };\n dataType?: WebPubSubDataType;\n data?: any;\n}\n\ninterface CancelInvocationData {\n readonly type: \"cancelInvocation\";\n invocationId: string;\n}\n\ninterface PingData {\n readonly type: \"ping\";\n}\n\nfunction getPayload(data: JSONTypes | ArrayBuffer, dataType: WebPubSubDataType): any {\n switch (dataType) {\n case \"text\": {\n if (typeof data !== \"string\") {\n throw new TypeError(\"Message must be a string.\");\n }\n return data;\n }\n case \"json\": {\n return data;\n }\n case \"binary\":\n case \"protobuf\": {\n if (data instanceof ArrayBuffer) {\n return Buffer.from(data).toString(\"base64\");\n }\n throw new TypeError(\"Message must be a ArrayBuffer\");\n }\n }\n}\n\nfunction parsePayload(data: any, dataType: string): JSONTypes | ArrayBuffer | null {\n if (dataType === \"text\") {\n if (typeof data !== \"string\") {\n throw new TypeError(\"Message must be a string when dataType is text\");\n }\n return data as string;\n } else if (dataType === \"json\") {\n return data as JSONTypes;\n } else if (dataType === \"binary\" || dataType === \"protobuf\") {\n const buf = Buffer.from(data as string, \"base64\");\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) as ArrayBuffer;\n } else {\n // Forward compatible\n return null;\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { WebPubSubClientProtocol } from \"./index.js\";\nimport type { WebPubSubMessage } from \"../models/messages.js\";\nimport * as base from \"./jsonProtocolBase.js\";\n\n/**\n * The \"json.reliable.webpubsub.azure.v1\" protocol\n */\nexport class WebPubSubJsonReliableProtocolImpl implements WebPubSubClientProtocol {\n /**\n * True if the protocol supports reliable features\n */\n public readonly isReliableSubProtocol = true;\n\n /**\n * The name of subprotocol. Name will be used in websocket subprotocol\n */\n public readonly name = \"json.reliable.webpubsub.azure.v1\";\n\n /**\n * Creates WebPubSubMessage objects from the specified serialized representation.\n * @param input - The serialized representation\n */\n public parseMessages(input: string): WebPubSubMessage | null {\n return base.parseMessages(input);\n }\n\n /**\n * Write WebPubSubMessage to string\n * @param message - The message to be written\n */\n public writeMessage(message: WebPubSubMessage): string {\n return base.writeMessage(message);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { WebPubSubMessage } from \"../models/messages.js\";\nimport { WebPubSubJsonProtocolImpl } from \"./webPubSubJsonProtocol.js\";\nimport { WebPubSubJsonReliableProtocolImpl } from \"./webPubSubJsonReliableProtocol.js\";\n\n/**\n * The interface to be implemented for a web pubsub subprotocol\n */\nexport interface WebPubSubClientProtocol {\n /**\n * The name of subprotocol. Name will be used in websocket subprotocol\n */\n readonly name: string;\n\n /**\n * True if the protocol supports reliable features\n */\n readonly isReliableSubProtocol: boolean;\n\n /**\n * Creates WebPubSubMessage objects from the specified serialized representation.\n * @param input - The serialized representation\n */\n parseMessages(input: string | ArrayBuffer | Buffer): WebPubSubMessage[] | WebPubSubMessage | null;\n\n /**\n * Write WebPubSubMessage to string or ArrayBuffer\n * @param message - The message to be written\n */\n writeMessage(message: WebPubSubMessage): string | ArrayBuffer;\n}\n\n/**\n * Return the \"json.webpubsub.azure.v1\" protocol\n */\nexport const WebPubSubJsonProtocol = (): WebPubSubClientProtocol => {\n return new WebPubSubJsonProtocolImpl();\n};\n\n/**\n * Return the \"json.reliable.webpubsub.azure.v1\" protocol\n */\nexport const WebPubSubJsonReliableProtocol = (): WebPubSubClientProtocol => {\n return new WebPubSubJsonReliableProtocolImpl();\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { WebSocketClientFactoryLike, WebSocketClientLike } from \"./websocketClientLike.js\";\n\nexport class WebSocketClient implements WebSocketClientLike {\n private _socket: WebSocket;\n\n public constructor(uri: string, protocolName: string) {\n this._socket = new WebSocket(uri, protocolName);\n this._socket.binaryType = \"arraybuffer\";\n }\n\n onopen(fn: () => void): void {\n this._socket.onopen = fn;\n }\n\n onclose(fn: (code: number, reason: string) => void): void {\n this._socket.onclose = (ev: CloseEvent) => fn(ev.code, ev.reason);\n }\n\n onerror(fn: (error: any) => void): void {\n this._socket.onerror = (ev: Event) => fn(ev);\n }\n\n onmessage(fn: (data: string | Buffer | ArrayBuffer | Buffer[]) => void): void {\n this._socket.onmessage = (event: MessageEvent) => fn(event.data);\n }\n\n close(code?: number, reason?: string): void {\n this._socket.close(code, reason);\n }\n\n // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n send(data: any, _?: AbortSignalLike): Promise<void> {\n return new Promise((resolve, reject) => {\n try {\n this._socket.send(data);\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n }\n\n isOpen(): boolean {\n return this._socket.readyState === WebSocket.OPEN;\n }\n}\n\nexport class WebSocketClientFactory implements WebSocketClientFactoryLike {\n public create(uri: string, protocolName: string): WebSocketClient {\n return new WebSocketClient(uri, protocolName);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { AbortError } from \"@azure/abort-controller\";\n\nexport async function abortablePromise<T>(\n promise: Promise<T>,\n signal: AbortSignalLike,\n): Promise<T> {\n if (signal.aborted) {\n throw new AbortError(\"The operation was aborted.\");\n }\n\n let onAbort: () => void;\n // eslint-disable-next-line promise/param-names\n const p = new Promise<T>((_, reject) => {\n onAbort = (): void => {\n reject(new AbortError(\"The operation was aborted.\"));\n };\n\n signal.addEventListener(\"abort\", onAbort);\n });\n\n try {\n return await Promise.race([promise, p]);\n } finally {\n signal.removeEventListener(\"abort\", onAbort!);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { WebPubSubResult } from \"./models/index.js\";\nimport { SendMessageError } from \"./errors/index.js\";\nimport { abortablePromise } from \"./utils/abortablePromise.js\";\n\nexport interface AckRegistration {\n ackId: number;\n wait(abortSignal?: AbortSignalLike): Promise<WebPubSubResult>;\n}\n\n/**\n * Manages ack id generation and pending ack entries.\n */\nexport class AckManager {\n private readonly _ackEntries = new Map<number, AckEntity>();\n private _ackId: number;\n\n constructor(initialAckId = 0) {\n this._ackId = initialAckId;\n }\n\n public registerAck(ackId?: number): AckRegistration {\n const resolvedAckId = ackId ?? this._generateAckId();\n let entry = this._ackEntries.get(resolvedAckId);\n if (!entry) {\n entry = new AckEntity(resolvedAckId);\n this._ackEntries.set(resolvedAckId, entry);\n }\n const ackEntry = entry;\n return {\n ackId: resolvedAckId,\n wait: (abortSignal?: AbortSignalLike) => this._waitForEntry(ackEntry, abortSignal),\n };\n }\n\n public resolveAck(ackId: number, result: WebPubSubResult): boolean {\n const entry = this._ackEntries.get(ackId);\n if (!entry) {\n return false;\n }\n this._ackEntries.delete(ackId);\n entry.resolve(result);\n return true;\n }\n\n public rejectAck(ackId: number, reason: unknown): boolean {\n const entry = this._ackEntries.get(ackId);\n if (!entry) {\n return false;\n }\n this._ackEntries.delete(ackId);\n entry.reject(reason);\n return true;\n }\n\n public discard(ackId: number): void {\n this._ackEntries.delete(ackId);\n }\n\n public rejectAll(createReason: (ackId: number) => unknown): void {\n this._ackEntries.forEach((entry, ackId) => {\n if (this._ackEntries.delete(ackId)) {\n entry.reject(createReason(ackId));\n }\n });\n }\n\n private _waitForEntry(entry: AckEntity, abortSignal?: AbortSignalLike): Promise<WebPubSubResult> {\n if (!abortSignal) {\n return entry.promise();\n }\n\n return abortablePromise(entry.promise(), abortSignal).catch((err) => {\n if (err instanceof Error && err.name === \"AbortError\") {\n throw new SendMessageError(\"Cancelled by abortSignal\", { ackId: entry.ackId });\n }\n throw err;\n });\n }\n\n private _generateAckId(): number {\n this._ackId += 1;\n return this._ackId;\n }\n}\n\nclass AckEntity {\n private readonly _promise: Promise<WebPubSubResult>;\n private _resolve: ((value: WebPubSubResult | PromiseLike<WebPubSubResult>) => void) | undefined;\n private _reject: ((reason?: unknown) => void) | undefined;\n\n constructor(public readonly ackId: number) {\n this._promise = new Promise<WebPubSubResult>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n public promise(): Promise<WebPubSubResult> {\n return this._promise;\n }\n\n public resolve(value: WebPubSubResult | PromiseLike<WebPubSubResult>): void {\n const callback = this._resolve;\n if (!callback) {\n return;\n }\n this._resolve = undefined;\n this._reject = undefined;\n callback(value);\n }\n\n public reject(reason?: unknown): void {\n const callback = this._reject;\n if (!callback) {\n return;\n }\n this._resolve = undefined;\n this._reject = undefined;\n callback(reason);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport type { InvokeResponseMessage } from \"./models/messages.js\";\nimport { InvocationError } from \"./errors/index.js\";\n\nexport interface InvocationWaitOptions {\n abortSignal?: AbortSignalLike;\n}\n\nexport interface InvocationRegistration {\n invocationId: string;\n wait(options?: InvocationWaitOptions): Promise<InvokeResponseMessage>;\n}\n\n/**\n * Manages pending invocations awaiting invokeResponse frames.\n */\nexport class InvocationManager {\n private readonly _entries = new Map<string, InvocationEntity>();\n private _nextId = 0;\n\n public registerInvocation(invocationId?: string): InvocationRegistration {\n const resolvedId = invocationId ?? this._generateInvocationId();\n if (this._entries.has(resolvedId)) {\n throw new InvocationError(\"Invocation id is already registered.\", {\n invocationId: resolvedId,\n });\n }\n\n const entity = new InvocationEntity(resolvedId);\n this._entries.set(resolvedId, entity);\n return {\n invocationId: resolvedId,\n wait: (options?: InvocationWaitOptions) => this._waitForEntry(entity, options),\n };\n }\n\n public resolveInvocation(message: InvokeResponseMessage): boolean {\n const entry = this._entries.get(message.invocationId);\n if (!entry) {\n return false;\n }\n this._entries.delete(message.invocationId);\n entry.resolve(message);\n return true;\n }\n\n public rejectInvocation(invocationId: string, reason: unknown): boolean {\n const entry = this._entries.get(invocationId);\n if (!entry) {\n return false;\n }\n this._entries.delete(invocationId);\n entry.reject(reason);\n return true;\n }\n\n public discard(invocationId: string): void {\n this._entries.delete(invocationId);\n }\n\n public rejectAll(createReason: (invocationId: string) => unknown): void {\n this._entries.forEach((entry, invocationId) => {\n if (this._entries.delete(invocationId)) {\n entry.reject(createReason(invocationId));\n }\n });\n }\n\n private _waitForEntry(\n entry: InvocationEntity,\n options?: InvocationWaitOptions,\n ): Promise<InvokeResponseMessage> {\n const waitPromise = entry.promise();\n const abortSignal = options?.abortSignal;\n\n if (!abortSignal) {\n return waitPromise;\n }\n\n if (abortSignal.aborted) {\n if (this._entries.delete(entry.invocationId)) {\n entry.reject(this._createAbortError(entry.invocationId));\n }\n return waitPromise;\n }\n\n return new Promise<InvokeResponseMessage>((resolve, reject) => {\n const onAbort = (): void => {\n abortSignal.removeEventListener(\"abort\", onAbort);\n if (this._entries.delete(entry.invocationId)) {\n entry.reject(this._createAbortError(entry.invocationId));\n }\n };\n\n abortSignal.addEventListener(\"abort\", onAbort);\n\n waitPromise\n .then((result) => {\n abortSignal.removeEventListener(\"abort\", onAbort);\n return resolve(result);\n })\n .catch((err) => {\n abortSignal.removeEventListener(\"abort\", onAbort);\n return reject(err);\n });\n });\n }\n\n private _generateInvocationId(): string {\n this._nextId += 1;\n return this._nextId.toString();\n }\n\n private _createAbortError(invocationId: string): InvocationError {\n return new InvocationError(\"Invocation cancelled by abortSignal.\", {\n invocationId,\n });\n }\n}\n\nclass InvocationEntity {\n private readonly _promise: Promise<InvokeResponseMessage>;\n private _resolve:\n | ((value: InvokeResponseMessage | PromiseLike<InvokeResponseMessage>) => void)\n | undefined;\n private _reject: ((reason?: unknown) => void) | undefined;\n\n constructor(public readonly invocationId: string) {\n this._promise = new Promise<InvokeResponseMessage>((resolve, reject) => {\n this._resolve = resolve;\n this._reject = reject;\n });\n }\n\n public promise(): Promise<InvokeResponseMessage> {\n return this._promise;\n }\n\n public resolve(value: InvokeResponseMessage | PromiseLike<InvokeResponseMessage>): void {\n const callback = this._resolve;\n if (!callback) {\n return;\n }\n this._resolve = undefined;\n this._reject = undefined;\n callback(value);\n }\n\n public reject(reason?: unknown): void {\n const callback = this._reject;\n if (!callback) {\n return;\n }\n this._resolve = undefined;\n this._reject = undefined;\n callback(reason);\n }\n}\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { AbortSignalLike } from \"@azure/abort-controller\";\nimport { delay } from \"@azure/core-util\";\nimport EventEmitter from \"events\";\nimport type { SendMessageErrorOptions } from \"./errors/index.js\";\nimport { InvocationError, SendMessageError } from \"./errors/index.js\";\nimport { logger } from \"./logger.js\";\nimport type {\n WebPubSubResult,\n JoinGroupOptions,\n LeaveGroupOptions,\n OnConnectedArgs,\n OnDisconnectedArgs,\n OnGroupDataMessageArgs,\n OnServerDataMessageArgs,\n OnStoppedArgs,\n WebPubSubRetryOptions,\n SendToGroupOptions,\n SendEventOptions,\n WebPubSubClientOptions,\n OnRejoinGroupFailedArgs,\n StartOptions,\n GetClientAccessUrlOptions,\n InvokeEventOptions,\n InvokeEventResult,\n} from \"./models/index.js\";\nimport type {\n ConnectedMessage,\n CancelInvocationMessage,\n DisconnectedMessage,\n GroupDataMessage,\n InvokeMessage,\n InvokeResponseMessage,\n ServerDataMessage,\n WebPubSubDataType,\n WebPubSubMessage,\n JoinGroupMessage,\n LeaveGroupMessage,\n SendToGroupMessage,\n SendEventMessage,\n AckMessage,\n SequenceAckMessage,\n PingMessage,\n} from \"./models/messages.js\";\nimport type { WebPubSubClientProtocol } from \"./protocols/index.js\";\nimport { WebPubSubJsonReliableProtocol } from \"./protocols/index.js\";\nimport type { WebPubSubClientCredential } from \"./webPubSubClientCredential.js\";\nimport { WebSocketClientFactory } from \"./websocket/websocketClient.js\";\nimport type {\n WebSocketClientFactoryLike,\n WebSocketClientLike,\n} from \"./websocket/websocketClientLike.js\";\nimport { AckManager } from \"./ackManager.js\";\nimport { InvocationManager } from \"./invocationManager.js\";\n\nenum WebPubSubClientState {\n Stopped = \"Stopped\",\n Disconnected = \"Disconnected\",\n Connecting = \"Connecting\",\n Connected = \"Connected\",\n Recovering = \"Recovering\",\n}\n\n/**\n * Types which can be serialized and sent as JSON.\n */\nexport type JSONTypes = string | number | boolean | object;\n\n/**\n * The WebPubSub client\n */\nexport class WebPubSubClient {\n private readonly _protocol: WebPubSubClientProtocol;\n private readonly _credential: WebPubSubClientCredential;\n private readonly _options: WebPubSubClientOptions;\n private readonly _groupMap: Map<string, WebPubSubGroup>;\n private readonly _ackManager: AckManager;\n private readonly _invocationManager: InvocationManager;\n private readonly _sequenceId: SequenceId;\n private readonly _messageRetryPolicy: RetryPolicy;\n private readonly _reconnectRetryPolicy: RetryPolicy;\n private readonly _quickSequenceAckDiff = 300;\n // The timeout for keep alive\n private readonly _keepAliveTimeoutInMs: number;\n // The interval at which to send keep-alive ping messages to the runtime\n private readonly _keepAliveIntervalInMs: number;\n\n private readonly _emitter: EventEmitter = new EventEmitter();\n private _state: WebPubSubClientState;\n private _isStopping: boolean = false;\n private _pingKeepaliveTask: AbortableTask | undefined;\n private _timeoutMonitorTask: AbortableTask | undefined;\n\n // connection lifetime\n private _wsClient?: WebSocketClientLike;\n private _uri?: string;\n private _lastCloseEvent?: { code: number; reason: string };\n private _lastDisconnectedMessage?: DisconnectedMessage;\n private _connectionId?: string;\n private _reconnectionToken?: string;\n private _isInitialConnected = false;\n private _sequenceAckTask?: AbortableTask;\n\n private _lastMessageReceived: number = Date.now();\n\n /**\n * Create an instance of WebPubSubClient\n * @param clientAccessUrl - The uri to connect\n * @param options - The client options\n */\n constructor(clientAccessUrl: string, options?: WebPubSubClientOptions);\n /**\n * Create an instance of WebPubSubClient\n * @param credential - The credential to use when connecting\n * @param options - The client options\n */\n constructor(credential: WebPubSubClientCredential, options?: WebPubSubClientOptions);\n constructor(credential: string | WebPubSubClientCredential, options?: WebPubSubClientOptions) {\n if (typeof credential === \"string\") {\n this._credential = { getClientAccessUrl: credential } as WebPubSubClientCredential;\n } else {\n this._credential = credential;\n }\n\n if (options == null) {\n options = {};\n }\n this._buildDefaultOptions(options);\n this._options = options;\n\n this._messageRetryPolicy = new RetryPolicy(this._options.messageRetryOptions!);\n this._reconnectRetryPolicy = new RetryPolicy(this._options.reconnectRetryOptions!);\n\n this._protocol = this._options.protocol!;\n this._groupMap = new Map<string, WebPubSubGroup>();\n this._ackManager = new AckManager();\n this._invocationManager = new InvocationManager();\n this._sequenceId = new SequenceId();\n\n this._keepAliveTimeoutInMs = this._options.keepAliveTimeoutInMs ?? 120000;\n this._keepAliveIntervalInMs = this._options.keepAliveIntervalInMs ?? 20000;\n\n this._state = WebPubSubClientState.Stopped;\n }\n\n /**\n * Start to start to the service.\n * @param abortSignal - The abort signal\n */\n public async start(options?: StartOptions): Promise<void> {\n if (this._isStopping) {\n throw new Error(\"Can't start a client during stopping\");\n }\n\n if (this._state !== WebPubSubClientState.Stopped) {\n throw new Error(\"Client can be only started when it's Stopped\");\n }\n\n let abortSignal: AbortSignalLike | undefined;\n if (options) {\n abortSignal = options.abortSignal;\n }\n\n if (!this._pingKeepaliveTask && this._keepAliveIntervalInMs > 0) {\n this._pingKeepaliveTask = this._getPingKeepaliveTask();\n }\n if (!this._timeoutMonitorTask && this._keepAliveTimeoutInMs > 0) {\n this._timeoutMonitorTask = this._getTimeoutMonitorTask();\n }\n\n try {\n await this._startCore(abortSignal);\n } catch (err) {\n // this two sentense should be set together. Consider client.stop() is called during _startCore()\n this._changeState(WebPubSubClientState.Stopped);\n this._disposeKeepaliveTasks();\n this._isStopping = false;\n throw err;\n }\n }\n\n private async _startFromRestarting(abortSignal?: AbortSignalLike): Promise<void> {\n if (this._state !== WebPubSubClientState.Disconnected) {\n throw new Error(\"Client can be only restarted when it's Disconnected\");\n }\n\n try {\n logger.verbose(\"Staring reconnecting.\");\n await this._startCore(abortSignal);\n } catch (err) {\n this._changeState(WebPubSubClientState.Disconnected);\n throw err;\n }\n }\n\n private async _startCore(abortSignal?: AbortSignalLike): Promise<void> {\n this._changeState(WebPubSubClientState.Connecting);\n\n logger.info(\"Staring a new connection\");\n // Reset before a pure new connection\n this._sequenceId.reset();\n this._isInitialConnected = false;\n this._lastCloseEvent = undefined;\n this._lastDisconnectedMessage = undefined;\n this._connectionId = undefined;\n this._reconnectionToken = undefined;\n this._uri = undefined;\n\n if (typeof this._credential.getClientAccessUrl === \"string\") {\n this._uri = this._credential.getClientAccessUrl;\n } else {\n this._uri = await this._credential.getClientAccessUrl({\n abortSignal: abortSignal,\n } as GetClientAccessUrlOptions);\n }\n\n if (typeof this._uri !== \"string\") {\n throw new Error(\n `The clientAccessUrl must be a string but currently it's ${typeof this._uri}`,\n );\n }\n await this._connectCore(this._uri);\n }\n\n /**\n * Stop the client.\n */\n public stop(): void {\n if (this._state === WebPubSubClientState.Stopped || this._isStopping) {\n return;\n }\n\n // TODO: Maybe we need a better logic for stopping control\n this._isStopping = true;\n if (this._wsClient && this._wsClient.isOpen()) {\n this._wsClient.close();\n } else {\n this._isStopping = false;\n }\n this._disposeKeepaliveTasks();\n }\n\n private _disposeKeepaliveTasks(): void {\n if (this._pingKeepaliveTask) {\n this._pingKeepaliveTask.abort();\n this._pingKeepaliveTask = undefined;\n }\n if (this._timeoutMonitorTask) {\n this._timeoutMonitorTask.abort();\n this._timeoutMonitorTask = undefined;\n }\n }\n\n /**\n * Add handler for connected event\n * @param event - The event name\n * @param listener - The handler\n */\n public on(event: \"connected\", listener: (e: OnConnectedArgs) => void): void;\n /**\n * Add handler for disconnected event\n * @param event - The event name\n * @param listener - The handler\n */\n public on(event: \"disconnected\", listener: (e: OnDisconnectedArgs) => void): void;\n /**\n * Add handler for stopped event\n * @param event - The event name\n * @param listener - The handler\n */\n public on(event: \"stopped\", listener: (e: OnStoppedArgs) => void): void;\n /**\n * Add handler for server messages\n * @param event - The event name\n * @param listener - The handler\n */\n public on(event: \"server-message\", listener: (e: OnServerDataMessageArgs) => void): void;\n /**\n * Add handler for group messags\n * @param event - The event name\n * @param listener - The handler\n */\n public on(event: \"group-message\", listener: (e: OnGroupDataMessageArgs) => void): void;\n /**\n * Add handler for rejoining group failed\n * @param event - The event name\n * @param listener - The handler\n */\n public on(event: \"rejoin-group-failed\", listener: (e: OnRejoinGroupFailedArgs) => void): void;\n public on(\n event:\n | \"connected\"\n | \"disconnected\"\n | \"stopped\"\n | \"server-message\"\n | \"group-message\"\n | \"rejoin-group-failed\",\n listener: (e: any) => void,\n ): void {\n this._emitter.on(event, listener);\n }\n\n /**\n * Remove handler for connected event\n * @param event - The event name\n * @param listener - The handler\n */\n public off(event: \"connected\", listener: (e: OnConnectedArgs) => void): void;\n /**\n * Remove handler for disconnected event\n * @param event - The event name\n * @param listener - The handler\n */\n public off(event: \"disconnected\", listener: (e: OnDisconnectedArgs) => void): void;\n /**\n * Remove handler for stopped event\n * @param event - The event name\n * @param listener - The handler\n */\n public off(event: \"stopped\", listener: (e: OnStoppedArgs) => void): void;\n /**\n * Remove handler for server message\n * @param event - The event name\n * @param listener - The handler\n */\n public off(event: \"server-message\", listener: (e: OnServerDataMessageArgs) => void): void;\n /**\n * Remove handler for group message\n * @param event - The event name\n * @param listener - The handler\n */\n public off(event: \"group-message\", listener: (e: OnGroupDataMessageArgs) => void): void;\n /**\n * Remove handler for rejoining group failed\n * @param event - The event name\n * @param listener - The handler\n */\n public off(event: \"rejoin-group-failed\", listener: (e: OnRejoinGroupFailedArgs) => void): void;\n public off(\n event:\n | \"connected\"\n | \"disconnected\"\n | \"stopped\"\n | \"server-message\"\n | \"group-message\"\n | \"rejoin-group-failed\",\n listener: (e: any) => void,\n ): void {\n this._emitter.removeListener(event, listener);\n }\n\n private _emitEvent(event: \"connected\", args: OnConnectedArgs): void;\n private _emitEvent(event: \"disconnected\", args: OnDisconnectedArgs): void;\n private _emitEvent(event: \"stopped\", args: OnStoppedArgs): void;\n private _emitEvent(event: \"server-message\", args: OnServerDataMessageArgs): void;\n private _emitEvent(event: \"group-message\", args: OnGroupDataMessageArgs): void;\n private _emitEvent(event: \"rejoin-group-failed\", args: OnRejoinGroupFailedArgs): void;\n private _emitEvent(\n event:\n | \"connected\"\n | \"disconnected\"\n | \"stopped\"\n | \"server-message\"\n | \"group-message\"\n | \"rejoin-group-failed\",\n args: any,\n ): void {\n this._emitter.emit(event, args);\n }\n\n /**\n * Send custom event to server.\n * @param eventName - The event name\n * @param content - The data content\n * @param dataType - The data type\n * @param options - The options\n * @param abortSignal - The abort signal\n */\n public async sendEvent(\n eventName: string,\n content: JSONTypes | ArrayBuffer,\n dataType: WebPubSubDataType,\n options?: SendEventOptions,\n ): Promise<WebPubSubResult> {\n return this._operationExecuteWithRetry(\n () => this._sendEventAttempt(eventName, content, dataType, options),\n options?.abortSignal,\n );\n }\n\n private async _sendEventAttempt(\n eventName: string,\n content: JSONTypes | ArrayBuffer,\n dataType: WebPubSubDataType,\n options?: SendEventOptions,\n ): Promise<WebPubSubResult> {\n const fireAndForget = options?.fireAndForget ?? false;\n if (!fireAndForget) {\n return this._sendMessageWithAckId(\n (id) => {\n return {\n kind: \"sendEvent\",\n dataType: dataType,\n data: content,\n ackId: id,\n event: eventName,\n } as SendEventMessage;\n },\n options?.ackId,\n options?.abortSignal,\n );\n }\n\n const message = {\n kind: \"sendEvent\",\n dataType: dataType,\n data: content,\n event: eventName,\n } as SendEventMessage;\n\n await this._sendMessage(message, options?.abortSignal);\n return { isDuplicated: false };\n }\n\n private async _invokeEventAttempt(\n eventName: string,\n content: JSONTypes | ArrayBuffer,\n dataType: WebPubSubDataType,\n options?: InvokeEventOptions,\n ): Promise<InvokeEventResult> {\n const invokeOptions = options ?? {};\n\n const { invocationId, wait } = this._invocationManager.registerInvocation(\n invokeOptions.invocationId,\n );\n\n const invokeMessage: InvokeMessage = {\n kind: \"invoke\",\n invocationId,\n target: \"event\",\n event: eventName,\n dataType,\n data: content,\n };\n\n const responsePromise = wait({\n abortSignal: invokeOptions.abortSignal,\n });\n\n try {\n await this._sendMessage(invokeMessage, invokeOptions.abortSignal);\n } catch (err) {\n const invocationError =\n err instanceof InvocationError\n ? err\n : new InvocationError(\n err instanceof Error ? err.message : \"Failed to send invocation message.\",\n {\n invocationId,\n },\n );\n\n this._invocationManager.rejectInvocation(invocationId, invocationError);\n void responsePromise.catch(() => {\n /** empty */\n });\n throw invocationError;\n }\n\n try {\n const response = await responsePromise;\n return this._mapInvokeResponse(response);\n } catch (err) {\n const shouldCancel =\n (err instanceof InvocationError && err.errorDetail == null) ||\n invokeOptions.abortSignal?.aborted === true;\n if (shouldCancel) {\n await this._sendCancelInvocation(invocationId).catch(() => {\n /** empty */\n });\n }\n throw err;\n } finally {\n this._invocationManager.discard(invocationId);\n }\n }\n\n /**\n * Invoke an upstream event and wait for the correlated response.\n * @param eventName - The event name\n * @param content - The payload\n * @param dataType - The payload type\n * @param options - Invoke options\n */\n public async invokeEvent(\n eventName: string,\n content: JSONTypes | ArrayBuffer,\n dataType: WebPubSubDataType,\n options?: InvokeEventOptions,\n ): Promise<InvokeEventResult> {\n return this._operationExecuteWithRetry(\n () => this._invokeEventAttempt(eventName, content, dataType, options),\n options?.abortSignal,\n );\n }\n\n /**\n * Join the client to group\n * @param groupName - The group name\n * @param options - The join group options\n */\n public async joinGroup(groupName: string, options?: JoinGroupOptions): Promise<WebPubSubResult> {\n return this._operationExecuteWithRetry(\n () => this._joinGroupAttempt(groupName, options),\n options?.abortSignal,\n );\n }\n\n private async _joinGroupAttempt(\n groupName: string,\n options?: JoinGroupOptions,\n ): Promise<WebPubSubResult> {\n const group = this._getOrAddGroup(groupName);\n const result = await this._joinGroupCore(groupName, options);\n group.isJoined = true;\n return result;\n }\n\n private async _joinGroupCore(\n groupName: string,\n options?: JoinGroupOptions,\n ): Promise<WebPubSubResult> {\n return this._sendMessageWithAckId(\n (id) => {\n return {\n group: groupName,\n ackId: id,\n kind: \"joinGroup\",\n } as JoinGroupMessage;\n },\n options?.ackId,\n options?.abortSignal,\n );\n }\n\n /**\n * Leave the client from group\n * @param groupName - The group name\n * @param ackId - The optional ackId. If not specified, client will generate one.\n * @param abortSignal - The abort signal\n */\n public async leaveGroup(\n groupName: string,\n options?: LeaveGroupOptions,\n ): Promise<WebPubSubResult> {\n return this._operationExecuteWithRetry(\n () => this._leaveGroupAttempt(groupName, options),\n options?.abortSignal,\n );\n }\n\n private async _leaveGroupAttempt(\n groupName: string,\n options?: LeaveGroupOptions,\n ): Promise<WebPubSubResult> {\n const group = this._getOrAddGroup(groupName);\n const result = await this._sendMessageWithAckId(\n (id) => {\n return {\n group: groupName,\n ackId: id,\n kind: \"leaveGroup\",\n } as LeaveGroupMessage;\n },\n options?.ackId,\n options?.abortSignal,\n );\n group.isJoined = false;\n return result;\n }\n\n /**\n * Send message to group.\n * @param groupName - The group name\n * @param content - The data content\n * @param dataType - The data type\n * @param options - The options\n * @param abortSignal - The abort signal\n */\n public async sendToGroup(\n groupName: string,\n content: JSONTypes | ArrayBuffer,\n dataType: WebPubSubDataType,\n options?: SendToGroupOptions,\n ): Promise<WebPubSubResult> {\n return this._operationExecuteWithRetry(\n () => this._sendToGroupAttempt(groupName, content, dataType, options),\n options?.abortSignal,\n );\n }\n\n private async _sendToGroupAttempt(\n groupName: string,\n content: JSONTypes | ArrayBuffer,\n dataType: WebPubSubDataType,\n options?: SendToGroupOptions,\n ): Promise<WebPubSubResult> {\n const fireAndForget = options?.fireAndForget ?? false;\n const noEcho = options?.noEcho ?? false;\n if (!fireAndForget) {\n return this._sendMessageWithAckId(\n (id) => {\n return {\n kind: \"sendToGroup\",\n group: groupName,\n dataType: dataType,\n data: content,\n ackId: id,\n noEcho: noEcho,\n } as SendToGroupMessage;\n },\n options?.ackId,\n options?.abortSignal,\n );\n }\n\n const message = {\n kind: \"sendToGroup\",\n group: groupName,\n dataType: dataType,\n data: content,\n noEcho: noEcho,\n } as SendToGroupMessage;\n\n await this._sendMessage(message, options?.abortSignal);\n return { isDuplicated: false };\n }\n\n private _getWebSocketClientFactory(): WebSocketClientFactoryLike {\n return new WebSocketClientFactory();\n }\n\n private async _trySendSequenceAck(): Promise<void> {\n if (!this._protocol.isReliableSubProtocol) {\n return;\n }\n const [isUpdated, seqId] = this._sequenceId.tryGetSequenceId();\n if (isUpdated && seqId !== null && seqId !== undefined) {\n // seqId can be 0\n const message: SequenceAckMessage = {\n kind: \"sequenceAck\",\n sequenceId: seqId!,\n };\n try {\n await this._sendMessage(message);\n } catch {\n this._sequenceId.tryUpdate(seqId!); // If sending failed, mark it as updated so that it can be sent again.\n }\n }\n }\n\n private _connectCore(uri: string): Promise<void> {\n if (this._isStopping) {\n throw new Error(\"Can't start a client during stopping\");\n }\n\n return new Promise<void>((resolve, reject) => {\n // This part is executed sync\n const client = (this._wsClient = this._getWebSocketClientFactory().create(\n uri,\n this._protocol.name,\n ));\n client.onopen(() => {\n // There's a case that client called stop() before this method. We need to check and close it if it's the case.\n if (this._isStopping) {\n try {\n client.close();\n } catch {\n /** empty */\n }\n\n reject(new Error(`The client is stopped`));\n }\n logger.verbose(\"WebSocket connection has opened\");\n this._lastMessageReceived = Date.now(); // reset last message received time to avoid immediate keepalive timeout after a longer reconnection\n this._changeState(WebPubSubClientState.Connected);\n if (this._protocol.isReliableSubProtocol) {\n if (this._sequenceAckTask != null) {\n this._sequenceAckTask.abort();\n }\n this._sequenceAckTask = new AbortableTask(async () => {\n await this._trySendSequenceAck();\n }, 1000);\n }\n\n resolve();\n });\n\n client.onerror((e) => {\n if (this._sequenceAckTask != null) {\n this._sequenceAckTask.abort();\n }\n reject(e);\n });\n\n client.onclose((code: number, reason: string) => {\n if (this._state === WebPubSubClientState.Connected) {\n logger.verbose(\"WebSocket closed after open\");\n if (this._sequenceAckTask != null) {\n this._sequenceAckTask.abort();\n }\n logger.info(`WebSocket connection closed. Code: ${code}, Reason: ${reason}`);\n this._lastCloseEvent = { code: code, reason: reason };\n this._handleConnectionClose.call(this);\n } else {\n logger.verbose(\"WebSocket closed before open\");\n reject(new Error(`Failed to start WebSocket: ${code}`));\n }\n });\n\n client.onmessage((data: any) => {\n const handleAckMessage = (message: AckMessage): void => {\n const isDuplicated: boolean = message.error != null && message.error.name === \"Duplicate\";\n if (message.success || isDuplicated) {\n this._ackManager.resolveAck(message.ackId, {\n ackId: message.ackId,\n isDuplicated: isDuplicated,\n } as WebPubSubResult);\n } else {\n this._ackManager.rejectAck(\n message.ackId,\n new SendMessageError(\"Failed to send message.\", {\n ackId: message.ackId,\n errorDetail: message.error,\n } as SendMessageErrorOptions),\n );\n }\n };\n\n const handleConnectedMessage = async (message: ConnectedMessage): Promise<void> => {\n this._connectionId = message.connectionId;\n this._reconnectionToken = message.reconnectionToken;\n\n if (!this._isInitialConnected) {\n this._isInitialConnected = true;\n\n if (this._options.autoRejoinGroups) {\n const groupPromises: Promise<void>[] = [];\n this._groupMap.forEach((g) => {\n if (g.isJoined) {\n groupPromises.push(\n (async () => {\n try {\n await this._joinGroupCore(g.name);\n } catch (err) {\n this._safeEmitRejoinGroupFailed(g.name, err);\n }\n })(),\n );\n }\n });\n\n await Promise.all(groupPromises).catch(() => {\n /** empty */\n });\n }\n\n this._safeEmitConnected(message.connectionId, message.userId);\n }\n };\n\n const handleDisconnectedMessage = (message: DisconnectedMessage): void => {\n this._lastDisconnectedMessage = message;\n };\n\n const handleGroupDataMessage = (message: GroupDataMessage): void => {\n if (message.sequenceId != null) {\n const diff = this._sequenceId.tryUpdate(message.sequenceId);\n if (diff === 0) {\n // drop duplicated message\n return;\n }\n\n // If the diff is larger than the threshold, we must ack quicker to avoid slow client drop.\n if (diff > this._quickSequenceAckDiff) {\n this._trySendSequenceAck();\n }\n }\n\n this._safeEmitGroupMessage(message);\n };\n\n const handleServerDataMessage = (message: ServerDataMessage): void => {\n if (message.sequenceId != null) {\n const diff = this._sequenceId.tryUpdate(message.sequenceId);\n if (diff === 0) {\n // drop duplicated message\n return;\n }\n\n // If the diff is larger than the threshold, we must ack quicker to avoid slow client drop.\n if (diff > this._quickSequenceAckDiff) {\n this._trySendSequenceAck();\n }\n }\n\n this._safeEmitServerMessage(message);\n };\n\n const handleInvokeResponseMessage = (message: InvokeResponseMessage): void => {\n const resolved = this._invocationManager.resolveInvocation(message);\n if (!resolved) {\n logger.verbose(\n `Received invokeResponse for unknown invocationId: ${message.invocationId}`,\n );\n }\n };\n\n this._lastMessageReceived = Date.now();\n\n let messages: WebPubSubMessage[] | WebPubSubMessage | null;\n try {\n let convertedData: Buffer | ArrayBuffer | string;\n if (Array.isArray(data)) {\n convertedData = Buffer.concat(data);\n } else {\n convertedData = data;\n }\n\n messages = this._protocol.parseMessages(convertedData);\n if (messages === null) {\n // null means the message is not recognized.\n return;\n }\n } catch (err) {\n logger.warning(\"An error occurred while parsing the message from service\", err);\n throw err;\n }\n\n if (!Array.isArray(messages)) {\n messages = [messages];\n }\n\n messages.forEach((message) => {\n try {\n switch (message.kind) {\n case \"pong\": {\n // handled in _lastMessageReceived\n break;\n }\n case \"ack\": {\n handleAckMessage(message as AckMessage);\n break;\n }\n case \"connected\": {\n handleConnectedMessage(message as ConnectedMessage);\n break;\n }\n case \"disconnected\": {\n handleDisconnectedMessage(message as DisconnectedMessage);\n break;\n }\n case \"groupData\": {\n handleGroupDataMessage(message as GroupDataMessage);\n break;\n }\n case \"serverData\": {\n handleServerDataMessage(message as ServerDataMessage);\n break;\n }\n case \"invokeResponse\": {\n handleInvokeResponseMessage(message as InvokeResponseMessage);\n break;\n }\n }\n } catch (err) {\n logger.warning(\n `An error occurred while handling the message with kind: ${message.kind} from service`,\n err,\n );\n }\n });\n });\n });\n }\n\n private async _handleConnectionCloseAndNoRecovery(): Promise<void> {\n this._state = WebPubSubClientState.Disconnected;\n\n this._safeEmitDisconnected(this._connectionId, this._lastDisconnectedMessage);\n\n // Auto reconnect or stop\n if (this._options.autoReconnect) {\n await this._autoReconnect();\n } else {\n await this._handleConnectionStopped();\n }\n }\n\n private async _autoReconnect(): Promise<void> {\n let isSuccess = false;\n let attempt = 0;\n try {\n while (!this._isStopping) {\n try {\n await this._startFromRestarting();\n isSuccess = true;\n break;\n } catch (err) {\n logger.warning(\"An attempt to reconnect connection failed.\", err);\n\n attempt++;\n const delayInMs = this._reconnectRetryPolicy.nextRetryDelayInMs(attempt);\n\n if (delayInMs == null) {\n break;\n }\n\n logger.verbose(`Delay time for reconnect attempt ${attempt}: ${delayInMs}`);\n await delay(delayInMs).catch(() => {\n /** empty */\n });\n }\n }\n } finally {\n if (!isSuccess) {\n this._handleConnectionStopped();\n }\n }\n }\n\n private _handleConnectionStopped(): void {\n this._isStopping = false;\n this._state = WebPubSubClientState.Stopped;\n this._disposeKeepaliveTasks();\n this._safeEmitStopped();\n }\n\n private async _trySendPing(): Promise<void> {\n // skip during reconnection\n if (this._state !== WebPubSubClientState.Connected || !this._wsClient?.isOpen()) {\n return;\n }\n\n const message: PingMessage = {\n kind: \"ping\",\n };\n try {\n await this._sendMessage(message);\n } catch {\n logger.warning(\"Failed to send keepalive message to the service\");\n }\n }\n\n private async _checkKeepAliveTimeout(): Promise<void> {\n if (this._state !== WebPubSubClientState.Connected || !this._wsClient?.isOpen()) {\n return;\n }\n\n const now = Date.now();\n if (now - this._lastMessageReceived > this._keepAliveTimeoutInMs) {\n logger.warning(\n `No messages received for ${now - this._lastMessageReceived} ms. Closing. The keep alive timeout is set to ${this._keepAliveTimeoutInMs} ms.`,\n );\n this._wsClient?.close();\n }\n }\n\n private _getPingKeepaliveTask(): AbortableTask {\n return new AbortableTask(async () => {\n await this._trySendPing();\n }, this._keepAliveIntervalInMs);\n }\n\n private _getTimeoutMonitorTask(): AbortableTask {\n const timeout = this._keepAliveTimeoutInMs;\n const checkInterval = Math.floor(timeout / 3);\n return new AbortableTask(async () => {\n await this._checkKeepAliveTimeout();\n }, checkInterval);\n }\n\n private async _sendMessage(\n message: WebPubSubMessage,\n abortSignal?: AbortSignalLike,\n ): Promise<void> {\n if (!this._wsClient || !this._wsClient.isOpen()) {\n throw new Error(\"The connection is not connected.\");\n }\n\n const payload = this._protocol.writeMessage(message);\n await this._wsClient!.send(payload, abortSignal);\n }\n\n private async _sendMessageWithAckId(\n messageProvider: (ackId: number) => WebPubSubMessage,\n ackId?: number,\n abortSignal?: AbortSignalLike,\n ): Promise<WebPubSubResult> {\n const { ackId: resolvedAckId, wait } = this._ackManager.registerAck(ackId);\n const message = messageProvider(resolvedAckId);\n\n try {\n await this._sendMessage(message, abortSignal);\n } catch (error) {\n this._ackManager.discard(resolvedAckId);\n\n let errorMessage: string = \"\";\n if (error instanceof Error) {\n errorMessage = error.message;\n }\n throw new SendMessageError(errorMessage, { ackId: resolvedAckId });\n }\n\n return wait(abortSignal);\n }\n\n private async _handleConnectionClose(): Promise<void> {\n // Clean ack cache\n this._ackManager.rejectAll((ackId) => {\n return new SendMessageError(\n \"Connection is disconnected before receive ack from the service\",\n {\n ackId,\n } as SendMessageErrorOptions,\n );\n });\n\n this._invocationManager.rejectAll((invocationId) => {\n return new InvocationError(\n \"Connection is disconnected before receiving invoke response from the service\",\n {\n invocationId,\n },\n );\n });\n\n if (this._isStopping) {\n logger.warning(\"The client is stopping state. Stop recovery.\");\n this._handleConnectionCloseAndNoRecovery();\n return;\n }\n\n if (this._lastCloseEvent && this._lastCloseEvent.code === 1008) {\n logger.warning(\"The websocket close with status code 1008. Stop recovery.\");\n this._handleConnectionCloseAndNoRecovery();\n return;\n }\n\n if (!this._protocol.isReliableSubProtocol) {\n logger.warning(\"The protocol is not reliable, recovery is not applicable\");\n this._handleConnectionCloseAndNoRecovery();\n return;\n }\n\n // Build recovery uri\n const recoveryUri = this._buildRecoveryUri();\n if (!recoveryUri) {\n logger.warning(\"Connection id or reconnection token is not available\");\n this._handleConnectionCloseAndNoRecovery();\n return;\n }\n\n // Try recover connection\n let recovered = false;\n this._state = WebPubSubClientState.Recovering;\n const abortSignal = AbortSignal.timeout(30 * 1000);\n try {\n while (!abortSignal.aborted || this._isStopping) {\n try {\n await this._connectCore.call(this, recoveryUri);\n recovered = true;\n return;\n } catch {\n await delay(1000);\n }\n }\n } finally {\n if (!recovered) {\n logger.warning(\"Recovery attempts failed more then 30 seconds or the client is stopping\");\n this._handleConnectionCloseAndNoRecovery();\n }\n }\n }\n\n private _safeEmitConnected(connectionId: string, userId: string): void {\n this._emitEvent(\"connected\", {\n connectionId: connectionId,\n userId: userId,\n } as OnConnectedArgs);\n }\n\n private _safeEmitDisconnected(\n connectionId: string | undefined,\n lastDisconnectedMessage: DisconnectedMessage | undefined,\n ): void {\n this._emitEvent(\"disconnected\", {\n connectionId: connectionId,\n message: lastDisconnectedMessage,\n } as OnDisconnectedArgs);\n }\n\n private _safeEmitGroupMessage(message: GroupDataMessage): void {\n this._emitEvent(\"group-message\", {\n message: message,\n } as OnGroupDataMessageArgs);\n }\n\n private _safeEmitServerMessage(message: ServerDataMessage): void {\n this._emitEvent(\"server-message\", {\n message: message,\n } as OnServerDataMessageArgs);\n }\n\n private _safeEmitStopped(): void {\n this._emitEvent(\"stopped\", {});\n }\n\n private _safeEmitRejoinGroupFailed(groupName: string, err: unknown): void {\n this._emitEvent(\"rejoin-group-failed\", {\n group: groupName,\n error: err,\n } as OnRejoinGroupFailedArgs);\n }\n\n private _mapInvokeResponse(message: InvokeResponseMessage): InvokeEventResult {\n if (message.success !== true) {\n if (message.success === false) {\n throw new InvocationError(message.error?.message ?? \"Invocation failed.\", {\n invocationId: message.invocationId,\n errorDetail: message.error,\n });\n }\n\n throw new InvocationError(\"Unsupported invoke response frame.\", {\n invocationId: message.invocationId,\n });\n }\n\n return {\n invocationId: message.invocationId,\n dataType: message.dataType,\n data: message.data,\n };\n }\n\n private async _sendCancelInvocation(invocationId: string): Promise<void> {\n const message: CancelInvocationMessage = {\n kind: \"cancelInvocation\",\n invocationId,\n };\n\n try {\n await this._sendMessage(message);\n } catch (err) {\n logger.verbose(`Failed to send cancelInvocation for ${invocationId}`, err);\n }\n }\n\n private _buildDefaultOptions(clientOptions: WebPubSubClientOptions): WebPubSubClientOptions {\n if (clientOptions.autoReconnect == null) {\n clientOptions.autoReconnect = true;\n }\n\n if (clientOptions.autoRejoinGroups == null) {\n clientOptions.autoRejoinGroups = true;\n }\n\n if (clientOptions.protocol == null) {\n clientOptions.protocol = WebPubSubJsonReliableProtocol();\n }\n\n if (clientOptions.keepAliveTimeoutInMs == null) {\n clientOptions.keepAliveTimeoutInMs = 120000; // 120 seconds\n }\n\n if (clientOptions.keepAliveTimeoutInMs < 0) {\n throw new RangeError(\"keepAliveTimeoutInMs must be greater than or equal to 0.\");\n }\n\n if (clientOptions.keepAliveIntervalInMs == null) {\n clientOptions.keepAliveIntervalInMs = 20000; // 20 seconds\n }\n\n if (clientOptions.keepAliveIntervalInMs < 0) {\n throw new RangeError(\"keepAliveIntervalInMs must be greater than or equal to 0.\");\n }\n\n this._buildMessageRetryOptions(clientOptions);\n this._buildReconnectRetryOptions(clientOptions);\n\n return clientOptions;\n }\n\n private _buildMessageRetryOptions(clientOptions: WebPubSubClientOptions): void {\n if (!clientOptions.messageRetryOptions) {\n clientOptions.messageRetryOptions = {};\n }\n\n if (\n clientOptions.messageRetryOptions.maxRetries == null ||\n clientOptions.messageRetryOptions.maxRetries < 0\n ) {\n clientOptions.messageRetryOptions.maxRetries = 3;\n }\n\n if (\n clientOptions.messageRetryOptions.retryDelayInMs == null ||\n clientOptions.messageRetryOptions.retryDelayInMs < 0\n ) {\n clientOptions.messageRetryOptions.retryDelayInMs = 1000;\n }\n\n if (\n clientOptions.messageRetryOptions.maxRetryDelayInMs == null ||\n clientOptions.messageRetryOptions.maxRetryDelayInMs < 0\n ) {\n clientOptions.messageRetryOptions.maxRetryDelayInMs = 30000;\n }\n\n if (clientOptions.messageRetryOptions.mode == null) {\n clientOptions.messageRetryOptions.mode = \"Fixed\";\n }\n }\n\n private _buildReconnectRetryOptions(clientOptions: WebPubSubClientOptions): void {\n if (!clientOptions.reconnectRetryOptions) {\n clientOptions.reconnectRetryOptions = {};\n }\n\n if (\n clientOptions.reconnectRetryOptions.maxRetries == null ||\n clientOptions.reconnectRetryOptions.maxRetries < 0\n ) {\n clientOptions.reconnectRetryOptions.maxRetries = Number.MAX_VALUE;\n }\n\n if (\n clientOptions.reconnectRetryOptions.retryDelayInMs == null ||\n clientOptions.reconnectRetryOptions.retryDelayInMs < 0\n ) {\n clientOptions.reconnectRetryOptions.retryDelayInMs = 1000;\n }\n\n if (\n clientOptions.reconnectRetryOptions.maxRetryDelayInMs == null ||\n clientOptions.reconnectRetryOptions.maxRetryDelayInMs < 0\n ) {\n clientOptions.reconnectRetryOptions.maxRetryDelayInMs = 30000;\n }\n\n if (clientOptions.reconnectRetryOptions.mode == null) {\n clientOptions.reconnectRetryOptions.mode = \"Fixed\";\n }\n }\n\n private _buildRecoveryUri(): string | null {\n if (this._connectionId && this._reconnectionToken && this._uri) {\n const url = new URL(this._uri);\n url.searchParams.append(\"awps_connection_id\", this._connectionId);\n url.searchParams.append(\"awps_reconnection_token\", this._reconnectionToken);\n return url.toString();\n }\n return null;\n }\n\n private _getOrAddGroup(name: string): WebPubSubGroup {\n if (!this._groupMap.has(name)) {\n this._groupMap.set(name, new WebPubSubGroup(name));\n }\n return this._groupMap.get(name) as WebPubSubGroup;\n }\n\n private _changeState(newState: WebPubSubClientState): void {\n logger.verbose(\n `The client state transfer from ${this._state.toString()} to ${newState.toString()}`,\n );\n this._state = newState;\n }\n\n private async _operationExecuteWithRetry<T>(\n inner: () => Promise<T>,\n signal?: AbortSignalLike,\n ): Promise<T> {\n let retryAttempt = 0;\n\n while (true) {\n try {\n return await inner.call(this);\n } catch (err) {\n if (err instanceof InvocationError) {\n throw err;\n }\n retryAttempt++;\n const delayInMs = this._messageRetryPolicy.nextRetryDelayInMs(retryAttempt);\n if (delayInMs == null) {\n throw err;\n }\n\n await delay(delayInMs);\n\n if (signal?.aborted) {\n throw err;\n }\n }\n }\n }\n}\n\nclass RetryPolicy {\n private _retryOptions: WebPubSubRetryOptions;\n private _maxRetriesToGetMaxDelay: number;\n\n public constructor(retryOptions: WebPubSubRetryOptions) {\n this._retryOptions = retryOptions;\n this._maxRetriesToGetMaxDelay = Math.ceil(\n Math.log2(this._retryOptions.maxRetryDelayInMs!) -\n Math.log2(this._retryOptions.retryDelayInMs!) +\n 1,\n );\n }\n\n public nextRetryDelayInMs(retryAttempt: number): number | null {\n if (retryAttempt > this._retryOptions.maxRetries!) {\n return null;\n } else {\n if (this._retryOptions.mode! === \"Fixed\") {\n return this._retryOptions.retryDelayInMs!;\n } else {\n return this._calculateExponentialDelay(retryAttempt);\n }\n }\n }\n\n private _calculateExponentialDelay(attempt: number): number {\n if (attempt >= this._maxRetriesToGetMaxDelay) {\n return this._retryOptions.maxRetryDelayInMs!;\n } else {\n return (1 << (attempt - 1)) * this._retryOptions.retryDelayInMs!;\n }\n }\n}\n\nclass WebPubSubGroup {\n public readonly name: string;\n public isJoined = false;\n\n constructor(name: string) {\n this.name = name;\n }\n}\n\nclass SequenceId {\n private _sequenceId: number;\n private _isUpdate: boolean;\n\n constructor() {\n this._sequenceId = 0;\n this._isUpdate = false;\n }\n\n public tryUpdate(sequenceId: number): number {\n this._isUpdate = true;\n if (sequenceId > this._sequenceId) {\n const diff = sequenceId - this._sequenceId;\n this._sequenceId = sequenceId;\n return diff;\n }\n return 0;\n }\n\n public tryGetSequenceId(): [boolean, number | null] {\n if (this._isUpdate) {\n this._isUpdate = false;\n return [true, this._sequenceId];\n }\n\n return [false, null];\n }\n\n public reset(): void {\n this._sequenceId = 0;\n this._isUpdate = false;\n }\n}\n\nclass AbortableTask {\n private readonly _func: (obj?: any) => Promise<void>;\n private readonly _abortController: AbortController;\n private readonly _interval: number;\n private readonly _obj?: any;\n\n constructor(func: (obj?: any) => Promise<void>, interval: number, obj?: any) {\n this._func = func;\n this._abortController = new AbortController();\n this._interval = interval;\n this._obj = obj;\n this._start();\n }\n\n public abort(): void {\n try {\n this._abortController.abort();\n } catch {\n /** empty */\n }\n }\n\n private async _start(): Promise<void> {\n const signal = this._abortController.signal;\n while (!signal.aborted) {\n try {\n await this._func(this._obj);\n } catch {\n /** empty */\n } finally {\n await delay(this._interval);\n }\n }\n }\n}\n", "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n }\n return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n var _, done = false;\n for (var i = decorators.length - 1; i >= 0; i--) {\n var context = {};\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n if (kind === \"accessor\") {\n if (result === void 0) continue;\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n if (_ = accept(result.get)) descriptor.get = _;\n if (_ = accept(result.set)) descriptor.set = _;\n if (_ = accept(result.init)) initializers.unshift(_);\n }\n else if (_ = accept(result)) {\n if (kind === \"field\") initializers.unshift(_);\n else descriptor[key] = _;\n }\n }\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\n done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n var useValue = arguments.length > 2;\n for (var i = 0; i < initializers.length; i++) {\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n }\n return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n}\n\nexport function __generator(thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o), r, ar = [], e;\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n }\n catch (error) { e = { error: error }; }\n finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n }\n finally { if (e) throw e.error; }\n }\n return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++)\n ar = ar.concat(__read(arguments[i]));\n return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n function fulfill(value) { resume(\"next\", value); }\n function reject(value) { resume(\"throw\", value); }\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator], i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n ownKeys = Object.getOwnPropertyNames || function (o) {\n var ar = [];\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n return ar;\n };\n return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n __setModuleDefault(result, mod);\n return result;\n}\n\nexport function __importDefault(mod) {\n return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n if (value !== null && value !== void 0) {\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n var dispose, inner;\n if (async) {\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n dispose = value[Symbol.asyncDispose];\n }\n if (dispose === void 0) {\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n dispose = value[Symbol.dispose];\n if (async) inner = dispose;\n }\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n env.stack.push({ value: value, dispose: dispose, async: async });\n }\n else if (async) {\n env.stack.push({ async: true });\n }\n return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n var e = new Error(message);\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n function fail(e) {\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n env.hasError = true;\n }\n var r, s = 0;\n function next() {\n while (r = env.stack.pop()) {\n try {\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n if (r.dispose) {\n var result = r.dispose.call(r.value);\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n }\n else s |= 1;\n }\n catch (e) {\n fail(e);\n }\n }\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n if (env.hasError) throw env.error;\n }\n return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n });\n }\n return path;\n}\n\nexport default {\n __extends,\n __assign,\n __rest,\n __decorate,\n __param,\n __esDecorate,\n __runInitializers,\n __propKey,\n __setFunctionName,\n __metadata,\n __awaiter,\n __generator,\n __createBinding,\n __exportStar,\n __values,\n __read,\n __spread,\n __spreadArrays,\n __spreadArray,\n __await,\n __asyncGenerator,\n __asyncDelegator,\n __asyncValues,\n __makeTemplateObject,\n __importStar,\n __importDefault,\n __classPrivateFieldGet,\n __classPrivateFieldSet,\n __classPrivateFieldIn,\n __addDisposableResource,\n __disposeResources,\n __rewriteRelativeImportExtension,\n};\n", "// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT license.\n\nimport { PageSettings, PagedAsyncIterableIterator, PagedResult } from \"./models.js\";\n\n/**\n * returns an async iterator that iterates over results. It also has a `byPage`\n * method that returns pages of items at once.\n *\n * @param pagedResult - an object that specifies how to get pages.\n * @returns a paged async iterator that iterates over results.\n */\n\nexport function getPagedAsyncIterator<\n TElement,\n TPage = TElement[],\n TPageSettings = PageSettings,\n TLink = string,\n>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): PagedAsyncIterableIterator<TElement, TPage, TPageSettings> {\n const iter = getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(pagedResult);\n return {\n next() {\n return iter.next();\n },\n [Symbol.asyncIterator]() {\n return this;\n },\n byPage:\n pagedResult?.byPage ??\n (((settings?: PageSettings) => {\n const { continuationToken, maxPageSize } = settings ?? {};\n return getPageAsyncIterator(pagedResult, {\n pageLink: continuationToken as unknown as TLink | undefined,\n maxPageSize,\n });\n }) as unknown as (settings?: TPageSettings) => AsyncIterableIterator<TPage>),\n };\n}\n\nasync function* getItemAsyncIterator<TElement, TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n): AsyncIterableIterator<TElement> {\n const pages = getPageAsyncIterator(pagedResult);\n const firstVal = await pages.next();\n // if the result does not have an array shape, i.e. TPage = TElement, then we return it as is\n if (!Array.isArray(firstVal.value)) {\n // can extract elements from this page\n const { toElements } = pagedResult;\n if (toElements) {\n yield* toElements(firstVal.value) as TElement[];\n for await (const page of pages) {\n yield* toElements(page) as TElement[];\n }\n } else {\n yield firstVal.value;\n // `pages` is of type `AsyncIterableIterator<TPage>` but TPage = TElement in this case\n yield* pages as unknown as AsyncIterableIterator<TElement>;\n }\n } else {\n yield* firstVal.value;\n for await (const page of pages) {\n // pages is of type `AsyncIterableIterator<TPage>` so `page` is of type `TPage`. In this branch,\n // it must be the case that `TPage = TElement[]`\n yield* page as unknown as TElement[];\n }\n }\n}\n\nasync function* getPageAsyncIterator<TPage, TLink, TPageSettings>(\n pagedResult: PagedResult<TPage, TPageSettings, TLink>,\n options: {\n maxPageSize?: number;\n pageLink?: TLink;\n } = {},\n): AsyncIterableIterator<TPage> {\n const { pageLink, maxPageSize } = options;\n let response = await pagedResult.getPage(pageLink ?? pagedResult.firstPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n while (response.nextPageLink) {\n response = await pagedResult.getPage(response.nextPageLink, maxPageSize);\n if (!response) {\n return;\n }\n yield response.page;\n }\n}\n", "const INVOCATION_NAME = {\n LOGIN: \"chat.login\",\n LIST_USER_CONVERSATION: \"chat.listUserConversation\",\n GET_USER_PROPERTIES: \"chat.getUserProperties\",\n GET_ROOM: \"chat.getRoom\",\n LIST_MESSAGES: \"chat.queryMessageHistory\",\n SEND_TEXT_MESSAGE: \"chat.sendTextMessage\",\n CREATE_ROOM: \"chat.createRoom\",\n JOIN_ROOM: \"chat.joinRoom\",\n MANAGE_ROOM_MEMBER: \"chat.manageRoomMember\",\n} as const;\n\nconst ERRORS = {\n RoomAlreadyExists: \"RoomAlreadyExists\",\n UserAlreadyInRoom: \"UserAlreadyInRoom\",\n NoPermissionInRoom: \"NoPermissionInRoom\",\n NotStarted: \"NotStarted\",\n UnknownRoom: \"UnknownRoom\",\n InvalidServerResponse: \"InvalidServerResponse\",\n} as const;\n\nexport { INVOCATION_NAME, ERRORS };\n", "import { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure\\/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"web-pubsub-chat-client:*\");\n", "import { WebPubSubClient } from \"@azure/web-pubsub-client\";\n\nexport function decodeMessageBody(base64: string | null | undefined): string {\n if (!base64) return \"\";\n if (typeof Buffer !== 'undefined') {\n return Buffer.from(base64, 'base64').toString('utf-8');\n }\n // compatibility for browser environment\n return decodeURIComponent(escape(atob(base64))); \n}\n\n\n/**\n * Type guard for WebPubSubClient.\n * We avoid using `instanceof` because it can fail in scenarios with multiple\n * dependency copies (e.g., monorepo with yarn/pnpm link) or across different\n * execution contexts (iframe, worker). Instead, we check for stable public\n * methods to ensure reliable detection.\n */\nexport function isWebPubSubClient(obj: unknown): obj is WebPubSubClient {\n if (typeof obj !== \"object\" || obj === null) return false;\n const anyObj = obj as any;\n return (\n typeof anyObj === \"object\" &&\n (\n typeof anyObj.start === \"function\" || \n typeof anyObj.stop === \"function\" || \n typeof anyObj.on === \"function\"\n )\n );\n}", "import { InvocationError, WebPubSubClient, WebPubSubClientCredential, WebPubSubDataType } from \"@azure/web-pubsub-client\";\nimport { getPagedAsyncIterator, type PagedAsyncIterableIterator, type PageSettings } from \"@azure/core-paging\";\nimport { EventEmitter } from \"events\";\nimport {\n RoomInfo as WireRoomInfo,\n RoomInfoWithMembers as WireRoomInfoWithMembers,\n UserProfile as WireUserProfile,\n MessageRangeQuery,\n Notification,\n NewMessageNotificationBody,\n NewRoomNotificationBody,\n SendMessageResponse,\n ManageRoomMemberRequest,\n MemberJoinedNotificationBody,\n MemberLeftNotificationBody,\n RoomLeftNotificationBody,\n} from \"./generatedTypes.js\";\nimport type { MessageInfo, RoomInfo, RoomDetail, UserProfile, SendMessageResult } from \"./models.js\";\nimport type {\n ChatMessage,\n OnMemberJoinedArgs,\n OnMemberLeftArgs,\n OnMessageArgs,\n OnRoomJoinedArgs,\n OnRoomLeftArgs,\n OnStartedArgs,\n OnStoppedArgs,\n} from \"./events.js\";\nimport type {\n ListRoomMessagesOptions,\n OperationOptions,\n StartOptions,\n GetRoomDetailOptions,\n CreateRoomOptions,\n SendToRoomOptions,\n GetUserProfileOptions,\n AddUserToRoomOptions,\n RemoveUserFromRoomOptions,\n} from \"./options.js\";\n\nimport { ERRORS, INVOCATION_NAME } from \"./constant.js\";\nimport { logger } from \"./logger.js\";\nimport { isWebPubSubClient } from \"./utils.js\";\n\n/**\n * Error thrown by `ChatClient` operations. Inspect {@link ChatError.code}\n * for a stable, machine-readable error code and compare it against\n * {@link KnownChatErrorCode} members rather than matching on the message.\n */\nclass ChatError extends Error {\n /** Stable, machine-readable error code. Compare against {@link KnownChatErrorCode}. */\n public readonly code: string;\n constructor(message: string, code: string) {\n super(message);\n this.name = \"ChatError\";\n this.code = code;\n }\n}\n\nclass PromiseCompletionSource {\n private readonly promise: Promise<void>;\n private resolvePromise!: () => void;\n\n public constructor() {\n this.promise = new Promise<void>((resolve) => {\n this.resolvePromise = resolve;\n });\n }\n\n public setResult(): void {\n this.resolvePromise();\n }\n\n public wait(): Promise<void> {\n return this.promise;\n }\n}\n\n/**\n * Client for building chat applications on Azure Web PubSub.\n *\n * A `ChatClient` wraps a `WebPubSubClient` and exposes a room-based chat\n * API: create and inspect rooms, manage members, send messages, page\n * through history, and subscribe to real-time chat events. It owns the\n * underlying connection's lifecycle \u2014 call {@link ChatClient.start} to\n * connect and authenticate, and {@link ChatClient.stop} to disconnect.\n *\n * Construct from a `WebPubSubClientCredential`, then call `start()` to\n * connect and authenticate.\n *\n * @example\n * ```ts\n * const client = new ChatClient(credential);\n * await client.start();\n * client.on(\"message\", (e) => console.log(e.message.content.text));\n * const room = await client.createRoom(\"My Room\", [\"bob\"]);\n * await client.sendToRoom(room.roomId, \"Hello!\");\n * ```\n */\nclass ChatClient {\n /** The underlying transport. Private \u2014 `ChatClient` builds and owns it. */\n private readonly _connection: WebPubSubClient;\n\n private readonly _emitter = new EventEmitter();\n private readonly _rooms = new Map<string, WireRoomInfo>();\n private _conversationIds = new Set<string>();\n private _userId: string | undefined;\n private _isStarted = false;\n private _startPromise: Promise<void> | undefined;\n // Created after the underlying connection starts so stop() can wait for the single \"stopped\" event.\n private _connectionStoppedTCS: PromiseCompletionSource | undefined;\n private _isConnectionStopping = false;\n\n /**\n * Create a `ChatClient` from a {@link WebPubSubClientCredential}.\n *\n * `ChatClient` builds and owns the underlying transport: `start()`\n * connects and authenticates, `stop()` disconnects. The instance is\n * created but not started \u2014 call `start()` to connect.\n *\n * @param credential - A `WebPubSubClientCredential` that yields a\n * client-access URL.\n */\n constructor(credential: WebPubSubClientCredential);\n // Implementation also accepts a pre-built connection (test seam); this is\n // not a public overload, so it does not appear in the public API surface.\n constructor(credentialOrConnection: WebPubSubClientCredential | WebPubSubClient) {\n this._connection = isWebPubSubClient(credentialOrConnection)\n ? credentialOrConnection\n : new WebPubSubClient(credentialOrConnection);\n this._connection.on(\"group-message\", (e) => {\n this._handleNotification(e.message.data as Notification);\n });\n this._connection.on(\"server-message\", (e) => {\n this._handleNotification(e.message.data as Notification);\n });\n this._connection.on(\"stopped\", () => {\n this._connectionStoppedTCS?.setResult();\n this._connectionStoppedTCS = undefined;\n this._isConnectionStopping = false;\n this.resetState();\n });\n }\n\n private async _handleNotification(data: Notification): Promise<void> {\n if (!this._isStarted && !this._startPromise) {\n return;\n }\n logger.info(\"Received notification:\", data);\n try {\n const type = data.notificationType;\n switch (type) {\n case \"MessageCreated\": {\n const body = data.body as NewMessageNotificationBody;\n if (!body.conversation.roomId) {\n logger.warning(\n `MessageCreated notification missing roomId; skipping emit. conversationId=${body.conversation.conversationId}`,\n );\n break;\n }\n const event: OnMessageArgs = {\n roomId: body.conversation.roomId,\n message: body.message as ChatMessage,\n };\n this._emitter.emit(\"message\", event);\n break;\n }\n case \"RoomJoined\": {\n const roomInfo = data.body as NewRoomNotificationBody as WireRoomInfo;\n // Add to _rooms first so listeners can use listRoomMessages\n this._rooms.set(roomInfo.roomId, roomInfo);\n const event: OnRoomJoinedArgs = { room: roomInfo };\n this._emitter.emit(\"room-joined\", event);\n break;\n }\n case \"RoomMemberJoined\": {\n const body = data.body as MemberJoinedNotificationBody;\n const event: OnMemberJoinedArgs = { roomId: body.roomId, title: body.title, userId: body.userId };\n this._emitter.emit(\"member-joined\", event);\n break;\n }\n // someone (not self) left a specific room\n case \"RoomMemberLeft\": {\n const body = data.body as MemberLeftNotificationBody;\n const event: OnMemberLeftArgs = { roomId: body.roomId, title: body.title, userId: body.userId };\n this._emitter.emit(\"member-left\", event);\n break;\n }\n // self left a specific room\n case \"RoomLeft\": {\n const body = data.body as RoomLeftNotificationBody;\n if (!this._rooms.has(body.roomId)) {\n break;\n }\n const event: OnRoomLeftArgs = { roomId: body.roomId, title: body.title };\n this._emitter.emit(\"room-left\", event);\n this._rooms.delete(body.roomId);\n break;\n }\n case \"MessageUpdated\":\n case \"MessageDeleted\":\n case \"RoomClosed\":\n case \"AddContact\":\n logger.warning(`Known notification type ${type} received but not implemented yet.`);\n break;\n default:\n logger.warning(`Unknown notification type received: ${type}`);\n }\n }\n catch (err) {\n logger.error(`Error processing notification, error = ${err}, data: `, data);\n }\n }\n\n /** Invoke server event and return typed data */\n private async invokeWithReturnType<T>(\n eventName: string,\n payload: any,\n dataType: WebPubSubDataType,\n options?: OperationOptions,\n ): Promise<T> {\n logger.verbose(`invoke event: '${eventName}', dataType: ${dataType}, payload:`, payload);\n try {\n const rawResponse = await this._connection.invokeEvent(eventName, payload, dataType, {\n abortSignal: options?.abortSignal,\n });\n logger.verbose(`invoke response for '${eventName}':`, rawResponse);\n const data = rawResponse.data as any;\n if (data && typeof data === \"object\" && typeof data.code === \"string\") {\n throw new ChatError(`Invocation of event \"${eventName}\" failed: ${data.code}`, data.code);\n }\n return data as T;\n } catch (e) {\n if (e instanceof ChatError) throw e;\n if (e instanceof InvocationError && e.errorDetail?.name) {\n throw new ChatError(e.message, e.errorDetail.name);\n }\n throw e;\n }\n }\n\n /**\n * Create a `ChatClient` and `start()` it in one step.\n *\n * @param clientAccessUrl - A client-access URL.\n * @param options - Optional cancellation token for the start operation.\n *\n * @example\n * ```ts\n * const chat = await ChatClient.start(clientAccessUrl);\n * ```\n */\n public static async start(clientAccessUrl: string, options?: StartOptions): Promise<ChatClient>;\n /**\n * Create a `ChatClient` and `start()` it in one step.\n *\n * @param credential - A `WebPubSubClientCredential` that yields a\n * client-access URL.\n * @param options - Optional cancellation token for the start operation.\n */\n public static async start(credential: WebPubSubClientCredential, options?: StartOptions): Promise<ChatClient>;\n public static async start(\n clientAccessUrlOrCredential: string | WebPubSubClientCredential,\n options?: StartOptions,\n ): Promise<ChatClient> {\n const credential: WebPubSubClientCredential =\n typeof clientAccessUrlOrCredential === \"string\"\n ? { getClientAccessUrl: async () => clientAccessUrlOrCredential }\n : clientAccessUrlOrCredential;\n const chatClient = new ChatClient(credential);\n await chatClient.start({ abortSignal: options?.abortSignal });\n return chatClient;\n }\n\n /**\n * Connect the underlying transport and authenticate with the chat\n * service.\n *\n * Idempotent: concurrent calls share a single in-flight promise, and\n * calls made on an already-started client resolve immediately. After\n * `stop()` the client can be started again; state from the previous\n * session is reset.\n *\n * @param options - Cancellation token for the start operation. Aborting\n * leaves the client in its initial (not-started) state.\n */\n public async start(options?: StartOptions): Promise<void> {\n if (this._startPromise) return this._startPromise;\n if (this._isStarted) return;\n\n if (this._connectionStoppedTCS && this._isConnectionStopping) {\n await this._connectionStoppedTCS.wait();\n // Another caller waiting on the same stop may have already started the restart.\n if (this._startPromise) return this._startPromise;\n if (this._isStarted) return;\n }\n\n const startPromise = this.startCore(options);\n this._startPromise = startPromise;\n try {\n await startPromise;\n } finally {\n if (this._startPromise === startPromise) {\n this._startPromise = undefined;\n }\n }\n }\n\n private async startCore(options?: StartOptions): Promise<void> {\n this.resetState();\n try {\n await this._connection.start({ abortSignal: options?.abortSignal });\n this._connectionStoppedTCS = new PromiseCompletionSource();\n this._isConnectionStopping = false;\n\n const loginResponse = await this.invokeWithReturnType<WireUserProfile>(\n INVOCATION_NAME.LOGIN,\n \"\",\n \"text\",\n options,\n );\n logger.info(\"loginResponse\", loginResponse);\n const conversationIds = new Set(loginResponse.conversationIds || []);\n const roomInfos = await Promise.all(\n (loginResponse.roomIds || []).map(async (roomId) => {\n const roomInfo = await this.fetchRoomDetail(roomId, {\n abortSignal: options?.abortSignal,\n withMembers: false,\n });\n return { roomId, roomInfo };\n }),\n );\n\n this._userId = loginResponse.userId;\n this._conversationIds = conversationIds;\n roomInfos.forEach(({ roomId, roomInfo }) => {\n this._rooms.set(roomId, roomInfo);\n });\n this._isStarted = true;\n const startedEvent: OnStartedArgs = { userId: loginResponse.userId };\n this._emitter.emit(\"started\", startedEvent);\n } catch (err) {\n this.resetState();\n await this.stopConnection();\n throw err;\n }\n }\n\n private ensureStarted(): void {\n if (!this._isStarted) {\n throw new ChatError(\"Not started. Please call start() first.\", ERRORS.NotStarted);\n }\n }\n\n /**\n * Fetch a user's profile.\n *\n * @param userId - Id of the user to look up.\n * @param options - Optional `{ abortSignal }`.\n */\n public async getUserProfile(userId: string, options?: GetUserProfileOptions): Promise<UserProfile> {\n this.ensureStarted();\n return this.invokeWithReturnType<WireUserProfile>(\n INVOCATION_NAME.GET_USER_PROPERTIES,\n { userId: userId },\n \"json\",\n options,\n );\n }\n\n private async sendToConversation(\n conversationId: string,\n message: string,\n options?: OperationOptions,\n ): Promise<SendMessageResult> {\n this.ensureStarted();\n const payload = {\n conversation: { conversationId: conversationId },\n content: message,\n };\n const resp = await this.invokeWithReturnType<SendMessageResponse>(\n INVOCATION_NAME.SEND_TEXT_MESSAGE,\n payload,\n \"json\",\n options,\n );\n if (!resp || !resp.id) {\n throw new ChatError(\n `Failed to send message to conversation ${conversationId}, got invalid invoke response: ${JSON.stringify(resp)}`,\n ERRORS.InvalidServerResponse,\n );\n }\n const msgId = resp.id;\n const roomId = Array.from(this._rooms.values()).find((r) => r.defaultConversationId === conversationId)?.roomId;\n if (!roomId) {\n logger.warning(\n `Failed to find roomId for conversationId ${conversationId} when sending message; skipping local sender-echo emit.`,\n );\n return { messageId: msgId };\n }\n // sender won't receive conversation message via notification mechanism, so emit event here\n const event: OnMessageArgs = {\n roomId,\n message: {\n messageId: msgId,\n createdBy: this.userId,\n messageBodyType: \"Inline\",\n content: {\n text: message,\n binary: null,\n },\n } as ChatMessage,\n };\n this._emitter.emit(\"message\", event);\n return { messageId: msgId };\n }\n\n /**\n * Send a text message to a room and return the service-assigned message id.\n *\n * The room must be one this client has created or joined. The sender also\n * observes the message through the `\"message\"` event.\n *\n * @param roomId - Target room.\n * @param message - Message text to send.\n * @param options - Optional `{ abortSignal }`.\n * @returns A {@link SendMessageResult} with the service-assigned `messageId`.\n */\n public async sendToRoom(roomId: string, message: string, options?: SendToRoomOptions): Promise<SendMessageResult> {\n this.ensureStarted();\n const conversationId = this._rooms.get(roomId)?.defaultConversationId;\n if (!conversationId) {\n throw new ChatError(`Failed to sendToRoom, not found roomId ${roomId}`, ERRORS.UnknownRoom);\n }\n return await this.sendToConversation(conversationId, message, options);\n }\n\n // Internal: fetch a room's full wire shape (including its conversation id)\n // to populate the local cache. Public callers go through getRoomDetail().\n private async fetchRoomDetail(roomId: string, options?: GetRoomDetailOptions): Promise<WireRoomInfoWithMembers> {\n return this.invokeWithReturnType<WireRoomInfoWithMembers>(\n INVOCATION_NAME.GET_ROOM,\n { id: roomId, withMembers: options?.withMembers ?? false },\n \"json\",\n options,\n );\n }\n\n /**\n * Fetch the detailed view of a room.\n *\n * @param roomId - Room to query.\n * @param options - Optional `{ withMembers, abortSignal }`. Pass\n * `withMembers: true` to populate the returned `members` list; it is\n * left undefined otherwise.\n */\n public async getRoomDetail(roomId: string, options?: GetRoomDetailOptions): Promise<RoomDetail> {\n this.ensureStarted();\n return this.fetchRoomDetail(roomId, options);\n }\n\n /**\n * Create a room and its initial members. The current user is always\n * included in the resulting member list.\n *\n * @param title - Display title for the room.\n * @param members - Other user ids to invite. The caller is added\n * automatically; duplicates are de-duplicated.\n * @param options - Optional `{ roomId, abortSignal }`. Pass `roomId`\n * to choose an id explicitly; omit to let the service assign one.\n */\n public async createRoom(\n title: string,\n members: string[],\n options?: CreateRoomOptions,\n ): Promise<RoomDetail> {\n this.ensureStarted();\n let roomDetails = {\n title: title,\n members: [...new Set([...members, this.userId])], // deduplicate and add self\n } as any;\n if (options?.roomId) {\n roomDetails = { ...roomDetails, roomId: options.roomId };\n }\n const roomInfo = await this.invokeWithReturnType<WireRoomInfoWithMembers>(\n INVOCATION_NAME.CREATE_ROOM,\n roomDetails,\n \"json\",\n options,\n );\n this._rooms.set(roomInfo.roomId, roomInfo);\n const event: OnRoomJoinedArgs = { room: roomInfo };\n this._emitter.emit(\"room-joined\", event);\n return roomInfo;\n }\n\n private async manageRoomMember(\n request: ManageRoomMemberRequest,\n options?: OperationOptions,\n ): Promise<void> {\n await this.invokeWithReturnType<any>(INVOCATION_NAME.MANAGE_ROOM_MEMBER, request, \"json\", options);\n }\n\n private async ensureRoomCached(roomId: string, options?: OperationOptions): Promise<void> {\n if (this._rooms.has(roomId)) {\n return;\n }\n const roomInfo = await this.fetchRoomDetail(roomId, options);\n this._rooms.set(roomId, roomInfo);\n }\n\n /** Add a user to a room. This is an admin operation where one user adds another user to a room. */\n public async addUserToRoom(roomId: string, userId: string, options?: AddUserToRoomOptions): Promise<void> {\n this.ensureStarted();\n const payload: ManageRoomMemberRequest = { roomId: roomId, operation: \"Add\", userId: userId };\n const isSelf = userId === this.userId;\n // If self-add succeeds but no RoomJoined notification arrives, fetch room info\n // from the service so sendToRoom can use its conversation id.\n const shouldCacheRoomAfterSelfAdd = isSelf && !this._rooms.has(roomId);\n try {\n await this.manageRoomMember(payload, options);\n } catch (error) {\n if (!isSelf || !(error instanceof ChatError && error.code === ERRORS.UserAlreadyInRoom)) {\n throw error;\n }\n }\n if (shouldCacheRoomAfterSelfAdd) {\n await this.ensureRoomCached(roomId, options);\n }\n }\n\n /** Remove a user from a room. This is an admin operation where one user removes another user from a room. */\n public async removeUserFromRoom(roomId: string, userId: string, options?: RemoveUserFromRoomOptions): Promise<void> {\n this.ensureStarted();\n const payload: ManageRoomMemberRequest = { roomId: roomId, operation: \"Delete\", userId: userId };\n await this.manageRoomMember(payload, options);\n // RoomLeft notification is not guaranteed for server-managed membership;\n // eagerly clean up local cache and emit RoomLeft so callers see consistent state immediately.\n if (userId === this.userId) {\n const roomInfo = this._rooms.get(roomId);\n if (roomInfo) {\n this._rooms.delete(roomId);\n const event: OnRoomLeftArgs = { roomId, title: roomInfo.title };\n this._emitter.emit(\"room-left\", event);\n }\n }\n }\n\n /**\n * List messages in a room as a paged async iterator.\n *\n * The iterator transparently fetches additional pages from the\n * service as you iterate. For Teams-style infinite scrolling, drive\n * the iterator one page at a time via `byPage(...)`:\n *\n * @example Stream every message (e.g. for export or full sync):\n * ```ts\n * for await (const msg of client.listRoomMessages(roomId)) {\n * console.log(msg.content.text);\n * }\n * ```\n *\n * @example Load history one page at a time (Teams-style scroll-back):\n * ```ts\n * // Load up to 50 messages per page.\n * const pages = client.listRoomMessages(roomId).byPage({ maxPageSize: 50 });\n * const first = await pages.next();\n * displayMessages(first.value);\n * // later, when the user scrolls up:\n * const more = await pages.next();\n * displayMessages(more.value);\n * ```\n *\n * The room must be one this client has created or joined.\n */\n public listRoomMessages(roomId: string, options?: ListRoomMessagesOptions): PagedAsyncIterableIterator<MessageInfo> {\n this.ensureStarted();\n const conversationId = this._rooms.get(roomId)?.defaultConversationId;\n if (!conversationId) {\n throw new ChatError(`Failed to listRoomMessages, not found roomId ${roomId}`, ERRORS.UnknownRoom);\n }\n\n const defaultPageSize = options?.maxPageSize ?? 100;\n const firstPageLink: MessageRangeQuery = {\n conversation: { conversationId },\n start: options?.startId ?? null,\n end: options?.endId ?? null,\n maxCount: defaultPageSize,\n };\n\n const fetchPage = async (\n link: MessageRangeQuery,\n maxPageSize?: number,\n ): Promise<{ page: MessageInfo[]; nextPageLink?: MessageRangeQuery } | undefined> => {\n const query: MessageRangeQuery = {\n ...link,\n maxCount: maxPageSize ?? link.maxCount ?? defaultPageSize,\n };\n const result = await this.invokeWithReturnType<{ messages: MessageInfo[]; nextQuery: MessageRangeQuery | null }>(\n INVOCATION_NAME.LIST_MESSAGES,\n query,\n \"json\",\n { abortSignal: options?.abortSignal },\n );\n if (result.messages.length === 0) {\n return undefined;\n }\n return { page: result.messages, nextPageLink: result.nextQuery ?? undefined };\n };\n\n return getPagedAsyncIterator<MessageInfo, MessageInfo[], PageSettings, MessageRangeQuery>({\n firstPageLink,\n getPage: (link, maxPageSize) => fetchPage(link, maxPageSize),\n });\n }\n\n /** Cached rooms known to the client. */\n public get rooms(): RoomInfo[] {\n return Array.from(this._rooms.values());\n }\n\n /** Whether the current client has the room in its local joined-room cache. */\n public hasJoinedRoom(roomId: string): boolean {\n return this._rooms.has(roomId);\n }\n\n /**\n * The chat-domain identity of this client, established by `start()`.\n *\n * @throws `ChatError` with code `NotStarted` if the client is not started.\n */\n public get userId(): string {\n if (!this._userId) {\n throw new ChatError(\"User ID is not set. Please call start() first.\", ERRORS.NotStarted);\n }\n return this._userId;\n }\n\n /**\n * Subscribe to a chat-client event.\n *\n * Mirrors the underlying `WebPubSubClient.on(event, listener)` shape:\n * one explicit overload per event, returns `void`, paired with\n * `off(event, listener)` for removal. Pass the same callback\n * reference to `off()` to unsubscribe.\n *\n * Chat-lifecycle events `started` and `stopped` are exposed here.\n * Lower-level transport-connection events (`connected`,\n * `disconnected`) are managed internally and are not exposed on the\n * public surface.\n *\n * @example\n * ```ts\n * const onMsg = (e: OnMessageArgs) => console.log(e.message.content.text);\n * client.on(\"message\", onMsg);\n * // later\n * client.off(\"message\", onMsg);\n * ```\n */\n public on(event: \"started\", listener: (e: OnStartedArgs) => void): void;\n /** Subscribe to the `stopped` event, fired when the client transitions from started to not-started. */\n public on(event: \"stopped\", listener: (e: OnStoppedArgs) => void): void;\n /** Subscribe to the `message` event, fired when a message arrives in a joined room. */\n public on(event: \"message\", listener: (e: OnMessageArgs) => void): void;\n /** Subscribe to the `room-joined` event, fired when this client joins a room. */\n public on(event: \"room-joined\", listener: (e: OnRoomJoinedArgs) => void): void;\n /** Subscribe to the `room-left` event, fired when this client leaves a room. */\n public on(event: \"room-left\", listener: (e: OnRoomLeftArgs) => void): void;\n /** Subscribe to the `member-joined` event, fired when another user joins a room this client is in. */\n public on(event: \"member-joined\", listener: (e: OnMemberJoinedArgs) => void): void;\n /** Subscribe to the `member-left` event, fired when another user leaves a room this client is in. */\n public on(event: \"member-left\", listener: (e: OnMemberLeftArgs) => void): void;\n public on(event: string, listener: (e: any) => void): void {\n this._emitter.on(event, listener);\n }\n\n /** Remove a `started` listener previously registered with `on()`. */\n public off(event: \"started\", listener: (e: OnStartedArgs) => void): void;\n /** Remove a `stopped` listener previously registered with `on()`. */\n public off(event: \"stopped\", listener: (e: OnStoppedArgs) => void): void;\n /** Remove a `message` listener previously registered with `on()`. */\n public off(event: \"message\", listener: (e: OnMessageArgs) => void): void;\n /** Remove a `room-joined` listener previously registered with `on()`. */\n public off(event: \"room-joined\", listener: (e: OnRoomJoinedArgs) => void): void;\n /** Remove a `room-left` listener previously registered with `on()`. */\n public off(event: \"room-left\", listener: (e: OnRoomLeftArgs) => void): void;\n /** Remove a `member-joined` listener previously registered with `on()`. */\n public off(event: \"member-joined\", listener: (e: OnMemberJoinedArgs) => void): void;\n /** Remove a `member-left` listener previously registered with `on()`. */\n public off(event: \"member-left\", listener: (e: OnMemberLeftArgs) => void): void;\n public off(event: string, listener: (e: any) => void): void {\n this._emitter.off(event, listener);\n }\n\n /**\n * Stop the underlying connection and reset client state. Idempotent.\n *\n * After resolution the client returns to its initial state and may\n * be started again via `start()`. Callers that want the same identity\n * should keep their authentication source (URL or credential)\n * constant.\n *\n * Stopping is not cancellable: it tears down the transport and clears\n * local state, mirroring the underlying `WebPubSubClient.stop()`, which\n * takes no options.\n */\n public async stop(): Promise<void> {\n const startPromise = this._startPromise;\n if (startPromise) {\n await startPromise.catch(() => undefined);\n }\n this._startPromise = undefined;\n\n this.resetState();\n await this.stopConnection();\n }\n\n /**\n * Reset chat-domain state. Emits `\"stopped\"` exactly once per\n * started \u2192 not-started transition: if `_isStarted` was already\n * false on entry (e.g. the pre-start guard inside `startCore()` or\n * the post-failure rollback), no event fires.\n */\n private resetState(): void {\n const wasStarted = this._isStarted;\n this._isStarted = false;\n this._userId = undefined;\n this._rooms.clear();\n this._conversationIds.clear();\n if (wasStarted) {\n const stoppedEvent: OnStoppedArgs = {};\n this._emitter.emit(\"stopped\", stoppedEvent);\n }\n }\n\n private async stopConnection(): Promise<void> {\n const connectionStoppedTCS = this._connectionStoppedTCS;\n if (!connectionStoppedTCS) {\n return;\n }\n\n if (!this._isConnectionStopping) {\n this._isConnectionStopping = true;\n try {\n this._connection.stop();\n } catch (err) {\n this._isConnectionStopping = false;\n throw err;\n }\n }\n await connectionStoppedTCS.wait();\n }\n}\n\nexport { ChatClient, ChatError };\n", "import { ChatClient, ChatError } from './chatClient.js';\nimport { ERRORS } from './constant.js';\n\nexport type {\n MessageInfo,\n RoomInfo,\n RoomDetail,\n UserProfile,\n SendMessageResult,\n} from './models.js';\n\nexport type {\n ChatMessage,\n OnMessageArgs,\n OnRoomJoinedArgs,\n OnRoomLeftArgs,\n OnMemberJoinedArgs,\n OnMemberLeftArgs,\n OnStartedArgs,\n OnStoppedArgs,\n} from './events.js';\n\nexport type {\n OperationOptions,\n StartOptions,\n GetRoomDetailOptions,\n CreateRoomOptions,\n SendToRoomOptions,\n GetUserProfileOptions,\n AddUserToRoomOptions,\n RemoveUserFromRoomOptions,\n ListRoomMessagesOptions,\n} from './options.js';\n\n/**\n * Known values of `ChatError.code`. Following the Azure SDK\n * `Known<Name>` convention, this is a runtime constants object whose\n * values are the wire codes returned by the chat service. Compare\n * `error.code` against members of this object rather than against\n * string literals.\n *\n * @example\n * ```ts\n * try {\n * await client.sendToRoom(roomId, \"hi\");\n * } catch (err) {\n * if (err instanceof ChatError && err.code === KnownChatErrorCode.UnknownRoom) {\n * // ...\n * }\n * }\n * ```\n *\n * The service may add codes in newer versions, so always handle the\n * unknown-code case as well.\n */\nexport const KnownChatErrorCode = ERRORS;\n\nexport { ChatClient, ChatError };\n\n"],
|
|
5
|
+
"mappings": ";;;;;AAAA,IAAI,YAAY,CAAC;AAAjB,IACE,aAAa;AACf,SAAS,QAAQ;AACf,MAAI,WAAY,QAAO;AACvB,eAAa;AACb,YAAU,aAAa;AACvB,YAAU,cAAc;AACxB,YAAU,gBAAgB;AAC1B,MAAI,SAAS,CAAC;AACd,MAAI,YAAY,CAAC;AACjB,MAAI,MAAM,OAAO,eAAe,cAAc,aAAa;AAC3D,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,MAAM,KAAK,QAAQ,IAAI,KAAK,EAAE,GAAG;AAC/C,WAAO,CAAC,IAAI,KAAK,CAAC;AAClB,cAAU,KAAK,WAAW,CAAC,CAAC,IAAI;AAAA,EAClC;AAIA,YAAU,IAAI,WAAW,CAAC,CAAC,IAAI;AAC/B,YAAU,IAAI,WAAW,CAAC,CAAC,IAAI;AAC/B,WAAS,QAAQ,KAAK;AACpB,QAAIA,OAAM,IAAI;AACd,QAAIA,OAAM,IAAI,GAAG;AACf,YAAM,IAAI,MAAM,gDAAgD;AAAA,IAClE;AAIA,QAAI,WAAW,IAAI,QAAQ,GAAG;AAC9B,QAAI,aAAa,GAAI,YAAWA;AAChC,QAAI,kBAAkB,aAAaA,OAAM,IAAI,IAAI,WAAW;AAC5D,WAAO,CAAC,UAAU,eAAe;AAAA,EACnC;AAGA,WAAS,WAAW,KAAK;AACvB,QAAI,OAAO,QAAQ,GAAG;AACtB,QAAI,WAAW,KAAK,CAAC;AACrB,QAAI,kBAAkB,KAAK,CAAC;AAC5B,YAAQ,WAAW,mBAAmB,IAAI,IAAI;AAAA,EAChD;AACA,WAAS,YAAY,KAAK,UAAU,iBAAiB;AACnD,YAAQ,WAAW,mBAAmB,IAAI,IAAI;AAAA,EAChD;AACA,WAAS,YAAY,KAAK;AACxB,QAAI;AACJ,QAAI,OAAO,QAAQ,GAAG;AACtB,QAAI,WAAW,KAAK,CAAC;AACrB,QAAI,kBAAkB,KAAK,CAAC;AAC5B,QAAI,MAAM,IAAI,IAAI,YAAY,KAAK,UAAU,eAAe,CAAC;AAC7D,QAAI,UAAU;AAGd,QAAIA,OAAM,kBAAkB,IAAI,WAAW,IAAI;AAC/C,QAAIC;AACJ,SAAKA,KAAI,GAAGA,KAAID,MAAKC,MAAK,GAAG;AAC3B,YAAM,UAAU,IAAI,WAAWA,EAAC,CAAC,KAAK,KAAK,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK,IAAI,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC;AAC3J,UAAI,SAAS,IAAI,OAAO,KAAK;AAC7B,UAAI,SAAS,IAAI,OAAO,IAAI;AAC5B,UAAI,SAAS,IAAI,MAAM;AAAA,IACzB;AACA,QAAI,oBAAoB,GAAG;AACzB,YAAM,UAAU,IAAI,WAAWA,EAAC,CAAC,KAAK,IAAI,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK;AAC9E,UAAI,SAAS,IAAI,MAAM;AAAA,IACzB;AACA,QAAI,oBAAoB,GAAG;AACzB,YAAM,UAAU,IAAI,WAAWA,EAAC,CAAC,KAAK,KAAK,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK,IAAI,UAAU,IAAI,WAAWA,KAAI,CAAC,CAAC,KAAK;AACvH,UAAI,SAAS,IAAI,OAAO,IAAI;AAC5B,UAAI,SAAS,IAAI,MAAM;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AACA,WAAS,gBAAgB,KAAK;AAC5B,WAAO,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,OAAO,KAAK,EAAE,IAAI,OAAO,OAAO,IAAI,EAAE,IAAI,OAAO,MAAM,EAAE;AAAA,EAClG;AACA,WAAS,YAAY,OAAO,OAAO,KAAK;AACtC,QAAI;AACJ,QAAI,SAAS,CAAC;AACd,aAASA,KAAI,OAAOA,KAAI,KAAKA,MAAK,GAAG;AACnC,aAAO,MAAMA,EAAC,KAAK,KAAK,aAAa,MAAMA,KAAI,CAAC,KAAK,IAAI,UAAU,MAAMA,KAAI,CAAC,IAAI;AAClF,aAAO,KAAK,gBAAgB,GAAG,CAAC;AAAA,IAClC;AACA,WAAO,OAAO,KAAK,EAAE;AAAA,EACvB;AACA,WAAS,cAAc,OAAO;AAC5B,QAAI;AACJ,QAAID,OAAM,MAAM;AAChB,QAAI,aAAaA,OAAM;AACvB,QAAI,QAAQ,CAAC;AACb,QAAI,iBAAiB;AAGrB,aAASC,KAAI,GAAGC,QAAOF,OAAM,YAAYC,KAAIC,OAAMD,MAAK,gBAAgB;AACtE,YAAM,KAAK,YAAY,OAAOA,IAAGA,KAAI,iBAAiBC,QAAOA,QAAOD,KAAI,cAAc,CAAC;AAAA,IACzF;AAGA,QAAI,eAAe,GAAG;AACpB,YAAM,MAAMD,OAAM,CAAC;AACnB,YAAM,KAAK,OAAO,OAAO,CAAC,IAAI,OAAO,OAAO,IAAI,EAAE,IAAI,IAAI;AAAA,IAC5D,WAAW,eAAe,GAAG;AAC3B,aAAO,MAAMA,OAAM,CAAC,KAAK,KAAK,MAAMA,OAAM,CAAC;AAC3C,YAAM,KAAK,OAAO,OAAO,EAAE,IAAI,OAAO,OAAO,IAAI,EAAE,IAAI,OAAO,OAAO,IAAI,EAAE,IAAI,GAAG;AAAA,IACpF;AACA,WAAO,MAAM,KAAK,EAAE;AAAA,EACtB;AACA,SAAO;AACT;AAEA,IAAI,YAAY,CAAC;AAAjB,IACE,aAAa;AACf,SAAS,QAAQ;AACf,MAAI,WAAY,QAAO;AACvB,eAAa;AAEb,YAAU,OAAO,SAAU,QAAQ,QAAQ,MAAM,MAAM,QAAQ;AAC7D,QAAI,GAAG;AACP,QAAI,OAAO,SAAS,IAAI,OAAO;AAC/B,QAAI,QAAQ,KAAK,QAAQ;AACzB,QAAI,QAAQ,QAAQ;AACpB,QAAI,QAAQ;AACZ,QAAI,IAAI,OAAO,SAAS,IAAI;AAC5B,QAAI,IAAI,OAAO,KAAK;AACpB,QAAI,IAAI,OAAO,SAAS,CAAC;AACzB,SAAK;AACL,QAAI,KAAK,KAAK,CAAC,SAAS;AACxB,UAAM,CAAC;AACP,aAAS;AACT,WAAO,QAAQ,GAAG,IAAI,IAAI,MAAM,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG;AAAA,IAAC;AACzE,QAAI,KAAK,KAAK,CAAC,SAAS;AACxB,UAAM,CAAC;AACP,aAAS;AACT,WAAO,QAAQ,GAAG,IAAI,IAAI,MAAM,OAAO,SAAS,CAAC,GAAG,KAAK,GAAG,SAAS,GAAG;AAAA,IAAC;AACzE,QAAI,MAAM,GAAG;AACX,UAAI,IAAI;AAAA,IACV,WAAW,MAAM,MAAM;AACrB,aAAO,IAAI,OAAO,IAAI,KAAK,KAAK;AAAA,IAClC,OAAO;AACL,UAAI,IAAI,KAAK,IAAI,GAAG,IAAI;AACxB,UAAI,IAAI;AAAA,IACV;AACA,YAAQ,IAAI,KAAK,KAAK,IAAI,KAAK,IAAI,GAAG,IAAI,IAAI;AAAA,EAChD;AACA,YAAU,QAAQ,SAAU,QAAQ,OAAO,QAAQ,MAAM,MAAM,QAAQ;AACrE,QAAI,GAAG,GAAG;AACV,QAAI,OAAO,SAAS,IAAI,OAAO;AAC/B,QAAI,QAAQ,KAAK,QAAQ;AACzB,QAAI,QAAQ,QAAQ;AACpB,QAAI,KAAK,SAAS,KAAK,KAAK,IAAI,GAAG,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI;AAC7D,QAAI,IAAI,OAAO,IAAI,SAAS;AAC5B,QAAI,IAAI,OAAO,IAAI;AACnB,QAAI,IAAI,QAAQ,KAAK,UAAU,KAAK,IAAI,QAAQ,IAAI,IAAI;AACxD,YAAQ,KAAK,IAAI,KAAK;AACtB,QAAI,MAAM,KAAK,KAAK,UAAU,UAAU;AACtC,UAAI,MAAM,KAAK,IAAI,IAAI;AACvB,UAAI;AAAA,IACN,OAAO;AACL,UAAI,KAAK,MAAM,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG;AACzC,UAAI,SAAS,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG;AACrC;AACA,aAAK;AAAA,MACP;AACA,UAAI,IAAI,SAAS,GAAG;AAClB,iBAAS,KAAK;AAAA,MAChB,OAAO;AACL,iBAAS,KAAK,KAAK,IAAI,GAAG,IAAI,KAAK;AAAA,MACrC;AACA,UAAI,QAAQ,KAAK,GAAG;AAClB;AACA,aAAK;AAAA,MACP;AACA,UAAI,IAAI,SAAS,MAAM;AACrB,YAAI;AACJ,YAAI;AAAA,MACN,WAAW,IAAI,SAAS,GAAG;AACzB,aAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI;AACtC,YAAI,IAAI;AAAA,MACV,OAAO;AACL,YAAI,QAAQ,KAAK,IAAI,GAAG,QAAQ,CAAC,IAAI,KAAK,IAAI,GAAG,IAAI;AACrD,YAAI;AAAA,MACN;AAAA,IACF;AACA,WAAO,QAAQ,GAAG,OAAO,SAAS,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,IAAC;AAC9E,QAAI,KAAK,OAAO;AAChB,YAAQ;AACR,WAAO,OAAO,GAAG,OAAO,SAAS,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,KAAK,KAAK,QAAQ,GAAG;AAAA,IAAC;AAC7E,WAAO,SAAS,IAAI,CAAC,KAAK,IAAI;AAAA,EAChC;AACA,SAAO;AACT;AAEA,IAAI,UAAU,CAAC;AAAf,IACE,WAAW;AACb,SAAS,MAAM;AACb,MAAI,SAAU,QAAO;AACrB,aAAW;AACX,QAAM,SAAS,MAAM;AACrB,QAAM,UAAU,MAAM;AACtB,QAAM,sBAAsB,OAAO,WAAW,cAAc,OAAO,OAAO,KAAK,MAAM,aACnF,OAAO,KAAK,EAAE,4BAA4B,IAC1C;AACF,UAAQ,SAASG;AACjB,UAAQ,aAAa;AACrB,UAAQ,oBAAoB;AAC5B,QAAM,eAAe;AACrB,UAAQ,aAAa;AAgBrB,EAAAA,QAAO,sBAAsB,kBAAkB;AAC/C,MAAI,CAACA,QAAO,uBAAuB,OAAO,YAAY,eAAe,OAAO,QAAQ,UAAU,YAAY;AACxG,YAAQ,MAAM,+IAAoJ;AAAA,EACpK;AACA,WAAS,oBAAoB;AAE3B,QAAI;AACF,YAAM,MAAM,IAAI,WAAW,CAAC;AAC5B,YAAM,QAAQ;AAAA,QACZ,KAAK,WAAY;AACf,iBAAO;AAAA,QACT;AAAA,MACF;AACA,aAAO,eAAe,OAAO,WAAW,SAAS;AACjD,aAAO,eAAe,KAAK,KAAK;AAChC,aAAO,IAAI,IAAI,MAAM;AAAA,IACvB,SAAS,GAAG;AACV,aAAO;AAAA,IACT;AAAA,EACF;AACA,SAAO,eAAeA,QAAO,WAAW,UAAU;AAAA,IAChD,YAAY;AAAA,IACZ,KAAK,WAAY;AACf,UAAI,CAACA,QAAO,SAAS,IAAI,EAAG,QAAO;AACnC,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACD,SAAO,eAAeA,QAAO,WAAW,UAAU;AAAA,IAChD,YAAY;AAAA,IACZ,KAAK,WAAY;AACf,UAAI,CAACA,QAAO,SAAS,IAAI,EAAG,QAAO;AACnC,aAAO,KAAK;AAAA,IACd;AAAA,EACF,CAAC;AACD,WAAS,aAAa,QAAQ;AAC5B,QAAI,SAAS,cAAc;AACzB,YAAM,IAAI,WAAW,gBAAiB,SAAS,gCAAmC;AAAA,IACpF;AAEA,UAAM,MAAM,IAAI,WAAW,MAAM;AACjC,WAAO,eAAe,KAAKA,QAAO,SAAS;AAC3C,WAAO;AAAA,EACT;AAYA,WAASA,QAAO,KAAK,kBAAkB,QAAQ;AAE7C,QAAI,OAAO,QAAQ,UAAU;AAC3B,UAAI,OAAO,qBAAqB,UAAU;AACxC,cAAM,IAAI,UAAU,oEAAsE;AAAA,MAC5F;AACA,aAAO,YAAY,GAAG;AAAA,IACxB;AACA,WAAO,KAAK,KAAK,kBAAkB,MAAM;AAAA,EAC3C;AACA,EAAAA,QAAO,WAAW;AAElB,WAAS,KAAK,OAAO,kBAAkB,QAAQ;AAC7C,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,WAAW,OAAO,gBAAgB;AAAA,IAC3C;AACA,QAAI,YAAY,OAAO,KAAK,GAAG;AAC7B,aAAO,cAAc,KAAK;AAAA,IAC5B;AACA,QAAI,SAAS,MAAM;AACjB,YAAM,IAAI,UAAU,oHAAyH,OAAO,KAAK;AAAA,IAC3J;AACA,QAAI,WAAW,OAAO,WAAW,KAAK,SAAS,WAAW,MAAM,QAAQ,WAAW,GAAG;AACpF,aAAO,gBAAgB,OAAO,kBAAkB,MAAM;AAAA,IACxD;AACA,QAAI,OAAO,sBAAsB,gBAAgB,WAAW,OAAO,iBAAiB,KAAK,SAAS,WAAW,MAAM,QAAQ,iBAAiB,IAAI;AAC9I,aAAO,gBAAgB,OAAO,kBAAkB,MAAM;AAAA,IACxD;AACA,QAAI,OAAO,UAAU,UAAU;AAC7B,YAAM,IAAI,UAAU,uEAAyE;AAAA,IAC/F;AACA,UAAM,UAAU,MAAM,WAAW,MAAM,QAAQ;AAC/C,QAAI,WAAW,QAAQ,YAAY,OAAO;AACxC,aAAOA,QAAO,KAAK,SAAS,kBAAkB,MAAM;AAAA,IACtD;AACA,UAAM,IAAI,WAAW,KAAK;AAC1B,QAAI,EAAG,QAAO;AACd,QAAI,OAAO,WAAW,eAAe,OAAO,eAAe,QAAQ,OAAO,MAAM,OAAO,WAAW,MAAM,YAAY;AAClH,aAAOA,QAAO,KAAK,MAAM,OAAO,WAAW,EAAE,QAAQ,GAAG,kBAAkB,MAAM;AAAA,IAClF;AACA,UAAM,IAAI,UAAU,oHAAyH,OAAO,KAAK;AAAA,EAC3J;AAUA,EAAAA,QAAO,OAAO,SAAU,OAAO,kBAAkB,QAAQ;AACvD,WAAO,KAAK,OAAO,kBAAkB,MAAM;AAAA,EAC7C;AAIA,SAAO,eAAeA,QAAO,WAAW,WAAW,SAAS;AAC5D,SAAO,eAAeA,SAAQ,UAAU;AACxC,WAAS,WAAW,MAAM;AACxB,QAAI,OAAO,SAAS,UAAU;AAC5B,YAAM,IAAI,UAAU,wCAA0C;AAAA,IAChE,WAAW,OAAO,GAAG;AACnB,YAAM,IAAI,WAAW,gBAAiB,OAAO,gCAAmC;AAAA,IAClF;AAAA,EACF;AACA,WAAS,MAAM,MAAM,MAAM,UAAU;AACnC,eAAW,IAAI;AACf,QAAI,QAAQ,GAAG;AACb,aAAO,aAAa,IAAI;AAAA,IAC1B;AACA,QAAI,SAAS,QAAW;AAItB,aAAO,OAAO,aAAa,WAAW,aAAa,IAAI,EAAE,KAAK,MAAM,QAAQ,IAAI,aAAa,IAAI,EAAE,KAAK,IAAI;AAAA,IAC9G;AACA,WAAO,aAAa,IAAI;AAAA,EAC1B;AAMA,EAAAA,QAAO,QAAQ,SAAU,MAAM,MAAM,UAAU;AAC7C,WAAO,MAAM,MAAM,MAAM,QAAQ;AAAA,EACnC;AACA,WAAS,YAAY,MAAM;AACzB,eAAW,IAAI;AACf,WAAO,aAAa,OAAO,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC;AAAA,EACtD;AAKA,EAAAA,QAAO,cAAc,SAAU,MAAM;AACnC,WAAO,YAAY,IAAI;AAAA,EACzB;AAIA,EAAAA,QAAO,kBAAkB,SAAU,MAAM;AACvC,WAAO,YAAY,IAAI;AAAA,EACzB;AACA,WAAS,WAAW,QAAQ,UAAU;AACpC,QAAI,OAAO,aAAa,YAAY,aAAa,IAAI;AACnD,iBAAW;AAAA,IACb;AACA,QAAI,CAACA,QAAO,WAAW,QAAQ,GAAG;AAChC,YAAM,IAAI,UAAU,uBAAuB,QAAQ;AAAA,IACrD;AACA,UAAM,SAAS,WAAW,QAAQ,QAAQ,IAAI;AAC9C,QAAI,MAAM,aAAa,MAAM;AAC7B,UAAM,SAAS,IAAI,MAAM,QAAQ,QAAQ;AACzC,QAAI,WAAW,QAAQ;AAIrB,YAAM,IAAI,MAAM,GAAG,MAAM;AAAA,IAC3B;AACA,WAAO;AAAA,EACT;AACA,WAAS,cAAc,OAAO;AAC5B,UAAM,SAAS,MAAM,SAAS,IAAI,IAAI,QAAQ,MAAM,MAAM,IAAI;AAC9D,UAAM,MAAM,aAAa,MAAM;AAC/B,aAAS,IAAI,GAAG,IAAI,QAAQ,KAAK,GAAG;AAClC,UAAI,CAAC,IAAI,MAAM,CAAC,IAAI;AAAA,IACtB;AACA,WAAO;AAAA,EACT;AACA,WAAS,cAAc,WAAW;AAChC,QAAI,WAAW,WAAW,UAAU,GAAG;AACrC,YAAM,OAAO,IAAI,WAAW,SAAS;AACrC,aAAO,gBAAgB,KAAK,QAAQ,KAAK,YAAY,KAAK,UAAU;AAAA,IACtE;AACA,WAAO,cAAc,SAAS;AAAA,EAChC;AACA,WAAS,gBAAgB,OAAO,YAAY,QAAQ;AAClD,QAAI,aAAa,KAAK,MAAM,aAAa,YAAY;AACnD,YAAM,IAAI,WAAW,sCAAwC;AAAA,IAC/D;AACA,QAAI,MAAM,aAAa,cAAc,UAAU,IAAI;AACjD,YAAM,IAAI,WAAW,sCAAwC;AAAA,IAC/D;AACA,QAAI;AACJ,QAAI,eAAe,UAAa,WAAW,QAAW;AACpD,YAAM,IAAI,WAAW,KAAK;AAAA,IAC5B,WAAW,WAAW,QAAW;AAC/B,YAAM,IAAI,WAAW,OAAO,UAAU;AAAA,IACxC,OAAO;AACL,YAAM,IAAI,WAAW,OAAO,YAAY,MAAM;AAAA,IAChD;AAGA,WAAO,eAAe,KAAKA,QAAO,SAAS;AAC3C,WAAO;AAAA,EACT;AACA,WAAS,WAAW,KAAK;AACvB,QAAIA,QAAO,SAAS,GAAG,GAAG;AACxB,YAAM,MAAM,QAAQ,IAAI,MAAM,IAAI;AAClC,YAAM,MAAM,aAAa,GAAG;AAC5B,UAAI,IAAI,WAAW,GAAG;AACpB,eAAO;AAAA,MACT;AACA,UAAI,KAAK,KAAK,GAAG,GAAG,GAAG;AACvB,aAAO;AAAA,IACT;AACA,QAAI,IAAI,WAAW,QAAW;AAC5B,UAAI,OAAO,IAAI,WAAW,YAAY,YAAY,IAAI,MAAM,GAAG;AAC7D,eAAO,aAAa,CAAC;AAAA,MACvB;AACA,aAAO,cAAc,GAAG;AAAA,IAC1B;AACA,QAAI,IAAI,SAAS,YAAY,MAAM,QAAQ,IAAI,IAAI,GAAG;AACpD,aAAO,cAAc,IAAI,IAAI;AAAA,IAC/B;AAAA,EACF;AACA,WAAS,QAAQ,QAAQ;AAGvB,QAAI,UAAU,cAAc;AAC1B,YAAM,IAAI,WAAW,4DAAiE,aAAa,SAAS,EAAE,IAAI,QAAQ;AAAA,IAC5H;AACA,WAAO,SAAS;AAAA,EAClB;AACA,WAAS,WAAW,QAAQ;AAC1B,QAAI,CAAC,UAAU,QAAQ;AAErB,eAAS;AAAA,IACX;AACA,WAAOA,QAAO,MAAM,CAAC,MAAM;AAAA,EAC7B;AACA,EAAAA,QAAO,WAAW,SAAS,SAAS,GAAG;AACrC,WAAO,KAAK,QAAQ,EAAE,cAAc,QAAQ,MAAMA,QAAO;AAAA,EAC3D;AACA,EAAAA,QAAO,UAAU,SAAS,QAAQ,GAAG,GAAG;AACtC,QAAI,WAAW,GAAG,UAAU,EAAG,KAAIA,QAAO,KAAK,GAAG,EAAE,QAAQ,EAAE,UAAU;AACxE,QAAI,WAAW,GAAG,UAAU,EAAG,KAAIA,QAAO,KAAK,GAAG,EAAE,QAAQ,EAAE,UAAU;AACxE,QAAI,CAACA,QAAO,SAAS,CAAC,KAAK,CAACA,QAAO,SAAS,CAAC,GAAG;AAC9C,YAAM,IAAI,UAAU,uEAA2E;AAAA,IACjG;AACA,QAAI,MAAM,EAAG,QAAO;AACpB,QAAI,IAAI,EAAE;AACV,QAAI,IAAI,EAAE;AACV,aAAS,IAAI,GAAG,MAAM,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,KAAK,EAAE,GAAG;AAClD,UAAI,EAAE,CAAC,MAAM,EAAE,CAAC,GAAG;AACjB,YAAI,EAAE,CAAC;AACP,YAAI,EAAE,CAAC;AACP;AAAA,MACF;AAAA,IACF;AACA,QAAI,IAAI,EAAG,QAAO;AAClB,QAAI,IAAI,EAAG,QAAO;AAClB,WAAO;AAAA,EACT;AACA,EAAAA,QAAO,aAAa,SAAS,WAAW,UAAU;AAChD,YAAQ,OAAO,QAAQ,EAAE,YAAY,GAAG;AAAA,MACtC,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AACH,eAAO;AAAA,MACT;AACE,eAAO;AAAA,IACX;AAAA,EACF;AACA,EAAAA,QAAO,SAAS,SAAS,OAAO,MAAM,QAAQ;AAC5C,QAAI,CAAC,MAAM,QAAQ,IAAI,GAAG;AACxB,YAAM,IAAI,UAAU,6CAA+C;AAAA,IACrE;AACA,QAAI,KAAK,WAAW,GAAG;AACrB,aAAOA,QAAO,MAAM,CAAC;AAAA,IACvB;AACA,QAAI;AACJ,QAAI,WAAW,QAAW;AACxB,eAAS;AACT,WAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAChC,kBAAU,KAAK,CAAC,EAAE;AAAA,MACpB;AAAA,IACF;AACA,UAAM,SAASA,QAAO,YAAY,MAAM;AACxC,QAAI,MAAM;AACV,SAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAChC,UAAI,MAAM,KAAK,CAAC;AAChB,UAAI,WAAW,KAAK,UAAU,GAAG;AAC/B,YAAI,MAAM,IAAI,SAAS,OAAO,QAAQ;AACpC,cAAI,CAACA,QAAO,SAAS,GAAG,EAAG,OAAMA,QAAO,KAAK,GAAG;AAChD,cAAI,KAAK,QAAQ,GAAG;AAAA,QACtB,OAAO;AACL,qBAAW,UAAU,IAAI,KAAK,QAAQ,KAAK,GAAG;AAAA,QAChD;AAAA,MACF,WAAW,CAACA,QAAO,SAAS,GAAG,GAAG;AAChC,cAAM,IAAI,UAAU,6CAA+C;AAAA,MACrE,OAAO;AACL,YAAI,KAAK,QAAQ,GAAG;AAAA,MACtB;AACA,aAAO,IAAI;AAAA,IACb;AACA,WAAO;AAAA,EACT;AACA,WAAS,WAAW,QAAQ,UAAU;AACpC,QAAIA,QAAO,SAAS,MAAM,GAAG;AAC3B,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,YAAY,OAAO,MAAM,KAAK,WAAW,QAAQ,WAAW,GAAG;AACjE,aAAO,OAAO;AAAA,IAChB;AACA,QAAI,OAAO,WAAW,UAAU;AAC9B,YAAM,IAAI,UAAU,6FAAoG,OAAO,MAAM;AAAA,IACvI;AACA,UAAM,MAAM,OAAO;AACnB,UAAM,YAAY,UAAU,SAAS,KAAK,UAAU,CAAC,MAAM;AAC3D,QAAI,CAAC,aAAa,QAAQ,EAAG,QAAO;AAGpC,QAAI,cAAc;AAClB,eAAS;AACP,cAAQ,UAAU;AAAA,QAChB,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO;AAAA,QACT,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,YAAY,MAAM,EAAE;AAAA,QAC7B,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,MAAM;AAAA,QACf,KAAK;AACH,iBAAO,QAAQ;AAAA,QACjB,KAAK;AACH,iBAAO,cAAc,MAAM,EAAE;AAAA,QAC/B;AACE,cAAI,aAAa;AACf,mBAAO,YAAY,KAAK,YAAY,MAAM,EAAE;AAAA,UAC9C;AACA,sBAAY,KAAK,UAAU,YAAY;AACvC,wBAAc;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,EAAAA,QAAO,aAAa;AACpB,WAAS,aAAa,UAAU,OAAO,KAAK;AAC1C,QAAI,cAAc;AASlB,QAAI,UAAU,UAAa,QAAQ,GAAG;AACpC,cAAQ;AAAA,IACV;AAGA,QAAI,QAAQ,KAAK,QAAQ;AACvB,aAAO;AAAA,IACT;AACA,QAAI,QAAQ,UAAa,MAAM,KAAK,QAAQ;AAC1C,YAAM,KAAK;AAAA,IACb;AACA,QAAI,OAAO,GAAG;AACZ,aAAO;AAAA,IACT;AAGA,aAAS;AACT,eAAW;AACX,QAAI,OAAO,OAAO;AAChB,aAAO;AAAA,IACT;AACA,QAAI,CAAC,SAAU,YAAW;AAC1B,WAAO,MAAM;AACX,cAAQ,UAAU;AAAA,QAChB,KAAK;AACH,iBAAO,SAAS,MAAM,OAAO,GAAG;AAAA,QAClC,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,UAAU,MAAM,OAAO,GAAG;AAAA,QACnC,KAAK;AACH,iBAAO,WAAW,MAAM,OAAO,GAAG;AAAA,QACpC,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,YAAY,MAAM,OAAO,GAAG;AAAA,QACrC,KAAK;AACH,iBAAO,YAAY,MAAM,OAAO,GAAG;AAAA,QACrC,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,aAAa,MAAM,OAAO,GAAG;AAAA,QACtC;AACE,cAAI,YAAa,OAAM,IAAI,UAAU,uBAAuB,QAAQ;AACpE,sBAAY,WAAW,IAAI,YAAY;AACvC,wBAAc;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AAQA,EAAAA,QAAO,UAAU,YAAY;AAC7B,WAAS,KAAK,GAAG,GAAG,GAAG;AACrB,UAAM,IAAI,EAAE,CAAC;AACb,MAAE,CAAC,IAAI,EAAE,CAAC;AACV,MAAE,CAAC,IAAI;AAAA,EACT;AACA,EAAAA,QAAO,UAAU,SAAS,SAAS,SAAS;AAC1C,UAAM,MAAM,KAAK;AACjB,QAAI,MAAM,MAAM,GAAG;AACjB,YAAM,IAAI,WAAW,2CAA2C;AAAA,IAClE;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,WAAK,MAAM,GAAG,IAAI,CAAC;AAAA,IACrB;AACA,WAAO;AAAA,EACT;AACA,EAAAA,QAAO,UAAU,SAAS,SAAS,SAAS;AAC1C,UAAM,MAAM,KAAK;AACjB,QAAI,MAAM,MAAM,GAAG;AACjB,YAAM,IAAI,WAAW,2CAA2C;AAAA,IAClE;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,WAAK,MAAM,GAAG,IAAI,CAAC;AACnB,WAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AACA,EAAAA,QAAO,UAAU,SAAS,SAAS,SAAS;AAC1C,UAAM,MAAM,KAAK;AACjB,QAAI,MAAM,MAAM,GAAG;AACjB,YAAM,IAAI,WAAW,2CAA2C;AAAA,IAClE;AACA,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK,GAAG;AAC/B,WAAK,MAAM,GAAG,IAAI,CAAC;AACnB,WAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AACvB,WAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AACvB,WAAK,MAAM,IAAI,GAAG,IAAI,CAAC;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AACA,EAAAA,QAAO,UAAU,WAAW,SAAS,WAAW;AAC9C,UAAM,SAAS,KAAK;AACpB,QAAI,WAAW,EAAG,QAAO;AACzB,QAAI,UAAU,WAAW,EAAG,QAAO,UAAU,MAAM,GAAG,MAAM;AAC5D,WAAO,aAAa,MAAM,MAAM,SAAS;AAAA,EAC3C;AACA,EAAAA,QAAO,UAAU,iBAAiBA,QAAO,UAAU;AACnD,EAAAA,QAAO,UAAU,SAAS,SAAS,OAAO,GAAG;AAC3C,QAAI,CAACA,QAAO,SAAS,CAAC,EAAG,OAAM,IAAI,UAAU,2BAA2B;AACxE,QAAI,SAAS,EAAG,QAAO;AACvB,WAAOA,QAAO,QAAQ,MAAM,CAAC,MAAM;AAAA,EACrC;AACA,EAAAA,QAAO,UAAU,UAAU,SAAS,UAAU;AAC5C,QAAI,MAAM;AACV,UAAM,MAAM,QAAQ;AACpB,UAAM,KAAK,SAAS,OAAO,GAAG,GAAG,EAAE,QAAQ,WAAW,KAAK,EAAE,KAAK;AAClE,QAAI,KAAK,SAAS,IAAK,QAAO;AAC9B,WAAO,aAAa,MAAM;AAAA,EAC5B;AACA,MAAI,qBAAqB;AACvB,IAAAA,QAAO,UAAU,mBAAmB,IAAIA,QAAO,UAAU;AAAA,EAC3D;AACA,EAAAA,QAAO,UAAU,UAAU,SAAS,QAAQ,QAAQ,OAAO,KAAK,WAAW,SAAS;AAClF,QAAI,WAAW,QAAQ,UAAU,GAAG;AAClC,eAASA,QAAO,KAAK,QAAQ,OAAO,QAAQ,OAAO,UAAU;AAAA,IAC/D;AACA,QAAI,CAACA,QAAO,SAAS,MAAM,GAAG;AAC5B,YAAM,IAAI,UAAU,mFAA0F,OAAO,MAAM;AAAA,IAC7H;AACA,QAAI,UAAU,QAAW;AACvB,cAAQ;AAAA,IACV;AACA,QAAI,QAAQ,QAAW;AACrB,YAAM,SAAS,OAAO,SAAS;AAAA,IACjC;AACA,QAAI,cAAc,QAAW;AAC3B,kBAAY;AAAA,IACd;AACA,QAAI,YAAY,QAAW;AACzB,gBAAU,KAAK;AAAA,IACjB;AACA,QAAI,QAAQ,KAAK,MAAM,OAAO,UAAU,YAAY,KAAK,UAAU,KAAK,QAAQ;AAC9E,YAAM,IAAI,WAAW,oBAAoB;AAAA,IAC3C;AACA,QAAI,aAAa,WAAW,SAAS,KAAK;AACxC,aAAO;AAAA,IACT;AACA,QAAI,aAAa,SAAS;AACxB,aAAO;AAAA,IACT;AACA,QAAI,SAAS,KAAK;AAChB,aAAO;AAAA,IACT;AACA,eAAW;AACX,aAAS;AACT,mBAAe;AACf,iBAAa;AACb,QAAI,SAAS,OAAQ,QAAO;AAC5B,QAAI,IAAI,UAAU;AAClB,QAAI,IAAI,MAAM;AACd,UAAM,MAAM,KAAK,IAAI,GAAG,CAAC;AACzB,UAAM,WAAW,KAAK,MAAM,WAAW,OAAO;AAC9C,UAAM,aAAa,OAAO,MAAM,OAAO,GAAG;AAC1C,aAAS,IAAI,GAAG,IAAI,KAAK,EAAE,GAAG;AAC5B,UAAI,SAAS,CAAC,MAAM,WAAW,CAAC,GAAG;AACjC,YAAI,SAAS,CAAC;AACd,YAAI,WAAW,CAAC;AAChB;AAAA,MACF;AAAA,IACF;AACA,QAAI,IAAI,EAAG,QAAO;AAClB,QAAI,IAAI,EAAG,QAAO;AAClB,WAAO;AAAA,EACT;AAWA,WAAS,qBAAqB,QAAQ,KAAK,YAAY,UAAU,KAAK;AAEpE,QAAI,OAAO,WAAW,EAAG,QAAO;AAGhC,QAAI,OAAO,eAAe,UAAU;AAClC,iBAAW;AACX,mBAAa;AAAA,IACf,WAAW,aAAa,YAAY;AAClC,mBAAa;AAAA,IACf,WAAW,aAAa,aAAa;AACnC,mBAAa;AAAA,IACf;AACA,iBAAa,CAAC;AACd,QAAI,YAAY,UAAU,GAAG;AAE3B,mBAAa,MAAM,IAAI,OAAO,SAAS;AAAA,IACzC;AAGA,QAAI,aAAa,EAAG,cAAa,OAAO,SAAS;AACjD,QAAI,cAAc,OAAO,QAAQ;AAC/B,UAAI,IAAK,QAAO;AAAA,UAAQ,cAAa,OAAO,SAAS;AAAA,IACvD,WAAW,aAAa,GAAG;AACzB,UAAI,IAAK,cAAa;AAAA,UAAO,QAAO;AAAA,IACtC;AAGA,QAAI,OAAO,QAAQ,UAAU;AAC3B,YAAMA,QAAO,KAAK,KAAK,QAAQ;AAAA,IACjC;AAGA,QAAIA,QAAO,SAAS,GAAG,GAAG;AAExB,UAAI,IAAI,WAAW,GAAG;AACpB,eAAO;AAAA,MACT;AACA,aAAO,aAAa,QAAQ,KAAK,YAAY,UAAU,GAAG;AAAA,IAC5D,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,MAAM;AACZ,UAAI,OAAO,WAAW,UAAU,YAAY,YAAY;AACtD,YAAI,KAAK;AACP,iBAAO,WAAW,UAAU,QAAQ,KAAK,QAAQ,KAAK,UAAU;AAAA,QAClE,OAAO;AACL,iBAAO,WAAW,UAAU,YAAY,KAAK,QAAQ,KAAK,UAAU;AAAA,QACtE;AAAA,MACF;AACA,aAAO,aAAa,QAAQ,CAAC,GAAG,GAAG,YAAY,UAAU,GAAG;AAAA,IAC9D;AACA,UAAM,IAAI,UAAU,sCAAsC;AAAA,EAC5D;AACA,WAAS,aAAa,KAAK,KAAK,YAAY,UAAU,KAAK;AACzD,QAAI,YAAY;AAChB,QAAI,YAAY,IAAI;AACpB,QAAI,YAAY,IAAI;AACpB,QAAI,aAAa,QAAW;AAC1B,iBAAW,OAAO,QAAQ,EAAE,YAAY;AACxC,UAAI,aAAa,UAAU,aAAa,WAAW,aAAa,aAAa,aAAa,YAAY;AACpG,YAAI,IAAI,SAAS,KAAK,IAAI,SAAS,GAAG;AACpC,iBAAO;AAAA,QACT;AACA,oBAAY;AACZ,qBAAa;AACb,qBAAa;AACb,sBAAc;AAAA,MAChB;AAAA,IACF;AACA,aAAS,KAAK,KAAKF,IAAG;AACpB,UAAI,cAAc,GAAG;AACnB,eAAO,IAAIA,EAAC;AAAA,MACd,OAAO;AACL,eAAO,IAAI,aAAaA,KAAI,SAAS;AAAA,MACvC;AAAA,IACF;AACA,QAAI;AACJ,QAAI,KAAK;AACP,UAAI,aAAa;AACjB,WAAK,IAAI,YAAY,IAAI,WAAW,KAAK;AACvC,YAAI,KAAK,KAAK,CAAC,MAAM,KAAK,KAAK,eAAe,KAAK,IAAI,IAAI,UAAU,GAAG;AACtE,cAAI,eAAe,GAAI,cAAa;AACpC,cAAI,IAAI,aAAa,MAAM,UAAW,QAAO,aAAa;AAAA,QAC5D,OAAO;AACL,cAAI,eAAe,GAAI,MAAK,IAAI;AAChC,uBAAa;AAAA,QACf;AAAA,MACF;AAAA,IACF,OAAO;AACL,UAAI,aAAa,YAAY,UAAW,cAAa,YAAY;AACjE,WAAK,IAAI,YAAY,KAAK,GAAG,KAAK;AAChC,YAAI,QAAQ;AACZ,iBAAS,IAAI,GAAG,IAAI,WAAW,KAAK;AAClC,cAAI,KAAK,KAAK,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG;AACrC,oBAAQ;AACR;AAAA,UACF;AAAA,QACF;AACA,YAAI,MAAO,QAAO;AAAA,MACpB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,EAAAE,QAAO,UAAU,WAAW,SAAS,SAAS,KAAK,YAAY,UAAU;AACvE,WAAO,KAAK,QAAQ,KAAK,YAAY,QAAQ,MAAM;AAAA,EACrD;AACA,EAAAA,QAAO,UAAU,UAAU,SAAS,QAAQ,KAAK,YAAY,UAAU;AACrE,WAAO,qBAAqB,MAAM,KAAK,YAAY,UAAU,IAAI;AAAA,EACnE;AACA,EAAAA,QAAO,UAAU,cAAc,SAAS,YAAY,KAAK,YAAY,UAAU;AAC7E,WAAO,qBAAqB,MAAM,KAAK,YAAY,UAAU,KAAK;AAAA,EACpE;AACA,WAAS,SAAS,KAAK,QAAQ,QAAQ,QAAQ;AAC7C,aAAS,OAAO,MAAM,KAAK;AAC3B,UAAM,YAAY,IAAI,SAAS;AAC/B,QAAI,CAAC,QAAQ;AACX,eAAS;AAAA,IACX,OAAO;AACL,eAAS,OAAO,MAAM;AACtB,UAAI,SAAS,WAAW;AACtB,iBAAS;AAAA,MACX;AAAA,IACF;AACA,UAAM,SAAS,OAAO;AACtB,QAAI,SAAS,SAAS,GAAG;AACvB,eAAS,SAAS;AAAA,IACpB;AACA,QAAI;AACJ,SAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC3B,YAAM,SAAS,SAAS,OAAO,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE;AACnD,UAAI,YAAY,MAAM,EAAG,QAAO;AAChC,UAAI,SAAS,CAAC,IAAI;AAAA,IACpB;AACA,WAAO;AAAA,EACT;AACA,WAAS,UAAU,KAAK,QAAQ,QAAQ,QAAQ;AAC9C,WAAO,WAAW,YAAY,QAAQ,IAAI,SAAS,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,EACjF;AACA,WAAS,WAAW,KAAK,QAAQ,QAAQ,QAAQ;AAC/C,WAAO,WAAW,aAAa,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,EAC7D;AACA,WAAS,YAAY,KAAK,QAAQ,QAAQ,QAAQ;AAChD,WAAO,WAAW,cAAc,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,EAC9D;AACA,WAAS,UAAU,KAAK,QAAQ,QAAQ,QAAQ;AAC9C,WAAO,WAAW,eAAe,QAAQ,IAAI,SAAS,MAAM,GAAG,KAAK,QAAQ,MAAM;AAAA,EACpF;AACA,EAAAA,QAAO,UAAU,QAAQ,SAAS,MAAM,QAAQ,QAAQ,QAAQ,UAAU;AAExE,QAAI,WAAW,QAAW;AACxB,iBAAW;AACX,eAAS,KAAK;AACd,eAAS;AAAA,IAEX,WAAW,WAAW,UAAa,OAAO,WAAW,UAAU;AAC7D,iBAAW;AACX,eAAS,KAAK;AACd,eAAS;AAAA,IAEX,WAAW,SAAS,MAAM,GAAG;AAC3B,eAAS,WAAW;AACpB,UAAI,SAAS,MAAM,GAAG;AACpB,iBAAS,WAAW;AACpB,YAAI,aAAa,OAAW,YAAW;AAAA,MACzC,OAAO;AACL,mBAAW;AACX,iBAAS;AAAA,MACX;AAAA,IACF,OAAO;AACL,YAAM,IAAI,MAAM,yEAAyE;AAAA,IAC3F;AACA,UAAM,YAAY,KAAK,SAAS;AAChC,QAAI,WAAW,UAAa,SAAS,UAAW,UAAS;AACzD,QAAI,OAAO,SAAS,MAAM,SAAS,KAAK,SAAS,MAAM,SAAS,KAAK,QAAQ;AAC3E,YAAM,IAAI,WAAW,wCAAwC;AAAA,IAC/D;AACA,QAAI,CAAC,SAAU,YAAW;AAC1B,QAAI,cAAc;AAClB,eAAS;AACP,cAAQ,UAAU;AAAA,QAChB,KAAK;AACH,iBAAO,SAAS,MAAM,QAAQ,QAAQ,MAAM;AAAA,QAC9C,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,UAAU,MAAM,QAAQ,QAAQ,MAAM;AAAA,QAC/C,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,WAAW,MAAM,QAAQ,QAAQ,MAAM;AAAA,QAChD,KAAK;AAEH,iBAAO,YAAY,MAAM,QAAQ,QAAQ,MAAM;AAAA,QACjD,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,iBAAO,UAAU,MAAM,QAAQ,QAAQ,MAAM;AAAA,QAC/C;AACE,cAAI,YAAa,OAAM,IAAI,UAAU,uBAAuB,QAAQ;AACpE,sBAAY,KAAK,UAAU,YAAY;AACvC,wBAAc;AAAA,MAClB;AAAA,IACF;AAAA,EACF;AACA,EAAAA,QAAO,UAAU,SAAS,SAAS,SAAS;AAC1C,WAAO;AAAA,MACL,MAAM;AAAA,MACN,MAAM,MAAM,UAAU,MAAM,KAAK,KAAK,QAAQ,MAAM,CAAC;AAAA,IACvD;AAAA,EACF;AACA,WAAS,YAAY,KAAK,OAAO,KAAK;AACpC,QAAI,UAAU,KAAK,QAAQ,IAAI,QAAQ;AACrC,aAAO,OAAO,cAAc,GAAG;AAAA,IACjC,OAAO;AACL,aAAO,OAAO,cAAc,IAAI,MAAM,OAAO,GAAG,CAAC;AAAA,IACnD;AAAA,EACF;AACA,WAAS,UAAU,KAAK,OAAO,KAAK;AAClC,UAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAC9B,UAAM,MAAM,CAAC;AACb,QAAI,IAAI;AACR,WAAO,IAAI,KAAK;AACd,YAAM,YAAY,IAAI,CAAC;AACvB,UAAI,YAAY;AAChB,UAAI,mBAAmB,YAAY,MAAM,IAAI,YAAY,MAAM,IAAI,YAAY,MAAM,IAAI;AACzF,UAAI,IAAI,oBAAoB,KAAK;AAC/B,YAAI,YAAY,WAAW,YAAY;AACvC,gBAAQ,kBAAkB;AAAA,UACxB,KAAK;AACH,gBAAI,YAAY,KAAK;AACnB,0BAAY;AAAA,YACd;AACA;AAAA,UACF,KAAK;AACH,yBAAa,IAAI,IAAI,CAAC;AACtB,iBAAK,aAAa,SAAS,KAAK;AAC9B,+BAAiB,YAAY,OAAO,IAAI,aAAa;AACrD,kBAAI,gBAAgB,KAAK;AACvB,4BAAY;AAAA,cACd;AAAA,YACF;AACA;AAAA,UACF,KAAK;AACH,yBAAa,IAAI,IAAI,CAAC;AACtB,wBAAY,IAAI,IAAI,CAAC;AACrB,iBAAK,aAAa,SAAS,QAAQ,YAAY,SAAS,KAAK;AAC3D,+BAAiB,YAAY,OAAO,MAAM,aAAa,OAAO,IAAI,YAAY;AAC9E,kBAAI,gBAAgB,SAAS,gBAAgB,SAAS,gBAAgB,QAAQ;AAC5E,4BAAY;AAAA,cACd;AAAA,YACF;AACA;AAAA,UACF,KAAK;AACH,yBAAa,IAAI,IAAI,CAAC;AACtB,wBAAY,IAAI,IAAI,CAAC;AACrB,yBAAa,IAAI,IAAI,CAAC;AACtB,iBAAK,aAAa,SAAS,QAAQ,YAAY,SAAS,QAAQ,aAAa,SAAS,KAAK;AACzF,+BAAiB,YAAY,OAAO,MAAM,aAAa,OAAO,MAAM,YAAY,OAAO,IAAI,aAAa;AACxG,kBAAI,gBAAgB,SAAS,gBAAgB,SAAS;AACpD,4BAAY;AAAA,cACd;AAAA,YACF;AAAA,QACJ;AAAA,MACF;AACA,UAAI,cAAc,MAAM;AAGtB,oBAAY;AACZ,2BAAmB;AAAA,MACrB,WAAW,YAAY,OAAO;AAE5B,qBAAa;AACb,YAAI,KAAK,cAAc,KAAK,OAAO,KAAK;AACxC,oBAAY,QAAQ,YAAY;AAAA,MAClC;AACA,UAAI,KAAK,SAAS;AAClB,WAAK;AAAA,IACP;AACA,WAAO,sBAAsB,GAAG;AAAA,EAClC;AAKA,QAAM,uBAAuB;AAC7B,WAAS,sBAAsB,YAAY;AACzC,UAAM,MAAM,WAAW;AACvB,QAAI,OAAO,sBAAsB;AAC/B,aAAO,OAAO,aAAa,MAAM,QAAQ,UAAU;AAAA,IACrD;AAGA,QAAI,MAAM;AACV,QAAI,IAAI;AACR,WAAO,IAAI,KAAK;AACd,aAAO,OAAO,aAAa,MAAM,QAAQ,WAAW,MAAM,GAAG,KAAK,oBAAoB,CAAC;AAAA,IACzF;AACA,WAAO;AAAA,EACT;AACA,WAAS,WAAW,KAAK,OAAO,KAAK;AACnC,QAAI,MAAM;AACV,UAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAC9B,aAAS,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAChC,aAAO,OAAO,aAAa,IAAI,CAAC,IAAI,GAAG;AAAA,IACzC;AACA,WAAO;AAAA,EACT;AACA,WAAS,YAAY,KAAK,OAAO,KAAK;AACpC,QAAI,MAAM;AACV,UAAM,KAAK,IAAI,IAAI,QAAQ,GAAG;AAC9B,aAAS,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAChC,aAAO,OAAO,aAAa,IAAI,CAAC,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACA,WAAS,SAAS,KAAK,OAAO,KAAK;AACjC,UAAM,MAAM,IAAI;AAChB,QAAI,CAAC,SAAS,QAAQ,EAAG,SAAQ;AACjC,QAAI,CAAC,OAAO,MAAM,KAAK,MAAM,IAAK,OAAM;AACxC,QAAI,MAAM;AACV,aAAS,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAChC,aAAO,oBAAoB,IAAI,CAAC,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAa,KAAK,OAAO,KAAK;AACrC,UAAM,QAAQ,IAAI,MAAM,OAAO,GAAG;AAClC,QAAI,MAAM;AAEV,aAAS,IAAI,GAAG,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG;AAC5C,aAAO,OAAO,aAAa,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,GAAG;AAAA,IAC1D;AACA,WAAO;AAAA,EACT;AACA,EAAAA,QAAO,UAAU,QAAQ,SAAS,MAAM,OAAO,KAAK;AAClD,UAAM,MAAM,KAAK;AACjB,YAAQ,CAAC,CAAC;AACV,UAAM,QAAQ,SAAY,MAAM,CAAC,CAAC;AAClC,QAAI,QAAQ,GAAG;AACb,eAAS;AACT,UAAI,QAAQ,EAAG,SAAQ;AAAA,IACzB,WAAW,QAAQ,KAAK;AACtB,cAAQ;AAAA,IACV;AACA,QAAI,MAAM,GAAG;AACX,aAAO;AACP,UAAI,MAAM,EAAG,OAAM;AAAA,IACrB,WAAW,MAAM,KAAK;AACpB,YAAM;AAAA,IACR;AACA,QAAI,MAAM,MAAO,OAAM;AACvB,UAAM,SAAS,KAAK,SAAS,OAAO,GAAG;AAEvC,WAAO,eAAe,QAAQA,QAAO,SAAS;AAC9C,WAAO;AAAA,EACT;AAKA,WAAS,YAAY,QAAQ,KAAK,QAAQ;AACxC,QAAI,SAAS,MAAM,KAAK,SAAS,EAAG,OAAM,IAAI,WAAW,oBAAoB;AAC7E,QAAI,SAAS,MAAM,OAAQ,OAAM,IAAI,WAAW,uCAAuC;AAAA,EACzF;AACA,EAAAA,QAAO,UAAU,aAAaA,QAAO,UAAU,aAAa,SAAS,WAAW,QAAQC,aAAY,UAAU;AAC5G,aAAS,WAAW;AACpB,IAAAA,cAAaA,gBAAe;AAC5B,QAAI,CAAC,SAAU,aAAY,QAAQA,aAAY,KAAK,MAAM;AAC1D,QAAI,MAAM,KAAK,MAAM;AACrB,QAAI,MAAM;AACV,QAAI,IAAI;AACR,WAAO,EAAE,IAAIA,gBAAe,OAAO,MAAM;AACvC,aAAO,KAAK,SAAS,CAAC,IAAI;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AACA,EAAAD,QAAO,UAAU,aAAaA,QAAO,UAAU,aAAa,SAAS,WAAW,QAAQC,aAAY,UAAU;AAC5G,aAAS,WAAW;AACpB,IAAAA,cAAaA,gBAAe;AAC5B,QAAI,CAAC,UAAU;AACb,kBAAY,QAAQA,aAAY,KAAK,MAAM;AAAA,IAC7C;AACA,QAAI,MAAM,KAAK,SAAS,EAAEA,WAAU;AACpC,QAAI,MAAM;AACV,WAAOA,cAAa,MAAM,OAAO,MAAM;AACrC,aAAO,KAAK,SAAS,EAAEA,WAAU,IAAI;AAAA,IACvC;AACA,WAAO;AAAA,EACT;AACA,EAAAD,QAAO,UAAU,YAAYA,QAAO,UAAU,YAAY,SAAS,UAAU,QAAQ,UAAU;AAC7F,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,KAAK,MAAM;AAAA,EACpB;AACA,EAAAA,QAAO,UAAU,eAAeA,QAAO,UAAU,eAAe,SAAS,aAAa,QAAQ,UAAU;AACtG,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,KAAK;AAAA,EAC5C;AACA,EAAAA,QAAO,UAAU,eAAeA,QAAO,UAAU,eAAe,SAAS,aAAa,QAAQ,UAAU;AACtG,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,KAAK,MAAM,KAAK,IAAI,KAAK,SAAS,CAAC;AAAA,EAC5C;AACA,EAAAA,QAAO,UAAU,eAAeA,QAAO,UAAU,eAAe,SAAS,aAAa,QAAQ,UAAU;AACtG,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,YAAQ,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,KAAK,MAAM,KAAK,SAAS,CAAC,IAAI;AAAA,EAC9F;AACA,EAAAA,QAAO,UAAU,eAAeA,QAAO,UAAU,eAAe,SAAS,aAAa,QAAQ,UAAU;AACtG,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,KAAK,MAAM,IAAI,YAAY,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC;AAAA,EACpG;AACA,EAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAgB,QAAQ;AACrF,aAAS,WAAW;AACpB,mBAAe,QAAQ,QAAQ;AAC/B,UAAM,QAAQ,KAAK,MAAM;AACzB,UAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,QAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,kBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,IACrC;AACA,UAAM,KAAK,QAAQ,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK;AAC9F,UAAM,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,OAAO,KAAK;AAC7F,WAAO,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE;AAAA,EAC9C,CAAC;AACD,EAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAgB,QAAQ;AACrF,aAAS,WAAW;AACpB,mBAAe,QAAQ,QAAQ;AAC/B,UAAM,QAAQ,KAAK,MAAM;AACzB,UAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,QAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,kBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,IACrC;AACA,UAAM,KAAK,QAAQ,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,MAAM;AAC/F,UAAM,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI;AAC3F,YAAQ,OAAO,EAAE,KAAK,OAAO,EAAE,KAAK,OAAO,EAAE;AAAA,EAC/C,CAAC;AACD,EAAAA,QAAO,UAAU,YAAY,SAAS,UAAU,QAAQC,aAAY,UAAU;AAC5E,aAAS,WAAW;AACpB,IAAAA,cAAaA,gBAAe;AAC5B,QAAI,CAAC,SAAU,aAAY,QAAQA,aAAY,KAAK,MAAM;AAC1D,QAAI,MAAM,KAAK,MAAM;AACrB,QAAI,MAAM;AACV,QAAI,IAAI;AACR,WAAO,EAAE,IAAIA,gBAAe,OAAO,MAAM;AACvC,aAAO,KAAK,SAAS,CAAC,IAAI;AAAA,IAC5B;AACA,WAAO;AACP,QAAI,OAAO,IAAK,QAAO,KAAK,IAAI,GAAG,IAAIA,WAAU;AACjD,WAAO;AAAA,EACT;AACA,EAAAD,QAAO,UAAU,YAAY,SAAS,UAAU,QAAQC,aAAY,UAAU;AAC5E,aAAS,WAAW;AACpB,IAAAA,cAAaA,gBAAe;AAC5B,QAAI,CAAC,SAAU,aAAY,QAAQA,aAAY,KAAK,MAAM;AAC1D,QAAI,IAAIA;AACR,QAAI,MAAM;AACV,QAAI,MAAM,KAAK,SAAS,EAAE,CAAC;AAC3B,WAAO,IAAI,MAAM,OAAO,MAAM;AAC5B,aAAO,KAAK,SAAS,EAAE,CAAC,IAAI;AAAA,IAC9B;AACA,WAAO;AACP,QAAI,OAAO,IAAK,QAAO,KAAK,IAAI,GAAG,IAAIA,WAAU;AACjD,WAAO;AAAA,EACT;AACA,EAAAD,QAAO,UAAU,WAAW,SAAS,SAAS,QAAQ,UAAU;AAC9D,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,QAAI,EAAE,KAAK,MAAM,IAAI,KAAM,QAAO,KAAK,MAAM;AAC7C,YAAQ,MAAM,KAAK,MAAM,IAAI,KAAK;AAAA,EACpC;AACA,EAAAA,QAAO,UAAU,cAAc,SAAS,YAAY,QAAQ,UAAU;AACpE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,UAAM,MAAM,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,KAAK;AAC/C,WAAO,MAAM,QAAQ,MAAM,aAAa;AAAA,EAC1C;AACA,EAAAA,QAAO,UAAU,cAAc,SAAS,YAAY,QAAQ,UAAU;AACpE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,UAAM,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,MAAM,KAAK;AAC/C,WAAO,MAAM,QAAQ,MAAM,aAAa;AAAA,EAC1C;AACA,EAAAA,QAAO,UAAU,cAAc,SAAS,YAAY,QAAQ,UAAU;AACpE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,KAAK,MAAM,IAAI,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC,KAAK;AAAA,EAC7F;AACA,EAAAA,QAAO,UAAU,cAAc,SAAS,YAAY,QAAQ,UAAU;AACpE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,KAAK,MAAM,KAAK,KAAK,KAAK,SAAS,CAAC,KAAK,KAAK,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,SAAS,CAAC;AAAA,EAC9F;AACA,EAAAA,QAAO,UAAU,iBAAiB,mBAAmB,SAAS,eAAe,QAAQ;AACnF,aAAS,WAAW;AACpB,mBAAe,QAAQ,QAAQ;AAC/B,UAAM,QAAQ,KAAK,MAAM;AACzB,UAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,QAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,kBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,IACrC;AACA,UAAM,MAAM,KAAK,SAAS,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,IAAI,KAAK,SAAS,CAAC,IAAI,KAAK,MAAM,QAAQ;AAEjG,YAAQ,OAAO,GAAG,KAAK,OAAO,EAAE,KAAK,OAAO,QAAQ,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,EAAE;AAAA,EACnI,CAAC;AACD,EAAAA,QAAO,UAAU,iBAAiB,mBAAmB,SAAS,eAAe,QAAQ;AACnF,aAAS,WAAW;AACpB,mBAAe,QAAQ,QAAQ;AAC/B,UAAM,QAAQ,KAAK,MAAM;AACzB,UAAM,OAAO,KAAK,SAAS,CAAC;AAC5B,QAAI,UAAU,UAAa,SAAS,QAAW;AAC7C,kBAAY,QAAQ,KAAK,SAAS,CAAC;AAAA,IACrC;AACA,UAAM,OAAO,SAAS;AAAA,IAEtB,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,KAAK,EAAE,MAAM;AAClE,YAAQ,OAAO,GAAG,KAAK,OAAO,EAAE,KAAK,OAAO,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,KAAK,KAAK,EAAE,MAAM,IAAI,KAAK,IAAI,IAAI;AAAA,EAClI,CAAC;AACD,EAAAA,QAAO,UAAU,cAAc,SAAS,YAAY,QAAQ,UAAU;AACpE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,IAAI,CAAC;AAAA,EAC/C;AACA,EAAAA,QAAO,UAAU,cAAc,SAAS,YAAY,QAAQ,UAAU;AACpE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,QAAQ,KAAK,MAAM,QAAQ,OAAO,IAAI,CAAC;AAAA,EAChD;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,QAAQ,UAAU;AACtE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,QAAQ,KAAK,MAAM,QAAQ,MAAM,IAAI,CAAC;AAAA,EAC/C;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,QAAQ,UAAU;AACtE,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,aAAY,QAAQ,GAAG,KAAK,MAAM;AACjD,WAAO,QAAQ,KAAK,MAAM,QAAQ,OAAO,IAAI,CAAC;AAAA,EAChD;AACA,WAAS,SAAS,KAAK,OAAO,QAAQ,KAAK,KAAK,KAAK;AACnD,QAAI,CAACA,QAAO,SAAS,GAAG,EAAG,OAAM,IAAI,UAAU,6CAA+C;AAC9F,QAAI,QAAQ,OAAO,QAAQ,IAAK,OAAM,IAAI,WAAW,mCAAqC;AAC1F,QAAI,SAAS,MAAM,IAAI,OAAQ,OAAM,IAAI,WAAW,oBAAoB;AAAA,EAC1E;AACA,EAAAA,QAAO,UAAU,cAAcA,QAAO,UAAU,cAAc,SAAS,YAAY,OAAO,QAAQC,aAAY,UAAU;AACtH,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,IAAAA,cAAaA,gBAAe;AAC5B,QAAI,CAAC,UAAU;AACb,YAAM,WAAW,KAAK,IAAI,GAAG,IAAIA,WAAU,IAAI;AAC/C,eAAS,MAAM,OAAO,QAAQA,aAAY,UAAU,CAAC;AAAA,IACvD;AACA,QAAI,MAAM;AACV,QAAI,IAAI;AACR,SAAK,MAAM,IAAI,QAAQ;AACvB,WAAO,EAAE,IAAIA,gBAAe,OAAO,MAAM;AACvC,WAAK,SAAS,CAAC,IAAI,QAAQ,MAAM;AAAA,IACnC;AACA,WAAO,SAASA;AAAA,EAClB;AACA,EAAAD,QAAO,UAAU,cAAcA,QAAO,UAAU,cAAc,SAAS,YAAY,OAAO,QAAQC,aAAY,UAAU;AACtH,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,IAAAA,cAAaA,gBAAe;AAC5B,QAAI,CAAC,UAAU;AACb,YAAM,WAAW,KAAK,IAAI,GAAG,IAAIA,WAAU,IAAI;AAC/C,eAAS,MAAM,OAAO,QAAQA,aAAY,UAAU,CAAC;AAAA,IACvD;AACA,QAAI,IAAIA,cAAa;AACrB,QAAI,MAAM;AACV,SAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,WAAO,EAAE,KAAK,MAAM,OAAO,MAAM;AAC/B,WAAK,SAAS,CAAC,IAAI,QAAQ,MAAM;AAAA,IACnC;AACA,WAAO,SAASA;AAAA,EAClB;AACA,EAAAD,QAAO,UAAU,aAAaA,QAAO,UAAU,aAAa,SAAS,WAAW,OAAO,QAAQ,UAAU;AACvG,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,KAAK,CAAC;AACtD,SAAK,MAAM,IAAI,QAAQ;AACvB,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,gBAAgBA,QAAO,UAAU,gBAAgB,SAAS,cAAc,OAAO,QAAQ,UAAU;AAChH,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAO,CAAC;AACxD,SAAK,MAAM,IAAI,QAAQ;AACvB,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,gBAAgBA,QAAO,UAAU,gBAAgB,SAAS,cAAc,OAAO,QAAQ,UAAU;AAChH,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAO,CAAC;AACxD,SAAK,MAAM,IAAI,UAAU;AACzB,SAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,gBAAgBA,QAAO,UAAU,gBAAgB,SAAS,cAAc,OAAO,QAAQ,UAAU;AAChH,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,CAAC;AAC7D,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,MAAM,IAAI,QAAQ;AACvB,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,gBAAgBA,QAAO,UAAU,gBAAgB,SAAS,cAAc,OAAO,QAAQ,UAAU;AAChH,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,CAAC;AAC7D,SAAK,MAAM,IAAI,UAAU;AACzB,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,WAAO,SAAS;AAAA,EAClB;AACA,WAAS,eAAe,KAAK,OAAO,QAAQ,KAAK,KAAK;AACpD,eAAW,OAAO,KAAK,KAAK,KAAK,QAAQ,CAAC;AAC1C,QAAI,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAC;AAC1C,QAAI,QAAQ,IAAI;AAChB,SAAK,MAAM;AACX,QAAI,QAAQ,IAAI;AAChB,SAAK,MAAM;AACX,QAAI,QAAQ,IAAI;AAChB,SAAK,MAAM;AACX,QAAI,QAAQ,IAAI;AAChB,QAAI,KAAK,OAAO,SAAS,OAAO,EAAE,IAAI,OAAO,UAAU,CAAC;AACxD,QAAI,QAAQ,IAAI;AAChB,SAAK,MAAM;AACX,QAAI,QAAQ,IAAI;AAChB,SAAK,MAAM;AACX,QAAI,QAAQ,IAAI;AAChB,SAAK,MAAM;AACX,QAAI,QAAQ,IAAI;AAChB,WAAO;AAAA,EACT;AACA,WAAS,eAAe,KAAK,OAAO,QAAQ,KAAK,KAAK;AACpD,eAAW,OAAO,KAAK,KAAK,KAAK,QAAQ,CAAC;AAC1C,QAAI,KAAK,OAAO,QAAQ,OAAO,UAAU,CAAC;AAC1C,QAAI,SAAS,CAAC,IAAI;AAClB,SAAK,MAAM;AACX,QAAI,SAAS,CAAC,IAAI;AAClB,SAAK,MAAM;AACX,QAAI,SAAS,CAAC,IAAI;AAClB,SAAK,MAAM;AACX,QAAI,SAAS,CAAC,IAAI;AAClB,QAAI,KAAK,OAAO,SAAS,OAAO,EAAE,IAAI,OAAO,UAAU,CAAC;AACxD,QAAI,SAAS,CAAC,IAAI;AAClB,SAAK,MAAM;AACX,QAAI,SAAS,CAAC,IAAI;AAClB,SAAK,MAAM;AACX,QAAI,SAAS,CAAC,IAAI;AAClB,SAAK,MAAM;AACX,QAAI,MAAM,IAAI;AACd,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,mBAAmB,mBAAmB,SAAS,iBAAiB,OAAO,SAAS,GAAG;AAClG,WAAO,eAAe,MAAM,OAAO,QAAQ,OAAO,CAAC,GAAG,OAAO,oBAAoB,CAAC;AAAA,EACpF,CAAC;AACD,EAAAA,QAAO,UAAU,mBAAmB,mBAAmB,SAAS,iBAAiB,OAAO,SAAS,GAAG;AAClG,WAAO,eAAe,MAAM,OAAO,QAAQ,OAAO,CAAC,GAAG,OAAO,oBAAoB,CAAC;AAAA,EACpF,CAAC;AACD,EAAAA,QAAO,UAAU,aAAa,SAAS,WAAW,OAAO,QAAQC,aAAY,UAAU;AACrF,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,UAAU;AACb,YAAM,QAAQ,KAAK,IAAI,GAAG,IAAIA,cAAa,CAAC;AAC5C,eAAS,MAAM,OAAO,QAAQA,aAAY,QAAQ,GAAG,CAAC,KAAK;AAAA,IAC7D;AACA,QAAI,IAAI;AACR,QAAI,MAAM;AACV,QAAI,MAAM;AACV,SAAK,MAAM,IAAI,QAAQ;AACvB,WAAO,EAAE,IAAIA,gBAAe,OAAO,MAAM;AACvC,UAAI,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,GAAG;AACxD,cAAM;AAAA,MACR;AACA,WAAK,SAAS,CAAC,KAAK,QAAQ,OAAO,KAAK,MAAM;AAAA,IAChD;AACA,WAAO,SAASA;AAAA,EAClB;AACA,EAAAD,QAAO,UAAU,aAAa,SAAS,WAAW,OAAO,QAAQC,aAAY,UAAU;AACrF,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,UAAU;AACb,YAAM,QAAQ,KAAK,IAAI,GAAG,IAAIA,cAAa,CAAC;AAC5C,eAAS,MAAM,OAAO,QAAQA,aAAY,QAAQ,GAAG,CAAC,KAAK;AAAA,IAC7D;AACA,QAAI,IAAIA,cAAa;AACrB,QAAI,MAAM;AACV,QAAI,MAAM;AACV,SAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,WAAO,EAAE,KAAK,MAAM,OAAO,MAAM;AAC/B,UAAI,QAAQ,KAAK,QAAQ,KAAK,KAAK,SAAS,IAAI,CAAC,MAAM,GAAG;AACxD,cAAM;AAAA,MACR;AACA,WAAK,SAAS,CAAC,KAAK,QAAQ,OAAO,KAAK,MAAM;AAAA,IAChD;AACA,WAAO,SAASA;AAAA,EAClB;AACA,EAAAD,QAAO,UAAU,YAAY,SAAS,UAAU,OAAO,QAAQ,UAAU;AACvE,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,KAAK,IAAI;AACzD,QAAI,QAAQ,EAAG,SAAQ,MAAM,QAAQ;AACrC,SAAK,MAAM,IAAI,QAAQ;AACvB,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,OAAO,QAAQ,UAAU;AAC7E,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAO,MAAM;AAC7D,SAAK,MAAM,IAAI,QAAQ;AACvB,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,OAAO,QAAQ,UAAU;AAC7E,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,OAAO,MAAM;AAC7D,SAAK,MAAM,IAAI,UAAU;AACzB,SAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,OAAO,QAAQ,UAAU;AAC7E,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,WAAW;AACvE,SAAK,MAAM,IAAI,QAAQ;AACvB,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,OAAO,QAAQ,UAAU;AAC7E,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,SAAU,UAAS,MAAM,OAAO,QAAQ,GAAG,YAAY,WAAW;AACvE,QAAI,QAAQ,EAAG,SAAQ,aAAa,QAAQ;AAC5C,SAAK,MAAM,IAAI,UAAU;AACzB,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,UAAU;AAC7B,SAAK,SAAS,CAAC,IAAI,QAAQ;AAC3B,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAgB,OAAO,SAAS,GAAG;AAChG,WAAO,eAAe,MAAM,OAAO,QAAQ,CAAC,OAAO,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAAA,EACxG,CAAC;AACD,EAAAA,QAAO,UAAU,kBAAkB,mBAAmB,SAAS,gBAAgB,OAAO,SAAS,GAAG;AAChG,WAAO,eAAe,MAAM,OAAO,QAAQ,CAAC,OAAO,oBAAoB,GAAG,OAAO,oBAAoB,CAAC;AAAA,EACxG,CAAC;AACD,WAAS,aAAa,KAAK,OAAO,QAAQ,KAAK,KAAK,KAAK;AACvD,QAAI,SAAS,MAAM,IAAI,OAAQ,OAAM,IAAI,WAAW,oBAAoB;AACxE,QAAI,SAAS,EAAG,OAAM,IAAI,WAAW,oBAAoB;AAAA,EAC3D;AACA,WAAS,WAAW,KAAK,OAAO,QAAQ,cAAc,UAAU;AAC9D,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,UAAU;AACb,mBAAa,KAAK,OAAO,QAAQ,CAAC;AAAA,IACpC;AACA,YAAQ,MAAM,KAAK,OAAO,QAAQ,cAAc,IAAI,CAAC;AACrD,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,OAAO,QAAQ,UAAU;AAC7E,WAAO,WAAW,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,EACvD;AACA,EAAAA,QAAO,UAAU,eAAe,SAAS,aAAa,OAAO,QAAQ,UAAU;AAC7E,WAAO,WAAW,MAAM,OAAO,QAAQ,OAAO,QAAQ;AAAA,EACxD;AACA,WAAS,YAAY,KAAK,OAAO,QAAQ,cAAc,UAAU;AAC/D,YAAQ,CAAC;AACT,aAAS,WAAW;AACpB,QAAI,CAAC,UAAU;AACb,mBAAa,KAAK,OAAO,QAAQ,CAAC;AAAA,IACpC;AACA,YAAQ,MAAM,KAAK,OAAO,QAAQ,cAAc,IAAI,CAAC;AACrD,WAAO,SAAS;AAAA,EAClB;AACA,EAAAA,QAAO,UAAU,gBAAgB,SAAS,cAAc,OAAO,QAAQ,UAAU;AAC/E,WAAO,YAAY,MAAM,OAAO,QAAQ,MAAM,QAAQ;AAAA,EACxD;AACA,EAAAA,QAAO,UAAU,gBAAgB,SAAS,cAAc,OAAO,QAAQ,UAAU;AAC/E,WAAO,YAAY,MAAM,OAAO,QAAQ,OAAO,QAAQ;AAAA,EACzD;AAGA,EAAAA,QAAO,UAAU,OAAO,SAAS,KAAK,QAAQ,aAAa,OAAO,KAAK;AACrE,QAAI,CAACA,QAAO,SAAS,MAAM,EAAG,OAAM,IAAI,UAAU,6BAA6B;AAC/E,QAAI,CAAC,MAAO,SAAQ;AACpB,QAAI,CAAC,OAAO,QAAQ,EAAG,OAAM,KAAK;AAClC,QAAI,eAAe,OAAO,OAAQ,eAAc,OAAO;AACvD,QAAI,CAAC,YAAa,eAAc;AAChC,QAAI,MAAM,KAAK,MAAM,MAAO,OAAM;AAGlC,QAAI,QAAQ,MAAO,QAAO;AAC1B,QAAI,OAAO,WAAW,KAAK,KAAK,WAAW,EAAG,QAAO;AAGrD,QAAI,cAAc,GAAG;AACnB,YAAM,IAAI,WAAW,2BAA2B;AAAA,IAClD;AACA,QAAI,QAAQ,KAAK,SAAS,KAAK,OAAQ,OAAM,IAAI,WAAW,oBAAoB;AAChF,QAAI,MAAM,EAAG,OAAM,IAAI,WAAW,yBAAyB;AAG3D,QAAI,MAAM,KAAK,OAAQ,OAAM,KAAK;AAClC,QAAI,OAAO,SAAS,cAAc,MAAM,OAAO;AAC7C,YAAM,OAAO,SAAS,cAAc;AAAA,IACtC;AACA,UAAM,MAAM,MAAM;AAClB,QAAI,SAAS,UAAU,OAAO,WAAW,UAAU,eAAe,YAAY;AAE5E,WAAK,WAAW,aAAa,OAAO,GAAG;AAAA,IACzC,OAAO;AACL,iBAAW,UAAU,IAAI,KAAK,QAAQ,KAAK,SAAS,OAAO,GAAG,GAAG,WAAW;AAAA,IAC9E;AACA,WAAO;AAAA,EACT;AAMA,EAAAA,QAAO,UAAU,OAAO,SAAS,KAAK,KAAK,OAAO,KAAK,UAAU;AAE/D,QAAI,OAAO,QAAQ,UAAU;AAC3B,UAAI,OAAO,UAAU,UAAU;AAC7B,mBAAW;AACX,gBAAQ;AACR,cAAM,KAAK;AAAA,MACb,WAAW,OAAO,QAAQ,UAAU;AAClC,mBAAW;AACX,cAAM,KAAK;AAAA,MACb;AACA,UAAI,aAAa,UAAa,OAAO,aAAa,UAAU;AAC1D,cAAM,IAAI,UAAU,2BAA2B;AAAA,MACjD;AACA,UAAI,OAAO,aAAa,YAAY,CAACA,QAAO,WAAW,QAAQ,GAAG;AAChE,cAAM,IAAI,UAAU,uBAAuB,QAAQ;AAAA,MACrD;AACA,UAAI,IAAI,WAAW,GAAG;AACpB,cAAM,OAAO,IAAI,WAAW,CAAC;AAC7B,YAAI,aAAa,UAAU,OAAO,OAAO,aAAa,UAAU;AAE9D,gBAAM;AAAA,QACR;AAAA,MACF;AAAA,IACF,WAAW,OAAO,QAAQ,UAAU;AAClC,YAAM,MAAM;AAAA,IACd,WAAW,OAAO,QAAQ,WAAW;AACnC,YAAM,OAAO,GAAG;AAAA,IAClB;AAGA,QAAI,QAAQ,KAAK,KAAK,SAAS,SAAS,KAAK,SAAS,KAAK;AACzD,YAAM,IAAI,WAAW,oBAAoB;AAAA,IAC3C;AACA,QAAI,OAAO,OAAO;AAChB,aAAO;AAAA,IACT;AACA,YAAQ,UAAU;AAClB,UAAM,QAAQ,SAAY,KAAK,SAAS,QAAQ;AAChD,QAAI,CAAC,IAAK,OAAM;AAChB,QAAI;AACJ,QAAI,OAAO,QAAQ,UAAU;AAC3B,WAAK,IAAI,OAAO,IAAI,KAAK,EAAE,GAAG;AAC5B,aAAK,CAAC,IAAI;AAAA,MACZ;AAAA,IACF,OAAO;AACL,YAAM,QAAQA,QAAO,SAAS,GAAG,IAAI,MAAMA,QAAO,KAAK,KAAK,QAAQ;AACpE,YAAM,MAAM,MAAM;AAClB,UAAI,QAAQ,GAAG;AACb,cAAM,IAAI,UAAU,gBAAiB,MAAM,mCAAsC;AAAA,MACnF;AACA,WAAK,IAAI,GAAG,IAAI,MAAM,OAAO,EAAE,GAAG;AAChC,aAAK,IAAI,KAAK,IAAI,MAAM,IAAI,GAAG;AAAA,MACjC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAMA,QAAM,SAAS,CAAC;AAChB,WAAS,EAAE,KAAK,YAAY,MAAM;AAChC,WAAO,GAAG,IAAI,MAAM,kBAAkB,KAAK;AAAA,MACzC,cAAc;AACZ,cAAM;AACN,eAAO,eAAe,MAAM,WAAW;AAAA,UACrC,OAAO,WAAW,MAAM,MAAM,SAAS;AAAA,UACvC,UAAU;AAAA,UACV,cAAc;AAAA,QAChB,CAAC;AAGD,aAAK,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG;AAGhC,aAAK;AAEL,eAAO,KAAK;AAAA,MACd;AAAA,MACA,IAAI,OAAO;AACT,eAAO;AAAA,MACT;AAAA,MACA,IAAI,KAAK,OAAO;AACd,eAAO,eAAe,MAAM,QAAQ;AAAA,UAClC,cAAc;AAAA,UACd,YAAY;AAAA,UACZ;AAAA,UACA,UAAU;AAAA,QACZ,CAAC;AAAA,MACH;AAAA,MACA,WAAW;AACT,eAAO,GAAG,KAAK,IAAI,KAAK,GAAG,MAAM,KAAK,OAAO;AAAA,MAC/C;AAAA,IACF;AAAA,EACF;AACA,IAAE,4BAA4B,SAAUE,OAAM;AAC5C,QAAIA,OAAM;AACR,aAAO,GAAGA,KAAI;AAAA,IAChB;AACA,WAAO;AAAA,EACT,GAAG,UAAU;AACb,IAAE,wBAAwB,SAAUA,OAAM,QAAQ;AAChD,WAAO,QAAQA,KAAI,oDAAoD,OAAO,MAAM;AAAA,EACtF,GAAG,SAAS;AACZ,IAAE,oBAAoB,SAAU,KAAK,OAAO,OAAO;AACjD,QAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAI,WAAW;AACf,QAAI,OAAO,UAAU,KAAK,KAAK,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI;AACxD,iBAAW,sBAAsB,OAAO,KAAK,CAAC;AAAA,IAChD,WAAW,OAAO,UAAU,UAAU;AACpC,iBAAW,OAAO,KAAK;AACvB,UAAI,QAAQ,OAAO,CAAC,KAAK,OAAO,EAAE,KAAK,QAAQ,EAAE,OAAO,CAAC,KAAK,OAAO,EAAE,IAAI;AACzE,mBAAW,sBAAsB,QAAQ;AAAA,MAC3C;AACA,kBAAY;AAAA,IACd;AACA,WAAO,eAAe,KAAK,cAAc,QAAQ;AACjD,WAAO;AAAA,EACT,GAAG,UAAU;AACb,WAAS,sBAAsB,KAAK;AAClC,QAAI,MAAM;AACV,QAAI,IAAI,IAAI;AACZ,UAAM,QAAQ,IAAI,CAAC,MAAM,MAAM,IAAI;AACnC,WAAO,KAAK,QAAQ,GAAG,KAAK,GAAG;AAC7B,YAAM,IAAI,IAAI,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,GAAG;AAAA,IACrC;AACA,WAAO,GAAG,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG;AAAA,EACjC;AAKA,WAAS,YAAY,KAAK,QAAQD,aAAY;AAC5C,mBAAe,QAAQ,QAAQ;AAC/B,QAAI,IAAI,MAAM,MAAM,UAAa,IAAI,SAASA,WAAU,MAAM,QAAW;AACvE,kBAAY,QAAQ,IAAI,UAAUA,cAAa,EAAE;AAAA,IACnD;AAAA,EACF;AACA,WAAS,WAAW,OAAO,KAAK,KAAK,KAAK,QAAQA,aAAY;AAC5D,QAAI,QAAQ,OAAO,QAAQ,KAAK;AAC9B,YAAM,IAAI,OAAO,QAAQ,WAAW,MAAM;AAC1C,UAAI;AACJ;AACE,YAAI,QAAQ,KAAK,QAAQ,OAAO,CAAC,GAAG;AAClC,kBAAQ,OAAO,CAAC,WAAW,CAAC,QAAQA,cAAa,KAAK,CAAC,GAAG,CAAC;AAAA,QAC7D,OAAO;AACL,kBAAQ,SAAS,CAAC,QAAQA,cAAa,KAAK,IAAI,CAAC,GAAG,CAAC,iBAAsBA,cAAa,KAAK,IAAI,CAAC,GAAG,CAAC;AAAA,QACxG;AAAA,MACF;AACA,YAAM,IAAI,OAAO,iBAAiB,SAAS,OAAO,KAAK;AAAA,IACzD;AACA,gBAAY,KAAK,QAAQA,WAAU;AAAA,EACrC;AACA,WAAS,eAAe,OAAOC,OAAM;AACnC,QAAI,OAAO,UAAU,UAAU;AAC7B,YAAM,IAAI,OAAO,qBAAqBA,OAAM,UAAU,KAAK;AAAA,IAC7D;AAAA,EACF;AACA,WAAS,YAAY,OAAO,QAAQ,MAAM;AACxC,QAAI,KAAK,MAAM,KAAK,MAAM,OAAO;AAC/B,qBAAe,OAAO,IAAI;AAC1B,YAAM,IAAI,OAAO,iBAAiB,UAAU,cAAc,KAAK;AAAA,IACjE;AACA,QAAI,SAAS,GAAG;AACd,YAAM,IAAI,OAAO,yBAAyB;AAAA,IAC5C;AACA,UAAM,IAAI,OAAO,iBAAiB,UAAU,MAAM,CAAC,WAAW,MAAM,IAAI,KAAK;AAAA,EAC/E;AAKA,QAAM,oBAAoB;AAC1B,WAAS,YAAY,KAAK;AAExB,UAAM,IAAI,MAAM,GAAG,EAAE,CAAC;AAEtB,UAAM,IAAI,KAAK,EAAE,QAAQ,mBAAmB,EAAE;AAE9C,QAAI,IAAI,SAAS,EAAG,QAAO;AAE3B,WAAO,IAAI,SAAS,MAAM,GAAG;AAC3B,YAAM,MAAM;AAAA,IACd;AACA,WAAO;AAAA,EACT;AACA,WAAS,YAAY,QAAQ,OAAO;AAClC,YAAQ,SAAS;AACjB,QAAI;AACJ,UAAM,SAAS,OAAO;AACtB,QAAI,gBAAgB;AACpB,UAAM,QAAQ,CAAC;AACf,aAAS,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC/B,kBAAY,OAAO,WAAW,CAAC;AAG/B,UAAI,YAAY,SAAS,YAAY,OAAO;AAE1C,YAAI,CAAC,eAAe;AAElB,cAAI,YAAY,OAAO;AAErB,iBAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAK,KAAK,GAAG;AAC/C;AAAA,UACF,WAAW,IAAI,MAAM,QAAQ;AAE3B,iBAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAK,KAAK,GAAG;AAC/C;AAAA,UACF;AAGA,0BAAgB;AAChB;AAAA,QACF;AAGA,YAAI,YAAY,OAAO;AACrB,eAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAK,KAAK,GAAG;AAC/C,0BAAgB;AAChB;AAAA,QACF;AAGA,qBAAa,gBAAgB,SAAS,KAAK,YAAY,SAAS;AAAA,MAClE,WAAW,eAAe;AAExB,aAAK,SAAS,KAAK,GAAI,OAAM,KAAK,KAAK,KAAK,GAAG;AAAA,MACjD;AACA,sBAAgB;AAGhB,UAAI,YAAY,KAAK;AACnB,aAAK,SAAS,KAAK,EAAG;AACtB,cAAM,KAAK,SAAS;AAAA,MACtB,WAAW,YAAY,MAAM;AAC3B,aAAK,SAAS,KAAK,EAAG;AACtB,cAAM,KAAK,aAAa,IAAI,KAAK,YAAY,KAAK,GAAG;AAAA,MACvD,WAAW,YAAY,OAAO;AAC5B,aAAK,SAAS,KAAK,EAAG;AACtB,cAAM,KAAK,aAAa,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,YAAY,KAAK,GAAG;AAAA,MACnF,WAAW,YAAY,SAAS;AAC9B,aAAK,SAAS,KAAK,EAAG;AACtB,cAAM,KAAK,aAAa,KAAK,KAAK,aAAa,KAAK,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,YAAY,KAAK,GAAG;AAAA,MAC/G,OAAO;AACL,cAAM,IAAI,MAAM,oBAAoB;AAAA,MACtC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAa,KAAK;AACzB,UAAM,YAAY,CAAC;AACnB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,GAAG;AAEnC,gBAAU,KAAK,IAAI,WAAW,CAAC,IAAI,GAAG;AAAA,IACxC;AACA,WAAO;AAAA,EACT;AACA,WAAS,eAAe,KAAK,OAAO;AAClC,QAAI,GAAG,IAAI;AACX,UAAM,YAAY,CAAC;AACnB,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,GAAG;AACnC,WAAK,SAAS,KAAK,EAAG;AACtB,UAAI,IAAI,WAAW,CAAC;AACpB,WAAK,KAAK;AACV,WAAK,IAAI;AACT,gBAAU,KAAK,EAAE;AACjB,gBAAU,KAAK,EAAE;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AACA,WAAS,cAAc,KAAK;AAC1B,WAAO,OAAO,YAAY,YAAY,GAAG,CAAC;AAAA,EAC5C;AACA,WAAS,WAAW,KAAK,KAAK,QAAQ,QAAQ;AAC5C,QAAI;AACJ,SAAK,IAAI,GAAG,IAAI,QAAQ,EAAE,GAAG;AAC3B,UAAI,IAAI,UAAU,IAAI,UAAU,KAAK,IAAI,OAAQ;AACjD,UAAI,IAAI,MAAM,IAAI,IAAI,CAAC;AAAA,IACzB;AACA,WAAO;AAAA,EACT;AAKA,WAAS,WAAW,KAAK,MAAM;AAC7B,WAAO,eAAe,QAAQ,OAAO,QAAQ,IAAI,eAAe,QAAQ,IAAI,YAAY,QAAQ,QAAQ,IAAI,YAAY,SAAS,KAAK;AAAA,EACxI;AACA,WAAS,YAAY,KAAK;AAExB,WAAO,QAAQ;AAAA,EACjB;AAIA,QAAM,uBAAsB,WAAY;AACtC,UAAM,WAAW;AACjB,UAAM,QAAQ,IAAI,MAAM,GAAG;AAC3B,aAAS,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AAC3B,YAAM,MAAM,IAAI;AAChB,eAAS,IAAI,GAAG,IAAI,IAAI,EAAE,GAAG;AAC3B,cAAM,MAAM,CAAC,IAAI,SAAS,CAAC,IAAI,SAAS,CAAC;AAAA,MAC3C;AAAA,IACF;AACA,WAAO;AAAA,EACT,GAAE;AAGF,WAAS,mBAAmB,IAAI;AAC9B,WAAO,OAAO,WAAW,cAAc,yBAAyB;AAAA,EAClE;AACA,WAAS,yBAAyB;AAChC,UAAM,IAAI,MAAM,sBAAsB;AAAA,EACxC;AACA,SAAO;AACT;;;AC93DA,IAAMC,WAAU,IAAI;AACpBA,SAAQ,QAAQ;AAAGA,SAAQ,YAAY;AAAGA,SAAQ,mBAAmB;AAAGA,SAAQ,YAAY;AAE5F,IAAIC,UAASD,SAAQ;AACrB,IAAI,oBAAoBA,SAAQ;AAChC,IAAI,aAAaA,SAAQ;;;ACsGzB,IAAM,YAAY,IAAI,IAAI,wBAAwB;;;ACrG5C,SAAU,eAAY;AAC1B,MAAI,OAAO;AACX,WAAS,IAAI,GAAG,IAAI,IAAI,KAAK;AAE3B,UAAM,eAAe,KAAK,MAAM,KAAK,OAAM,IAAK,EAAE;AAElD,QAAI,MAAM,IAAI;AACZ,cAAQ;IACV,WAAW,MAAM,IAAI;AAEnB,eAAU,eAAe,IAAO,GAAK,SAAS,EAAE;IAClD,OAAO;AAEL,cAAQ,aAAa,SAAS,EAAE;IAClC;AAEA,QAAI,MAAM,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,IAAI;AAC/C,cAAQ;IACV;EACF;AACA,SAAO;AACT;;;ACfA,IAAM,eACJ,OAAO,YAAY,QAAQ,eAAe,aACtC,WAAW,OAAO,WAAW,KAAK,WAAW,MAAM,IACnD;;;ACKA,SAAU,uBAAuBE,OAAY;AACjD,SAAO,WAAW,SAAS,MAAMA,KAAI;AACvC;AAeO,IAAM,YAAY,OAAO,WAAW,eAAe,OAAO,OAAO,aAAa;AAK9E,IAAM,cACX,OAAO,SAAS,YAChB,mBAAmB,QACnB,OAAO,KAAK,kBAAkB,eAC7B,KAAK,aAAa,SAAS,gCAC1B,KAAK,aAAa,SAAS,8BAC3B,KAAK,aAAa,SAAS;;;AC7BzB,IAAO,aAAP,cAA0B,MAAK;EACnC,YAAY,SAAgB;AAC1B,UAAM,OAAO;AACb,SAAK,OAAO;EACd;;;;ACLI,SAAU,uBACd,cAIA,SAAuC;AAEvC,QAAM,EAAE,oBAAoB,aAAa,cAAa,IAAK,WAAW,CAAA;AACtE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACrC,aAAS,gBAAa;AACpB,aAAO,IAAI,WAAW,iBAAiB,4BAA4B,CAAC;IACtE;AACA,aAAS,kBAAe;AACtB,mBAAa,oBAAoB,SAAS,OAAO;IACnD;AACA,aAAS,UAAO;AACd,2BAAoB;AACpB,sBAAe;AACf,oBAAa;IACf;AACA,QAAI,aAAa,SAAS;AACxB,aAAO,cAAa;IACtB;AACA,QAAI;AACF,mBACE,CAAC,MAAK;AACJ,wBAAe;AACf,gBAAQ,CAAC;MACX,GACA,CAAC,MAAK;AACJ,wBAAe;AACf,eAAO,CAAC;MACV,CAAC;IAEL,SAAS,KAAK;AACZ,aAAO,GAAG;IACZ;AACA,iBAAa,iBAAiB,SAAS,OAAO;EAChD,CAAC;AACH;;;ACpDA,IAAM,uBAAuB;AAavB,SAAU,MAAM,UAAkB,SAAsB;AAC5D,MAAI;AACJ,QAAM,EAAE,aAAa,cAAa,IAAK,WAAW,CAAA;AAClD,SAAO,uBACL,CAAC,YAAW;AACV,YAAQ,WAAW,SAAS,QAAQ;EACtC,GACA;IACE,oBAAoB,MAAM,aAAa,KAAK;IAC5C;IACA,eAAe,iBAAiB;GACjC;AAEL;;;ACjCA,IAAIC,aAAY,CAAC;AAAjB,IACEC,YAAW;AACb,SAASC,OAAM;AACb,MAAID,UAAU,QAAOD;AACrB,EAAAC,YAAW;AACX,MAAI,IAAI,OAAO,YAAY,WAAW,UAAU;AAChD,MAAI,eAAe,KAAK,OAAO,EAAE,UAAU,aAAa,EAAE,QAAQ,SAASE,cAAa,QAAQ,UAAU,MAAM;AAC9G,WAAO,SAAS,UAAU,MAAM,KAAK,QAAQ,UAAU,IAAI;AAAA,EAC7D;AACA,MAAI;AACJ,MAAI,KAAK,OAAO,EAAE,YAAY,YAAY;AACxC,qBAAiB,EAAE;AAAA,EACrB,WAAW,OAAO,uBAAuB;AACvC,qBAAiB,SAASC,gBAAe,QAAQ;AAC/C,aAAO,OAAO,oBAAoB,MAAM,EAAE,OAAO,OAAO,sBAAsB,MAAM,CAAC;AAAA,IACvF;AAAA,EACF,OAAO;AACL,qBAAiB,SAASA,gBAAe,QAAQ;AAC/C,aAAO,OAAO,oBAAoB,MAAM;AAAA,IAC1C;AAAA,EACF;AACA,WAAS,mBAAmB,SAAS;AACnC,QAAI,WAAW,QAAQ,KAAM,SAAQ,KAAK,OAAO;AAAA,EACnD;AACA,MAAI,cAAc,OAAO,SAAS,SAASC,aAAY,OAAO;AAC5D,WAAO,UAAU;AAAA,EACnB;AACA,WAASC,gBAAe;AACtB,IAAAA,cAAa,KAAK,KAAK,IAAI;AAAA,EAC7B;AACA,EAAAN,aAAYM;AACZ,EAAAN,WAAU,OAAOO;AAGjB,EAAAD,cAAa,eAAeA;AAC5B,EAAAA,cAAa,UAAU,UAAU;AACjC,EAAAA,cAAa,UAAU,eAAe;AACtC,EAAAA,cAAa,UAAU,gBAAgB;AAIvC,MAAIE,uBAAsB;AAC1B,WAAS,cAAc,UAAU;AAC/B,QAAI,OAAO,aAAa,YAAY;AAClC,YAAM,IAAI,UAAU,qEAAuE,OAAO,QAAQ;AAAA,IAC5G;AAAA,EACF;AACA,SAAO,eAAeF,eAAc,uBAAuB;AAAA,IACzD,YAAY;AAAA,IACZ,KAAK,WAAY;AACf,aAAOE;AAAA,IACT;AAAA,IACA,KAAK,SAAU,KAAK;AAClB,UAAI,OAAO,QAAQ,YAAY,MAAM,KAAK,YAAY,GAAG,GAAG;AAC1D,cAAM,IAAI,WAAW,oGAAsG,MAAM,GAAG;AAAA,MACtI;AACA,MAAAA,uBAAsB;AAAA,IACxB;AAAA,EACF,CAAC;AACD,EAAAF,cAAa,OAAO,WAAY;AAC9B,QAAI,KAAK,YAAY,UAAa,KAAK,YAAY,OAAO,eAAe,IAAI,EAAE,SAAS;AACtF,WAAK,UAAU,uBAAO,OAAO,IAAI;AACjC,WAAK,eAAe;AAAA,IACtB;AACA,SAAK,gBAAgB,KAAK,iBAAiB;AAAA,EAC7C;AAIA,EAAAA,cAAa,UAAU,kBAAkB,SAAS,gBAAgB,GAAG;AACnE,QAAI,OAAO,MAAM,YAAY,IAAI,KAAK,YAAY,CAAC,GAAG;AACpD,YAAM,IAAI,WAAW,kFAAoF,IAAI,GAAG;AAAA,IAClH;AACA,SAAK,gBAAgB;AACrB,WAAO;AAAA,EACT;AACA,WAAS,iBAAiB,MAAM;AAC9B,QAAI,KAAK,kBAAkB,OAAW,QAAOA,cAAa;AAC1D,WAAO,KAAK;AAAA,EACd;AACA,EAAAA,cAAa,UAAU,kBAAkB,SAAS,kBAAkB;AAClE,WAAO,iBAAiB,IAAI;AAAA,EAC9B;AACA,EAAAA,cAAa,UAAU,OAAO,SAAS,KAAK,MAAM;AAChD,QAAI,OAAO,CAAC;AACZ,aAAS,IAAI,GAAG,IAAI,UAAU,QAAQ,IAAK,MAAK,KAAK,UAAU,CAAC,CAAC;AACjE,QAAI,UAAU,SAAS;AACvB,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,OAAW,WAAU,WAAW,OAAO,UAAU;AAAA,aAAmB,CAAC,QAAS,QAAO;AAGpG,QAAI,SAAS;AACX,UAAI;AACJ,UAAI,KAAK,SAAS,EAAG,MAAK,KAAK,CAAC;AAChC,UAAI,cAAc,OAAO;AAGvB,cAAM;AAAA,MACR;AAEA,UAAI,MAAM,IAAI,MAAM,sBAAsB,KAAK,OAAO,GAAG,UAAU,MAAM,GAAG;AAC5E,UAAI,UAAU;AACd,YAAM;AAAA,IACR;AACA,QAAI,UAAU,OAAO,IAAI;AACzB,QAAI,YAAY,OAAW,QAAO;AAClC,QAAI,OAAO,YAAY,YAAY;AACjC,mBAAa,SAAS,MAAM,IAAI;AAAA,IAClC,OAAO;AACL,UAAI,MAAM,QAAQ;AAClB,UAAI,YAAY,WAAW,SAAS,GAAG;AACvC,eAAS,IAAI,GAAG,IAAI,KAAK,EAAE,EAAG,cAAa,UAAU,CAAC,GAAG,MAAM,IAAI;AAAA,IACrE;AACA,WAAO;AAAA,EACT;AACA,WAAS,aAAa,QAAQ,MAAM,UAAU,SAAS;AACrD,QAAI;AACJ,QAAI;AACJ,QAAI;AACJ,kBAAc,QAAQ;AACtB,aAAS,OAAO;AAChB,QAAI,WAAW,QAAW;AACxB,eAAS,OAAO,UAAU,uBAAO,OAAO,IAAI;AAC5C,aAAO,eAAe;AAAA,IACxB,OAAO;AAGL,UAAI,OAAO,gBAAgB,QAAW;AACpC,eAAO,KAAK,eAAe,MAAM,SAAS,WAAW,SAAS,WAAW,QAAQ;AAIjF,iBAAS,OAAO;AAAA,MAClB;AACA,iBAAW,OAAO,IAAI;AAAA,IACxB;AACA,QAAI,aAAa,QAAW;AAE1B,iBAAW,OAAO,IAAI,IAAI;AAC1B,QAAE,OAAO;AAAA,IACX,OAAO;AACL,UAAI,OAAO,aAAa,YAAY;AAElC,mBAAW,OAAO,IAAI,IAAI,UAAU,CAAC,UAAU,QAAQ,IAAI,CAAC,UAAU,QAAQ;AAAA,MAEhF,WAAW,SAAS;AAClB,iBAAS,QAAQ,QAAQ;AAAA,MAC3B,OAAO;AACL,iBAAS,KAAK,QAAQ;AAAA,MACxB;AAGA,UAAI,iBAAiB,MAAM;AAC3B,UAAI,IAAI,KAAK,SAAS,SAAS,KAAK,CAAC,SAAS,QAAQ;AACpD,iBAAS,SAAS;AAGlB,YAAI,IAAI,IAAI,MAAM,iDAAiD,SAAS,SAAS,MAAM,OAAO,IAAI,IAAI,mEAA6E;AACvL,UAAE,OAAO;AACT,UAAE,UAAU;AACZ,UAAE,OAAO;AACT,UAAE,QAAQ,SAAS;AACnB,2BAAmB,CAAC;AAAA,MACtB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,EAAAA,cAAa,UAAU,cAAc,SAAS,YAAY,MAAM,UAAU;AACxE,WAAO,aAAa,MAAM,MAAM,UAAU,KAAK;AAAA,EACjD;AACA,EAAAA,cAAa,UAAU,KAAKA,cAAa,UAAU;AACnD,EAAAA,cAAa,UAAU,kBAAkB,SAAS,gBAAgB,MAAM,UAAU;AAChF,WAAO,aAAa,MAAM,MAAM,UAAU,IAAI;AAAA,EAChD;AACA,WAAS,cAAc;AACrB,QAAI,CAAC,KAAK,OAAO;AACf,WAAK,OAAO,eAAe,KAAK,MAAM,KAAK,MAAM;AACjD,WAAK,QAAQ;AACb,UAAI,UAAU,WAAW,EAAG,QAAO,KAAK,SAAS,KAAK,KAAK,MAAM;AACjE,aAAO,KAAK,SAAS,MAAM,KAAK,QAAQ,SAAS;AAAA,IACnD;AAAA,EACF;AACA,WAAS,UAAU,QAAQ,MAAM,UAAU;AACzC,QAAI,QAAQ;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,UAAU,YAAY,KAAK,KAAK;AACpC,YAAQ,WAAW;AACnB,UAAM,SAAS;AACf,WAAO;AAAA,EACT;AACA,EAAAA,cAAa,UAAU,OAAO,SAASC,MAAK,MAAM,UAAU;AAC1D,kBAAc,QAAQ;AACtB,SAAK,GAAG,MAAM,UAAU,MAAM,MAAM,QAAQ,CAAC;AAC7C,WAAO;AAAA,EACT;AACA,EAAAD,cAAa,UAAU,sBAAsB,SAAS,oBAAoB,MAAM,UAAU;AACxF,kBAAc,QAAQ;AACtB,SAAK,gBAAgB,MAAM,UAAU,MAAM,MAAM,QAAQ,CAAC;AAC1D,WAAO;AAAA,EACT;AAGA,EAAAA,cAAa,UAAU,iBAAiB,SAAS,eAAe,MAAM,UAAU;AAC9E,QAAI,MAAM,QAAQ,UAAU,GAAG;AAC/B,kBAAc,QAAQ;AACtB,aAAS,KAAK;AACd,QAAI,WAAW,OAAW,QAAO;AACjC,WAAO,OAAO,IAAI;AAClB,QAAI,SAAS,OAAW,QAAO;AAC/B,QAAI,SAAS,YAAY,KAAK,aAAa,UAAU;AACnD,UAAI,EAAE,KAAK,iBAAiB,EAAG,MAAK,UAAU,uBAAO,OAAO,IAAI;AAAA,WAAO;AACrE,eAAO,OAAO,IAAI;AAClB,YAAI,OAAO,eAAgB,MAAK,KAAK,kBAAkB,MAAM,KAAK,YAAY,QAAQ;AAAA,MACxF;AAAA,IACF,WAAW,OAAO,SAAS,YAAY;AACrC,iBAAW;AACX,WAAK,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK;AACrC,YAAI,KAAK,CAAC,MAAM,YAAY,KAAK,CAAC,EAAE,aAAa,UAAU;AACzD,6BAAmB,KAAK,CAAC,EAAE;AAC3B,qBAAW;AACX;AAAA,QACF;AAAA,MACF;AACA,UAAI,WAAW,EAAG,QAAO;AACzB,UAAI,aAAa,EAAG,MAAK,MAAM;AAAA,WAAO;AACpC,kBAAU,MAAM,QAAQ;AAAA,MAC1B;AACA,UAAI,KAAK,WAAW,EAAG,QAAO,IAAI,IAAI,KAAK,CAAC;AAC5C,UAAI,OAAO,mBAAmB,OAAW,MAAK,KAAK,kBAAkB,MAAM,oBAAoB,QAAQ;AAAA,IACzG;AACA,WAAO;AAAA,EACT;AACA,EAAAA,cAAa,UAAU,MAAMA,cAAa,UAAU;AACpD,EAAAA,cAAa,UAAU,qBAAqB,SAAS,mBAAmB,MAAM;AAC5E,QAAI,WAAW,QAAQ;AACvB,aAAS,KAAK;AACd,QAAI,WAAW,OAAW,QAAO;AAGjC,QAAI,OAAO,mBAAmB,QAAW;AACvC,UAAI,UAAU,WAAW,GAAG;AAC1B,aAAK,UAAU,uBAAO,OAAO,IAAI;AACjC,aAAK,eAAe;AAAA,MACtB,WAAW,OAAO,IAAI,MAAM,QAAW;AACrC,YAAI,EAAE,KAAK,iBAAiB,EAAG,MAAK,UAAU,uBAAO,OAAO,IAAI;AAAA,YAAO,QAAO,OAAO,IAAI;AAAA,MAC3F;AACA,aAAO;AAAA,IACT;AAGA,QAAI,UAAU,WAAW,GAAG;AAC1B,UAAI,OAAO,OAAO,KAAK,MAAM;AAC7B,UAAI;AACJ,WAAK,IAAI,GAAG,IAAI,KAAK,QAAQ,EAAE,GAAG;AAChC,cAAM,KAAK,CAAC;AACZ,YAAI,QAAQ,iBAAkB;AAC9B,aAAK,mBAAmB,GAAG;AAAA,MAC7B;AACA,WAAK,mBAAmB,gBAAgB;AACxC,WAAK,UAAU,uBAAO,OAAO,IAAI;AACjC,WAAK,eAAe;AACpB,aAAO;AAAA,IACT;AACA,gBAAY,OAAO,IAAI;AACvB,QAAI,OAAO,cAAc,YAAY;AACnC,WAAK,eAAe,MAAM,SAAS;AAAA,IACrC,WAAW,cAAc,QAAW;AAElC,WAAK,IAAI,UAAU,SAAS,GAAG,KAAK,GAAG,KAAK;AAC1C,aAAK,eAAe,MAAM,UAAU,CAAC,CAAC;AAAA,MACxC;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,WAAS,WAAW,QAAQ,MAAM,QAAQ;AACxC,QAAI,SAAS,OAAO;AACpB,QAAI,WAAW,OAAW,QAAO,CAAC;AAClC,QAAI,aAAa,OAAO,IAAI;AAC5B,QAAI,eAAe,OAAW,QAAO,CAAC;AACtC,QAAI,OAAO,eAAe,WAAY,QAAO,SAAS,CAAC,WAAW,YAAY,UAAU,IAAI,CAAC,UAAU;AACvG,WAAO,SAAS,gBAAgB,UAAU,IAAI,WAAW,YAAY,WAAW,MAAM;AAAA,EACxF;AACA,EAAAA,cAAa,UAAU,YAAY,SAAS,UAAU,MAAM;AAC1D,WAAO,WAAW,MAAM,MAAM,IAAI;AAAA,EACpC;AACA,EAAAA,cAAa,UAAU,eAAe,SAAS,aAAa,MAAM;AAChE,WAAO,WAAW,MAAM,MAAM,KAAK;AAAA,EACrC;AACA,EAAAA,cAAa,gBAAgB,SAAU,SAAS,MAAM;AACpD,QAAI,OAAO,QAAQ,kBAAkB,YAAY;AAC/C,aAAO,QAAQ,cAAc,IAAI;AAAA,IACnC,OAAO;AACL,aAAOG,eAAc,KAAK,SAAS,IAAI;AAAA,IACzC;AAAA,EACF;AACA,EAAAH,cAAa,UAAU,gBAAgBG;AACvC,WAASA,eAAc,MAAM;AAC3B,QAAI,SAAS,KAAK;AAClB,QAAI,WAAW,QAAW;AACxB,UAAI,aAAa,OAAO,IAAI;AAC5B,UAAI,OAAO,eAAe,YAAY;AACpC,eAAO;AAAA,MACT,WAAW,eAAe,QAAW;AACnC,eAAO,WAAW;AAAA,MACpB;AAAA,IACF;AACA,WAAO;AAAA,EACT;AACA,EAAAH,cAAa,UAAU,aAAa,SAAS,aAAa;AACxD,WAAO,KAAK,eAAe,IAAI,eAAe,KAAK,OAAO,IAAI,CAAC;AAAA,EACjE;AACA,WAAS,WAAW,KAAK,GAAG;AAC1B,QAAI,OAAO,IAAI,MAAM,CAAC;AACtB,aAAS,IAAI,GAAG,IAAI,GAAG,EAAE,EAAG,MAAK,CAAC,IAAI,IAAI,CAAC;AAC3C,WAAO;AAAA,EACT;AACA,WAAS,UAAU,MAAM,OAAO;AAC9B,WAAO,QAAQ,IAAI,KAAK,QAAQ,QAAS,MAAK,KAAK,IAAI,KAAK,QAAQ,CAAC;AACrE,SAAK,IAAI;AAAA,EACX;AACA,WAAS,gBAAgB,KAAK;AAC5B,QAAI,MAAM,IAAI,MAAM,IAAI,MAAM;AAC9B,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,EAAE,GAAG;AACnC,UAAI,CAAC,IAAI,IAAI,CAAC,EAAE,YAAY,IAAI,CAAC;AAAA,IACnC;AACA,WAAO;AAAA,EACT;AACA,WAASC,MAAK,SAASG,OAAM;AAC3B,WAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAC5C,eAAS,cAAc,KAAK;AAC1B,gBAAQ,eAAeA,OAAM,QAAQ;AACrC,eAAO,GAAG;AAAA,MACZ;AACA,eAAS,WAAW;AAClB,YAAI,OAAO,QAAQ,mBAAmB,YAAY;AAChD,kBAAQ,eAAe,SAAS,aAAa;AAAA,QAC/C;AACA,gBAAQ,CAAC,EAAE,MAAM,KAAK,SAAS,CAAC;AAAA,MAClC;AACA,qCAA+B,SAASA,OAAM,UAAU;AAAA,QACtD,MAAM;AAAA,MACR,CAAC;AACD,UAAIA,UAAS,SAAS;AACpB,sCAA8B,SAAS,eAAe;AAAA,UACpD,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF,CAAC;AAAA,EACH;AACA,WAAS,8BAA8B,SAAS,SAAS,OAAO;AAC9D,QAAI,OAAO,QAAQ,OAAO,YAAY;AACpC,qCAA+B,SAAS,SAAS,SAAS,KAAK;AAAA,IACjE;AAAA,EACF;AACA,WAAS,+BAA+B,SAASA,OAAM,UAAU,OAAO;AACtE,QAAI,OAAO,QAAQ,OAAO,YAAY;AACpC,UAAI,MAAM,MAAM;AACd,gBAAQ,KAAKA,OAAM,QAAQ;AAAA,MAC7B,OAAO;AACL,gBAAQ,GAAGA,OAAM,QAAQ;AAAA,MAC3B;AAAA,IACF,WAAW,OAAO,QAAQ,qBAAqB,YAAY;AAGzD,cAAQ,iBAAiBA,OAAM,SAAS,aAAa,KAAK;AAGxD,YAAI,MAAM,MAAM;AACd,kBAAQ,oBAAoBA,OAAM,YAAY;AAAA,QAChD;AACA,iBAAS,GAAG;AAAA,MACd,CAAC;AAAA,IACH,OAAO;AACL,YAAM,IAAI,UAAU,wEAA0E,OAAO,OAAO;AAAA,IAC9G;AAAA,EACF;AACA,SAAOV;AACT;AAEA,IAAMW,WAAUT,KAAI;AACpBS,SAAQ,MAAM;AAGdA,SAAQ,OAAO,SAAU,SAAS,OAAO;AACvC,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,aAAS,iBAAiB,MAAM;AAC9B,UAAI,kBAAkB,QAAW;AAC/B,gBAAQ,eAAe,SAAS,aAAa;AAAA,MAC/C;AACA,cAAQ,IAAI;AAAA,IACd;AACA,QAAI;AACJ,QAAI,UAAU,SAAS;AAErB,sBAAgB,CAAC,QAAQ;AACvB,gBAAQ,eAAe,MAAM,aAAa;AAC1C,eAAO,GAAG;AAAA,MACZ;AAEA,cAAQ,KAAK,SAAS,aAAa;AAAA,IACrC;AAEA,YAAQ,KAAK,OAAO,aAAa;AAAA,EACnC,CAAC;AACH;AACAA,SAAQ,KAAK,SAAU,SAAS,OAAO;AACrC,QAAM,wBAAwB,CAAC;AAC/B,QAAM,qBAAqB,CAAC;AAC5B,MAAI,QAAQ;AACZ,MAAI,WAAW;AAEf,QAAM,WAAW;AAAA,IACf,MAAM,OAAO;AACX,YAAM,QAAQ,sBAAsB,MAAM;AAC1C,UAAI,OAAO;AACT,eAAO,iBAAiB,OAAO,KAAK;AAAA,MACtC;AAEA,UAAI,OAAO;AACT,cAAM,IAAI,QAAQ,OAAO,KAAK;AAC9B,gBAAQ;AACR,eAAO;AAAA,MACT;AAEA,UAAI,UAAU;AACZ,eAAO,iBAAiB,QAAW,IAAI;AAAA,MACzC;AAEA,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW,mBAAmB,KAAK,EAAE,SAAS,OAAO,CAAC,CAAC;AAAA,IACtF;AAAA,IACA,MAAM,SAAS;AACb,cAAQ,eAAe,OAAO,YAAY;AAC1C,cAAQ,eAAe,SAAS,YAAY;AAC5C,iBAAW;AAEX,iBAAW,WAAW,oBAAoB;AACxC,gBAAQ,QAAQ,iBAAiB,QAAW,IAAI,CAAC;AAAA,MACnD;AAEA,aAAO,iBAAiB,QAAW,IAAI;AAAA,IACzC;AAAA,IACA,MAAM,KAAK;AACT,cAAQ;AACR,cAAQ,eAAe,OAAO,YAAY;AAC1C,cAAQ,eAAe,SAAS,YAAY;AAAA,IAC9C;AAAA,IACA,CAAC,OAAO,aAAa,IAAI;AACvB,aAAO;AAAA,IACT;AAAA,EACF;AAEA,UAAQ,GAAG,OAAO,YAAY;AAC9B,UAAQ,GAAG,SAAS,YAAY;AAEhC,SAAO;AAEP,WAAS,gBAAgB,MAAM;AAC7B,UAAM,UAAU,mBAAmB,MAAM;AACzC,QAAI,SAAS;AACX,cAAQ,QAAQ,iBAAiB,MAAM,KAAK,CAAC;AAAA,IAC/C,OAAO;AACL,4BAAsB,KAAK,IAAI;AAAA,IACjC;AAAA,EACF;AAEA,WAAS,aAAa,KAAK;AACzB,eAAW;AACX,UAAM,UAAU,mBAAmB,MAAM;AACzC,QAAI,SAAS;AACX,cAAQ,OAAO,GAAG;AAAA,IACpB,OAAO;AACL,cAAQ;AAAA,IACV;AACA,aAAS,OAAO;AAAA,EAClB;AACF;AACA,IAAM;AAAA,EACJ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,IAAIA;;;ACheE,IAAO,mBAAP,cAAgC,MAAK;;;;;;EAkBzC,YAAY,SAAiB,SAAgC;AAC3D,UAAM,OAAO;AAfR;;;;AAIA;;;;AAIA;;;;AAQL,SAAK,OAAO;AACZ,SAAK,QAAQ,QAAQ;AACrB,SAAK,cAAc,QAAQ;EAC7B;;AA4BI,IAAO,kBAAP,cAA+B,MAAK;EAUxC,YAAY,SAAiB,SAA+B;AAC1D,UAAM,OAAO;AAPR;;;;AAIA;;;;AAIL,SAAK,OAAO;AACZ,SAAK,eAAe,QAAQ;AAC5B,SAAK,cAAc,QAAQ;EAC7B;;;;ACvEI,SAAU,OAAO,MAAW;AAChC,MAAI,KAAK,SAAS,GAAG;AACnB,UAAM,WAAW,OAAO,KAAK,CAAC,CAAC;AAC/B,QAAI,SAAS,SAAS,QAAQ,GAAG;AAC/B,cAAQ,MAAM,GAAG,IAAI;IACvB,WAAW,SAAS,SAAS,UAAU,GAAG;AACxC,cAAQ,KAAK,GAAG,IAAI;IACtB,WAAW,SAAS,SAAS,OAAO,GAAG;AACrC,cAAQ,KAAK,GAAG,IAAI;IACtB,WAAW,SAAS,SAAS,UAAU,GAAG;AACxC,cAAQ,MAAM,GAAG,IAAI;IACvB,OAAO;AACL,cAAQ,MAAM,GAAG,IAAI;IACvB;EACF;AACF;;;ACkDA,IAAM,mBAAmB,uBAAuB,OAAO;AAEvD,IAAI;AACJ,IAAI,oBAA8B,CAAA;AAClC,IAAI,oBAA8B,CAAA;AAClC,IAAM,YAAwB,CAAA;AAE9B,IAAI,kBAAkB;AACpB,SAAO,gBAAgB;AACzB;AAEA,IAAM,WAAkB,OAAO,OAC7B,CAAC,cAA+B;AAC9B,SAAO,eAAe,SAAS;AACjC,GACA;EACE;EACA;EACA;EACA;CACD;AAGH,SAAS,OAAO,YAAkB;AAChC,kBAAgB;AAChB,sBAAoB,CAAA;AACpB,sBAAoB,CAAA;AACpB,QAAM,gBAAgB,WAAW,MAAM,GAAG,EAAE,IAAI,CAAC,OAAO,GAAG,KAAI,CAAE;AACjE,aAAW,MAAM,eAAe;AAC9B,QAAI,GAAG,WAAW,GAAG,GAAG;AACtB,wBAAkB,KAAK,GAAG,UAAU,CAAC,CAAC;IACxC,OAAO;AACL,wBAAkB,KAAK,EAAE;IAC3B;EACF;AACA,aAAW,YAAY,WAAW;AAChC,aAAS,UAAU,QAAQ,SAAS,SAAS;EAC/C;AACF;AAEA,SAAS,QAAQ,WAAiB;AAChC,MAAI,UAAU,SAAS,GAAG,GAAG;AAC3B,WAAO;EACT;AAEA,aAAW,WAAW,mBAAmB;AACvC,QAAI,iBAAiB,WAAW,OAAO,GAAG;AACxC,aAAO;IACT;EACF;AACA,aAAW,oBAAoB,mBAAmB;AAChD,QAAI,iBAAiB,WAAW,gBAAgB,GAAG;AACjD,aAAO;IACT;EACF;AACA,SAAO;AACT;AAOA,SAAS,iBAAiB,WAAmB,gBAAsB;AAEjE,MAAI,eAAe,QAAQ,GAAG,MAAM,IAAI;AACtC,WAAO,cAAc;EACvB;AAEA,MAAI,UAAU;AAGd,MAAI,eAAe,QAAQ,IAAI,MAAM,IAAI;AACvC,UAAM,eAAe,CAAA;AACrB,QAAI,gBAAgB;AACpB,eAAW,aAAa,gBAAgB;AACtC,UAAI,cAAc,OAAO,kBAAkB,KAAK;AAC9C;MACF,OAAO;AACL,wBAAgB;AAChB,qBAAa,KAAK,SAAS;MAC7B;IACF;AACA,cAAU,aAAa,KAAK,EAAE;EAChC;AAEA,MAAI,iBAAiB;AACrB,MAAI,eAAe;AACnB,QAAM,gBAAgB,QAAQ;AAC9B,QAAM,kBAAkB,UAAU;AAClC,MAAI,eAAe;AACnB,MAAI,wBAAwB;AAE5B,SAAO,iBAAiB,mBAAmB,eAAe,eAAe;AACvE,QAAI,QAAQ,YAAY,MAAM,KAAK;AACjC,qBAAe;AACf;AACA,UAAI,iBAAiB,eAAe;AAElC,eAAO;MACT;AAEA,aAAO,UAAU,cAAc,MAAM,QAAQ,YAAY,GAAG;AAC1D;AAEA,YAAI,mBAAmB,iBAAiB;AACtC,iBAAO;QACT;MACF;AAKA,8BAAwB;AACxB;AACA;AACA;IACF,WAAW,QAAQ,YAAY,MAAM,UAAU,cAAc,GAAG;AAE9D;AACA;IACF,WAAW,gBAAgB,GAAG;AAG5B,qBAAe,eAAe;AAC9B,uBAAiB,wBAAwB;AAEzC,UAAI,mBAAmB,iBAAiB;AACtC,eAAO;MACT;AAEA,aAAO,UAAU,cAAc,MAAM,QAAQ,YAAY,GAAG;AAC1D;AACA,YAAI,mBAAmB,iBAAiB;AACtC,iBAAO;QACT;MACF;AACA,8BAAwB;AACxB;AACA;AACA;IACF,OAAO;AACL,aAAO;IACT;EACF;AAEA,QAAM,gBAAgB,mBAAmB,UAAU;AACnD,QAAM,cAAc,iBAAiB,QAAQ;AAG7C,QAAM,mBAAmB,iBAAiB,QAAQ,SAAS,KAAK,QAAQ,YAAY,MAAM;AAC1F,SAAO,kBAAkB,eAAe;AAC1C;AAEA,SAAS,UAAO;AACd,QAAM,SAAS,iBAAiB;AAChC,SAAO,EAAE;AACT,SAAO;AACT;AAEA,SAAS,eAAe,WAAiB;AACvC,QAAM,cAAwB,OAAO,OAAO,OAAO;IACjD,SAAS,QAAQ,SAAS;IAC1B;IACA,KAAK,SAAS;IACd;IACA;GACD;AAED,WAAS,SAAS,MAAW;AAC3B,QAAI,CAAC,YAAY,SAAS;AACxB;IACF;AACA,QAAI,KAAK,SAAS,GAAG;AACnB,WAAK,CAAC,IAAI,GAAG,SAAS,IAAI,KAAK,CAAC,CAAC;IACnC;AACA,gBAAY,IAAI,GAAG,IAAI;EACzB;AAEA,YAAU,KAAK,WAAW;AAE1B,SAAO;AACT;AAEA,SAAS,UAAO;AACd,QAAM,QAAQ,UAAU,QAAQ,IAAI;AACpC,MAAI,SAAS,GAAG;AACd,cAAU,OAAO,OAAO,CAAC;AACzB,WAAO;EACT;AACA,SAAO;AACT;AAEA,SAAS,OAAuB,WAAiB;AAC/C,QAAM,cAAc,eAAe,GAAG,KAAK,SAAS,IAAI,SAAS,EAAE;AACnE,cAAY,MAAM,KAAK;AACvB,SAAO;AACT;AAEA,IAAA,gBAAe;;;ACtKf,IAAM,8BAA8B,CAAC,WAAW,QAAQ,WAAW,OAAO;AAI1E,IAAM,WAAW;EACf,SAAS;EACT,MAAM;EACN,SAAS;EACT,OAAO;;AAGT,SAAS,eACP,QACA,OAAyD;AAEzD,QAAM,MAAM,IAAI,SAAQ;AACtB,WAAO,IAAI,GAAG,IAAI;EACpB;AACF;AAEA,SAAS,0BAA0B,OAAa;AAC9C,SAAO,4BAA4B,SAAS,KAAK;AACnD;AAOM,SAAU,oBAAoB,SAAmC;AACrE,QAAM,oBAAoB,oBAAI,IAAG;AACjC,QAAM,kBAAkB,uBAAuB,QAAQ,kBAAkB;AAEzE,MAAI;AAEJ,QAAM,eAA4C,cAAM,QAAQ,SAAS;AACzE,eAAa,MAAM,IAAI,SAAQ;AAC7B,kBAAM,IAAI,GAAG,IAAI;EACnB;AAEA,WAAS,mBAAmB,OAA+B;AACzD,QAAI,SAAS,CAAC,0BAA0B,KAAK,GAAG;AAC9C,YAAM,IAAI,MACR,sBAAsB,KAAK,yBAAyB,4BAA4B,KAAK,GAAG,CAAC,EAAE;IAE/F;AACA,eAAW;AAEX,UAAMC,qBAAoB,CAAA;AAC1B,eAAWC,WAAU,mBAAmB;AACtC,UAAI,aAAaA,OAAM,GAAG;AACxB,QAAAD,mBAAkB,KAAKC,QAAO,SAAS;MACzC;IACF;AAEA,kBAAM,OAAOD,mBAAkB,KAAK,GAAG,CAAC;EAC1C;AAEA,MAAI,iBAAiB;AAEnB,QAAI,0BAA0B,eAAe,GAAG;AAC9C,yBAAmB,eAAe;IACpC,OAAO;AACL,cAAQ,MACN,GAAG,QAAQ,kBAAkB,8BAA8B,eAAe,iDAAiD,4BAA4B,KACrJ,IAAI,CACL,GAAG;IAER;EACF;AAEA,WAAS,aAAaC,SAA4B;AAChD,WAAO,QAAQ,YAAY,SAASA,QAAO,KAAK,KAAK,SAAS,QAAQ,CAAC;EACzE;AAEA,WAAS,aACP,QACA,OAA8B;AAE9B,UAAMA,UAA+B,OAAO,OAAO,OAAO,OAAO,KAAK,GAAG;MACvE;KACD;AAED,mBAAe,QAAQA,OAAM;AAE7B,QAAI,aAAaA,OAAM,GAAG;AACxB,YAAMD,qBAAoB,cAAM,QAAO;AACvC,oBAAM,OAAOA,qBAAoB,MAAMC,QAAO,SAAS;IACzD;AAEA,sBAAkB,IAAIA,OAAM;AAE5B,WAAOA;EACT;AAEA,WAAS,qBAAkB;AACzB,WAAO;EACT;AAEA,WAAS,0BAA0B,WAAiB;AAClD,UAAM,mBAAgD,aAAa,OAAO,SAAS;AACnF,mBAAe,cAAc,gBAAgB;AAC7C,WAAO;MACL,OAAO,aAAa,kBAAkB,OAAO;MAC7C,SAAS,aAAa,kBAAkB,SAAS;MACjD,MAAM,aAAa,kBAAkB,MAAM;MAC3C,SAAS,aAAa,kBAAkB,SAAS;;EAErD;AAEA,SAAO;IACL,aAAa;IACb,aAAa;IACb,oBAAoB;IACpB,QAAQ;;AAEZ;AAEA,IAAM,UAAU,oBAAoB;EAClC,oBAAoB;EACpB,WAAW;CACZ;AAYM,IAAM,wBAAqD,QAAQ;;;ACrO1E,IAAMC,WAAU,oBAAoB;EAClC,oBAAoB;EACpB,WAAW;CACZ;AAOM,IAAM,cAAiCA,SAAQ;AA2BhD,SAAU,mBAAmB,WAAiB;AAClD,SAAOC,SAAQ,mBAAmB,SAAS;AAC7C;;;ACpCO,IAAM,SAAS,mBAAmB,mBAAmB;;;ACUtD,SAAU,cAAc,OAAa;AAEzC,MAAI,OAAO,UAAU,UAAU;AAC7B,UAAM,IAAI,MAAM,yDAAyD;EAC3E;AAEA,MAAI,CAAC,OAAO;AACV,UAAM,IAAI,MAAM,UAAU;EAC5B;AAEA,QAAM,gBAAgB,KAAK,MAAM,KAAK;AACtC,QAAM,eAAe;AACrB,MAAI;AAEJ,MAAI,aAAa,SAAS,UAAU;AAClC,QAAI,aAAa,UAAU,aAAa;AACtC,sBAAgB,EAAE,GAAG,eAAe,MAAM,YAAW;IACvD,WAAW,aAAa,UAAU,gBAAgB;AAChD,sBAAgB,EAAE,GAAG,eAAe,MAAM,eAAc;IAC1D,OAAO;AAEL,aAAO;IACT;EACF,WAAW,aAAa,SAAS,WAAW;AAC1C,QAAI,aAAa,SAAS,SAAS;AACjC,YAAM,OAAO,aAAa,cAAc,MAAM,cAAc,QAA6B;AACzF,UAAI,SAAS,MAAM;AACjB,eAAO;MACT;AACA,sBAAgB,EAAE,GAAG,eAAe,MAAY,MAAM,YAAW;IACnE,WAAW,aAAa,SAAS,UAAU;AACzC,YAAM,OAAO,aAAa,cAAc,MAAM,cAAc,QAA6B;AACzF,UAAI,SAAS,MAAM;AACjB,eAAO;MACT;AACA,sBAAgB;QACd,GAAG;QACH;QACA,MAAM;;IAEV,OAAO;AAEL,aAAO;IACT;EACF,WAAW,aAAa,SAAS,OAAO;AACtC,oBAAgB,EAAE,GAAG,eAAe,MAAM,MAAK;EACjD,WAAW,aAAa,SAAS,kBAAkB;AACjD,QAAI;AACJ,QAAI,cAAc,YAAY,MAAM;AAClC,YAAM,aAAa,aAAa,cAAc,MAAM,cAAc,QAAQ;AAC1E,UAAI,eAAe,MAAM;AACvB,eAAO;MACT;AACA,aAAO;IACT;AAEA,oBAAgB;MACd,MAAM;MACN,cAAc,cAAc;MAC5B,SAAS,cAAc;MACvB,UAAU,cAAc;MACxB;MACA,OAAO,cAAc;;EAEzB,WAAW,aAAa,SAAS,oBAAoB;AACnD,oBAAgB;MACd,GAAG;MACH,MAAM;;EAEV,WAAW,aAAa,SAAS,QAAQ;AACvC,oBAAgB,EAAE,GAAG,eAAe,MAAM,OAAM;EAClD,OAAO;AAEL,WAAO;EACT;AACA,SAAO;AACT;AAEM,SAAU,aAAa,SAAyB;AACpD,MAAI;AACJ,UAAQ,QAAQ,MAAM;IACpB,KAAK,aAAa;AAChB,aAAO,EAAE,MAAM,aAAa,OAAO,QAAQ,OAAO,OAAO,QAAQ,MAAK;AACtE;IACF;IACA,KAAK,cAAc;AACjB,aAAO,EAAE,MAAM,cAAc,OAAO,QAAQ,OAAO,OAAO,QAAQ,MAAK;AACvE;IACF;IACA,KAAK,aAAa;AAChB,aAAO;QACL,MAAM;QACN,OAAO,QAAQ;QACf,OAAO,QAAQ;QACf,UAAU,QAAQ;QAClB,MAAM,WAAW,QAAQ,MAAM,QAAQ,QAAQ;;AAEjD;IACF;IACA,KAAK,eAAe;AAClB,aAAO;QACL,MAAM;QACN,OAAO,QAAQ;QACf,OAAO,QAAQ;QACf,UAAU,QAAQ;QAClB,MAAM,WAAW,QAAQ,MAAM,QAAQ,QAAQ;QAC/C,QAAQ,QAAQ;;AAElB;IACF;IACA,KAAK,eAAe;AAClB,aAAO,EAAE,MAAM,eAAe,YAAY,QAAQ,WAAU;AAC5D;IACF;IACA,KAAK,UAAU;AACb,YAAM,gBAA4B;QAChC,MAAM;QACN,cAAc,QAAQ;QACtB,QAAQ,QAAQ;QAChB,OAAO,QAAQ;;AAGjB,UAAI,QAAQ,YAAY,QAAQ,QAAQ,QAAQ,MAAM;AACpD,sBAAc,WAAW,QAAQ;AACjC,sBAAc,OAAO,WAAW,QAAQ,MAAM,QAAQ,QAAQ;MAChE;AAEA,aAAO;AACP;IACF;IACA,KAAK,kBAAkB;AACrB,YAAM,iBAAqC;QACzC,MAAM;QACN,cAAc,QAAQ;QACtB,SAAS,QAAQ;QACjB,OAAO,QAAQ;;AAGjB,UAAI,QAAQ,YAAY,QAAQ,QAAQ,QAAQ,MAAM;AACpD,uBAAe,WAAW,QAAQ;AAClC,uBAAe,OAAO,WAAW,QAAQ,MAAM,QAAQ,QAAQ;MACjE;AAEA,aAAO;AACP;IACF;IACA,KAAK,oBAAoB;AACvB,aAAO;QACL,MAAM;QACN,cAAc,QAAQ;;AAExB;IACF;IACA,KAAK,QAAQ;AACX,aAAO,EAAE,MAAM,OAAM;AACrB;IACF;IACA,SAAS;AACP,YAAM,IAAI,MAAM,qBAAqB,QAAQ,IAAI,EAAE;IACrD;EACF;AAEA,SAAO,KAAK,UAAU,IAAI;AAC5B;AA+DA,SAAS,WAAW,MAA+B,UAA2B;AAC5E,UAAQ,UAAU;IAChB,KAAK,QAAQ;AACX,UAAI,OAAO,SAAS,UAAU;AAC5B,cAAM,IAAI,UAAU,2BAA2B;MACjD;AACA,aAAO;IACT;IACA,KAAK,QAAQ;AACX,aAAO;IACT;IACA,KAAK;IACL,KAAK,YAAY;AACf,UAAI,gBAAgB,aAAa;AAC/B,eAAOC,QAAO,KAAK,IAAI,EAAE,SAAS,QAAQ;MAC5C;AACA,YAAM,IAAI,UAAU,+BAA+B;IACrD;EACF;AACF;AAEA,SAAS,aAAa,MAAW,UAAgB;AAC/C,MAAI,aAAa,QAAQ;AACvB,QAAI,OAAO,SAAS,UAAU;AAC5B,YAAM,IAAI,UAAU,gDAAgD;IACtE;AACA,WAAO;EACT,WAAW,aAAa,QAAQ;AAC9B,WAAO;EACT,WAAW,aAAa,YAAY,aAAa,YAAY;AAC3D,UAAM,MAAMA,QAAO,KAAK,MAAgB,QAAQ;AAChD,WAAO,IAAI,OAAO,MAAM,IAAI,YAAY,IAAI,aAAa,IAAI,UAAU;EACzE,OAAO;AAEL,WAAO;EACT;AACF;;;AC9QM,IAAO,oCAAP,MAAwC;EAAxC;AAIY;;;iDAAwB;AAKxB;;;gCAAO;;;;;;EAMhB,cAAc,OAAa;AAChC,WAAY,cAAc,KAAK;EACjC;;;;;EAMO,aAAa,SAAyB;AAC3C,WAAY,aAAa,OAAO;EAClC;;;;ACSK,IAAM,gCAAgC,MAA8B;AACzE,SAAO,IAAI,kCAAiC;AAC9C;;;ACxCM,IAAO,kBAAP,MAAsB;EAG1B,YAAmB,KAAa,cAAoB;AAF5C;AAGN,SAAK,UAAU,IAAI,UAAU,KAAK,YAAY;AAC9C,SAAK,QAAQ,aAAa;EAC5B;EAEA,OAAO,IAAc;AACnB,SAAK,QAAQ,SAAS;EACxB;EAEA,QAAQ,IAA0C;AAChD,SAAK,QAAQ,UAAU,CAAC,OAAmB,GAAG,GAAG,MAAM,GAAG,MAAM;EAClE;EAEA,QAAQ,IAAwB;AAC9B,SAAK,QAAQ,UAAU,CAAC,OAAc,GAAG,EAAE;EAC7C;EAEA,UAAU,IAA4D;AACpE,SAAK,QAAQ,YAAY,CAAC,UAAwB,GAAG,MAAM,IAAI;EACjE;EAEA,MAAM,MAAe,QAAe;AAClC,SAAK,QAAQ,MAAM,MAAM,MAAM;EACjC;;EAGA,KAAK,MAAW,GAAmB;AACjC,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAU;AACrC,UAAI;AACF,aAAK,QAAQ,KAAK,IAAI;AACtB,gBAAO;MACT,SAAS,KAAK;AACZ,eAAO,GAAG;MACZ;IACF,CAAC;EACH;EAEA,SAAM;AACJ,WAAO,KAAK,QAAQ,eAAe,UAAU;EAC/C;;AAGI,IAAO,yBAAP,MAA6B;EAC1B,OAAO,KAAa,cAAoB;AAC7C,WAAO,IAAI,gBAAgB,KAAK,YAAY;EAC9C;;;;AChDF,eAAsB,iBACpB,SACA,QAAuB;AAEvB,MAAI,OAAO,SAAS;AAClB,UAAM,IAAI,WAAW,4BAA4B;EACnD;AAEA,MAAI;AAEJ,QAAM,IAAI,IAAI,QAAW,CAAC,GAAG,WAAU;AACrC,cAAU,MAAW;AACnB,aAAO,IAAI,WAAW,4BAA4B,CAAC;IACrD;AAEA,WAAO,iBAAiB,SAAS,OAAO;EAC1C,CAAC;AAED,MAAI;AACF,WAAO,MAAM,QAAQ,KAAK,CAAC,SAAS,CAAC,CAAC;EACxC;AACE,WAAO,oBAAoB,SAAS,OAAQ;EAC9C;AACF;;;ACbM,IAAO,aAAP,MAAiB;EAIrB,YAAY,eAAe,GAAC;AAHX,uCAAc,oBAAI,IAAG;AAC9B;AAGN,SAAK,SAAS;EAChB;EAEO,YAAY,OAAc;AAC/B,UAAM,gBAAgB,SAAS,KAAK,eAAc;AAClD,QAAI,QAAQ,KAAK,YAAY,IAAI,aAAa;AAC9C,QAAI,CAAC,OAAO;AACV,cAAQ,IAAI,UAAU,aAAa;AACnC,WAAK,YAAY,IAAI,eAAe,KAAK;IAC3C;AACA,UAAM,WAAW;AACjB,WAAO;MACL,OAAO;MACP,MAAM,CAAC,gBAAkC,KAAK,cAAc,UAAU,WAAW;;EAErF;EAEO,WAAW,OAAe,QAAuB;AACtD,UAAM,QAAQ,KAAK,YAAY,IAAI,KAAK;AACxC,QAAI,CAAC,OAAO;AACV,aAAO;IACT;AACA,SAAK,YAAY,OAAO,KAAK;AAC7B,UAAM,QAAQ,MAAM;AACpB,WAAO;EACT;EAEO,UAAU,OAAe,QAAe;AAC7C,UAAM,QAAQ,KAAK,YAAY,IAAI,KAAK;AACxC,QAAI,CAAC,OAAO;AACV,aAAO;IACT;AACA,SAAK,YAAY,OAAO,KAAK;AAC7B,UAAM,OAAO,MAAM;AACnB,WAAO;EACT;EAEO,QAAQ,OAAa;AAC1B,SAAK,YAAY,OAAO,KAAK;EAC/B;EAEO,UAAU,cAAwC;AACvD,SAAK,YAAY,QAAQ,CAAC,OAAO,UAAS;AACxC,UAAI,KAAK,YAAY,OAAO,KAAK,GAAG;AAClC,cAAM,OAAO,aAAa,KAAK,CAAC;MAClC;IACF,CAAC;EACH;EAEQ,cAAc,OAAkB,aAA6B;AACnE,QAAI,CAAC,aAAa;AAChB,aAAO,MAAM,QAAO;IACtB;AAEA,WAAO,iBAAiB,MAAM,QAAO,GAAI,WAAW,EAAE,MAAM,CAAC,QAAO;AAClE,UAAI,eAAe,SAAS,IAAI,SAAS,cAAc;AACrD,cAAM,IAAI,iBAAiB,4BAA4B,EAAE,OAAO,MAAM,MAAK,CAAE;MAC/E;AACA,YAAM;IACR,CAAC;EACH;EAEQ,iBAAc;AACpB,SAAK,UAAU;AACf,WAAO,KAAK;EACd;;AAGF,IAAM,YAAN,MAAe;EAKb,YAA4B,OAAa;AAAb;AAJX;AACT;AACA;AAEoB,SAAA,QAAA;AAC1B,SAAK,WAAW,IAAI,QAAyB,CAAC,SAAS,WAAU;AAC/D,WAAK,WAAW;AAChB,WAAK,UAAU;IACjB,CAAC;EACH;EAEO,UAAO;AACZ,WAAO,KAAK;EACd;EAEO,QAAQ,OAAqD;AAClE,UAAM,WAAW,KAAK;AACtB,QAAI,CAAC,UAAU;AACb;IACF;AACA,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,aAAS,KAAK;EAChB;EAEO,OAAO,QAAgB;AAC5B,UAAM,WAAW,KAAK;AACtB,QAAI,CAAC,UAAU;AACb;IACF;AACA,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,aAAS,MAAM;EACjB;;;;ACxGI,IAAO,oBAAP,MAAwB;EAAxB;AACa,oCAAW,oBAAI,IAAG;AAC3B,mCAAU;;EAEX,mBAAmB,cAAqB;AAC7C,UAAM,aAAa,gBAAgB,KAAK,sBAAqB;AAC7D,QAAI,KAAK,SAAS,IAAI,UAAU,GAAG;AACjC,YAAM,IAAI,gBAAgB,wCAAwC;QAChE,cAAc;OACf;IACH;AAEA,UAAM,SAAS,IAAI,iBAAiB,UAAU;AAC9C,SAAK,SAAS,IAAI,YAAY,MAAM;AACpC,WAAO;MACL,cAAc;MACd,MAAM,CAAC,YAAoC,KAAK,cAAc,QAAQ,OAAO;;EAEjF;EAEO,kBAAkB,SAA8B;AACrD,UAAM,QAAQ,KAAK,SAAS,IAAI,QAAQ,YAAY;AACpD,QAAI,CAAC,OAAO;AACV,aAAO;IACT;AACA,SAAK,SAAS,OAAO,QAAQ,YAAY;AACzC,UAAM,QAAQ,OAAO;AACrB,WAAO;EACT;EAEO,iBAAiB,cAAsB,QAAe;AAC3D,UAAM,QAAQ,KAAK,SAAS,IAAI,YAAY;AAC5C,QAAI,CAAC,OAAO;AACV,aAAO;IACT;AACA,SAAK,SAAS,OAAO,YAAY;AACjC,UAAM,OAAO,MAAM;AACnB,WAAO;EACT;EAEO,QAAQ,cAAoB;AACjC,SAAK,SAAS,OAAO,YAAY;EACnC;EAEO,UAAU,cAA+C;AAC9D,SAAK,SAAS,QAAQ,CAAC,OAAO,iBAAgB;AAC5C,UAAI,KAAK,SAAS,OAAO,YAAY,GAAG;AACtC,cAAM,OAAO,aAAa,YAAY,CAAC;MACzC;IACF,CAAC;EACH;EAEQ,cACN,OACA,SAA+B;AAE/B,UAAM,cAAc,MAAM,QAAO;AACjC,UAAM,cAAc,SAAS;AAE7B,QAAI,CAAC,aAAa;AAChB,aAAO;IACT;AAEA,QAAI,YAAY,SAAS;AACvB,UAAI,KAAK,SAAS,OAAO,MAAM,YAAY,GAAG;AAC5C,cAAM,OAAO,KAAK,kBAAkB,MAAM,YAAY,CAAC;MACzD;AACA,aAAO;IACT;AAEA,WAAO,IAAI,QAA+B,CAAC,SAAS,WAAU;AAC5D,YAAM,UAAU,MAAW;AACzB,oBAAY,oBAAoB,SAAS,OAAO;AAChD,YAAI,KAAK,SAAS,OAAO,MAAM,YAAY,GAAG;AAC5C,gBAAM,OAAO,KAAK,kBAAkB,MAAM,YAAY,CAAC;QACzD;MACF;AAEA,kBAAY,iBAAiB,SAAS,OAAO;AAE7C,kBACG,KAAK,CAAC,WAAU;AACf,oBAAY,oBAAoB,SAAS,OAAO;AAChD,eAAO,QAAQ,MAAM;MACvB,CAAC,EACA,MAAM,CAAC,QAAO;AACb,oBAAY,oBAAoB,SAAS,OAAO;AAChD,eAAO,OAAO,GAAG;MACnB,CAAC;IACL,CAAC;EACH;EAEQ,wBAAqB;AAC3B,SAAK,WAAW;AAChB,WAAO,KAAK,QAAQ,SAAQ;EAC9B;EAEQ,kBAAkB,cAAoB;AAC5C,WAAO,IAAI,gBAAgB,wCAAwC;MACjE;KACD;EACH;;AAGF,IAAM,mBAAN,MAAsB;EAOpB,YAA4B,cAAoB;AAApB;AANX;AACT;AAGA;AAEoB,SAAA,eAAA;AAC1B,SAAK,WAAW,IAAI,QAA+B,CAAC,SAAS,WAAU;AACrE,WAAK,WAAW;AAChB,WAAK,UAAU;IACjB,CAAC;EACH;EAEO,UAAO;AACZ,WAAO,KAAK;EACd;EAEO,QAAQ,OAAiE;AAC9E,UAAM,WAAW,KAAK;AACtB,QAAI,CAAC,UAAU;AACb;IACF;AACA,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,aAAS,KAAK;EAChB;EAEO,OAAO,QAAgB;AAC5B,UAAM,WAAW,KAAK;AACtB,QAAI,CAAC,UAAU;AACb;IACF;AACA,SAAK,WAAW;AAChB,SAAK,UAAU;AACf,aAAS,MAAM;EACjB;;;;ACtGF,IAAK;CAAL,SAAKC,uBAAoB;AACvB,EAAAA,sBAAA,SAAA,IAAA;AACA,EAAAA,sBAAA,cAAA,IAAA;AACA,EAAAA,sBAAA,YAAA,IAAA;AACA,EAAAA,sBAAA,WAAA,IAAA;AACA,EAAAA,sBAAA,YAAA,IAAA;AACF,GANK,yBAAA,uBAAoB,CAAA,EAAA;AAgBnB,IAAO,kBAAP,MAAsB;EA8C1B,YAAY,YAAgD,SAAgC;AA7C3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAwB;AAExB;;AAEA;;AAEA,oCAAyB,IAAIC,SAAY;AAClD;AACA,uCAAuB;AACvB;AACA;AAGA;;AACA;AACA;AACA;AACA;AACA;AACA,+CAAsB;AACtB;AAEA,gDAA+B,KAAK,IAAG;AAe7C,QAAI,OAAO,eAAe,UAAU;AAClC,WAAK,cAAc,EAAE,oBAAoB,WAAU;IACrD,OAAO;AACL,WAAK,cAAc;IACrB;AAEA,QAAI,WAAW,MAAM;AACnB,gBAAU,CAAA;IACZ;AACA,SAAK,qBAAqB,OAAO;AACjC,SAAK,WAAW;AAEhB,SAAK,sBAAsB,IAAI,YAAY,KAAK,SAAS,mBAAoB;AAC7E,SAAK,wBAAwB,IAAI,YAAY,KAAK,SAAS,qBAAsB;AAEjF,SAAK,YAAY,KAAK,SAAS;AAC/B,SAAK,YAAY,oBAAI,IAAG;AACxB,SAAK,cAAc,IAAI,WAAU;AACjC,SAAK,qBAAqB,IAAI,kBAAiB;AAC/C,SAAK,cAAc,IAAI,WAAU;AAEjC,SAAK,wBAAwB,KAAK,SAAS,wBAAwB;AACnE,SAAK,yBAAyB,KAAK,SAAS,yBAAyB;AAErE,SAAK,SAAS,qBAAqB;EACrC;;;;;EAMO,MAAM,MAAM,SAAsB;AACvC,QAAI,KAAK,aAAa;AACpB,YAAM,IAAI,MAAM,sCAAsC;IACxD;AAEA,QAAI,KAAK,WAAW,qBAAqB,SAAS;AAChD,YAAM,IAAI,MAAM,8CAA8C;IAChE;AAEA,QAAI;AACJ,QAAI,SAAS;AACX,oBAAc,QAAQ;IACxB;AAEA,QAAI,CAAC,KAAK,sBAAsB,KAAK,yBAAyB,GAAG;AAC/D,WAAK,qBAAqB,KAAK,sBAAqB;IACtD;AACA,QAAI,CAAC,KAAK,uBAAuB,KAAK,wBAAwB,GAAG;AAC/D,WAAK,sBAAsB,KAAK,uBAAsB;IACxD;AAEA,QAAI;AACF,YAAM,KAAK,WAAW,WAAW;IACnC,SAAS,KAAK;AAEZ,WAAK,aAAa,qBAAqB,OAAO;AAC9C,WAAK,uBAAsB;AAC3B,WAAK,cAAc;AACnB,YAAM;IACR;EACF;EAEQ,MAAM,qBAAqB,aAA6B;AAC9D,QAAI,KAAK,WAAW,qBAAqB,cAAc;AACrD,YAAM,IAAI,MAAM,qDAAqD;IACvE;AAEA,QAAI;AACF,aAAO,QAAQ,uBAAuB;AACtC,YAAM,KAAK,WAAW,WAAW;IACnC,SAAS,KAAK;AACZ,WAAK,aAAa,qBAAqB,YAAY;AACnD,YAAM;IACR;EACF;EAEQ,MAAM,WAAW,aAA6B;AACpD,SAAK,aAAa,qBAAqB,UAAU;AAEjD,WAAO,KAAK,0BAA0B;AAEtC,SAAK,YAAY,MAAK;AACtB,SAAK,sBAAsB;AAC3B,SAAK,kBAAkB;AACvB,SAAK,2BAA2B;AAChC,SAAK,gBAAgB;AACrB,SAAK,qBAAqB;AAC1B,SAAK,OAAO;AAEZ,QAAI,OAAO,KAAK,YAAY,uBAAuB,UAAU;AAC3D,WAAK,OAAO,KAAK,YAAY;IAC/B,OAAO;AACL,WAAK,OAAO,MAAM,KAAK,YAAY,mBAAmB;QACpD;OAC4B;IAChC;AAEA,QAAI,OAAO,KAAK,SAAS,UAAU;AACjC,YAAM,IAAI,MACR,2DAA2D,OAAO,KAAK,IAAI,EAAE;IAEjF;AACA,UAAM,KAAK,aAAa,KAAK,IAAI;EACnC;;;;EAKO,OAAI;AACT,QAAI,KAAK,WAAW,qBAAqB,WAAW,KAAK,aAAa;AACpE;IACF;AAGA,SAAK,cAAc;AACnB,QAAI,KAAK,aAAa,KAAK,UAAU,OAAM,GAAI;AAC7C,WAAK,UAAU,MAAK;IACtB,OAAO;AACL,WAAK,cAAc;IACrB;AACA,SAAK,uBAAsB;EAC7B;EAEQ,yBAAsB;AAC5B,QAAI,KAAK,oBAAoB;AAC3B,WAAK,mBAAmB,MAAK;AAC7B,WAAK,qBAAqB;IAC5B;AACA,QAAI,KAAK,qBAAqB;AAC5B,WAAK,oBAAoB,MAAK;AAC9B,WAAK,sBAAsB;IAC7B;EACF;EAsCO,GACL,OAOA,UAA0B;AAE1B,SAAK,SAAS,GAAG,OAAO,QAAQ;EAClC;EAsCO,IACL,OAOA,UAA0B;AAE1B,SAAK,SAAS,eAAe,OAAO,QAAQ;EAC9C;EAQQ,WACN,OAOA,MAAS;AAET,SAAK,SAAS,KAAK,OAAO,IAAI;EAChC;;;;;;;;;EAUO,MAAM,UACX,WACA,SACA,UACA,SAA0B;AAE1B,WAAO,KAAK,2BACV,MAAM,KAAK,kBAAkB,WAAW,SAAS,UAAU,OAAO,GAClE,SAAS,WAAW;EAExB;EAEQ,MAAM,kBACZ,WACA,SACA,UACA,SAA0B;AAE1B,UAAM,gBAAgB,SAAS,iBAAiB;AAChD,QAAI,CAAC,eAAe;AAClB,aAAO,KAAK,sBACV,CAAC,OAAM;AACL,eAAO;UACL,MAAM;UACN;UACA,MAAM;UACN,OAAO;UACP,OAAO;;MAEX,GACA,SAAS,OACT,SAAS,WAAW;IAExB;AAEA,UAAM,UAAU;MACd,MAAM;MACN;MACA,MAAM;MACN,OAAO;;AAGT,UAAM,KAAK,aAAa,SAAS,SAAS,WAAW;AACrD,WAAO,EAAE,cAAc,MAAK;EAC9B;EAEQ,MAAM,oBACZ,WACA,SACA,UACA,SAA4B;AAE5B,UAAM,gBAAgB,WAAW,CAAA;AAEjC,UAAM,EAAE,cAAc,KAAI,IAAK,KAAK,mBAAmB,mBACrD,cAAc,YAAY;AAG5B,UAAM,gBAA+B;MACnC,MAAM;MACN;MACA,QAAQ;MACR,OAAO;MACP;MACA,MAAM;;AAGR,UAAM,kBAAkB,KAAK;MAC3B,aAAa,cAAc;KAC5B;AAED,QAAI;AACF,YAAM,KAAK,aAAa,eAAe,cAAc,WAAW;IAClE,SAAS,KAAK;AACZ,YAAM,kBACJ,eAAe,kBACX,MACA,IAAI,gBACF,eAAe,QAAQ,IAAI,UAAU,sCACrC;QACE;OACD;AAGT,WAAK,mBAAmB,iBAAiB,cAAc,eAAe;AACtE,WAAK,gBAAgB,MAAM,MAAK;MAEhC,CAAC;AACD,YAAM;IACR;AAEA,QAAI;AACF,YAAM,WAAW,MAAM;AACvB,aAAO,KAAK,mBAAmB,QAAQ;IACzC,SAAS,KAAK;AACZ,YAAM,eACH,eAAe,mBAAmB,IAAI,eAAe,QACtD,cAAc,aAAa,YAAY;AACzC,UAAI,cAAc;AAChB,cAAM,KAAK,sBAAsB,YAAY,EAAE,MAAM,MAAK;QAE1D,CAAC;MACH;AACA,YAAM;IACR;AACE,WAAK,mBAAmB,QAAQ,YAAY;IAC9C;EACF;;;;;;;;EASO,MAAM,YACX,WACA,SACA,UACA,SAA4B;AAE5B,WAAO,KAAK,2BACV,MAAM,KAAK,oBAAoB,WAAW,SAAS,UAAU,OAAO,GACpE,SAAS,WAAW;EAExB;;;;;;EAOO,MAAM,UAAU,WAAmB,SAA0B;AAClE,WAAO,KAAK,2BACV,MAAM,KAAK,kBAAkB,WAAW,OAAO,GAC/C,SAAS,WAAW;EAExB;EAEQ,MAAM,kBACZ,WACA,SAA0B;AAE1B,UAAM,QAAQ,KAAK,eAAe,SAAS;AAC3C,UAAM,SAAS,MAAM,KAAK,eAAe,WAAW,OAAO;AAC3D,UAAM,WAAW;AACjB,WAAO;EACT;EAEQ,MAAM,eACZ,WACA,SAA0B;AAE1B,WAAO,KAAK,sBACV,CAAC,OAAM;AACL,aAAO;QACL,OAAO;QACP,OAAO;QACP,MAAM;;IAEV,GACA,SAAS,OACT,SAAS,WAAW;EAExB;;;;;;;EAQO,MAAM,WACX,WACA,SAA2B;AAE3B,WAAO,KAAK,2BACV,MAAM,KAAK,mBAAmB,WAAW,OAAO,GAChD,SAAS,WAAW;EAExB;EAEQ,MAAM,mBACZ,WACA,SAA2B;AAE3B,UAAM,QAAQ,KAAK,eAAe,SAAS;AAC3C,UAAM,SAAS,MAAM,KAAK,sBACxB,CAAC,OAAM;AACL,aAAO;QACL,OAAO;QACP,OAAO;QACP,MAAM;;IAEV,GACA,SAAS,OACT,SAAS,WAAW;AAEtB,UAAM,WAAW;AACjB,WAAO;EACT;;;;;;;;;EAUO,MAAM,YACX,WACA,SACA,UACA,SAA4B;AAE5B,WAAO,KAAK,2BACV,MAAM,KAAK,oBAAoB,WAAW,SAAS,UAAU,OAAO,GACpE,SAAS,WAAW;EAExB;EAEQ,MAAM,oBACZ,WACA,SACA,UACA,SAA4B;AAE5B,UAAM,gBAAgB,SAAS,iBAAiB;AAChD,UAAM,SAAS,SAAS,UAAU;AAClC,QAAI,CAAC,eAAe;AAClB,aAAO,KAAK,sBACV,CAAC,OAAM;AACL,eAAO;UACL,MAAM;UACN,OAAO;UACP;UACA,MAAM;UACN,OAAO;UACP;;MAEJ,GACA,SAAS,OACT,SAAS,WAAW;IAExB;AAEA,UAAM,UAAU;MACd,MAAM;MACN,OAAO;MACP;MACA,MAAM;MACN;;AAGF,UAAM,KAAK,aAAa,SAAS,SAAS,WAAW;AACrD,WAAO,EAAE,cAAc,MAAK;EAC9B;EAEQ,6BAA0B;AAChC,WAAO,IAAI,uBAAsB;EACnC;EAEQ,MAAM,sBAAmB;AAC/B,QAAI,CAAC,KAAK,UAAU,uBAAuB;AACzC;IACF;AACA,UAAM,CAAC,WAAW,KAAK,IAAI,KAAK,YAAY,iBAAgB;AAC5D,QAAI,aAAa,UAAU,QAAQ,UAAU,QAAW;AAEtD,YAAM,UAA8B;QAClC,MAAM;QACN,YAAY;;AAEd,UAAI;AACF,cAAM,KAAK,aAAa,OAAO;MACjC,QAAQ;AACN,aAAK,YAAY,UAAU,KAAM;MACnC;IACF;EACF;EAEQ,aAAa,KAAW;AAC9B,QAAI,KAAK,aAAa;AACpB,YAAM,IAAI,MAAM,sCAAsC;IACxD;AAEA,WAAO,IAAI,QAAc,CAAC,SAAS,WAAU;AAE3C,YAAM,SAAU,KAAK,YAAY,KAAK,2BAA0B,EAAG,OACjE,KACA,KAAK,UAAU,IAAI;AAErB,aAAO,OAAO,MAAK;AAEjB,YAAI,KAAK,aAAa;AACpB,cAAI;AACF,mBAAO,MAAK;UACd,QAAQ;UAER;AAEA,iBAAO,IAAI,MAAM,uBAAuB,CAAC;QAC3C;AACA,eAAO,QAAQ,iCAAiC;AAChD,aAAK,uBAAuB,KAAK,IAAG;AACpC,aAAK,aAAa,qBAAqB,SAAS;AAChD,YAAI,KAAK,UAAU,uBAAuB;AACxC,cAAI,KAAK,oBAAoB,MAAM;AACjC,iBAAK,iBAAiB,MAAK;UAC7B;AACA,eAAK,mBAAmB,IAAI,cAAc,YAAW;AACnD,kBAAM,KAAK,oBAAmB;UAChC,GAAG,GAAI;QACT;AAEA,gBAAO;MACT,CAAC;AAED,aAAO,QAAQ,CAAC,MAAK;AACnB,YAAI,KAAK,oBAAoB,MAAM;AACjC,eAAK,iBAAiB,MAAK;QAC7B;AACA,eAAO,CAAC;MACV,CAAC;AAED,aAAO,QAAQ,CAAC,MAAc,WAAkB;AAC9C,YAAI,KAAK,WAAW,qBAAqB,WAAW;AAClD,iBAAO,QAAQ,6BAA6B;AAC5C,cAAI,KAAK,oBAAoB,MAAM;AACjC,iBAAK,iBAAiB,MAAK;UAC7B;AACA,iBAAO,KAAK,sCAAsC,IAAI,aAAa,MAAM,EAAE;AAC3E,eAAK,kBAAkB,EAAE,MAAY,OAAc;AACnD,eAAK,uBAAuB,KAAK,IAAI;QACvC,OAAO;AACL,iBAAO,QAAQ,8BAA8B;AAC7C,iBAAO,IAAI,MAAM,8BAA8B,IAAI,EAAE,CAAC;QACxD;MACF,CAAC;AAED,aAAO,UAAU,CAAC,SAAa;AAC7B,cAAM,mBAAmB,CAAC,YAA6B;AACrD,gBAAM,eAAwB,QAAQ,SAAS,QAAQ,QAAQ,MAAM,SAAS;AAC9E,cAAI,QAAQ,WAAW,cAAc;AACnC,iBAAK,YAAY,WAAW,QAAQ,OAAO;cACzC,OAAO,QAAQ;cACf;aACkB;UACtB,OAAO;AACL,iBAAK,YAAY,UACf,QAAQ,OACR,IAAI,iBAAiB,2BAA2B;cAC9C,OAAO,QAAQ;cACf,aAAa,QAAQ;aACK,CAAC;UAEjC;QACF;AAEA,cAAM,yBAAyB,OAAO,YAA4C;AAChF,eAAK,gBAAgB,QAAQ;AAC7B,eAAK,qBAAqB,QAAQ;AAElC,cAAI,CAAC,KAAK,qBAAqB;AAC7B,iBAAK,sBAAsB;AAE3B,gBAAI,KAAK,SAAS,kBAAkB;AAClC,oBAAM,gBAAiC,CAAA;AACvC,mBAAK,UAAU,QAAQ,CAAC,MAAK;AAC3B,oBAAI,EAAE,UAAU;AACd,gCAAc,MACX,YAAW;AACV,wBAAI;AACF,4BAAM,KAAK,eAAe,EAAE,IAAI;oBAClC,SAAS,KAAK;AACZ,2BAAK,2BAA2B,EAAE,MAAM,GAAG;oBAC7C;kBACF,GAAE,CAAE;gBAER;cACF,CAAC;AAED,oBAAM,QAAQ,IAAI,aAAa,EAAE,MAAM,MAAK;cAE5C,CAAC;YACH;AAEA,iBAAK,mBAAmB,QAAQ,cAAc,QAAQ,MAAM;UAC9D;QACF;AAEA,cAAM,4BAA4B,CAAC,YAAsC;AACvE,eAAK,2BAA2B;QAClC;AAEA,cAAM,yBAAyB,CAAC,YAAmC;AACjE,cAAI,QAAQ,cAAc,MAAM;AAC9B,kBAAM,OAAO,KAAK,YAAY,UAAU,QAAQ,UAAU;AAC1D,gBAAI,SAAS,GAAG;AAEd;YACF;AAGA,gBAAI,OAAO,KAAK,uBAAuB;AACrC,mBAAK,oBAAmB;YAC1B;UACF;AAEA,eAAK,sBAAsB,OAAO;QACpC;AAEA,cAAM,0BAA0B,CAAC,YAAoC;AACnE,cAAI,QAAQ,cAAc,MAAM;AAC9B,kBAAM,OAAO,KAAK,YAAY,UAAU,QAAQ,UAAU;AAC1D,gBAAI,SAAS,GAAG;AAEd;YACF;AAGA,gBAAI,OAAO,KAAK,uBAAuB;AACrC,mBAAK,oBAAmB;YAC1B;UACF;AAEA,eAAK,uBAAuB,OAAO;QACrC;AAEA,cAAM,8BAA8B,CAAC,YAAwC;AAC3E,gBAAM,WAAW,KAAK,mBAAmB,kBAAkB,OAAO;AAClE,cAAI,CAAC,UAAU;AACb,mBAAO,QACL,qDAAqD,QAAQ,YAAY,EAAE;UAE/E;QACF;AAEA,aAAK,uBAAuB,KAAK,IAAG;AAEpC,YAAI;AACJ,YAAI;AACF,cAAI;AACJ,cAAI,MAAM,QAAQ,IAAI,GAAG;AACvB,4BAAgBC,QAAO,OAAO,IAAI;UACpC,OAAO;AACL,4BAAgB;UAClB;AAEA,qBAAW,KAAK,UAAU,cAAc,aAAa;AACrD,cAAI,aAAa,MAAM;AAErB;UACF;QACF,SAAS,KAAK;AACZ,iBAAO,QAAQ,4DAA4D,GAAG;AAC9E,gBAAM;QACR;AAEA,YAAI,CAAC,MAAM,QAAQ,QAAQ,GAAG;AAC5B,qBAAW,CAAC,QAAQ;QACtB;AAEA,iBAAS,QAAQ,CAAC,YAAW;AAC3B,cAAI;AACF,oBAAQ,QAAQ,MAAM;cACpB,KAAK,QAAQ;AAEX;cACF;cACA,KAAK,OAAO;AACV,iCAAiB,OAAqB;AACtC;cACF;cACA,KAAK,aAAa;AAChB,uCAAuB,OAA2B;AAClD;cACF;cACA,KAAK,gBAAgB;AACnB,0CAA0B,OAA8B;AACxD;cACF;cACA,KAAK,aAAa;AAChB,uCAAuB,OAA2B;AAClD;cACF;cACA,KAAK,cAAc;AACjB,wCAAwB,OAA4B;AACpD;cACF;cACA,KAAK,kBAAkB;AACrB,4CAA4B,OAAgC;AAC5D;cACF;YACF;UACF,SAAS,KAAK;AACZ,mBAAO,QACL,2DAA2D,QAAQ,IAAI,iBACvE,GAAG;UAEP;QACF,CAAC;MACH,CAAC;IACH,CAAC;EACH;EAEQ,MAAM,sCAAmC;AAC/C,SAAK,SAAS,qBAAqB;AAEnC,SAAK,sBAAsB,KAAK,eAAe,KAAK,wBAAwB;AAG5E,QAAI,KAAK,SAAS,eAAe;AAC/B,YAAM,KAAK,eAAc;IAC3B,OAAO;AACL,YAAM,KAAK,yBAAwB;IACrC;EACF;EAEQ,MAAM,iBAAc;AAC1B,QAAI,YAAY;AAChB,QAAI,UAAU;AACd,QAAI;AACF,aAAO,CAAC,KAAK,aAAa;AACxB,YAAI;AACF,gBAAM,KAAK,qBAAoB;AAC/B,sBAAY;AACZ;QACF,SAAS,KAAK;AACZ,iBAAO,QAAQ,8CAA8C,GAAG;AAEhE;AACA,gBAAM,YAAY,KAAK,sBAAsB,mBAAmB,OAAO;AAEvE,cAAI,aAAa,MAAM;AACrB;UACF;AAEA,iBAAO,QAAQ,oCAAoC,OAAO,KAAK,SAAS,EAAE;AAC1E,gBAAM,MAAM,SAAS,EAAE,MAAM,MAAK;UAElC,CAAC;QACH;MACF;IACF;AACE,UAAI,CAAC,WAAW;AACd,aAAK,yBAAwB;MAC/B;IACF;EACF;EAEQ,2BAAwB;AAC9B,SAAK,cAAc;AACnB,SAAK,SAAS,qBAAqB;AACnC,SAAK,uBAAsB;AAC3B,SAAK,iBAAgB;EACvB;EAEQ,MAAM,eAAY;AAExB,QAAI,KAAK,WAAW,qBAAqB,aAAa,CAAC,KAAK,WAAW,OAAM,GAAI;AAC/E;IACF;AAEA,UAAM,UAAuB;MAC3B,MAAM;;AAER,QAAI;AACF,YAAM,KAAK,aAAa,OAAO;IACjC,QAAQ;AACN,aAAO,QAAQ,iDAAiD;IAClE;EACF;EAEQ,MAAM,yBAAsB;AAClC,QAAI,KAAK,WAAW,qBAAqB,aAAa,CAAC,KAAK,WAAW,OAAM,GAAI;AAC/E;IACF;AAEA,UAAM,MAAM,KAAK,IAAG;AACpB,QAAI,MAAM,KAAK,uBAAuB,KAAK,uBAAuB;AAChE,aAAO,QACL,4BAA4B,MAAM,KAAK,oBAAoB,kDAAkD,KAAK,qBAAqB,MAAM;AAE/I,WAAK,WAAW,MAAK;IACvB;EACF;EAEQ,wBAAqB;AAC3B,WAAO,IAAI,cAAc,YAAW;AAClC,YAAM,KAAK,aAAY;IACzB,GAAG,KAAK,sBAAsB;EAChC;EAEQ,yBAAsB;AAC5B,UAAM,UAAU,KAAK;AACrB,UAAM,gBAAgB,KAAK,MAAM,UAAU,CAAC;AAC5C,WAAO,IAAI,cAAc,YAAW;AAClC,YAAM,KAAK,uBAAsB;IACnC,GAAG,aAAa;EAClB;EAEQ,MAAM,aACZ,SACA,aAA6B;AAE7B,QAAI,CAAC,KAAK,aAAa,CAAC,KAAK,UAAU,OAAM,GAAI;AAC/C,YAAM,IAAI,MAAM,kCAAkC;IACpD;AAEA,UAAM,UAAU,KAAK,UAAU,aAAa,OAAO;AACnD,UAAM,KAAK,UAAW,KAAK,SAAS,WAAW;EACjD;EAEQ,MAAM,sBACZ,iBACA,OACA,aAA6B;AAE7B,UAAM,EAAE,OAAO,eAAe,KAAI,IAAK,KAAK,YAAY,YAAY,KAAK;AACzE,UAAM,UAAU,gBAAgB,aAAa;AAE7C,QAAI;AACF,YAAM,KAAK,aAAa,SAAS,WAAW;IAC9C,SAAS,OAAO;AACd,WAAK,YAAY,QAAQ,aAAa;AAEtC,UAAI,eAAuB;AAC3B,UAAI,iBAAiB,OAAO;AAC1B,uBAAe,MAAM;MACvB;AACA,YAAM,IAAI,iBAAiB,cAAc,EAAE,OAAO,cAAa,CAAE;IACnE;AAEA,WAAO,KAAK,WAAW;EACzB;EAEQ,MAAM,yBAAsB;AAElC,SAAK,YAAY,UAAU,CAAC,UAAS;AACnC,aAAO,IAAI,iBACT,kEACA;QACE;OAC0B;IAEhC,CAAC;AAED,SAAK,mBAAmB,UAAU,CAAC,iBAAgB;AACjD,aAAO,IAAI,gBACT,gFACA;QACE;OACD;IAEL,CAAC;AAED,QAAI,KAAK,aAAa;AACpB,aAAO,QAAQ,8CAA8C;AAC7D,WAAK,oCAAmC;AACxC;IACF;AAEA,QAAI,KAAK,mBAAmB,KAAK,gBAAgB,SAAS,MAAM;AAC9D,aAAO,QAAQ,2DAA2D;AAC1E,WAAK,oCAAmC;AACxC;IACF;AAEA,QAAI,CAAC,KAAK,UAAU,uBAAuB;AACzC,aAAO,QAAQ,0DAA0D;AACzE,WAAK,oCAAmC;AACxC;IACF;AAGA,UAAM,cAAc,KAAK,kBAAiB;AAC1C,QAAI,CAAC,aAAa;AAChB,aAAO,QAAQ,sDAAsD;AACrE,WAAK,oCAAmC;AACxC;IACF;AAGA,QAAI,YAAY;AAChB,SAAK,SAAS,qBAAqB;AACnC,UAAM,cAAc,YAAY,QAAQ,KAAK,GAAI;AACjD,QAAI;AACF,aAAO,CAAC,YAAY,WAAW,KAAK,aAAa;AAC/C,YAAI;AACF,gBAAM,KAAK,aAAa,KAAK,MAAM,WAAW;AAC9C,sBAAY;AACZ;QACF,QAAQ;AACN,gBAAM,MAAM,GAAI;QAClB;MACF;IACF;AACE,UAAI,CAAC,WAAW;AACd,eAAO,QAAQ,yEAAyE;AACxF,aAAK,oCAAmC;MAC1C;IACF;EACF;EAEQ,mBAAmB,cAAsB,QAAc;AAC7D,SAAK,WAAW,aAAa;MAC3B;MACA;KACkB;EACtB;EAEQ,sBACN,cACA,yBAAwD;AAExD,SAAK,WAAW,gBAAgB;MAC9B;MACA,SAAS;KACY;EACzB;EAEQ,sBAAsB,SAAyB;AACrD,SAAK,WAAW,iBAAiB;MAC/B;KACyB;EAC7B;EAEQ,uBAAuB,SAA0B;AACvD,SAAK,WAAW,kBAAkB;MAChC;KAC0B;EAC9B;EAEQ,mBAAgB;AACtB,SAAK,WAAW,WAAW,CAAA,CAAE;EAC/B;EAEQ,2BAA2B,WAAmB,KAAY;AAChE,SAAK,WAAW,uBAAuB;MACrC,OAAO;MACP,OAAO;KACmB;EAC9B;EAEQ,mBAAmB,SAA8B;AACvD,QAAI,QAAQ,YAAY,MAAM;AAC5B,UAAI,QAAQ,YAAY,OAAO;AAC7B,cAAM,IAAI,gBAAgB,QAAQ,OAAO,WAAW,sBAAsB;UACxE,cAAc,QAAQ;UACtB,aAAa,QAAQ;SACtB;MACH;AAEA,YAAM,IAAI,gBAAgB,sCAAsC;QAC9D,cAAc,QAAQ;OACvB;IACH;AAEA,WAAO;MACL,cAAc,QAAQ;MACtB,UAAU,QAAQ;MAClB,MAAM,QAAQ;;EAElB;EAEQ,MAAM,sBAAsB,cAAoB;AACtD,UAAM,UAAmC;MACvC,MAAM;MACN;;AAGF,QAAI;AACF,YAAM,KAAK,aAAa,OAAO;IACjC,SAAS,KAAK;AACZ,aAAO,QAAQ,uCAAuC,YAAY,IAAI,GAAG;IAC3E;EACF;EAEQ,qBAAqB,eAAqC;AAChE,QAAI,cAAc,iBAAiB,MAAM;AACvC,oBAAc,gBAAgB;IAChC;AAEA,QAAI,cAAc,oBAAoB,MAAM;AAC1C,oBAAc,mBAAmB;IACnC;AAEA,QAAI,cAAc,YAAY,MAAM;AAClC,oBAAc,WAAW,8BAA6B;IACxD;AAEA,QAAI,cAAc,wBAAwB,MAAM;AAC9C,oBAAc,uBAAuB;IACvC;AAEA,QAAI,cAAc,uBAAuB,GAAG;AAC1C,YAAM,IAAI,WAAW,0DAA0D;IACjF;AAEA,QAAI,cAAc,yBAAyB,MAAM;AAC/C,oBAAc,wBAAwB;IACxC;AAEA,QAAI,cAAc,wBAAwB,GAAG;AAC3C,YAAM,IAAI,WAAW,2DAA2D;IAClF;AAEA,SAAK,0BAA0B,aAAa;AAC5C,SAAK,4BAA4B,aAAa;AAE9C,WAAO;EACT;EAEQ,0BAA0B,eAAqC;AACrE,QAAI,CAAC,cAAc,qBAAqB;AACtC,oBAAc,sBAAsB,CAAA;IACtC;AAEA,QACE,cAAc,oBAAoB,cAAc,QAChD,cAAc,oBAAoB,aAAa,GAC/C;AACA,oBAAc,oBAAoB,aAAa;IACjD;AAEA,QACE,cAAc,oBAAoB,kBAAkB,QACpD,cAAc,oBAAoB,iBAAiB,GACnD;AACA,oBAAc,oBAAoB,iBAAiB;IACrD;AAEA,QACE,cAAc,oBAAoB,qBAAqB,QACvD,cAAc,oBAAoB,oBAAoB,GACtD;AACA,oBAAc,oBAAoB,oBAAoB;IACxD;AAEA,QAAI,cAAc,oBAAoB,QAAQ,MAAM;AAClD,oBAAc,oBAAoB,OAAO;IAC3C;EACF;EAEQ,4BAA4B,eAAqC;AACvE,QAAI,CAAC,cAAc,uBAAuB;AACxC,oBAAc,wBAAwB,CAAA;IACxC;AAEA,QACE,cAAc,sBAAsB,cAAc,QAClD,cAAc,sBAAsB,aAAa,GACjD;AACA,oBAAc,sBAAsB,aAAa,OAAO;IAC1D;AAEA,QACE,cAAc,sBAAsB,kBAAkB,QACtD,cAAc,sBAAsB,iBAAiB,GACrD;AACA,oBAAc,sBAAsB,iBAAiB;IACvD;AAEA,QACE,cAAc,sBAAsB,qBAAqB,QACzD,cAAc,sBAAsB,oBAAoB,GACxD;AACA,oBAAc,sBAAsB,oBAAoB;IAC1D;AAEA,QAAI,cAAc,sBAAsB,QAAQ,MAAM;AACpD,oBAAc,sBAAsB,OAAO;IAC7C;EACF;EAEQ,oBAAiB;AACvB,QAAI,KAAK,iBAAiB,KAAK,sBAAsB,KAAK,MAAM;AAC9D,YAAM,MAAM,IAAI,IAAI,KAAK,IAAI;AAC7B,UAAI,aAAa,OAAO,sBAAsB,KAAK,aAAa;AAChE,UAAI,aAAa,OAAO,2BAA2B,KAAK,kBAAkB;AAC1E,aAAO,IAAI,SAAQ;IACrB;AACA,WAAO;EACT;EAEQ,eAAeC,OAAY;AACjC,QAAI,CAAC,KAAK,UAAU,IAAIA,KAAI,GAAG;AAC7B,WAAK,UAAU,IAAIA,OAAM,IAAI,eAAeA,KAAI,CAAC;IACnD;AACA,WAAO,KAAK,UAAU,IAAIA,KAAI;EAChC;EAEQ,aAAa,UAA8B;AACjD,WAAO,QACL,kCAAkC,KAAK,OAAO,SAAQ,CAAE,OAAO,SAAS,SAAQ,CAAE,EAAE;AAEtF,SAAK,SAAS;EAChB;EAEQ,MAAM,2BACZ,OACA,QAAwB;AAExB,QAAI,eAAe;AAEnB,WAAO,MAAM;AACX,UAAI;AACF,eAAO,MAAM,MAAM,KAAK,IAAI;MAC9B,SAAS,KAAK;AACZ,YAAI,eAAe,iBAAiB;AAClC,gBAAM;QACR;AACA;AACA,cAAM,YAAY,KAAK,oBAAoB,mBAAmB,YAAY;AAC1E,YAAI,aAAa,MAAM;AACrB,gBAAM;QACR;AAEA,cAAM,MAAM,SAAS;AAErB,YAAI,QAAQ,SAAS;AACnB,gBAAM;QACR;MACF;IACF;EACF;;AAGF,IAAM,cAAN,MAAiB;EAIf,YAAmB,cAAmC;AAH9C;AACA;AAGN,SAAK,gBAAgB;AACrB,SAAK,2BAA2B,KAAK,KACnC,KAAK,KAAK,KAAK,cAAc,iBAAkB,IAC7C,KAAK,KAAK,KAAK,cAAc,cAAe,IAC5C,CAAC;EAEP;EAEO,mBAAmB,cAAoB;AAC5C,QAAI,eAAe,KAAK,cAAc,YAAa;AACjD,aAAO;IACT,OAAO;AACL,UAAI,KAAK,cAAc,SAAU,SAAS;AACxC,eAAO,KAAK,cAAc;MAC5B,OAAO;AACL,eAAO,KAAK,2BAA2B,YAAY;MACrD;IACF;EACF;EAEQ,2BAA2B,SAAe;AAChD,QAAI,WAAW,KAAK,0BAA0B;AAC5C,aAAO,KAAK,cAAc;IAC5B,OAAO;AACL,cAAQ,KAAM,UAAU,KAAM,KAAK,cAAc;IACnD;EACF;;AAGF,IAAM,iBAAN,MAAoB;EAIlB,YAAYA,OAAY;AAHR;AACT,oCAAW;AAGhB,SAAK,OAAOA;EACd;;AAGF,IAAM,aAAN,MAAgB;EAId,cAAA;AAHQ;AACA;AAGN,SAAK,cAAc;AACnB,SAAK,YAAY;EACnB;EAEO,UAAU,YAAkB;AACjC,SAAK,YAAY;AACjB,QAAI,aAAa,KAAK,aAAa;AACjC,YAAM,OAAO,aAAa,KAAK;AAC/B,WAAK,cAAc;AACnB,aAAO;IACT;AACA,WAAO;EACT;EAEO,mBAAgB;AACrB,QAAI,KAAK,WAAW;AAClB,WAAK,YAAY;AACjB,aAAO,CAAC,MAAM,KAAK,WAAW;IAChC;AAEA,WAAO,CAAC,OAAO,IAAI;EACrB;EAEO,QAAK;AACV,SAAK,cAAc;AACnB,SAAK,YAAY;EACnB;;AAGF,IAAM,gBAAN,MAAmB;EAMjB,YAAY,MAAoC,UAAkB,KAAS;AAL1D;AACA;AACA;AACA;AAGf,SAAK,QAAQ;AACb,SAAK,mBAAmB,IAAI,gBAAe;AAC3C,SAAK,YAAY;AACjB,SAAK,OAAO;AACZ,SAAK,OAAM;EACb;EAEO,QAAK;AACV,QAAI;AACF,WAAK,iBAAiB,MAAK;IAC7B,QAAQ;IAER;EACF;EAEQ,MAAM,SAAM;AAClB,UAAM,SAAS,KAAK,iBAAiB;AACrC,WAAO,CAAC,OAAO,SAAS;AACtB,UAAI;AACF,cAAM,KAAK,MAAM,KAAK,IAAI;MAC5B,QAAQ;MAER;AACE,cAAM,MAAM,KAAK,SAAS;MAC5B;IACF;EACF;;;;ACruCK,SAAS,SAAS,GAAG;AAC1B,MAAI,IAAI,OAAO,WAAW,cAAc,OAAO,UAAU,IAAI,KAAK,EAAE,CAAC,GAAG,IAAI;AAC5E,MAAI,EAAG,QAAO,EAAE,KAAK,CAAC;AACtB,MAAI,KAAK,OAAO,EAAE,WAAW,SAAU,QAAO;AAAA,IAC1C,MAAM,WAAY;AACd,UAAI,KAAK,KAAK,EAAE,OAAQ,KAAI;AAC5B,aAAO,EAAE,OAAO,KAAK,EAAE,GAAG,GAAG,MAAM,CAAC,EAAE;AAAA,IAC1C;AAAA,EACJ;AACA,QAAM,IAAI,UAAU,IAAI,4BAA4B,iCAAiC;AACvF;AA6CO,SAAS,QAAQ,GAAG;AACzB,SAAO,gBAAgB,WAAW,KAAK,IAAI,GAAG,QAAQ,IAAI,QAAQ,CAAC;AACrE;AAEO,SAAS,iBAAiB,SAAS,YAAY,WAAW;AAC/D,MAAI,CAAC,OAAO,cAAe,OAAM,IAAI,UAAU,sCAAsC;AACrF,MAAI,IAAI,UAAU,MAAM,SAAS,cAAc,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC;AAC5D,SAAO,IAAI,OAAO,QAAQ,OAAO,kBAAkB,aAAa,gBAAgB,QAAQ,SAAS,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,KAAK,UAAU,WAAW,GAAG,EAAE,OAAO,aAAa,IAAI,WAAY;AAAE,WAAO;AAAA,EAAM,GAAG;AACtN,WAAS,YAAY,GAAG;AAAE,WAAO,SAAU,GAAG;AAAE,aAAO,QAAQ,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM;AAAA,IAAG;AAAA,EAAG;AAC9F,WAAS,KAAK,GAAG,GAAG;AAAE,QAAI,EAAE,CAAC,GAAG;AAAE,QAAE,CAAC,IAAI,SAAU,GAAG;AAAE,eAAO,IAAI,QAAQ,SAAU,GAAG,GAAG;AAAE,YAAE,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,GAAG,CAAC;AAAA,QAAG,CAAC;AAAA,MAAG;AAAG,UAAI,EAAG,GAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAAA,IAAG;AAAA,EAAE;AACvK,WAAS,OAAO,GAAG,GAAG;AAAE,QAAI;AAAE,WAAK,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA,IAAG,SAAS,GAAG;AAAE,aAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;AAAA,IAAG;AAAA,EAAE;AACjF,WAAS,KAAK,GAAG;AAAE,MAAE,iBAAiB,UAAU,QAAQ,QAAQ,EAAE,MAAM,CAAC,EAAE,KAAK,SAAS,MAAM,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;AAAA,EAAG;AACvH,WAAS,QAAQ,OAAO;AAAE,WAAO,QAAQ,KAAK;AAAA,EAAG;AACjD,WAAS,OAAO,OAAO;AAAE,WAAO,SAAS,KAAK;AAAA,EAAG;AACjD,WAAS,OAAO,GAAG,GAAG;AAAE,QAAI,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,EAAE,OAAQ,QAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AAAA,EAAG;AACnF;AAEO,SAAS,iBAAiB,GAAG;AAClC,MAAI,GAAG;AACP,SAAO,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,KAAK,SAAS,SAAU,GAAG;AAAE,UAAM;AAAA,EAAG,CAAC,GAAG,KAAK,QAAQ,GAAG,EAAE,OAAO,QAAQ,IAAI,WAAY;AAAE,WAAO;AAAA,EAAM,GAAG;AAC1I,WAAS,KAAK,GAAG,GAAG;AAAE,MAAE,CAAC,IAAI,EAAE,CAAC,IAAI,SAAU,GAAG;AAAE,cAAQ,IAAI,CAAC,KAAK,EAAE,OAAO,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,MAAM,IAAI,IAAI,EAAE,CAAC,IAAI;AAAA,IAAG,IAAI;AAAA,EAAG;AACvI;AAEO,SAAS,cAAc,GAAG;AAC/B,MAAI,CAAC,OAAO,cAAe,OAAM,IAAI,UAAU,sCAAsC;AACrF,MAAI,IAAI,EAAE,OAAO,aAAa,GAAG;AACjC,SAAO,IAAI,EAAE,KAAK,CAAC,KAAK,IAAI,OAAO,aAAa,aAAa,SAAS,CAAC,IAAI,EAAE,OAAO,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM,GAAG,KAAK,OAAO,GAAG,KAAK,QAAQ,GAAG,EAAE,OAAO,aAAa,IAAI,WAAY;AAAE,WAAO;AAAA,EAAM,GAAG;AAC9M,WAAS,KAAK,GAAG;AAAE,MAAE,CAAC,IAAI,EAAE,CAAC,KAAK,SAAU,GAAG;AAAE,aAAO,IAAI,QAAQ,SAAU,SAAS,QAAQ;AAAE,YAAI,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,SAAS,QAAQ,EAAE,MAAM,EAAE,KAAK;AAAA,MAAG,CAAC;AAAA,IAAG;AAAA,EAAG;AAC/J,WAAS,OAAO,SAAS,QAAQ,GAAG,GAAG;AAAE,YAAQ,QAAQ,CAAC,EAAE,KAAK,SAASC,IAAG;AAAE,cAAQ,EAAE,OAAOA,IAAG,MAAM,EAAE,CAAC;AAAA,IAAG,GAAG,MAAM;AAAA,EAAG;AAC7H;;;AC/OM,SAAU,sBAMd,aAAqD;;AAErD,QAAM,OAAO,qBAA4D,WAAW;AACpF,SAAO;IACL,OAAI;AACF,aAAO,KAAK,KAAI;IAClB;IACA,CAAC,OAAO,aAAa,IAAC;AACpB,aAAO;IACT;IACA,SACE,KAAA,gBAAW,QAAX,gBAAW,SAAA,SAAX,YAAa,YAAM,QAAA,OAAA,SAAA,MACjB,CAAC,aAA2B;AAC5B,YAAM,EAAE,mBAAmB,YAAW,IAAK,aAAQ,QAAR,aAAQ,SAAR,WAAY,CAAA;AACvD,aAAO,qBAAqB,aAAa;QACvC,UAAU;QACV;OACD;IACH;;AAEN;AAEA,SAAgB,qBACd,aAAqD;;;AAErD,UAAM,QAAQ,qBAAqB,WAAW;AAC9C,UAAM,WAAW,MAAA,QAAM,MAAM,KAAI,CAAE;AAEnC,QAAI,CAAC,MAAM,QAAQ,SAAS,KAAK,GAAG;AAElC,YAAM,EAAE,WAAU,IAAK;AACvB,UAAI,YAAY;AACd,cAAA,QAAA,OAAO,iBAAA,cAAA,WAAW,SAAS,KAAK,CAAe,CAAA,CAAA;;AAC/C,mBAAyB,KAAA,MAAA,UAAA,cAAA,KAAK,GAAA,WAAA,YAAA,MAAA,QAAA,QAAA,KAAA,CAAA,GAAA,KAAA,UAAA,MAAA,CAAA,IAAA,KAAA,MAAE;AAAP,iBAAA,UAAA;AAAA,iBAAA;AAAd,kBAAM,OAAI;AACnB,kBAAA,QAAA,OAAO,iBAAA,cAAA,WAAW,IAAI,CAAe,CAAA,CAAA;UACvC;;;;;;;;;;MACF,OAAO;AACL,cAAA,MAAA,QAAM,SAAS,KAAK;AAEpB,cAAA,QAAA,OAAO,iBAAA,cAAA,KAAmD,CAAA,CAAA;MAC5D;IACF,OAAO;AACL,YAAA,QAAA,OAAO,iBAAA,cAAA,SAAS,KAAK,CAAA,CAAA;;AACrB,iBAAyB,KAAA,MAAA,UAAA,cAAA,KAAK,GAAA,WAAA,YAAA,MAAA,QAAA,QAAA,KAAA,CAAA,GAAA,KAAA,UAAA,MAAA,CAAA,IAAA,KAAA,MAAE;AAAP,eAAA,UAAA;AAAA,eAAA;AAAd,gBAAM,OAAI;AAGnB,gBAAA,QAAA,OAAO,iBAAA,cAAA,IAA6B,CAAA,CAAA;QACtC;;;;;;;;;;IACF;EACF,CAAC;;AAED,SAAgB,qBACd,aACA,UAGI,CAAA,GAAE;;AAEN,UAAM,EAAE,UAAU,YAAW,IAAK;AAClC,QAAI,WAAW,MAAA,QAAM,YAAY,QAAQ,aAAQ,QAAR,aAAQ,SAAR,WAAY,YAAY,eAAe,WAAW,CAAC;AAC5F,QAAI,CAAC,UAAU;AACb,aAAA,MAAA,QAAA,MAAA;IACF;AACA,UAAA,MAAA,QAAM,SAAS,IAAI;AACnB,WAAO,SAAS,cAAc;AAC5B,iBAAW,MAAA,QAAM,YAAY,QAAQ,SAAS,cAAc,WAAW,CAAC;AACxE,UAAI,CAAC,UAAU;AACb,eAAA,MAAA,QAAA,MAAA;MACF;AACA,YAAA,MAAA,QAAM,SAAS,IAAI;IACrB;EACF,CAAC;;;;AC1FD,IAAM,kBAAkB;AAAA,EACpB,OAAO;AAAA,EACP,wBAAwB;AAAA,EACxB,qBAAqB;AAAA,EACrB,UAAU;AAAA,EACV,eAAe;AAAA,EACf,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb,WAAW;AAAA,EACX,oBAAoB;AACxB;AAEA,IAAM,SAAS;AAAA,EACX,mBAAmB;AAAA,EACnB,mBAAmB;AAAA,EACnB,oBAAoB;AAAA,EACpB,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,uBAAuB;AAC3B;;;ACdO,IAAMC,UAAS,mBAAmB,0BAA0B;;;ACc5D,SAAS,kBAAkB,KAAsC;AACtE,MAAI,OAAO,QAAQ,YAAY,QAAQ,KAAM,QAAO;AACpD,QAAM,SAAS;AACf,SACE,OAAO,WAAW,aAEhB,OAAO,OAAO,UAAU,cACxB,OAAO,OAAO,SAAS,cACvB,OAAO,OAAO,OAAO;AAG3B;;;ACmBA,IAAM,YAAN,cAAwB,MAAM;AAAA,EAG5B,YAAY,SAAiB,MAAc;AACzC,UAAM,OAAO;AAFf;AAAA,wBAAgB;AAGd,SAAK,OAAO;AACZ,SAAK,OAAO;AAAA,EACd;AACF;AAEA,IAAM,0BAAN,MAA8B;AAAA,EAIrB,cAAc;AAHrB,wBAAiB;AACjB,wBAAQ;AAGN,SAAK,UAAU,IAAI,QAAc,CAAC,YAAY;AAC5C,WAAK,iBAAiB;AAAA,IACxB,CAAC;AAAA,EACH;AAAA,EAEO,YAAkB;AACvB,SAAK,eAAe;AAAA,EACtB;AAAA,EAEO,OAAsB;AAC3B,WAAO,KAAK;AAAA,EACd;AACF;AAuBA,IAAM,aAAN,MAAM,YAAW;AAAA;AAAA;AAAA,EA2Bf,YAAY,wBAAqE;AAzBjF;AAAA,wBAAiB;AAEjB,wBAAiB,YAAW,IAAI,aAAa;AAC7C,wBAAiB,UAAS,oBAAI,IAA0B;AACxD,wBAAQ,oBAAmB,oBAAI,IAAY;AAC3C,wBAAQ;AACR,wBAAQ,cAAa;AACrB,wBAAQ;AAER;AAAA,wBAAQ;AACR,wBAAQ,yBAAwB;AAgB9B,SAAK,cAAc,kBAAkB,sBAAsB,IACvD,yBACA,IAAI,gBAAgB,sBAAsB;AAC9C,SAAK,YAAY,GAAG,iBAAiB,CAAC,MAAM;AAC1C,WAAK,oBAAoB,EAAE,QAAQ,IAAoB;AAAA,IACzD,CAAC;AACD,SAAK,YAAY,GAAG,kBAAkB,CAAC,MAAM;AAC3C,WAAK,oBAAoB,EAAE,QAAQ,IAAoB;AAAA,IACzD,CAAC;AACD,SAAK,YAAY,GAAG,WAAW,MAAM;AACnC,WAAK,uBAAuB,UAAU;AACtC,WAAK,wBAAwB;AAC7B,WAAK,wBAAwB;AAC7B,WAAK,WAAW;AAAA,IAClB,CAAC;AAAA,EACH;AAAA,EAEA,MAAc,oBAAoB,MAAmC;AACnE,QAAI,CAAC,KAAK,cAAc,CAAC,KAAK,eAAe;AAC3C;AAAA,IACF;AACA,IAAAC,QAAO,KAAK,0BAA0B,IAAI;AAC1C,QAAI;AACF,YAAM,OAAO,KAAK;AAClB,cAAQ,MAAM;AAAA,QACZ,KAAK,kBAAkB;AACrB,gBAAM,OAAO,KAAK;AAClB,cAAI,CAAC,KAAK,aAAa,QAAQ;AAC7B,YAAAA,QAAO;AAAA,cACL,6EAA6E,KAAK,aAAa,cAAc;AAAA,YAC/G;AACA;AAAA,UACF;AACA,gBAAM,QAAuB;AAAA,YAC3B,QAAQ,KAAK,aAAa;AAAA,YAC1B,SAAS,KAAK;AAAA,UAChB;AACA,eAAK,SAAS,KAAK,WAAW,KAAK;AACnC;AAAA,QACF;AAAA,QACA,KAAK,cAAc;AACjB,gBAAM,WAAW,KAAK;AAEtB,eAAK,OAAO,IAAI,SAAS,QAAQ,QAAQ;AACzC,gBAAM,QAA0B,EAAE,MAAM,SAAS;AACjD,eAAK,SAAS,KAAK,eAAe,KAAK;AACvC;AAAA,QACF;AAAA,QACA,KAAK,oBAAoB;AACvB,gBAAM,OAAO,KAAK;AAClB,gBAAM,QAA4B,EAAE,QAAQ,KAAK,QAAQ,OAAO,KAAK,OAAO,QAAQ,KAAK,OAAO;AAChG,eAAK,SAAS,KAAK,iBAAiB,KAAK;AACzC;AAAA,QACF;AAAA;AAAA,QAEA,KAAK,kBAAkB;AACrB,gBAAM,OAAO,KAAK;AAClB,gBAAM,QAA0B,EAAE,QAAQ,KAAK,QAAQ,OAAO,KAAK,OAAO,QAAQ,KAAK,OAAO;AAC9F,eAAK,SAAS,KAAK,eAAe,KAAK;AACvC;AAAA,QACF;AAAA;AAAA,QAEA,KAAK,YAAY;AACf,gBAAM,OAAO,KAAK;AAClB,cAAI,CAAC,KAAK,OAAO,IAAI,KAAK,MAAM,GAAG;AACjC;AAAA,UACF;AACA,gBAAM,QAAwB,EAAE,QAAQ,KAAK,QAAQ,OAAO,KAAK,MAAM;AACvE,eAAK,SAAS,KAAK,aAAa,KAAK;AACrC,eAAK,OAAO,OAAO,KAAK,MAAM;AAC9B;AAAA,QACF;AAAA,QACA,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AAAA,QACL,KAAK;AACH,UAAAA,QAAO,QAAQ,2BAA2B,IAAI,oCAAoC;AAClF;AAAA,QACF;AACE,UAAAA,QAAO,QAAQ,uCAAuC,IAAI,EAAE;AAAA,MAChE;AAAA,IACF,SACO,KAAK;AACV,MAAAA,QAAO,MAAM,0CAA0C,GAAG,YAAY,IAAI;AAAA,IAC5E;AAAA,EACF;AAAA;AAAA,EAGA,MAAc,qBACZ,WACA,SACA,UACA,SACY;AACZ,IAAAA,QAAO,QAAQ,kBAAkB,SAAS,gBAAgB,QAAQ,cAAc,OAAO;AACvF,QAAI;AACF,YAAM,cAAc,MAAM,KAAK,YAAY,YAAY,WAAW,SAAS,UAAU;AAAA,QACnF,aAAa,SAAS;AAAA,MACxB,CAAC;AACD,MAAAA,QAAO,QAAQ,wBAAwB,SAAS,MAAM,WAAW;AACjE,YAAM,OAAO,YAAY;AACzB,UAAI,QAAQ,OAAO,SAAS,YAAY,OAAO,KAAK,SAAS,UAAU;AACrE,cAAM,IAAI,UAAU,wBAAwB,SAAS,aAAa,KAAK,IAAI,IAAI,KAAK,IAAI;AAAA,MAC1F;AACA,aAAO;AAAA,IACT,SAAS,GAAG;AACV,UAAI,aAAa,UAAW,OAAM;AAClC,UAAI,aAAa,mBAAmB,EAAE,aAAa,MAAM;AACvD,cAAM,IAAI,UAAU,EAAE,SAAS,EAAE,YAAY,IAAI;AAAA,MACnD;AACA,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAsBA,aAAoB,MAClB,6BACA,SACqB;AACrB,UAAM,aACJ,OAAO,gCAAgC,WACnC,EAAE,oBAAoB,YAAY,4BAA4B,IAC9D;AACN,UAAM,aAAa,IAAI,YAAW,UAAU;AAC5C,UAAM,WAAW,MAAM,EAAE,aAAa,SAAS,YAAY,CAAC;AAC5D,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAa,MAAM,SAAuC;AACxD,QAAI,KAAK,cAAe,QAAO,KAAK;AACpC,QAAI,KAAK,WAAY;AAErB,QAAI,KAAK,yBAAyB,KAAK,uBAAuB;AAC5D,YAAM,KAAK,sBAAsB,KAAK;AAEtC,UAAI,KAAK,cAAe,QAAO,KAAK;AACpC,UAAI,KAAK,WAAY;AAAA,IACvB;AAEA,UAAM,eAAe,KAAK,UAAU,OAAO;AAC3C,SAAK,gBAAgB;AACrB,QAAI;AACF,YAAM;AAAA,IACR,UAAE;AACA,UAAI,KAAK,kBAAkB,cAAc;AACvC,aAAK,gBAAgB;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,UAAU,SAAuC;AAC7D,SAAK,WAAW;AAChB,QAAI;AACF,YAAM,KAAK,YAAY,MAAM,EAAE,aAAa,SAAS,YAAY,CAAC;AAClE,WAAK,wBAAwB,IAAI,wBAAwB;AACzD,WAAK,wBAAwB;AAE7B,YAAM,gBAAgB,MAAM,KAAK;AAAA,QAC/B,gBAAgB;AAAA,QAChB;AAAA,QACA;AAAA,QACA;AAAA,MACF;AACA,MAAAA,QAAO,KAAK,iBAAiB,aAAa;AAC1C,YAAM,kBAAkB,IAAI,IAAI,cAAc,mBAAmB,CAAC,CAAC;AACnE,YAAM,YAAY,MAAM,QAAQ;AAAA,SAC7B,cAAc,WAAW,CAAC,GAAG,IAAI,OAAO,WAAW;AAClD,gBAAM,WAAW,MAAM,KAAK,gBAAgB,QAAQ;AAAA,YAClD,aAAa,SAAS;AAAA,YACtB,aAAa;AAAA,UACf,CAAC;AACD,iBAAO,EAAE,QAAQ,SAAS;AAAA,QAC5B,CAAC;AAAA,MACH;AAEA,WAAK,UAAU,cAAc;AAC7B,WAAK,mBAAmB;AACxB,gBAAU,QAAQ,CAAC,EAAE,QAAQ,SAAS,MAAM;AAC1C,aAAK,OAAO,IAAI,QAAQ,QAAQ;AAAA,MAClC,CAAC;AACD,WAAK,aAAa;AAClB,YAAM,eAA8B,EAAE,QAAQ,cAAc,OAAO;AACnE,WAAK,SAAS,KAAK,WAAW,YAAY;AAAA,IAC5C,SAAS,KAAK;AACZ,WAAK,WAAW;AAChB,YAAM,KAAK,eAAe;AAC1B,YAAM;AAAA,IACR;AAAA,EACF;AAAA,EAEQ,gBAAsB;AAC5B,QAAI,CAAC,KAAK,YAAY;AACpB,YAAM,IAAI,UAAU,2CAA2C,OAAO,UAAU;AAAA,IAClF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,eAAe,QAAgB,SAAuD;AACjG,SAAK,cAAc;AACnB,WAAO,KAAK;AAAA,MACV,gBAAgB;AAAA,MAChB,EAAE,OAAe;AAAA,MACjB;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA,EAEA,MAAc,mBACZ,gBACA,SACA,SAC4B;AAC5B,SAAK,cAAc;AACnB,UAAM,UAAU;AAAA,MACd,cAAc,EAAE,eAA+B;AAAA,MAC/C,SAAS;AAAA,IACX;AACA,UAAM,OAAO,MAAM,KAAK;AAAA,MACtB,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,QAAI,CAAC,QAAQ,CAAC,KAAK,IAAI;AACrB,YAAM,IAAI;AAAA,QACR,0CAA0C,cAAc,kCAAkC,KAAK,UAAU,IAAI,CAAC;AAAA,QAC9G,OAAO;AAAA,MACT;AAAA,IACF;AACA,UAAM,QAAQ,KAAK;AACnB,UAAM,SAAS,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,EAAE,0BAA0B,cAAc,GAAG;AACzG,QAAI,CAAC,QAAQ;AACX,MAAAA,QAAO;AAAA,QACL,4CAA4C,cAAc;AAAA,MAC5D;AACA,aAAO,EAAE,WAAW,MAAM;AAAA,IAC5B;AAEA,UAAM,QAAuB;AAAA,MAC3B;AAAA,MACA,SAAS;AAAA,QACP,WAAW;AAAA,QACX,WAAW,KAAK;AAAA,QAChB,iBAAiB;AAAA,QACjB,SAAS;AAAA,UACP,MAAM;AAAA,UACN,QAAQ;AAAA,QACV;AAAA,MACF;AAAA,IACF;AACA,SAAK,SAAS,KAAK,WAAW,KAAK;AACnC,WAAO,EAAE,WAAW,MAAM;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAaA,MAAa,WAAW,QAAgB,SAAiB,SAAyD;AAChH,SAAK,cAAc;AACnB,UAAM,iBAAiB,KAAK,OAAO,IAAI,MAAM,GAAG;AAChD,QAAI,CAAC,gBAAgB;AACnB,YAAM,IAAI,UAAU,0CAA0C,MAAM,IAAI,OAAO,WAAW;AAAA,IAC5F;AACA,WAAO,MAAM,KAAK,mBAAmB,gBAAgB,SAAS,OAAO;AAAA,EACvE;AAAA;AAAA;AAAA,EAIA,MAAc,gBAAgB,QAAgB,SAAkE;AAC9G,WAAO,KAAK;AAAA,MACV,gBAAgB;AAAA,MAChB,EAAE,IAAI,QAAQ,aAAa,SAAS,eAAe,MAAM;AAAA,MACzD;AAAA,MACA;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAa,cAAc,QAAgB,SAAqD;AAC9F,SAAK,cAAc;AACnB,WAAO,KAAK,gBAAgB,QAAQ,OAAO;AAAA,EAC7C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,WACX,OACA,SACA,SACqB;AACrB,SAAK,cAAc;AACnB,QAAI,cAAc;AAAA,MAChB;AAAA,MACA,SAAS,CAAC,GAAG,oBAAI,IAAI,CAAC,GAAG,SAAS,KAAK,MAAM,CAAC,CAAC;AAAA;AAAA,IACjD;AACA,QAAI,SAAS,QAAQ;AACnB,oBAAc,EAAE,GAAG,aAAa,QAAQ,QAAQ,OAAO;AAAA,IACzD;AACA,UAAM,WAAW,MAAM,KAAK;AAAA,MAC1B,gBAAgB;AAAA,MAChB;AAAA,MACA;AAAA,MACA;AAAA,IACF;AACA,SAAK,OAAO,IAAI,SAAS,QAAQ,QAAQ;AACzC,UAAM,QAA0B,EAAE,MAAM,SAAS;AACjD,SAAK,SAAS,KAAK,eAAe,KAAK;AACvC,WAAO;AAAA,EACT;AAAA,EAEA,MAAc,iBACZ,SACA,SACe;AACf,UAAM,KAAK,qBAA0B,gBAAgB,oBAAoB,SAAS,QAAQ,OAAO;AAAA,EACnG;AAAA,EAEA,MAAc,iBAAiB,QAAgB,SAA2C;AACxF,QAAI,KAAK,OAAO,IAAI,MAAM,GAAG;AAC3B;AAAA,IACF;AACA,UAAM,WAAW,MAAM,KAAK,gBAAgB,QAAQ,OAAO;AAC3D,SAAK,OAAO,IAAI,QAAQ,QAAQ;AAAA,EAClC;AAAA;AAAA,EAGA,MAAa,cAAc,QAAgB,QAAgB,SAA+C;AACxG,SAAK,cAAc;AACnB,UAAM,UAAmC,EAAE,QAAgB,WAAW,OAAO,OAAe;AAC5F,UAAM,SAAS,WAAW,KAAK;AAG/B,UAAM,8BAA8B,UAAU,CAAC,KAAK,OAAO,IAAI,MAAM;AACrE,QAAI;AACF,YAAM,KAAK,iBAAiB,SAAS,OAAO;AAAA,IAC9C,SAAS,OAAO;AACd,UAAI,CAAC,UAAU,EAAE,iBAAiB,aAAa,MAAM,SAAS,OAAO,oBAAoB;AACvF,cAAM;AAAA,MACR;AAAA,IACF;AACA,QAAI,6BAA6B;AAC/B,YAAM,KAAK,iBAAiB,QAAQ,OAAO;AAAA,IAC7C;AAAA,EACF;AAAA;AAAA,EAGA,MAAa,mBAAmB,QAAgB,QAAgB,SAAoD;AAClH,SAAK,cAAc;AACnB,UAAM,UAAmC,EAAE,QAAgB,WAAW,UAAU,OAAe;AAC/F,UAAM,KAAK,iBAAiB,SAAS,OAAO;AAG5C,QAAI,WAAW,KAAK,QAAQ;AAC1B,YAAM,WAAW,KAAK,OAAO,IAAI,MAAM;AACvC,UAAI,UAAU;AACZ,aAAK,OAAO,OAAO,MAAM;AACzB,cAAM,QAAwB,EAAE,QAAQ,OAAO,SAAS,MAAM;AAC9D,aAAK,SAAS,KAAK,aAAa,KAAK;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA6BO,iBAAiB,QAAgB,SAA4E;AAClH,SAAK,cAAc;AACnB,UAAM,iBAAiB,KAAK,OAAO,IAAI,MAAM,GAAG;AAChD,QAAI,CAAC,gBAAgB;AACnB,YAAM,IAAI,UAAU,gDAAgD,MAAM,IAAI,OAAO,WAAW;AAAA,IAClG;AAEA,UAAM,kBAAkB,SAAS,eAAe;AAChD,UAAM,gBAAmC;AAAA,MACvC,cAAc,EAAE,eAAe;AAAA,MAC/B,OAAO,SAAS,WAAW;AAAA,MAC3B,KAAK,SAAS,SAAS;AAAA,MACvB,UAAU;AAAA,IACZ;AAEA,UAAM,YAAY,OAChB,MACA,gBACmF;AACnF,YAAM,QAA2B;AAAA,QAC/B,GAAG;AAAA,QACH,UAAU,eAAe,KAAK,YAAY;AAAA,MAC5C;AACA,YAAM,SAAS,MAAM,KAAK;AAAA,QACxB,gBAAgB;AAAA,QAChB;AAAA,QACA;AAAA,QACA,EAAE,aAAa,SAAS,YAAY;AAAA,MACtC;AACA,UAAI,OAAO,SAAS,WAAW,GAAG;AAChC,eAAO;AAAA,MACT;AACA,aAAO,EAAE,MAAM,OAAO,UAAU,cAAc,OAAO,aAAa,OAAU;AAAA,IAC9E;AAEA,WAAO,sBAAmF;AAAA,MACxF;AAAA,MACA,SAAS,CAAC,MAAM,gBAAgB,UAAU,MAAM,WAAW;AAAA,IAC7D,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,IAAW,QAAoB;AAC7B,WAAO,MAAM,KAAK,KAAK,OAAO,OAAO,CAAC;AAAA,EACxC;AAAA;AAAA,EAGO,cAAc,QAAyB;AAC5C,WAAO,KAAK,OAAO,IAAI,MAAM;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAW,SAAiB;AAC1B,QAAI,CAAC,KAAK,SAAS;AACjB,YAAM,IAAI,UAAU,kDAAkD,OAAO,UAAU;AAAA,IACzF;AACA,WAAO,KAAK;AAAA,EACd;AAAA,EAoCO,GAAG,OAAe,UAAkC;AACzD,SAAK,SAAS,GAAG,OAAO,QAAQ;AAAA,EAClC;AAAA,EAgBO,IAAI,OAAe,UAAkC;AAC1D,SAAK,SAAS,IAAI,OAAO,QAAQ;AAAA,EACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAa,OAAsB;AACjC,UAAM,eAAe,KAAK;AAC1B,QAAI,cAAc;AAChB,YAAM,aAAa,MAAM,MAAM,MAAS;AAAA,IAC1C;AACA,SAAK,gBAAgB;AAErB,SAAK,WAAW;AAChB,UAAM,KAAK,eAAe;AAAA,EAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQQ,aAAmB;AACzB,UAAM,aAAa,KAAK;AACxB,SAAK,aAAa;AAClB,SAAK,UAAU;AACf,SAAK,OAAO,MAAM;AAClB,SAAK,iBAAiB,MAAM;AAC5B,QAAI,YAAY;AACd,YAAM,eAA8B,CAAC;AACrC,WAAK,SAAS,KAAK,WAAW,YAAY;AAAA,IAC5C;AAAA,EACF;AAAA,EAEA,MAAc,iBAAgC;AAC5C,UAAM,uBAAuB,KAAK;AAClC,QAAI,CAAC,sBAAsB;AACzB;AAAA,IACF;AAEA,QAAI,CAAC,KAAK,uBAAuB;AAC/B,WAAK,wBAAwB;AAC7B,UAAI;AACF,aAAK,YAAY,KAAK;AAAA,MACxB,SAAS,KAAK;AACZ,aAAK,wBAAwB;AAC7B,cAAM;AAAA,MACR;AAAA,IACF;AACA,UAAM,qBAAqB,KAAK;AAAA,EAClC;AACF;;;ACzrBO,IAAM,qBAAqB;",
|
|
6
|
+
"names": ["len", "i", "len2", "Buffer", "byteLength", "name", "exports", "Buffer", "name", "exports$1", "_dewExec", "dew", "ReflectApply", "ReflectOwnKeys", "NumberIsNaN", "EventEmitter", "once", "defaultMaxListeners", "listenerCount", "name", "exports", "enabledNamespaces", "logger", "context", "context", "Buffer", "WebPubSubClientState", "exports", "Buffer", "name", "v", "logger", "logger"]
|
|
7
|
+
}
|