@candypoets/nipworker 0.91.0 → 0.91.2
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/dist/NarrowTypes.js +279 -1
- package/dist/cache/index.js +431 -2
- package/dist/cache/pkg/cache.d.ts +3 -3
- package/dist/cache/pkg/cache_bg.wasm.d.ts +3 -3
- package/dist/connections/index.js +442 -2
- package/dist/connections/pkg/connections.d.ts +3 -3
- package/dist/connections/pkg/connections_bg.wasm.d.ts +3 -3
- package/dist/connections/proxy.js +2 -1
- package/dist/connections/proxy.js.map +7 -1
- package/dist/connections/types.d.ts +12 -0
- package/dist/connections/types.d.ts.map +1 -1
- package/dist/crypto/index.js +785 -2
- package/dist/hooks.js +94 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +231 -1
- package/dist/index2.js +2614 -1
- package/dist/parser/index.js +565 -2
- package/dist/proxy/relayProxyServer.d.ts +4 -0
- package/dist/proxy/relayProxyServer.d.ts.map +1 -1
- package/dist/proxy/server.js +7 -1
- package/dist/proxy/vite.d.ts.map +1 -1
- package/dist/proxy/vite.js +43 -2
- package/dist/relayProxyServer.js +518 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils.js +357 -4
- package/dist/worker-message.js +6866 -1
- package/package.json +3 -1
- package/dist/NarrowTypes.js.map +0 -1
- package/dist/cache/index.js.map +0 -1
- package/dist/connections/index.js.map +0 -1
- package/dist/crypto/index.js.map +0 -1
- package/dist/hooks.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index2.js.map +0 -1
- package/dist/parser/index.js.map +0 -1
- package/dist/proxy/index.js.map +0 -1
- package/dist/proxy/server.js.map +0 -1
- package/dist/proxy/vite.js.map +0 -1
- package/dist/relayProxyServer.js.map +0 -1
- package/dist/signer-response.js +0 -1
- package/dist/signer-response.js.map +0 -1
- package/dist/utils.js.map +0 -1
- package/dist/worker-message.js.map +0 -1
package/dist/hooks.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sources":["../src/hooks.ts"],"sourcesContent":["import { Event, EventTemplate } from 'nostr-tools';\nimport { ArrayBufferReader } from 'src/lib/ArrayBufferReader';\nimport { WorkerMessage } from './generated/nostr/fb';\nimport { RequestObject, getManager, type SubscriptionConfig } from '.';\n// Re-export type guard utilities for hooks users\nexport {\n\tisParsedEvent,\n\tisNostrEvent,\n\tisConnectionStatus,\n\tisEoce,\n\tasParsedEvent,\n\tasNostrEvent\n} from './lib/NarrowTypes';\n\n// Provide a handler from your app (e.g., React setState or Redux dispatch)\nexport type StatusHandler = (status: 'connected' | 'failed' | 'close', url: string) => void;\n\n/**\n * Hook to receive relay connection status updates.\n * Immediately calls handler with current statuses, then subscribes to real-time updates.\n */\nexport function useRelayStatus(onStatus: StatusHandler) {\n\tlet stopped = false;\n\n\t// Get current statuses immediately\n\tconst statuses = getManager().getRelayStatuses();\n\tfor (const [url, { status }] of statuses) {\n\t\tonStatus(status, url);\n\t}\n\n\t// Handler for real-time updates\n\tconst handleStatus = (event: globalThis.Event) => {\n\t\tif (stopped) return;\n\t\tconst customEvent = event as globalThis.CustomEvent<{\n\t\t\tstatus: 'connected' | 'failed' | 'close';\n\t\t\turl: string;\n\t\t}>;\n\t\tconst { status, url } = customEvent.detail;\n\t\tonStatus(status, url);\n\t};\n\n\t// Subscribe to updates\n\tgetManager().addEventListener('relay:status', handleStatus as globalThis.EventListener);\n\n\t// Return a stop handle\n\treturn () => {\n\t\tstopped = true;\n\t\tgetManager().removeEventListener('relay:status', handleStatus as globalThis.EventListener);\n\t};\n}\n\nexport function useSubscription(\n\tsubId: string,\n\trequests: RequestObject[],\n\tcallback: (message: WorkerMessage) => void = () => {},\n\toptions: SubscriptionConfig = { closeOnEose: false }\n): () => void {\n\tif (!subId) {\n\t\treturn () => {};\n\t}\n\n\tlet buffer: ArrayBuffer | null = null;\n\tlet lastReadPos = 4;\n\tlet running = true;\n\tlet hasUnsubscribed = false;\n\tlet hasSubscribed = false;\n\tsubId = getManager().createShortId(subId);\n\n\t// Reentrancy/coalescing flags\n\tlet scheduled = false;\n\tlet processing = false;\n\n\tconst processEvents = (): void => {\n\t\tif (!running || !buffer) {\n\t\t\tprocessing = false;\n\t\t\treturn;\n\t\t}\n\t\tif (processing) return;\n\t\tprocessing = true;\n\t\ttry {\n\t\t\tlet result = ArrayBufferReader.readMessages(buffer, lastReadPos);\n\t\t\twhile (result.hasNewData && buffer) {\n\t\t\t\tfor (const message of result.messages) {\n\t\t\t\t\tcallback(message);\n\t\t\t\t}\n\t\t\t\tlastReadPos = result.newReadPosition;\n\t\t\t\tresult = ArrayBufferReader.readMessages(buffer, lastReadPos);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.error('[useSubscription processEvents] error:', e);\n\t\t} finally {\n\t\t\tprocessing = false;\n\t\t}\n\t};\n\n\tconst scheduleProcess = () => {\n\t\tif (!running) return;\n\t\tif (scheduled) return;\n\t\tscheduled = true;\n\t\tqueueMicrotask(() => {\n\t\t\tscheduled = false;\n\t\t\tprocessEvents();\n\t\t});\n\t};\n\n\tconst unsubscribe = (): void => {\n\t\tif (hasUnsubscribed) return;\n\t\trunning = false;\n\t\tif (hasSubscribed) {\n\t\t\tgetManager().removeEventListener(`subscription:${subId}`, scheduleProcess);\n\t\t\tgetManager().unsubscribe(subId);\n\t\t\thasUnsubscribed = true;\n\t\t}\n\t\tPromise.resolve().then(() => {\n\t\t\tbuffer = null;\n\t\t\tlastReadPos = 4;\n\t\t});\n\t};\n\n\tbuffer = getManager().subscribe(subId, requests, options);\n\thasSubscribed = true;\n\tgetManager().addEventListener(`subscription:${subId}`, scheduleProcess);\n\tscheduleProcess();\n\n\treturn unsubscribe;\n}\n\nexport function usePublish(\n\tpubId: string,\n\tevent: EventTemplate,\n\tcallback: (message: WorkerMessage) => void = () => {},\n\toptions: { trackStatus?: boolean; defaultRelays?: string[] } = {\n\t\ttrackStatus: true,\n\t\tdefaultRelays: []\n\t}\n): () => void {\n\tif (!pubId) {\n\t\treturn () => {};\n\t}\n\n\toptions = { trackStatus: true, ...options };\n\n\tlet buffer: ArrayBuffer | null = null;\n\tlet lastReadPos: number = 4;\n\tlet running = true;\n\n\t// pubId = nipWorker.createShortId(pubId);\n\n\t// const manager = nipWorker.getManager(pubId);\n\n\tconst unsubscribe = (): void => {\n\t\trunning = false;\n\t\tgetManager().removeEventListener(`publish:${pubId}`, processEvents);\n\t};\n\n\tbuffer = getManager().publish(pubId, event as any, options.defaultRelays);\n\n\tconst processEvents = (): void => {\n\t\tif (!running || !buffer) {\n\t\t\treturn;\n\t\t}\n\t\tconst result = ArrayBufferReader.readMessages(buffer, lastReadPos);\n\t\tif (result.hasNewData) {\n\t\t\tresult.messages.forEach((message: WorkerMessage) => {\n\t\t\t\tcallback(message);\n\t\t\t});\n\t\t\tlastReadPos = result.newReadPosition;\n\t\t}\n\t};\n\n\tif (options.trackStatus) {\n\t\tgetManager().addEventListener(`publish:${pubId}`, processEvents);\n\t\tqueueMicrotask(processEvents);\n\t}\n\n\treturn unsubscribe;\n}\n\nexport function useSignEvent(template: EventTemplate, callback: (event: Event) => void) {\n\t// const manager = nipWorker.getManager('');\n\n\tgetManager().signEvent(template, callback);\n}\n"],"names":["useRelayStatus","onStatus","stopped","statuses","getManager","url","status","handleStatus","event","customEvent","useSubscription","subId","requests","callback","options","buffer","lastReadPos","running","hasUnsubscribed","hasSubscribed","scheduled","processing","processEvents","result","ArrayBufferReader","message","e","scheduleProcess","unsubscribe","usePublish","pubId","useSignEvent","template"],"mappings":"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"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/dist/index2.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index2.js","sources":["../src/generated/nostr/fb/cache-request.ts","../src/generated/nostr/fb/cache-input.ts","../src/generated/nostr/fb/cache-input-message.ts","../src/generated/nostr/fb/cache-response.ts","../src/generated/nostr/fb/counter-pipe-config.ts","../src/generated/nostr/fb/get-public-key.ts","../src/generated/nostr/fb/kind-filter-pipe-config.ts","../src/generated/nostr/fb/template.ts","../src/generated/nostr/fb/publish.ts","../src/generated/nostr/fb/private-key.ts","../src/generated/nostr/fb/signer-type.ts","../src/generated/nostr/fb/set-signer.ts","../src/generated/nostr/fb/sign-event.ts","../src/generated/nostr/fb/mute-filter-pipe-config.ts","../src/generated/nostr/fb/npub-limiter-pipe-config.ts","../src/generated/nostr/fb/parse-pipe-config.ts","../src/generated/nostr/fb/proof-verification-pipe-config.ts","../src/generated/nostr/fb/save-to-db-pipe-config.ts","../src/generated/nostr/fb/serialize-events-pipe-config.ts","../src/generated/nostr/fb/pipe-config.ts","../src/generated/nostr/fb/pipe.ts","../src/generated/nostr/fb/pipeline-config.ts","../src/generated/nostr/fb/subscription-config.ts","../src/generated/nostr/fb/subscribe.ts","../src/generated/nostr/fb/unsubscribe.ts","../src/generated/nostr/fb/main-content.ts","../src/generated/nostr/fb/main-message.ts","../src/generated/nostr/fb/parsed-data-union.ts","../src/generated/nostr/fb/subscribe-kind.ts","../src/lib/ArrayBufferReader.ts","../src/lib/NostrUtils.ts","../src/index.ts"],"sourcesContent":["// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { NostrEvent, NostrEventT } from '../../nostr/fb/nostr-event.js';\nimport { ParsedEvent, ParsedEventT } from '../../nostr/fb/parsed-event.js';\nimport { Request, RequestT } from '../../nostr/fb/request.js';\n\n\nexport class CacheRequest implements flatbuffers.IUnpackableObject<CacheRequestT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):CacheRequest {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsCacheRequest(bb:flatbuffers.ByteBuffer, obj?:CacheRequest):CacheRequest {\n return (obj || new CacheRequest()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsCacheRequest(bb:flatbuffers.ByteBuffer, obj?:CacheRequest):CacheRequest {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new CacheRequest()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubId():string|null\nsubId(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nsubId(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nrequests(index: number, obj?:Request):Request|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new Request()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nrequestsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nevent(obj?:NostrEvent):NostrEvent|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new NostrEvent()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nparsedEvent(obj?:ParsedEvent):ParsedEvent|null {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? (obj || new ParsedEvent()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nrelays(index: number):string\nrelays(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\nrelays(index: number,optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\nrelaysLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startCacheRequest(builder:flatbuffers.Builder) {\n builder.startObject(5);\n}\n\nstatic addSubId(builder:flatbuffers.Builder, subIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subIdOffset, 0);\n}\n\nstatic addRequests(builder:flatbuffers.Builder, requestsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, requestsOffset, 0);\n}\n\nstatic createRequestsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startRequestsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic addEvent(builder:flatbuffers.Builder, eventOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, eventOffset, 0);\n}\n\nstatic addParsedEvent(builder:flatbuffers.Builder, parsedEventOffset:flatbuffers.Offset) {\n builder.addFieldOffset(3, parsedEventOffset, 0);\n}\n\nstatic addRelays(builder:flatbuffers.Builder, relaysOffset:flatbuffers.Offset) {\n builder.addFieldOffset(4, relaysOffset, 0);\n}\n\nstatic createRelaysVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startRelaysVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endCacheRequest(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // sub_id\n return offset;\n}\n\n\nunpack(): CacheRequestT {\n return new CacheRequestT(\n this.subId(),\n this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength()),\n (this.event() !== null ? this.event()!.unpack() : null),\n (this.parsedEvent() !== null ? this.parsedEvent()!.unpack() : null),\n this.bb!.createScalarList<string>(this.relays.bind(this), this.relaysLength())\n );\n}\n\n\nunpackTo(_o: CacheRequestT): void {\n _o.subId = this.subId();\n _o.requests = this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength());\n _o.event = (this.event() !== null ? this.event()!.unpack() : null);\n _o.parsedEvent = (this.parsedEvent() !== null ? this.parsedEvent()!.unpack() : null);\n _o.relays = this.bb!.createScalarList<string>(this.relays.bind(this), this.relaysLength());\n}\n}\n\nexport class CacheRequestT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subId: string|Uint8Array|null = null,\n public requests: (RequestT)[] = [],\n public event: NostrEventT|null = null,\n public parsedEvent: ParsedEventT|null = null,\n public relays: (string)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subId = (this.subId !== null ? builder.createString(this.subId!) : 0);\n const requests = CacheRequest.createRequestsVector(builder, builder.createObjectOffsetList(this.requests));\n const event = (this.event !== null ? this.event!.pack(builder) : 0);\n const parsedEvent = (this.parsedEvent !== null ? this.parsedEvent!.pack(builder) : 0);\n const relays = CacheRequest.createRelaysVector(builder, builder.createObjectOffsetList(this.relays));\n\n CacheRequest.startCacheRequest(builder);\n CacheRequest.addSubId(builder, subId);\n CacheRequest.addRequests(builder, requests);\n CacheRequest.addEvent(builder, event);\n CacheRequest.addParsedEvent(builder, parsedEvent);\n CacheRequest.addRelays(builder, relays);\n\n return CacheRequest.endCacheRequest(builder);\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { CacheRequest, CacheRequestT } from '../../nostr/fb/cache-request.js';\nimport { WorkerMessage, WorkerMessageT } from '../../nostr/fb/worker-message.js';\n\n\nexport enum CacheInput {\n NONE = 0,\n WorkerMessage = 1,\n CacheRequest = 2\n}\n\nexport function unionToCacheInput(\n type: CacheInput,\n accessor: (obj:CacheRequest|WorkerMessage) => CacheRequest|WorkerMessage|null\n): CacheRequest|WorkerMessage|null {\n switch(CacheInput[type]) {\n case 'NONE': return null; \n case 'WorkerMessage': return accessor(new WorkerMessage())! as WorkerMessage;\n case 'CacheRequest': return accessor(new CacheRequest())! as CacheRequest;\n default: return null;\n }\n}\n\nexport function unionListToCacheInput(\n type: CacheInput, \n accessor: (index: number, obj:CacheRequest|WorkerMessage) => CacheRequest|WorkerMessage|null, \n index: number\n): CacheRequest|WorkerMessage|null {\n switch(CacheInput[type]) {\n case 'NONE': return null; \n case 'WorkerMessage': return accessor(index, new WorkerMessage())! as WorkerMessage;\n case 'CacheRequest': return accessor(index, new CacheRequest())! as CacheRequest;\n default: return null;\n }\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { CacheInput, unionToCacheInput, unionListToCacheInput } from '../../nostr/fb/cache-input.js';\nimport { CacheRequest, CacheRequestT } from '../../nostr/fb/cache-request.js';\nimport { WorkerMessage, WorkerMessageT } from '../../nostr/fb/worker-message.js';\n\n\nexport class CacheInputMessage implements flatbuffers.IUnpackableObject<CacheInputMessageT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):CacheInputMessage {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsCacheInputMessage(bb:flatbuffers.ByteBuffer, obj?:CacheInputMessage):CacheInputMessage {\n return (obj || new CacheInputMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsCacheInputMessage(bb:flatbuffers.ByteBuffer, obj?:CacheInputMessage):CacheInputMessage {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new CacheInputMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ncontentType():CacheInput {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : CacheInput.NONE;\n}\n\ncontent<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startCacheInputMessage(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addContentType(builder:flatbuffers.Builder, contentType:CacheInput) {\n builder.addFieldInt8(0, contentType, CacheInput.NONE);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, contentOffset, 0);\n}\n\nstatic endCacheInputMessage(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // content\n return offset;\n}\n\nstatic createCacheInputMessage(builder:flatbuffers.Builder, contentType:CacheInput, contentOffset:flatbuffers.Offset):flatbuffers.Offset {\n CacheInputMessage.startCacheInputMessage(builder);\n CacheInputMessage.addContentType(builder, contentType);\n CacheInputMessage.addContent(builder, contentOffset);\n return CacheInputMessage.endCacheInputMessage(builder);\n}\n\nunpack(): CacheInputMessageT {\n return new CacheInputMessageT(\n this.contentType(),\n (() => {\n const temp = unionToCacheInput(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: CacheInputMessageT): void {\n _o.contentType = this.contentType();\n _o.content = (() => {\n const temp = unionToCacheInput(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class CacheInputMessageT implements flatbuffers.IGeneratedObject {\nconstructor(\n public contentType: CacheInput = CacheInput.NONE,\n public content: CacheRequestT|WorkerMessageT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = builder.createObjectOffset(this.content);\n\n return CacheInputMessage.createCacheInputMessage(builder,\n this.contentType,\n content\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class CacheResponse implements flatbuffers.IUnpackableObject<CacheResponseT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):CacheResponse {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsCacheResponse(bb:flatbuffers.ByteBuffer, obj?:CacheResponse):CacheResponse {\n return (obj || new CacheResponse()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsCacheResponse(bb:flatbuffers.ByteBuffer, obj?:CacheResponse):CacheResponse {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new CacheResponse()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubId():string|null\nsubId(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nsubId(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\npayload(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readUint8(this.bb!.__vector(this.bb_pos + offset) + index) : 0;\n}\n\npayloadLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\npayloadArray():Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? new Uint8Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startCacheResponse(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addSubId(builder:flatbuffers.Builder, subIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subIdOffset, 0);\n}\n\nstatic addPayload(builder:flatbuffers.Builder, payloadOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, payloadOffset, 0);\n}\n\nstatic createPayloadVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset {\n builder.startVector(1, data.length, 1);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt8(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startPayloadVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(1, numElems, 1);\n}\n\nstatic endCacheResponse(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // sub_id\n return offset;\n}\n\nstatic createCacheResponse(builder:flatbuffers.Builder, subIdOffset:flatbuffers.Offset, payloadOffset:flatbuffers.Offset):flatbuffers.Offset {\n CacheResponse.startCacheResponse(builder);\n CacheResponse.addSubId(builder, subIdOffset);\n CacheResponse.addPayload(builder, payloadOffset);\n return CacheResponse.endCacheResponse(builder);\n}\n\nunpack(): CacheResponseT {\n return new CacheResponseT(\n this.subId(),\n this.bb!.createScalarList<number>(this.payload.bind(this), this.payloadLength())\n );\n}\n\n\nunpackTo(_o: CacheResponseT): void {\n _o.subId = this.subId();\n _o.payload = this.bb!.createScalarList<number>(this.payload.bind(this), this.payloadLength());\n}\n}\n\nexport class CacheResponseT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subId: string|Uint8Array|null = null,\n public payload: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subId = (this.subId !== null ? builder.createString(this.subId!) : 0);\n const payload = CacheResponse.createPayloadVector(builder, this.payload);\n\n return CacheResponse.createCacheResponse(builder,\n subId,\n payload\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class CounterPipeConfig implements flatbuffers.IUnpackableObject<CounterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):CounterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsCounterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:CounterPipeConfig):CounterPipeConfig {\n return (obj || new CounterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsCounterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:CounterPipeConfig):CounterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new CounterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkinds(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb!.__vector(this.bb_pos + offset) + index * 2) : 0;\n}\n\nkindsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nkindsArray():Uint16Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? new Uint16Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\npubkey():string|null\npubkey(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\npubkey(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startCounterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addKinds(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, kindsOffset, 0);\n}\n\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array|Uint8Array):flatbuffers.Offset {\n builder.startVector(2, data.length, 2);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt16(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startKindsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(2, numElems, 2);\n}\n\nstatic addPubkey(builder:flatbuffers.Builder, pubkeyOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, pubkeyOffset, 0);\n}\n\nstatic endCounterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // kinds\n builder.requiredField(offset, 6) // pubkey\n return offset;\n}\n\nstatic createCounterPipeConfig(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset, pubkeyOffset:flatbuffers.Offset):flatbuffers.Offset {\n CounterPipeConfig.startCounterPipeConfig(builder);\n CounterPipeConfig.addKinds(builder, kindsOffset);\n CounterPipeConfig.addPubkey(builder, pubkeyOffset);\n return CounterPipeConfig.endCounterPipeConfig(builder);\n}\n\nunpack(): CounterPipeConfigT {\n return new CounterPipeConfigT(\n this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength()),\n this.pubkey()\n );\n}\n\n\nunpackTo(_o: CounterPipeConfigT): void {\n _o.kinds = this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength());\n _o.pubkey = this.pubkey();\n}\n}\n\nexport class CounterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kinds: (number)[] = [],\n public pubkey: string|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const kinds = CounterPipeConfig.createKindsVector(builder, this.kinds);\n const pubkey = (this.pubkey !== null ? builder.createString(this.pubkey!) : 0);\n\n return CounterPipeConfig.createCounterPipeConfig(builder,\n kinds,\n pubkey\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class GetPublicKey implements flatbuffers.IUnpackableObject<GetPublicKeyT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):GetPublicKey {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsGetPublicKey(bb:flatbuffers.ByteBuffer, obj?:GetPublicKey):GetPublicKey {\n return (obj || new GetPublicKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsGetPublicKey(bb:flatbuffers.ByteBuffer, obj?:GetPublicKey):GetPublicKey {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new GetPublicKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startGetPublicKey(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endGetPublicKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createGetPublicKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n GetPublicKey.startGetPublicKey(builder);\n return GetPublicKey.endGetPublicKey(builder);\n}\n\nunpack(): GetPublicKeyT {\n return new GetPublicKeyT();\n}\n\n\nunpackTo(_o: GetPublicKeyT): void {}\n}\n\nexport class GetPublicKeyT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return GetPublicKey.createGetPublicKey(builder);\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class KindFilterPipeConfig implements flatbuffers.IUnpackableObject<KindFilterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):KindFilterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsKindFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:KindFilterPipeConfig):KindFilterPipeConfig {\n return (obj || new KindFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsKindFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:KindFilterPipeConfig):KindFilterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new KindFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkinds(index: number):number|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb!.__vector(this.bb_pos + offset) + index * 2) : 0;\n}\n\nkindsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nkindsArray():Uint16Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? new Uint16Array(this.bb!.bytes().buffer, this.bb!.bytes().byteOffset + this.bb!.__vector(this.bb_pos + offset), this.bb!.__vector_len(this.bb_pos + offset)) : null;\n}\n\nstatic startKindFilterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addKinds(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, kindsOffset, 0);\n}\n\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array):flatbuffers.Offset;\n/**\n * @deprecated This Uint8Array overload will be removed in the future.\n */\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint8Array):flatbuffers.Offset;\nstatic createKindsVector(builder:flatbuffers.Builder, data:number[]|Uint16Array|Uint8Array):flatbuffers.Offset {\n builder.startVector(2, data.length, 2);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addInt16(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startKindsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(2, numElems, 2);\n}\n\nstatic endKindFilterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // kinds\n return offset;\n}\n\nstatic createKindFilterPipeConfig(builder:flatbuffers.Builder, kindsOffset:flatbuffers.Offset):flatbuffers.Offset {\n KindFilterPipeConfig.startKindFilterPipeConfig(builder);\n KindFilterPipeConfig.addKinds(builder, kindsOffset);\n return KindFilterPipeConfig.endKindFilterPipeConfig(builder);\n}\n\nunpack(): KindFilterPipeConfigT {\n return new KindFilterPipeConfigT(\n this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength())\n );\n}\n\n\nunpackTo(_o: KindFilterPipeConfigT): void {\n _o.kinds = this.bb!.createScalarList<number>(this.kinds.bind(this), this.kindsLength());\n}\n}\n\nexport class KindFilterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kinds: (number)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const kinds = KindFilterPipeConfig.createKindsVector(builder, this.kinds);\n\n return KindFilterPipeConfig.createKindFilterPipeConfig(builder,\n kinds\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { StringVec, StringVecT } from '../../nostr/fb/string-vec.js';\n\n\nexport class Template implements flatbuffers.IUnpackableObject<TemplateT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Template {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsTemplate(bb:flatbuffers.ByteBuffer, obj?:Template):Template {\n return (obj || new Template()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsTemplate(bb:flatbuffers.ByteBuffer, obj?:Template):Template {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Template()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkind():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb_pos + offset) : 0;\n}\n\ncreatedAt():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readInt32(this.bb_pos + offset) : 0;\n}\n\ncontent():string|null\ncontent(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\ncontent(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ntags(index: number, obj?:StringVec):StringVec|null {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? (obj || new StringVec()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\ntagsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startTemplate(builder:flatbuffers.Builder) {\n builder.startObject(4);\n}\n\nstatic addKind(builder:flatbuffers.Builder, kind:number) {\n builder.addFieldInt16(0, kind, 0);\n}\n\nstatic addCreatedAt(builder:flatbuffers.Builder, createdAt:number) {\n builder.addFieldInt32(1, createdAt, 0);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, contentOffset, 0);\n}\n\nstatic addTags(builder:flatbuffers.Builder, tagsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(3, tagsOffset, 0);\n}\n\nstatic createTagsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startTagsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endTemplate(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 8) // content\n builder.requiredField(offset, 10) // tags\n return offset;\n}\n\nstatic createTemplate(builder:flatbuffers.Builder, kind:number, createdAt:number, contentOffset:flatbuffers.Offset, tagsOffset:flatbuffers.Offset):flatbuffers.Offset {\n Template.startTemplate(builder);\n Template.addKind(builder, kind);\n Template.addCreatedAt(builder, createdAt);\n Template.addContent(builder, contentOffset);\n Template.addTags(builder, tagsOffset);\n return Template.endTemplate(builder);\n}\n\nunpack(): TemplateT {\n return new TemplateT(\n this.kind(),\n this.createdAt(),\n this.content(),\n this.bb!.createObjList<StringVec, StringVecT>(this.tags.bind(this), this.tagsLength())\n );\n}\n\n\nunpackTo(_o: TemplateT): void {\n _o.kind = this.kind();\n _o.createdAt = this.createdAt();\n _o.content = this.content();\n _o.tags = this.bb!.createObjList<StringVec, StringVecT>(this.tags.bind(this), this.tagsLength());\n}\n}\n\nexport class TemplateT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kind: number = 0,\n public createdAt: number = 0,\n public content: string|Uint8Array|null = null,\n public tags: (StringVecT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = (this.content !== null ? builder.createString(this.content!) : 0);\n const tags = Template.createTagsVector(builder, builder.createObjectOffsetList(this.tags));\n\n return Template.createTemplate(builder,\n this.kind,\n this.createdAt,\n content,\n tags\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Template, TemplateT } from '../../nostr/fb/template.js';\n\n\nexport class Publish implements flatbuffers.IUnpackableObject<PublishT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Publish {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPublish(bb:flatbuffers.ByteBuffer, obj?:Publish):Publish {\n return (obj || new Publish()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPublish(bb:flatbuffers.ByteBuffer, obj?:Publish):Publish {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Publish()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npublishId():string|null\npublishId(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\npublishId(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\ntemplate(obj?:Template):Template|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new Template()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nrelays(index: number):string\nrelays(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\nrelays(index: number,optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\nrelaysLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startPublish(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addPublishId(builder:flatbuffers.Builder, publishIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, publishIdOffset, 0);\n}\n\nstatic addTemplate(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, templateOffset, 0);\n}\n\nstatic addRelays(builder:flatbuffers.Builder, relaysOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, relaysOffset, 0);\n}\n\nstatic createRelaysVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startRelaysVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endPublish(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // publish_id\n builder.requiredField(offset, 6) // template\n builder.requiredField(offset, 8) // relays\n return offset;\n}\n\n\nunpack(): PublishT {\n return new PublishT(\n this.publishId(),\n (this.template() !== null ? this.template()!.unpack() : null),\n this.bb!.createScalarList<string>(this.relays.bind(this), this.relaysLength())\n );\n}\n\n\nunpackTo(_o: PublishT): void {\n _o.publishId = this.publishId();\n _o.template = (this.template() !== null ? this.template()!.unpack() : null);\n _o.relays = this.bb!.createScalarList<string>(this.relays.bind(this), this.relaysLength());\n}\n}\n\nexport class PublishT implements flatbuffers.IGeneratedObject {\nconstructor(\n public publishId: string|Uint8Array|null = null,\n public template: TemplateT|null = null,\n public relays: (string)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const publishId = (this.publishId !== null ? builder.createString(this.publishId!) : 0);\n const template = (this.template !== null ? this.template!.pack(builder) : 0);\n const relays = Publish.createRelaysVector(builder, builder.createObjectOffsetList(this.relays));\n\n Publish.startPublish(builder);\n Publish.addPublishId(builder, publishId);\n Publish.addTemplate(builder, template);\n Publish.addRelays(builder, relays);\n\n return Publish.endPublish(builder);\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class PrivateKey implements flatbuffers.IUnpackableObject<PrivateKeyT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):PrivateKey {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPrivateKey(bb:flatbuffers.ByteBuffer, obj?:PrivateKey):PrivateKey {\n return (obj || new PrivateKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPrivateKey(bb:flatbuffers.ByteBuffer, obj?:PrivateKey):PrivateKey {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new PrivateKey()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nprivateKey():string|null\nprivateKey(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nprivateKey(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startPrivateKey(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addPrivateKey(builder:flatbuffers.Builder, privateKeyOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, privateKeyOffset, 0);\n}\n\nstatic endPrivateKey(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // private_key\n return offset;\n}\n\nstatic createPrivateKey(builder:flatbuffers.Builder, privateKeyOffset:flatbuffers.Offset):flatbuffers.Offset {\n PrivateKey.startPrivateKey(builder);\n PrivateKey.addPrivateKey(builder, privateKeyOffset);\n return PrivateKey.endPrivateKey(builder);\n}\n\nunpack(): PrivateKeyT {\n return new PrivateKeyT(\n this.privateKey()\n );\n}\n\n\nunpackTo(_o: PrivateKeyT): void {\n _o.privateKey = this.privateKey();\n}\n}\n\nexport class PrivateKeyT implements flatbuffers.IGeneratedObject {\nconstructor(\n public privateKey: string|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const privateKey = (this.privateKey !== null ? builder.createString(this.privateKey!) : 0);\n\n return PrivateKey.createPrivateKey(builder,\n privateKey\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { PrivateKey, PrivateKeyT } from '../../nostr/fb/private-key.js';\n\n\nexport enum SignerType {\n NONE = 0,\n PrivateKey = 1\n}\n\nexport function unionToSignerType(\n type: SignerType,\n accessor: (obj:PrivateKey) => PrivateKey|null\n): PrivateKey|null {\n switch(SignerType[type]) {\n case 'NONE': return null; \n case 'PrivateKey': return accessor(new PrivateKey())! as PrivateKey;\n default: return null;\n }\n}\n\nexport function unionListToSignerType(\n type: SignerType, \n accessor: (index: number, obj:PrivateKey) => PrivateKey|null, \n index: number\n): PrivateKey|null {\n switch(SignerType[type]) {\n case 'NONE': return null; \n case 'PrivateKey': return accessor(index, new PrivateKey())! as PrivateKey;\n default: return null;\n }\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { PrivateKey, PrivateKeyT } from '../../nostr/fb/private-key.js';\nimport { SignerType, unionToSignerType, unionListToSignerType } from '../../nostr/fb/signer-type.js';\n\n\nexport class SetSigner implements flatbuffers.IUnpackableObject<SetSignerT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SetSigner {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSetSigner(bb:flatbuffers.ByteBuffer, obj?:SetSigner):SetSigner {\n return (obj || new SetSigner()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSetSigner(bb:flatbuffers.ByteBuffer, obj?:SetSigner):SetSigner {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SetSigner()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsignerTypeType():SignerType {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : SignerType.NONE;\n}\n\nsignerType<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startSetSigner(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addSignerTypeType(builder:flatbuffers.Builder, signerTypeType:SignerType) {\n builder.addFieldInt8(0, signerTypeType, SignerType.NONE);\n}\n\nstatic addSignerType(builder:flatbuffers.Builder, signerTypeOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, signerTypeOffset, 0);\n}\n\nstatic endSetSigner(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // signer_type\n return offset;\n}\n\nstatic createSetSigner(builder:flatbuffers.Builder, signerTypeType:SignerType, signerTypeOffset:flatbuffers.Offset):flatbuffers.Offset {\n SetSigner.startSetSigner(builder);\n SetSigner.addSignerTypeType(builder, signerTypeType);\n SetSigner.addSignerType(builder, signerTypeOffset);\n return SetSigner.endSetSigner(builder);\n}\n\nunpack(): SetSignerT {\n return new SetSignerT(\n this.signerTypeType(),\n (() => {\n const temp = unionToSignerType(this.signerTypeType(), this.signerType.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: SetSignerT): void {\n _o.signerTypeType = this.signerTypeType();\n _o.signerType = (() => {\n const temp = unionToSignerType(this.signerTypeType(), this.signerType.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class SetSignerT implements flatbuffers.IGeneratedObject {\nconstructor(\n public signerTypeType: SignerType = SignerType.NONE,\n public signerType: PrivateKeyT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const signerType = builder.createObjectOffset(this.signerType);\n\n return SetSigner.createSetSigner(builder,\n this.signerTypeType,\n signerType\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Template, TemplateT } from '../../nostr/fb/template.js';\n\n\nexport class SignEvent implements flatbuffers.IUnpackableObject<SignEventT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SignEvent {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSignEvent(bb:flatbuffers.ByteBuffer, obj?:SignEvent):SignEvent {\n return (obj || new SignEvent()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSignEvent(bb:flatbuffers.ByteBuffer, obj?:SignEvent):SignEvent {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SignEvent()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ntemplate(obj?:Template):Template|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new Template()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startSignEvent(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addTemplate(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, templateOffset, 0);\n}\n\nstatic endSignEvent(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // template\n return offset;\n}\n\nstatic createSignEvent(builder:flatbuffers.Builder, templateOffset:flatbuffers.Offset):flatbuffers.Offset {\n SignEvent.startSignEvent(builder);\n SignEvent.addTemplate(builder, templateOffset);\n return SignEvent.endSignEvent(builder);\n}\n\nunpack(): SignEventT {\n return new SignEventT(\n (this.template() !== null ? this.template()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: SignEventT): void {\n _o.template = (this.template() !== null ? this.template()!.unpack() : null);\n}\n}\n\nexport class SignEventT implements flatbuffers.IGeneratedObject {\nconstructor(\n public template: TemplateT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const template = (this.template !== null ? this.template!.pack(builder) : 0);\n\n return SignEvent.createSignEvent(builder,\n template\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class MuteFilterPipeConfig implements flatbuffers.IUnpackableObject<MuteFilterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):MuteFilterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsMuteFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:MuteFilterPipeConfig):MuteFilterPipeConfig {\n return (obj || new MuteFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsMuteFilterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:MuteFilterPipeConfig):MuteFilterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new MuteFilterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npubkeys(index: number):string\npubkeys(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\npubkeys(index: number,optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\npubkeysLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nhashtags(index: number):string\nhashtags(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\nhashtags(index: number,optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\nhashtagsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nwords(index: number):string\nwords(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\nwords(index: number,optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\nwordsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\neventIds(index: number):string\neventIds(index: number,optionalEncoding:flatbuffers.Encoding):string|Uint8Array\neventIds(index: number,optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.__string(this.bb!.__vector(this.bb_pos + offset) + index * 4, optionalEncoding) : null;\n}\n\neventIdsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startMuteFilterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(4);\n}\n\nstatic addPubkeys(builder:flatbuffers.Builder, pubkeysOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, pubkeysOffset, 0);\n}\n\nstatic createPubkeysVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startPubkeysVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic addHashtags(builder:flatbuffers.Builder, hashtagsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, hashtagsOffset, 0);\n}\n\nstatic createHashtagsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startHashtagsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic addWords(builder:flatbuffers.Builder, wordsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, wordsOffset, 0);\n}\n\nstatic createWordsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startWordsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic addEventIds(builder:flatbuffers.Builder, eventIdsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(3, eventIdsOffset, 0);\n}\n\nstatic createEventIdsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startEventIdsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endMuteFilterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createMuteFilterPipeConfig(builder:flatbuffers.Builder, pubkeysOffset:flatbuffers.Offset, hashtagsOffset:flatbuffers.Offset, wordsOffset:flatbuffers.Offset, eventIdsOffset:flatbuffers.Offset):flatbuffers.Offset {\n MuteFilterPipeConfig.startMuteFilterPipeConfig(builder);\n MuteFilterPipeConfig.addPubkeys(builder, pubkeysOffset);\n MuteFilterPipeConfig.addHashtags(builder, hashtagsOffset);\n MuteFilterPipeConfig.addWords(builder, wordsOffset);\n MuteFilterPipeConfig.addEventIds(builder, eventIdsOffset);\n return MuteFilterPipeConfig.endMuteFilterPipeConfig(builder);\n}\n\nunpack(): MuteFilterPipeConfigT {\n return new MuteFilterPipeConfigT(\n this.bb!.createScalarList<string>(this.pubkeys.bind(this), this.pubkeysLength()),\n this.bb!.createScalarList<string>(this.hashtags.bind(this), this.hashtagsLength()),\n this.bb!.createScalarList<string>(this.words.bind(this), this.wordsLength()),\n this.bb!.createScalarList<string>(this.eventIds.bind(this), this.eventIdsLength())\n );\n}\n\n\nunpackTo(_o: MuteFilterPipeConfigT): void {\n _o.pubkeys = this.bb!.createScalarList<string>(this.pubkeys.bind(this), this.pubkeysLength());\n _o.hashtags = this.bb!.createScalarList<string>(this.hashtags.bind(this), this.hashtagsLength());\n _o.words = this.bb!.createScalarList<string>(this.words.bind(this), this.wordsLength());\n _o.eventIds = this.bb!.createScalarList<string>(this.eventIds.bind(this), this.eventIdsLength());\n}\n}\n\nexport class MuteFilterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public pubkeys: (string)[] = [],\n public hashtags: (string)[] = [],\n public words: (string)[] = [],\n public eventIds: (string)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const pubkeys = MuteFilterPipeConfig.createPubkeysVector(builder, builder.createObjectOffsetList(this.pubkeys));\n const hashtags = MuteFilterPipeConfig.createHashtagsVector(builder, builder.createObjectOffsetList(this.hashtags));\n const words = MuteFilterPipeConfig.createWordsVector(builder, builder.createObjectOffsetList(this.words));\n const eventIds = MuteFilterPipeConfig.createEventIdsVector(builder, builder.createObjectOffsetList(this.eventIds));\n\n return MuteFilterPipeConfig.createMuteFilterPipeConfig(builder,\n pubkeys,\n hashtags,\n words,\n eventIds\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class NpubLimiterPipeConfig implements flatbuffers.IUnpackableObject<NpubLimiterPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):NpubLimiterPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsNpubLimiterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:NpubLimiterPipeConfig):NpubLimiterPipeConfig {\n return (obj || new NpubLimiterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsNpubLimiterPipeConfig(bb:flatbuffers.ByteBuffer, obj?:NpubLimiterPipeConfig):NpubLimiterPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new NpubLimiterPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nkind():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint16(this.bb_pos + offset) : 0;\n}\n\nlimitPerNpub():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nmaxTotalNpubs():number {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startNpubLimiterPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addKind(builder:flatbuffers.Builder, kind:number) {\n builder.addFieldInt16(0, kind, 0);\n}\n\nstatic addLimitPerNpub(builder:flatbuffers.Builder, limitPerNpub:number) {\n builder.addFieldInt32(1, limitPerNpub, 0);\n}\n\nstatic addMaxTotalNpubs(builder:flatbuffers.Builder, maxTotalNpubs:number) {\n builder.addFieldInt32(2, maxTotalNpubs, 0);\n}\n\nstatic endNpubLimiterPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createNpubLimiterPipeConfig(builder:flatbuffers.Builder, kind:number, limitPerNpub:number, maxTotalNpubs:number):flatbuffers.Offset {\n NpubLimiterPipeConfig.startNpubLimiterPipeConfig(builder);\n NpubLimiterPipeConfig.addKind(builder, kind);\n NpubLimiterPipeConfig.addLimitPerNpub(builder, limitPerNpub);\n NpubLimiterPipeConfig.addMaxTotalNpubs(builder, maxTotalNpubs);\n return NpubLimiterPipeConfig.endNpubLimiterPipeConfig(builder);\n}\n\nunpack(): NpubLimiterPipeConfigT {\n return new NpubLimiterPipeConfigT(\n this.kind(),\n this.limitPerNpub(),\n this.maxTotalNpubs()\n );\n}\n\n\nunpackTo(_o: NpubLimiterPipeConfigT): void {\n _o.kind = this.kind();\n _o.limitPerNpub = this.limitPerNpub();\n _o.maxTotalNpubs = this.maxTotalNpubs();\n}\n}\n\nexport class NpubLimiterPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public kind: number = 0,\n public limitPerNpub: number = 0,\n public maxTotalNpubs: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return NpubLimiterPipeConfig.createNpubLimiterPipeConfig(builder,\n this.kind,\n this.limitPerNpub,\n this.maxTotalNpubs\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class ParsePipeConfig implements flatbuffers.IUnpackableObject<ParsePipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):ParsePipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsParsePipeConfig(bb:flatbuffers.ByteBuffer, obj?:ParsePipeConfig):ParsePipeConfig {\n return (obj || new ParsePipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsParsePipeConfig(bb:flatbuffers.ByteBuffer, obj?:ParsePipeConfig):ParsePipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new ParsePipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startParsePipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endParsePipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createParsePipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n ParsePipeConfig.startParsePipeConfig(builder);\n return ParsePipeConfig.endParsePipeConfig(builder);\n}\n\nunpack(): ParsePipeConfigT {\n return new ParsePipeConfigT();\n}\n\n\nunpackTo(_o: ParsePipeConfigT): void {}\n}\n\nexport class ParsePipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return ParsePipeConfig.createParsePipeConfig(builder);\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class ProofVerificationPipeConfig implements flatbuffers.IUnpackableObject<ProofVerificationPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):ProofVerificationPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsProofVerificationPipeConfig(bb:flatbuffers.ByteBuffer, obj?:ProofVerificationPipeConfig):ProofVerificationPipeConfig {\n return (obj || new ProofVerificationPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsProofVerificationPipeConfig(bb:flatbuffers.ByteBuffer, obj?:ProofVerificationPipeConfig):ProofVerificationPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new ProofVerificationPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nmaxProofs():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nstatic startProofVerificationPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addMaxProofs(builder:flatbuffers.Builder, maxProofs:number) {\n builder.addFieldInt32(0, maxProofs, 0);\n}\n\nstatic endProofVerificationPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createProofVerificationPipeConfig(builder:flatbuffers.Builder, maxProofs:number):flatbuffers.Offset {\n ProofVerificationPipeConfig.startProofVerificationPipeConfig(builder);\n ProofVerificationPipeConfig.addMaxProofs(builder, maxProofs);\n return ProofVerificationPipeConfig.endProofVerificationPipeConfig(builder);\n}\n\nunpack(): ProofVerificationPipeConfigT {\n return new ProofVerificationPipeConfigT(\n this.maxProofs()\n );\n}\n\n\nunpackTo(_o: ProofVerificationPipeConfigT): void {\n _o.maxProofs = this.maxProofs();\n}\n}\n\nexport class ProofVerificationPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public maxProofs: number = 0\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return ProofVerificationPipeConfig.createProofVerificationPipeConfig(builder,\n this.maxProofs\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class SaveToDbPipeConfig implements flatbuffers.IUnpackableObject<SaveToDbPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SaveToDbPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSaveToDbPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SaveToDbPipeConfig):SaveToDbPipeConfig {\n return (obj || new SaveToDbPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSaveToDbPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SaveToDbPipeConfig):SaveToDbPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SaveToDbPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic startSaveToDbPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(0);\n}\n\nstatic endSaveToDbPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createSaveToDbPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n SaveToDbPipeConfig.startSaveToDbPipeConfig(builder);\n return SaveToDbPipeConfig.endSaveToDbPipeConfig(builder);\n}\n\nunpack(): SaveToDbPipeConfigT {\n return new SaveToDbPipeConfigT();\n}\n\n\nunpackTo(_o: SaveToDbPipeConfigT): void {}\n}\n\nexport class SaveToDbPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n return SaveToDbPipeConfig.createSaveToDbPipeConfig(builder);\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class SerializeEventsPipeConfig implements flatbuffers.IUnpackableObject<SerializeEventsPipeConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SerializeEventsPipeConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSerializeEventsPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SerializeEventsPipeConfig):SerializeEventsPipeConfig {\n return (obj || new SerializeEventsPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSerializeEventsPipeConfig(bb:flatbuffers.ByteBuffer, obj?:SerializeEventsPipeConfig):SerializeEventsPipeConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SerializeEventsPipeConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId():string|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nsubscriptionId(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startSerializeEventsPipeConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic endSerializeEventsPipeConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n return offset;\n}\n\nstatic createSerializeEventsPipeConfig(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset):flatbuffers.Offset {\n SerializeEventsPipeConfig.startSerializeEventsPipeConfig(builder);\n SerializeEventsPipeConfig.addSubscriptionId(builder, subscriptionIdOffset);\n return SerializeEventsPipeConfig.endSerializeEventsPipeConfig(builder);\n}\n\nunpack(): SerializeEventsPipeConfigT {\n return new SerializeEventsPipeConfigT(\n this.subscriptionId()\n );\n}\n\n\nunpackTo(_o: SerializeEventsPipeConfigT): void {\n _o.subscriptionId = this.subscriptionId();\n}\n}\n\nexport class SerializeEventsPipeConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: string|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n\n return SerializeEventsPipeConfig.createSerializeEventsPipeConfig(builder,\n subscriptionId\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { CounterPipeConfig, CounterPipeConfigT } from '../../nostr/fb/counter-pipe-config.js';\nimport { KindFilterPipeConfig, KindFilterPipeConfigT } from '../../nostr/fb/kind-filter-pipe-config.js';\nimport { MuteFilterPipeConfig, MuteFilterPipeConfigT } from '../../nostr/fb/mute-filter-pipe-config.js';\nimport { NpubLimiterPipeConfig, NpubLimiterPipeConfigT } from '../../nostr/fb/npub-limiter-pipe-config.js';\nimport { ParsePipeConfig, ParsePipeConfigT } from '../../nostr/fb/parse-pipe-config.js';\nimport { ProofVerificationPipeConfig, ProofVerificationPipeConfigT } from '../../nostr/fb/proof-verification-pipe-config.js';\nimport { SaveToDbPipeConfig, SaveToDbPipeConfigT } from '../../nostr/fb/save-to-db-pipe-config.js';\nimport { SerializeEventsPipeConfig, SerializeEventsPipeConfigT } from '../../nostr/fb/serialize-events-pipe-config.js';\n\n\nexport enum PipeConfig {\n NONE = 0,\n ParsePipeConfig = 1,\n KindFilterPipeConfig = 2,\n CounterPipeConfig = 3,\n NpubLimiterPipeConfig = 4,\n SaveToDbPipeConfig = 5,\n SerializeEventsPipeConfig = 6,\n ProofVerificationPipeConfig = 7,\n MuteFilterPipeConfig = 8\n}\n\nexport function unionToPipeConfig(\n type: PipeConfig,\n accessor: (obj:CounterPipeConfig|KindFilterPipeConfig|MuteFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig) => CounterPipeConfig|KindFilterPipeConfig|MuteFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null\n): CounterPipeConfig|KindFilterPipeConfig|MuteFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null {\n switch(PipeConfig[type]) {\n case 'NONE': return null; \n case 'ParsePipeConfig': return accessor(new ParsePipeConfig())! as ParsePipeConfig;\n case 'KindFilterPipeConfig': return accessor(new KindFilterPipeConfig())! as KindFilterPipeConfig;\n case 'CounterPipeConfig': return accessor(new CounterPipeConfig())! as CounterPipeConfig;\n case 'NpubLimiterPipeConfig': return accessor(new NpubLimiterPipeConfig())! as NpubLimiterPipeConfig;\n case 'SaveToDbPipeConfig': return accessor(new SaveToDbPipeConfig())! as SaveToDbPipeConfig;\n case 'SerializeEventsPipeConfig': return accessor(new SerializeEventsPipeConfig())! as SerializeEventsPipeConfig;\n case 'ProofVerificationPipeConfig': return accessor(new ProofVerificationPipeConfig())! as ProofVerificationPipeConfig;\n case 'MuteFilterPipeConfig': return accessor(new MuteFilterPipeConfig())! as MuteFilterPipeConfig;\n default: return null;\n }\n}\n\nexport function unionListToPipeConfig(\n type: PipeConfig, \n accessor: (index: number, obj:CounterPipeConfig|KindFilterPipeConfig|MuteFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig) => CounterPipeConfig|KindFilterPipeConfig|MuteFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null, \n index: number\n): CounterPipeConfig|KindFilterPipeConfig|MuteFilterPipeConfig|NpubLimiterPipeConfig|ParsePipeConfig|ProofVerificationPipeConfig|SaveToDbPipeConfig|SerializeEventsPipeConfig|null {\n switch(PipeConfig[type]) {\n case 'NONE': return null; \n case 'ParsePipeConfig': return accessor(index, new ParsePipeConfig())! as ParsePipeConfig;\n case 'KindFilterPipeConfig': return accessor(index, new KindFilterPipeConfig())! as KindFilterPipeConfig;\n case 'CounterPipeConfig': return accessor(index, new CounterPipeConfig())! as CounterPipeConfig;\n case 'NpubLimiterPipeConfig': return accessor(index, new NpubLimiterPipeConfig())! as NpubLimiterPipeConfig;\n case 'SaveToDbPipeConfig': return accessor(index, new SaveToDbPipeConfig())! as SaveToDbPipeConfig;\n case 'SerializeEventsPipeConfig': return accessor(index, new SerializeEventsPipeConfig())! as SerializeEventsPipeConfig;\n case 'ProofVerificationPipeConfig': return accessor(index, new ProofVerificationPipeConfig())! as ProofVerificationPipeConfig;\n case 'MuteFilterPipeConfig': return accessor(index, new MuteFilterPipeConfig())! as MuteFilterPipeConfig;\n default: return null;\n }\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { CounterPipeConfig, CounterPipeConfigT } from '../../nostr/fb/counter-pipe-config.js';\nimport { KindFilterPipeConfig, KindFilterPipeConfigT } from '../../nostr/fb/kind-filter-pipe-config.js';\nimport { MuteFilterPipeConfig, MuteFilterPipeConfigT } from '../../nostr/fb/mute-filter-pipe-config.js';\nimport { NpubLimiterPipeConfig, NpubLimiterPipeConfigT } from '../../nostr/fb/npub-limiter-pipe-config.js';\nimport { ParsePipeConfig, ParsePipeConfigT } from '../../nostr/fb/parse-pipe-config.js';\nimport { PipeConfig, unionToPipeConfig, unionListToPipeConfig } from '../../nostr/fb/pipe-config.js';\nimport { ProofVerificationPipeConfig, ProofVerificationPipeConfigT } from '../../nostr/fb/proof-verification-pipe-config.js';\nimport { SaveToDbPipeConfig, SaveToDbPipeConfigT } from '../../nostr/fb/save-to-db-pipe-config.js';\nimport { SerializeEventsPipeConfig, SerializeEventsPipeConfigT } from '../../nostr/fb/serialize-events-pipe-config.js';\n\n\nexport class Pipe implements flatbuffers.IUnpackableObject<PipeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Pipe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPipe(bb:flatbuffers.ByteBuffer, obj?:Pipe):Pipe {\n return (obj || new Pipe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPipe(bb:flatbuffers.ByteBuffer, obj?:Pipe):Pipe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Pipe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nconfigType():PipeConfig {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : PipeConfig.NONE;\n}\n\nconfig<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startPipe(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addConfigType(builder:flatbuffers.Builder, configType:PipeConfig) {\n builder.addFieldInt8(0, configType, PipeConfig.NONE);\n}\n\nstatic addConfig(builder:flatbuffers.Builder, configOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, configOffset, 0);\n}\n\nstatic endPipe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // config\n return offset;\n}\n\nstatic createPipe(builder:flatbuffers.Builder, configType:PipeConfig, configOffset:flatbuffers.Offset):flatbuffers.Offset {\n Pipe.startPipe(builder);\n Pipe.addConfigType(builder, configType);\n Pipe.addConfig(builder, configOffset);\n return Pipe.endPipe(builder);\n}\n\nunpack(): PipeT {\n return new PipeT(\n this.configType(),\n (() => {\n const temp = unionToPipeConfig(this.configType(), this.config.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: PipeT): void {\n _o.configType = this.configType();\n _o.config = (() => {\n const temp = unionToPipeConfig(this.configType(), this.config.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class PipeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public configType: PipeConfig = PipeConfig.NONE,\n public config: CounterPipeConfigT|KindFilterPipeConfigT|MuteFilterPipeConfigT|NpubLimiterPipeConfigT|ParsePipeConfigT|ProofVerificationPipeConfigT|SaveToDbPipeConfigT|SerializeEventsPipeConfigT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const config = builder.createObjectOffset(this.config);\n\n return Pipe.createPipe(builder,\n this.configType,\n config\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Pipe, PipeT } from '../../nostr/fb/pipe.js';\n\n\nexport class PipelineConfig implements flatbuffers.IUnpackableObject<PipelineConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):PipelineConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsPipelineConfig(bb:flatbuffers.ByteBuffer, obj?:PipelineConfig):PipelineConfig {\n return (obj || new PipelineConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsPipelineConfig(bb:flatbuffers.ByteBuffer, obj?:PipelineConfig):PipelineConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new PipelineConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npipes(index: number, obj?:Pipe):Pipe|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new Pipe()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\npipesLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nstatic startPipelineConfig(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addPipes(builder:flatbuffers.Builder, pipesOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, pipesOffset, 0);\n}\n\nstatic createPipesVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startPipesVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic endPipelineConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // pipes\n return offset;\n}\n\nstatic createPipelineConfig(builder:flatbuffers.Builder, pipesOffset:flatbuffers.Offset):flatbuffers.Offset {\n PipelineConfig.startPipelineConfig(builder);\n PipelineConfig.addPipes(builder, pipesOffset);\n return PipelineConfig.endPipelineConfig(builder);\n}\n\nunpack(): PipelineConfigT {\n return new PipelineConfigT(\n this.bb!.createObjList<Pipe, PipeT>(this.pipes.bind(this), this.pipesLength())\n );\n}\n\n\nunpackTo(_o: PipelineConfigT): void {\n _o.pipes = this.bb!.createObjList<Pipe, PipeT>(this.pipes.bind(this), this.pipesLength());\n}\n}\n\nexport class PipelineConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public pipes: (PipeT)[] = []\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const pipes = PipelineConfig.createPipesVector(builder, builder.createObjectOffsetList(this.pipes));\n\n return PipelineConfig.createPipelineConfig(builder,\n pipes\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { PipelineConfig, PipelineConfigT } from '../../nostr/fb/pipeline-config.js';\n\n\nexport class SubscriptionConfig implements flatbuffers.IUnpackableObject<SubscriptionConfigT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):SubscriptionConfig {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSubscriptionConfig(bb:flatbuffers.ByteBuffer, obj?:SubscriptionConfig):SubscriptionConfig {\n return (obj || new SubscriptionConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSubscriptionConfig(bb:flatbuffers.ByteBuffer, obj?:SubscriptionConfig):SubscriptionConfig {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new SubscriptionConfig()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\npipeline(obj?:PipelineConfig):PipelineConfig|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? (obj || new PipelineConfig()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\ncloseOnEose():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\ncacheFirst():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : true;\n}\n\ntimeoutMs():bigint {\n const offset = this.bb!.__offset(this.bb_pos, 10);\n return offset ? this.bb!.readUint64(this.bb_pos + offset) : BigInt('0');\n}\n\nmaxEvents():number {\n const offset = this.bb!.__offset(this.bb_pos, 12);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nskipCache():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 14);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nforce():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 16);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\nbytesPerEvent():number {\n const offset = this.bb!.__offset(this.bb_pos, 18);\n return offset ? this.bb!.readUint32(this.bb_pos + offset) : 0;\n}\n\nisSlow():boolean {\n const offset = this.bb!.__offset(this.bb_pos, 20);\n return offset ? !!this.bb!.readInt8(this.bb_pos + offset) : false;\n}\n\npagination():string|null\npagination(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\npagination(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 22);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startSubscriptionConfig(builder:flatbuffers.Builder) {\n builder.startObject(10);\n}\n\nstatic addPipeline(builder:flatbuffers.Builder, pipelineOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, pipelineOffset, 0);\n}\n\nstatic addCloseOnEose(builder:flatbuffers.Builder, closeOnEose:boolean) {\n builder.addFieldInt8(1, +closeOnEose, +false);\n}\n\nstatic addCacheFirst(builder:flatbuffers.Builder, cacheFirst:boolean) {\n builder.addFieldInt8(2, +cacheFirst, +true);\n}\n\nstatic addTimeoutMs(builder:flatbuffers.Builder, timeoutMs:bigint) {\n builder.addFieldInt64(3, timeoutMs, BigInt('0'));\n}\n\nstatic addMaxEvents(builder:flatbuffers.Builder, maxEvents:number) {\n builder.addFieldInt32(4, maxEvents, 0);\n}\n\nstatic addSkipCache(builder:flatbuffers.Builder, skipCache:boolean) {\n builder.addFieldInt8(5, +skipCache, +false);\n}\n\nstatic addForce(builder:flatbuffers.Builder, force:boolean) {\n builder.addFieldInt8(6, +force, +false);\n}\n\nstatic addBytesPerEvent(builder:flatbuffers.Builder, bytesPerEvent:number) {\n builder.addFieldInt32(7, bytesPerEvent, 0);\n}\n\nstatic addIsSlow(builder:flatbuffers.Builder, isSlow:boolean) {\n builder.addFieldInt8(8, +isSlow, +false);\n}\n\nstatic addPagination(builder:flatbuffers.Builder, paginationOffset:flatbuffers.Offset) {\n builder.addFieldOffset(9, paginationOffset, 0);\n}\n\nstatic endSubscriptionConfig(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n return offset;\n}\n\nstatic createSubscriptionConfig(builder:flatbuffers.Builder, pipelineOffset:flatbuffers.Offset, closeOnEose:boolean, cacheFirst:boolean, timeoutMs:bigint, maxEvents:number, skipCache:boolean, force:boolean, bytesPerEvent:number, isSlow:boolean, paginationOffset:flatbuffers.Offset):flatbuffers.Offset {\n SubscriptionConfig.startSubscriptionConfig(builder);\n SubscriptionConfig.addPipeline(builder, pipelineOffset);\n SubscriptionConfig.addCloseOnEose(builder, closeOnEose);\n SubscriptionConfig.addCacheFirst(builder, cacheFirst);\n SubscriptionConfig.addTimeoutMs(builder, timeoutMs);\n SubscriptionConfig.addMaxEvents(builder, maxEvents);\n SubscriptionConfig.addSkipCache(builder, skipCache);\n SubscriptionConfig.addForce(builder, force);\n SubscriptionConfig.addBytesPerEvent(builder, bytesPerEvent);\n SubscriptionConfig.addIsSlow(builder, isSlow);\n SubscriptionConfig.addPagination(builder, paginationOffset);\n return SubscriptionConfig.endSubscriptionConfig(builder);\n}\n\nunpack(): SubscriptionConfigT {\n return new SubscriptionConfigT(\n (this.pipeline() !== null ? this.pipeline()!.unpack() : null),\n this.closeOnEose(),\n this.cacheFirst(),\n this.timeoutMs(),\n this.maxEvents(),\n this.skipCache(),\n this.force(),\n this.bytesPerEvent(),\n this.isSlow(),\n this.pagination()\n );\n}\n\n\nunpackTo(_o: SubscriptionConfigT): void {\n _o.pipeline = (this.pipeline() !== null ? this.pipeline()!.unpack() : null);\n _o.closeOnEose = this.closeOnEose();\n _o.cacheFirst = this.cacheFirst();\n _o.timeoutMs = this.timeoutMs();\n _o.maxEvents = this.maxEvents();\n _o.skipCache = this.skipCache();\n _o.force = this.force();\n _o.bytesPerEvent = this.bytesPerEvent();\n _o.isSlow = this.isSlow();\n _o.pagination = this.pagination();\n}\n}\n\nexport class SubscriptionConfigT implements flatbuffers.IGeneratedObject {\nconstructor(\n public pipeline: PipelineConfigT|null = null,\n public closeOnEose: boolean = false,\n public cacheFirst: boolean = true,\n public timeoutMs: bigint = BigInt('0'),\n public maxEvents: number = 0,\n public skipCache: boolean = false,\n public force: boolean = false,\n public bytesPerEvent: number = 0,\n public isSlow: boolean = false,\n public pagination: string|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const pipeline = (this.pipeline !== null ? this.pipeline!.pack(builder) : 0);\n const pagination = (this.pagination !== null ? builder.createString(this.pagination!) : 0);\n\n return SubscriptionConfig.createSubscriptionConfig(builder,\n pipeline,\n this.closeOnEose,\n this.cacheFirst,\n this.timeoutMs,\n this.maxEvents,\n this.skipCache,\n this.force,\n this.bytesPerEvent,\n this.isSlow,\n pagination\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { Request, RequestT } from '../../nostr/fb/request.js';\nimport { SubscriptionConfig, SubscriptionConfigT } from '../../nostr/fb/subscription-config.js';\n\n\nexport class Subscribe implements flatbuffers.IUnpackableObject<SubscribeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Subscribe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsSubscribe(bb:flatbuffers.ByteBuffer, obj?:Subscribe):Subscribe {\n return (obj || new Subscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsSubscribe(bb:flatbuffers.ByteBuffer, obj?:Subscribe):Subscribe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Subscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId():string|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nsubscriptionId(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nrequests(index: number, obj?:Request):Request|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? (obj || new Request()).__init(this.bb!.__indirect(this.bb!.__vector(this.bb_pos + offset) + index * 4), this.bb!) : null;\n}\n\nrequestsLength():number {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__vector_len(this.bb_pos + offset) : 0;\n}\n\nconfig(obj?:SubscriptionConfig):SubscriptionConfig|null {\n const offset = this.bb!.__offset(this.bb_pos, 8);\n return offset ? (obj || new SubscriptionConfig()).__init(this.bb!.__indirect(this.bb_pos + offset), this.bb!) : null;\n}\n\nstatic startSubscribe(builder:flatbuffers.Builder) {\n builder.startObject(3);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic addRequests(builder:flatbuffers.Builder, requestsOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, requestsOffset, 0);\n}\n\nstatic createRequestsVector(builder:flatbuffers.Builder, data:flatbuffers.Offset[]):flatbuffers.Offset {\n builder.startVector(4, data.length, 4);\n for (let i = data.length - 1; i >= 0; i--) {\n builder.addOffset(data[i]!);\n }\n return builder.endVector();\n}\n\nstatic startRequestsVector(builder:flatbuffers.Builder, numElems:number) {\n builder.startVector(4, numElems, 4);\n}\n\nstatic addConfig(builder:flatbuffers.Builder, configOffset:flatbuffers.Offset) {\n builder.addFieldOffset(2, configOffset, 0);\n}\n\nstatic endSubscribe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n builder.requiredField(offset, 6) // requests\n builder.requiredField(offset, 8) // config\n return offset;\n}\n\n\nunpack(): SubscribeT {\n return new SubscribeT(\n this.subscriptionId(),\n this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength()),\n (this.config() !== null ? this.config()!.unpack() : null)\n );\n}\n\n\nunpackTo(_o: SubscribeT): void {\n _o.subscriptionId = this.subscriptionId();\n _o.requests = this.bb!.createObjList<Request, RequestT>(this.requests.bind(this), this.requestsLength());\n _o.config = (this.config() !== null ? this.config()!.unpack() : null);\n}\n}\n\nexport class SubscribeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: string|Uint8Array|null = null,\n public requests: (RequestT)[] = [],\n public config: SubscriptionConfigT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n const requests = Subscribe.createRequestsVector(builder, builder.createObjectOffsetList(this.requests));\n const config = (this.config !== null ? this.config!.pack(builder) : 0);\n\n Subscribe.startSubscribe(builder);\n Subscribe.addSubscriptionId(builder, subscriptionId);\n Subscribe.addRequests(builder, requests);\n Subscribe.addConfig(builder, config);\n\n return Subscribe.endSubscribe(builder);\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\n\n\nexport class Unsubscribe implements flatbuffers.IUnpackableObject<UnsubscribeT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):Unsubscribe {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsUnsubscribe(bb:flatbuffers.ByteBuffer, obj?:Unsubscribe):Unsubscribe {\n return (obj || new Unsubscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsUnsubscribe(bb:flatbuffers.ByteBuffer, obj?:Unsubscribe):Unsubscribe {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new Unsubscribe()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nsubscriptionId():string|null\nsubscriptionId(optionalEncoding:flatbuffers.Encoding):string|Uint8Array|null\nsubscriptionId(optionalEncoding?:any):string|Uint8Array|null {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.__string(this.bb_pos + offset, optionalEncoding) : null;\n}\n\nstatic startUnsubscribe(builder:flatbuffers.Builder) {\n builder.startObject(1);\n}\n\nstatic addSubscriptionId(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset) {\n builder.addFieldOffset(0, subscriptionIdOffset, 0);\n}\n\nstatic endUnsubscribe(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 4) // subscription_id\n return offset;\n}\n\nstatic createUnsubscribe(builder:flatbuffers.Builder, subscriptionIdOffset:flatbuffers.Offset):flatbuffers.Offset {\n Unsubscribe.startUnsubscribe(builder);\n Unsubscribe.addSubscriptionId(builder, subscriptionIdOffset);\n return Unsubscribe.endUnsubscribe(builder);\n}\n\nunpack(): UnsubscribeT {\n return new UnsubscribeT(\n this.subscriptionId()\n );\n}\n\n\nunpackTo(_o: UnsubscribeT): void {\n _o.subscriptionId = this.subscriptionId();\n}\n}\n\nexport class UnsubscribeT implements flatbuffers.IGeneratedObject {\nconstructor(\n public subscriptionId: string|Uint8Array|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const subscriptionId = (this.subscriptionId !== null ? builder.createString(this.subscriptionId!) : 0);\n\n return Unsubscribe.createUnsubscribe(builder,\n subscriptionId\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport { GetPublicKey, GetPublicKeyT } from '../../nostr/fb/get-public-key.js';\nimport { Publish, PublishT } from '../../nostr/fb/publish.js';\nimport { SetSigner, SetSignerT } from '../../nostr/fb/set-signer.js';\nimport { SignEvent, SignEventT } from '../../nostr/fb/sign-event.js';\nimport { Subscribe, SubscribeT } from '../../nostr/fb/subscribe.js';\nimport { Unsubscribe, UnsubscribeT } from '../../nostr/fb/unsubscribe.js';\n\n\nexport enum MainContent {\n NONE = 0,\n Subscribe = 1,\n Unsubscribe = 2,\n Publish = 3,\n SignEvent = 4,\n SetSigner = 5,\n GetPublicKey = 6\n}\n\nexport function unionToMainContent(\n type: MainContent,\n accessor: (obj:GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe) => GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null\n): GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null {\n switch(MainContent[type]) {\n case 'NONE': return null; \n case 'Subscribe': return accessor(new Subscribe())! as Subscribe;\n case 'Unsubscribe': return accessor(new Unsubscribe())! as Unsubscribe;\n case 'Publish': return accessor(new Publish())! as Publish;\n case 'SignEvent': return accessor(new SignEvent())! as SignEvent;\n case 'SetSigner': return accessor(new SetSigner())! as SetSigner;\n case 'GetPublicKey': return accessor(new GetPublicKey())! as GetPublicKey;\n default: return null;\n }\n}\n\nexport function unionListToMainContent(\n type: MainContent, \n accessor: (index: number, obj:GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe) => GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null, \n index: number\n): GetPublicKey|Publish|SetSigner|SignEvent|Subscribe|Unsubscribe|null {\n switch(MainContent[type]) {\n case 'NONE': return null; \n case 'Subscribe': return accessor(index, new Subscribe())! as Subscribe;\n case 'Unsubscribe': return accessor(index, new Unsubscribe())! as Unsubscribe;\n case 'Publish': return accessor(index, new Publish())! as Publish;\n case 'SignEvent': return accessor(index, new SignEvent())! as SignEvent;\n case 'SetSigner': return accessor(index, new SetSigner())! as SetSigner;\n case 'GetPublicKey': return accessor(index, new GetPublicKey())! as GetPublicKey;\n default: return null;\n }\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nimport * as flatbuffers from 'flatbuffers';\n\nimport { GetPublicKey, GetPublicKeyT } from '../../nostr/fb/get-public-key.js';\nimport { MainContent, unionToMainContent, unionListToMainContent } from '../../nostr/fb/main-content.js';\nimport { Publish, PublishT } from '../../nostr/fb/publish.js';\nimport { SetSigner, SetSignerT } from '../../nostr/fb/set-signer.js';\nimport { SignEvent, SignEventT } from '../../nostr/fb/sign-event.js';\nimport { Subscribe, SubscribeT } from '../../nostr/fb/subscribe.js';\nimport { Unsubscribe, UnsubscribeT } from '../../nostr/fb/unsubscribe.js';\n\n\nexport class MainMessage implements flatbuffers.IUnpackableObject<MainMessageT> {\n bb: flatbuffers.ByteBuffer|null = null;\n bb_pos = 0;\n __init(i:number, bb:flatbuffers.ByteBuffer):MainMessage {\n this.bb_pos = i;\n this.bb = bb;\n return this;\n}\n\nstatic getRootAsMainMessage(bb:flatbuffers.ByteBuffer, obj?:MainMessage):MainMessage {\n return (obj || new MainMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\nstatic getSizePrefixedRootAsMainMessage(bb:flatbuffers.ByteBuffer, obj?:MainMessage):MainMessage {\n bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);\n return (obj || new MainMessage()).__init(bb.readInt32(bb.position()) + bb.position(), bb);\n}\n\ncontentType():MainContent {\n const offset = this.bb!.__offset(this.bb_pos, 4);\n return offset ? this.bb!.readUint8(this.bb_pos + offset) : MainContent.NONE;\n}\n\ncontent<T extends flatbuffers.Table>(obj:any):any|null {\n const offset = this.bb!.__offset(this.bb_pos, 6);\n return offset ? this.bb!.__union(obj, this.bb_pos + offset) : null;\n}\n\nstatic startMainMessage(builder:flatbuffers.Builder) {\n builder.startObject(2);\n}\n\nstatic addContentType(builder:flatbuffers.Builder, contentType:MainContent) {\n builder.addFieldInt8(0, contentType, MainContent.NONE);\n}\n\nstatic addContent(builder:flatbuffers.Builder, contentOffset:flatbuffers.Offset) {\n builder.addFieldOffset(1, contentOffset, 0);\n}\n\nstatic endMainMessage(builder:flatbuffers.Builder):flatbuffers.Offset {\n const offset = builder.endObject();\n builder.requiredField(offset, 6) // content\n return offset;\n}\n\nstatic createMainMessage(builder:flatbuffers.Builder, contentType:MainContent, contentOffset:flatbuffers.Offset):flatbuffers.Offset {\n MainMessage.startMainMessage(builder);\n MainMessage.addContentType(builder, contentType);\n MainMessage.addContent(builder, contentOffset);\n return MainMessage.endMainMessage(builder);\n}\n\nunpack(): MainMessageT {\n return new MainMessageT(\n this.contentType(),\n (() => {\n const temp = unionToMainContent(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })()\n );\n}\n\n\nunpackTo(_o: MainMessageT): void {\n _o.contentType = this.contentType();\n _o.content = (() => {\n const temp = unionToMainContent(this.contentType(), this.content.bind(this));\n if(temp === null) { return null; }\n return temp.unpack()\n })();\n}\n}\n\nexport class MainMessageT implements flatbuffers.IGeneratedObject {\nconstructor(\n public contentType: MainContent = MainContent.NONE,\n public content: GetPublicKeyT|PublishT|SetSignerT|SignEventT|SubscribeT|UnsubscribeT|null = null\n){}\n\n\npack(builder:flatbuffers.Builder): flatbuffers.Offset {\n const content = builder.createObjectOffset(this.content);\n\n return MainMessage.createMainMessage(builder,\n this.contentType,\n content\n );\n}\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nexport enum ParsedDataUnion {\n Kind0Parsed = 0,\n Kind1Parsed = 1,\n Kind3Parsed = 3,\n Kind4Parsed = 4,\n Kind6Parsed = 6,\n Kind7Parsed = 7,\n Kind17Parsed = 17,\n Kind20Parsed = 20,\n Kind22Parsed = 22,\n Kind1111Parsed = 1111,\n Kind1311Parsed = 1311,\n Kind7374Parsed = 7374,\n Kind7375Parsed = 7375,\n Kind7376Parsed = 7376,\n Kind9321Parsed = 9321,\n Kind9735Parsed = 9735,\n Kind10002Parsed = 10002,\n Kind10019Parsed = 10019,\n Kind17375Parsed = 17375,\n Kind30023Parsed = 30023,\n Kind39089Parsed = 39089,\n ListParsed = 51000,\n PreGenericParsed = 52000\n}\n","// automatically generated by the FlatBuffers compiler, do not modify\n\n/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, @typescript-eslint/no-non-null-assertion */\n\nexport enum SubscribeKind {\n CachedEvent = 0,\n FetchedEvent = 1,\n Count = 2,\n ConnectionStatus = 3,\n Eoce = 4,\n BufferFull = 5\n}\n","import { ByteBuffer } from 'flatbuffers';\nimport { WorkerMessage } from 'src/generated/nostr/fb';\n\n/**\n * Utility library for reading from ArrayBuffer with 4-byte header approach\n * Header format: [0-3]: Write position (4 bytes, little endian)\n * Data format: [4+]: [4-byte length][FlatBuffer message][4-byte length][FlatBuffer message]...\n * \n * Utility for reading from ArrayBuffer with 4-byte header approach.\n * Used for MessageChannel-based communication between main thread and workers.\n */\nexport class ArrayBufferReader {\n\t/**\n\t * Initialize a buffer for writing - sets the write position header to 4\n\t * @param buffer The ArrayBuffer to initialize\n\t */\n\tstatic initializeBuffer(buffer: ArrayBuffer): void {\n\t\tconst view = new DataView(buffer);\n\t\t// Set initial write position to 4 (right after the header)\n\t\tview.setUint32(0, 4, true);\n\t}\n\n\t/**\n\t * Write a message to the ArrayBuffer\n\t * @param buffer The ArrayBuffer to write to\n\t * @param data The data to write (already encoded as Uint8Array)\n\t * @returns True if written successfully, false if buffer is full\n\t */\n\tstatic writeMessage(buffer: ArrayBuffer, data: Uint8Array): boolean {\n\t\tconst view = new DataView(buffer);\n\t\tconst uint8View = new Uint8Array(buffer);\n\n\t\t// Get current write position\n\t\tconst currentWritePosition = view.getUint32(0, true);\n\n\t\t// Check if there's enough space (4 bytes for length + data length)\n\t\tconst requiredSpace = 4 + data.length;\n\t\tif (currentWritePosition + requiredSpace > buffer.byteLength) {\n\t\t\tconsole.warn('Buffer full, cannot write message');\n\t\t\treturn false;\n\t\t}\n\n\t\t// Write the length prefix (4 bytes, little endian)\n\t\tview.setUint32(currentWritePosition, data.length, true);\n\n\t\t// Write the actual data\n\t\tuint8View.set(data, currentWritePosition + 4);\n\n\t\t// Update the write position header\n\t\tconst newWritePosition = currentWritePosition + requiredSpace;\n\t\tview.setUint32(0, newWritePosition, true);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Write raw batched data (already length-prefixed) to the ArrayBuffer.\n\t * Use this when the data already contains [4-byte len][payload] format.\n\t * @param buffer The ArrayBuffer to write to\n\t * @param data The batched data (already with length prefixes)\n\t * @returns True if written successfully, false if buffer is full\n\t */\n\tstatic writeBatchedData(buffer: ArrayBuffer, data: Uint8Array, _debugId?: string): boolean {\n\t\tconst view = new DataView(buffer);\n\t\tconst uint8View = new Uint8Array(buffer);\n\n\t\t// Get current write position\n\t\tconst currentWritePosition = view.getUint32(0, true);\n\n\t\t// Check if there's enough space\n\t\tif (currentWritePosition + data.length > buffer.byteLength) {\n\t\t\tconsole.warn(\n\t\t\t\t`[ArrayBufferReader] Dropping ${_debugId ? `event for subscription '${_debugId}'` : 'event'}: ` +\n\t\t\t\t`buffer full (${currentWritePosition}/${buffer.byteLength} bytes used, ` +\n\t\t\t\t`need ${data.length} more bytes). ` +\n\t\t\t\t`Consider increasing 'bytesPerEvent' or reducing subscription limits.`\n\t\t\t);\n\t\t\treturn false;\n\t\t}\n\n\t\t// Write the data directly (it's already length-prefixed)\n\t\tuint8View.set(data, currentWritePosition);\n\n\t\t// Update the write position header\n\t\tconst newWritePosition = currentWritePosition + data.length;\n\t\tview.setUint32(0, newWritePosition, true);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Read new messages from ArrayBuffer since last read position\n\t * @param buffer The ArrayBuffer to read from\n\t * @param lastReadPosition Last position read (default: 0, meaning read from beginning)\n\t * @returns Object containing new messages and updated read position\n\t */\n\tstatic readMessages(buffer: ArrayBuffer, lastReadPosition: number = 0, _debugId?: string) {\n\t\tconst view = new DataView(buffer);\n\t\tconst uint8View = new Uint8Array(buffer);\n\n\t\tconst currentWritePosition = view.getUint32(0, true);\n\t\tconst dataStartOffset = 4;\n\t\tlet currentPos = lastReadPosition < dataStartOffset ? dataStartOffset : lastReadPosition;\n\t\tif (currentWritePosition <= currentPos) {\n\t\t\treturn { messages: [], newReadPosition: currentPos, hasNewData: false };\n\t\t}\n\n\t\tconst maxMessages = 128;\n\t\tconst messages: WorkerMessage[] = new Array(maxMessages);\n\t\tlet msgCount = 0;\n\n\t\ttry {\n\t\t\twhile (currentPos < currentWritePosition) {\n\t\t\t\t// Stop if we've filled this batch; leave currentPos at the start of the next message\n\t\t\t\tif (msgCount >= maxMessages) break;\n\n\t\t\t\t// Need enough bytes for header\n\t\t\t\tif (currentPos + 4 > currentWritePosition) break;\n\n\t\t\t\tconst headerPos = currentPos;\n\t\t\t\tconst eventLength = view.getUint32(headerPos, true);\n\t\t\t\tconst payloadStart = headerPos + 4;\n\t\t\t\tconst nextPos = payloadStart + eventLength;\n\n\t\t\t\t// Need the full payload to be available\n\t\t\t\tif (nextPos > currentWritePosition) break;\n\n\t\t\t\t// Parse directly from the existing buffer view to avoid per-message copies.\n\t\t\t\tconst bb = new ByteBuffer(uint8View.subarray(payloadStart, nextPos));\n\t\t\t\tconst message = WorkerMessage.getRootAsWorkerMessage(bb);\n\n\t\t\t\tmessages[msgCount++] = message;\n\n\t\t\t\t// Advance to next message boundary\n\t\t\t\tcurrentPos = nextPos;\n\t\t\t}\n\n\t\t\tmessages.length = msgCount;\n\t\t\treturn {\n\t\t\t\tmessages,\n\t\t\t\tnewReadPosition: currentPos,\n\t\t\t\thasNewData: msgCount > 0\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconsole.error('Failed to decode FlatBuffer data from ArrayBuffer:', error);\n\t\t\tmessages.length = msgCount;\n\t\t\treturn {\n\t\t\t\tmessages,\n\t\t\t\tnewReadPosition: lastReadPosition < dataStartOffset ? dataStartOffset : lastReadPosition,\n\t\t\t\thasNewData: false\n\t\t\t};\n\t\t}\n\t}\n\n\t/**\n\t * Read all messages from ArrayBuffer from the beginning (ignores lastReadPosition)\n\t * @param buffer The ArrayBuffer to read from\n\t * @returns Object containing all messages in the buffer\n\t */\n\tstatic readAllMessages(buffer: ArrayBuffer): {\n\t\tmessages: WorkerMessage[];\n\t\ttotalMessages: number;\n\t} {\n\t\tconst result = this.readMessages(buffer, 0); // Always start from beginning\n\t\treturn {\n\t\t\tmessages: result.messages,\n\t\t\ttotalMessages: result.messages.length\n\t\t};\n\t}\n\n\t/**\n\t * Get current write position from buffer header\n\t * @param buffer The ArrayBuffer to read from\n\t * @returns Current write position\n\t */\n\tstatic getCurrentWritePosition(buffer: ArrayBuffer): number {\n\t\tconst view = new DataView(buffer);\n\t\treturn view.getUint32(0, true);\n\t}\n\n\t/**\n\t * Check if buffer has new data since last read\n\t * @param buffer The ArrayBuffer to check\n\t * @param lastReadPosition Last position read\n\t * @returns True if there's new data to read\n\t */\n\tstatic hasNewData(buffer: ArrayBuffer, lastReadPosition: number): boolean {\n\t\tconst currentWritePosition = this.getCurrentWritePosition(buffer);\n\t\tconst dataStartOffset = 4;\n\t\tconst actualLastReadPosition = Math.max(lastReadPosition, dataStartOffset);\n\t\treturn currentWritePosition > actualLastReadPosition;\n\t}\n\n\t/**\n\t * Calculate recommended buffer size based on request limits\n\t * @param totalEventLimit Total expected events across all requests\n\t * @param bytesPerEvent Estimated bytes per event (default: 3072)\n\t * @returns Recommended buffer size in bytes\n\t */\n\tstatic calculateBufferSize(totalEventLimit: number = 100, bytesPerEvent: number = 3072): number {\n\t\tconst headerSize = 4;\n\t\tconst dataSize = totalEventLimit * bytesPerEvent;\n\t\tconst overhead = Math.floor(dataSize * 0.25); // 25% overhead\n\t\treturn headerSize + dataSize + overhead;\n\t}\n}\n","/**\n * Nostr utilities for PRE/RE list/set helpers on the frontend (TypeScript).\n *\n * This module provides:\n * - d-tag generation (slug or random)\n * - a-pointer computation (kind:pubkey_hex:d)\n * - naddr-like computation (human-readable, non-bech32 placeholder)\n *\n * Notes:\n * - naddr-like is NOT a real bech32-encoded naddr. It’s a convenient string to\n * carry the same tuple (\"kind:pubkey:d\") plus optional relays for UI/links.\n * - If/when you wire a proper NIP-19 encoder, replace naddr-like with a true naddr.\n */\n\nimport { nip19 } from 'nostr-tools';\n\nexport type NostrTag = [string, ...string[]];\nexport type StringVecLike = {\n\titems(index: number): string | Uint8Array | null;\n\titemsLength(): number;\n};\nexport type StringVecObjectLike = {\n\titems: readonly (string | Uint8Array)[];\n};\nexport type TagLike = NostrTag | StringVecLike | StringVecObjectLike;\nexport type TagMatchOptions = {\n\twhere?: (tag: readonly string[]) => boolean;\n};\nexport type TagCollectionLike =\n\t| readonly TagLike[]\n\t| {\n\t\t\ttags(index: number): TagLike | null;\n\t\t\ttagsLength(): number;\n\t };\n\nconst textDecoder = new TextDecoder();\n\nfunction toUtf8String(value: string | Uint8Array | null | undefined): string | undefined {\n\tif (typeof value === 'string') return value;\n\tif (value instanceof Uint8Array) return textDecoder.decode(value);\n\treturn undefined;\n}\n\n/**\n * Normalize a FlatBuffers `StringVec`, `StringVecT`, or `NostrTag`-style array\n * into a plain string array.\n */\nexport function readStringVec(vec: TagLike): string[] {\n\tif (Array.isArray(vec)) {\n\t\treturn vec.filter((item): item is string => typeof item === 'string');\n\t}\n\tif ('itemsLength' in vec && typeof vec.itemsLength === 'function') {\n\t\tconst out: string[] = [];\n\t\tfor (let i = 0; i < vec.itemsLength(); i++) {\n\t\t\tconst item = toUtf8String(vec.items(i));\n\t\t\tif (item !== undefined) out.push(item);\n\t\t}\n\t\treturn out;\n\t}\n\tif ('items' in vec) {\n\t\treturn vec.items.flatMap((item) => {\n\t\t\tconst value = toUtf8String(item);\n\t\t\treturn value ? [value] : [];\n\t\t});\n\t}\n\treturn [];\n}\n\nfunction matchesTag(tag: readonly string[], key: string, options?: TagMatchOptions): boolean {\n\tif (tag[0] !== key) return false;\n\treturn options?.where ? options.where(tag) : true;\n}\n\n/**\n * Read a single tag from either a tag collection or a concrete tag vector.\n * If the source is a collection, this returns the first matching tag vector.\n */\nexport function extractTag(\n\tsource: TagCollectionLike,\n\tkey: string,\n\toptions?: TagMatchOptions\n): string[] | undefined {\n\tif (Array.isArray(source)) {\n\t\tfor (const tag of source) {\n\t\t\tconst items = readStringVec(tag);\n\t\t\tif (matchesTag(items, key, options)) {\n\t\t\t\treturn items;\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tfor (let i = 0; i < source.tagsLength(); i++) {\n\t\tconst tag = source.tags(i);\n\t\tif (!tag) continue;\n\t\tconst items = readStringVec(tag);\n\t\tif (matchesTag(items, key, options)) {\n\t\t\treturn items;\n\t\t}\n\t}\n\n\treturn undefined;\n}\n\n/**\n * Return the first value for a tag key, e.g. `extractTagValue(tags, 'd')`.\n */\nexport function extractTagValue(\n\tsource: TagCollectionLike,\n\tkey: string,\n\tvalueIndexOrOptions: number | TagMatchOptions = 1,\n\toptions?: TagMatchOptions\n): string | undefined {\n\tconst valueIndex = typeof valueIndexOrOptions === 'number' ? valueIndexOrOptions : 1;\n\tconst tagOptions = typeof valueIndexOrOptions === 'number' ? options : valueIndexOrOptions;\n\treturn extractTag(source, key, tagOptions)?.[valueIndex];\n}\n\n/**\n * Return every value for a tag key across the collection.\n * This is useful for multi-value tags like `e`, `p`, or `t`.\n */\nexport function extractTagValues(\n\tsource: TagCollectionLike,\n\tkey: string,\n\tvalueIndexOrOptions: number | TagMatchOptions = 1,\n\toptions?: TagMatchOptions\n): string[] {\n\tconst valueIndex = typeof valueIndexOrOptions === 'number' ? valueIndexOrOptions : 1;\n\tconst tagOptions = typeof valueIndexOrOptions === 'number' ? options : valueIndexOrOptions;\n\tconst values: string[] = [];\n\n\tif (Array.isArray(source)) {\n\t\tfor (const tag of source) {\n\t\t\tconst items = readStringVec(tag);\n\t\t\tif (matchesTag(items, key, tagOptions) && items[valueIndex] !== undefined) {\n\t\t\t\tvalues.push(items[valueIndex]!);\n\t\t\t}\n\t\t}\n\t\treturn values;\n\t}\n\n\tfor (let i = 0; i < source.tagsLength(); i++) {\n\t\tconst tag = source.tags(i);\n\t\tif (!tag) continue;\n\t\tconst items = readStringVec(tag);\n\t\tif (matchesTag(items, key, tagOptions) && items[valueIndex] !== undefined) {\n\t\t\tvalues.push(items[valueIndex]!);\n\t\t}\n\t}\n\n\treturn values;\n}\n\n/**\n * Convert a tag collection into a lookup table of key -> values.\n */\nexport function extractTagMap(\n\tsource: TagCollectionLike,\n\toptions?: TagMatchOptions\n): Record<string, string[]> {\n\tconst tags = new Map<string, string[]>();\n\n\tif (Array.isArray(source)) {\n\t\tfor (const tag of source) {\n\t\t\tconst items = readStringVec(tag);\n\t\t\tif (items.length < 2) continue;\n\t\t\tconst key = items[0]!;\n\t\t\tif (!matchesTag(items, key, options)) continue;\n\t\t\tconst values = tags.get(key) || [];\n\t\t\tvalues.push(...items.slice(1));\n\t\t\ttags.set(key, values);\n\t\t}\n\t} else {\n\t\tfor (let i = 0; i < source.tagsLength(); i++) {\n\t\t\tconst tag = source.tags(i);\n\t\t\tif (!tag) continue;\n\t\t\tconst items = readStringVec(tag);\n\t\t\tif (items.length < 2) continue;\n\t\t\tconst key = items[0]!;\n\t\t\tif (!matchesTag(items, key, options)) continue;\n\t\t\tconst values = tags.get(key) || [];\n\t\t\tvalues.push(...items.slice(1));\n\t\t\ttags.set(key, values);\n\t\t}\n\t}\n\n\treturn Object.fromEntries(tags);\n}\n\n/* ---------------------------- NIP-19 naddr helpers --------------------------- */\n\n/**\n * Build a NIP-19 naddr (bech32) from PRE tuple.\n * Relays are optional; pass when available to help clients.\n */\nexport function makeNaddr(\n\tkind: number,\n\tpubkeyHex: string,\n\td: string,\n\trelays?: string[] | null\n): string {\n\tif (!Number.isInteger(kind) || kind < 0 || kind > 0xffff) {\n\t\tthrow new Error(`Invalid kind: ${kind}`);\n\t}\n\tif (!isHex64(pubkeyHex)) {\n\t\tthrow new Error(`Invalid pubkey hex (expected 64 lowercase hex chars): ${pubkeyHex}`);\n\t}\n\tif (!d || typeof d !== 'string') {\n\t\tthrow new Error(`Invalid d tag: ${d}`);\n\t}\n\treturn nip19.naddrEncode({\n\t\tidentifier: d,\n\t\tkind,\n\t\tpubkey: pubkeyHex,\n\t\trelays: relays && relays.length ? relays : undefined\n\t} as any);\n}\n\n/**\n * Build a NIP-19 naddr for an event. Requires that \"d\" is present (PRE).\n */\nexport function makeNaddrForEvent(evt: NostrEventMinimal, relays?: string[] | null): string {\n\tconst d = extractDFromTags(evt.tags);\n\tif (!d) {\n\t\tthrow new Error(`Missing \"d\" tag for PRE event of kind ${evt.kind}`);\n\t}\n\treturn makeNaddr(evt.kind, evt.pubkey, d, relays);\n}\n\n/**\n * Parse a NIP-19 naddr into tuple and (optionally) relays.\n */\nexport function parseNaddr(naddr: string): {\n\tkind: number;\n\tpubkey: string;\n\td: string;\n\trelays?: string[];\n} {\n\tconst decoded = nip19.decode(naddr);\n\tif (decoded.type !== 'naddr') {\n\t\tthrow new Error(`Invalid naddr type: ${decoded.type}`);\n\t}\n\tconst { identifier, kind, pubkey, relays } = decoded.data as any;\n\treturn {\n\t\tkind,\n\t\tpubkey,\n\t\td: identifier,\n\t\trelays\n\t};\n}\n\nexport interface NostrEventMinimal {\n\tkind: number;\n\tpubkey: string; // 64-char hex\n\ttags: NostrTag[];\n}\n\nexport interface APointer {\n\tkind: number;\n\tpubkey: string; // hex\n\td: string;\n}\n\n/* -------------------------------- Utilities -------------------------------- */\n\nexport function isHex64(s: string): boolean {\n\treturn /^[0-9a-f]{64}$/.test(s);\n}\n\n/**\n * Normalize a string to a NIP-54-style slug:\n * - Lowercase\n * - Replace any non-letter/digit with \"-\"\n * - Collapse multiple \"-\" into one\n * - Trim leading/trailing \"-\"\n */\nexport function normalizeSlug(input: string): string {\n\tconst lower = input.toLowerCase();\n\tconst replaced = lower.replace(/[^a-z0-9]+/g, '-');\n\tconst collapsed = replaced.replace(/-+/g, '-');\n\treturn collapsed.replace(/^-+|-+$/g, '');\n}\n\n/**\n * Generate a random, URL-safe identifier for \"d\" tag.\n * Uses crypto.getRandomValues if available; falls back to Math.random (weaker).\n */\nexport function randomId(bytes: number = 9): string {\n\tconst len = Math.max(1, Math.min(bytes, 64));\n\tlet arr: Uint8Array;\n\tif (typeof globalThis !== 'undefined' && globalThis.crypto?.getRandomValues) {\n\t\tarr = new Uint8Array(len);\n\t\tglobalThis.crypto.getRandomValues(arr);\n\t} else {\n\t\t// Fallback: not cryptographically strong\n\t\tarr = new Uint8Array(len);\n\t\tfor (let i = 0; i < len; i++) {\n\t\t\tarr[i] = Math.floor(Math.random() * 256);\n\t\t}\n\t}\n\t// Base64url encode without padding\n\tlet b64 =\n\t\ttypeof Buffer !== 'undefined'\n\t\t\t? Buffer.from(arr).toString('base64')\n\t\t\t: btoa(String.fromCharCode(...arr));\n\treturn b64.replace(/\\+/g, '-').replace(/\\//g, '_').replace(/=+$/g, '');\n}\n\n/* ------------------------------- d tag helpers ------------------------------ */\n\n/**\n * Extract \"d\" tag value from an event’s tags, if any.\n */\nexport function extractDFromTags(tags: NostrTag[]): string | undefined {\n\tfor (const t of tags) {\n\t\tif (t[0] === 'd' && typeof t[1] === 'string' && t[1].length > 0) {\n\t\t\treturn t[1];\n\t\t}\n\t}\n\treturn undefined;\n}\n\n/**\n * Ensure a \"d\" identifier for a PRE event.\n * - If tags already contain a \"d\", return it.\n * - If a source string is given, return a normalized slug from it.\n * - Otherwise, return a random ID.\n */\nexport function ensureD(\n\ttags: NostrTag[],\n\tsource?: string | null,\n\toptions?: { randomBytes?: number }\n): string {\n\tconst existing = extractDFromTags(tags);\n\tif (existing) return existing;\n\tif (source && source.trim().length > 0) {\n\t\tconst slug = normalizeSlug(source.trim());\n\t\treturn slug.length > 0 ? slug : randomId(options?.randomBytes ?? 9);\n\t}\n\treturn randomId(options?.randomBytes ?? 9);\n}\n\n/* ---------------------------- a-pointer (kind:d) ---------------------------- */\n\n/**\n * Compute the \"a\" pointer string \"kind:pubkey_hex:d\".\n */\nexport function makeAPointer(kind: number, pubkeyHex: string, d: string): string {\n\tif (!Number.isInteger(kind) || kind < 0 || kind > 0xffff) {\n\t\tthrow new Error(`Invalid kind: ${kind}`);\n\t}\n\tif (!isHex64(pubkeyHex)) {\n\t\tthrow new Error(`Invalid pubkey hex (expected 64 lowercase hex chars): ${pubkeyHex}`);\n\t}\n\tif (!d || typeof d !== 'string') {\n\t\tthrow new Error(`Invalid d tag: ${d}`);\n\t}\n\treturn `${kind}:${pubkeyHex}:${d}`;\n}\n\n/**\n * Parse an \"a\" pointer \"kind:pubkey_hex:d\".\n */\nexport function parseAPointer(a: string): APointer {\n\tconst parts = a.split(':');\n\tif (parts.length !== 3) {\n\t\tthrow new Error(`Invalid a-pointer format: ${a}`);\n\t}\n\tconst kind = Number(parts[0]);\n\tconst pubkey = parts[1];\n\tconst d = parts[2];\n\tif (!Number.isInteger(kind)) {\n\t\tthrow new Error(`Invalid kind in a-pointer: ${parts[0]}`);\n\t}\n\tif (!isHex64(pubkey)) {\n\t\tthrow new Error(`Invalid pubkey in a-pointer: ${pubkey}`);\n\t}\n\tif (!d) {\n\t\tthrow new Error(`Invalid d in a-pointer: ${d}`);\n\t}\n\treturn { kind, pubkey, d };\n}\n\n/**\n * Build an \"a\" pointer for an event. Requires that \"d\" is present (PRE).\n */\nexport function makeAPointerForEvent(evt: NostrEventMinimal): string {\n\tconst d = extractDFromTags(evt.tags);\n\tif (!d) {\n\t\tthrow new Error(`Missing \"d\" tag for PRE event of kind ${evt.kind}`);\n\t}\n\treturn makeAPointer(evt.kind, evt.pubkey, d);\n}\n\n/* ------------------------------ naddr-like (UI) ----------------------------- */\n\n/**\n * Compute a human-friendly \"naddr-like\" string that carries the tuple\n * (kind, pubkey, d) with optional relays, without doing bech32 encoding.\n *\n * Format:\n * naddr-like:kind:pubkey_hex:d[?relays=relay1,relay2,...]\n *\n * This is useful as a placeholder until a proper NIP-19 encoder is available.\n */\nexport function makeNaddrLike(\n\tkind: number,\n\tpubkeyHex: string,\n\td: string,\n\trelays?: string[] | null\n): string {\n\tconst a = makeAPointer(kind, pubkeyHex, d);\n\tif (relays && relays.length > 0) {\n\t\tconst encodedRelays = relays.map((r) => encodeURIComponent(r)).join(',');\n\t\treturn `naddr-like:${a}?relays=${encodedRelays}`;\n\t}\n\treturn `naddr-like:${a}`;\n}\n\n/**\n * Build naddr-like for an event. Requires \"d\".\n * You can pass relays if you have them (e.g., from list/set definitions).\n */\nexport function makeNaddrLikeForEvent(evt: NostrEventMinimal, relays?: string[] | null): string {\n\tconst d = extractDFromTags(evt.tags);\n\tif (!d) {\n\t\tthrow new Error(`Missing \"d\" tag for PRE event of kind ${evt.kind}`);\n\t}\n\treturn makeNaddrLike(evt.kind, evt.pubkey, d, relays);\n}\n\n/**\n * Parse a naddr-like string back to a tuple and (optionally) relays.\n */\nexport function parseNaddrLike(naddrLike: string): { a: APointer; relays?: string[] } {\n\tif (!naddrLike.startsWith('naddr-like:')) {\n\t\tthrow new Error(`Invalid naddr-like prefix: ${naddrLike}`);\n\t}\n\tconst rest = naddrLike.slice('naddr-like:'.length);\n\tconst [aPart, qs] = rest.split('?', 2);\n\tconst a = parseAPointer(aPart);\n\tif (!qs) return { a };\n\tconst params = new URLSearchParams(qs);\n\tconst relaysParam = params.get('relays');\n\tconst relays = relaysParam ? relaysParam.split(',').map(decodeURIComponent) : undefined;\n\treturn { a, relays };\n}\n\n/* ------------------------------ PRE kind checks ----------------------------- */\n\nexport function isPreKind(kind: number): boolean {\n\treturn Number.isInteger(kind) && kind >= 30000 && kind < 40000;\n}\n\n/* ---------------------------- Event tag utilities --------------------------- */\n\n/**\n * Insert or replace a \"d\" tag into tags immutably, returning a new array.\n * If no \"d\" exists, it’s appended; if it exists, the first occurrence is replaced.\n */\nexport function upsertDTag(tags: NostrTag[], d: string): NostrTag[] {\n\tconst out: NostrTag[] = [];\n\tlet replaced = false;\n\tfor (const t of tags) {\n\t\tif (!replaced && t[0] === 'd') {\n\t\t\tout.push(['d', d]);\n\t\t\treplaced = true;\n\t\t} else {\n\t\t\tout.push(t);\n\t\t}\n\t}\n\tif (!replaced) out.push(['d', d]);\n\treturn out;\n}\n\n/**\n * Convenience: ensure a d-tag on a PRE template (immutably).\n * - If present, it is returned unchanged.\n * - If absent, a slug is generated from source or a random id.\n */\nexport function ensureDTagForPre(\n\ttags: NostrTag[],\n\tsource?: string | null,\n\toptions?: { randomBytes?: number }\n): NostrTag[] {\n\tconst existing = extractDFromTags(tags);\n\tif (existing) return tags.slice();\n\tconst d = ensureD(tags, source, options);\n\treturn upsertDTag(tags, d);\n}\n","import * as flatbuffers from 'flatbuffers';\nimport type { EventTemplate, NostrEvent } from 'nostr-tools';\n\nimport { ArrayBufferReader } from 'src/lib/ArrayBufferReader';\n\nimport { NostrManagerConfig, RequestObject, SubscriptionConfig } from 'src/types';\nimport { InitCacheMsg } from './cache/index';\nimport type { InitConnectionsMsg } from './connections/types';\nimport { InitCryptoMsg } from './crypto/index';\nimport {\n\tGetPublicKeyT,\n\tMainContent,\n\tMainMessageT,\n\tPipelineConfigT,\n\tPublishT,\n\tRequestT,\n\tStringVecT,\n\tSubscribeT,\n\tSubscriptionConfigT,\n\tTemplateT,\n\tUnsubscribeT\n} from './generated/nostr/fb';\nimport { InitParserMsg } from './parser/index';\nexport * from './lib/NostrUtils';\nexport * from './types';\n\n/**\n * NostrManager handles worker orchestration and session persistence.\n */\nexport class NostrManager {\n\tprivate connections: Worker;\n\tprivate cache: Worker;\n\tprivate parser: Worker;\n\tprivate crypto: Worker;\n\tprivate textEncoder = new TextEncoder();\n\tprivate subscriptions = new Map<\n\t\tstring,\n\t\t{\n\t\t\tbuffer: ArrayBuffer;\n\t\t\toptions: SubscriptionConfig;\n\t\t\trefCount: number;\n\t\t}\n\t>();\n\tprivate publishes = new Map<string, { buffer: ArrayBuffer }>();\n\n\tprivate activePubkey: string | null = null;\n\tprivate _pendingSession: { type: string; payload: any } | null = null;\n\n\tprivate signCB = (_event: any) => {};\n\tprivate eventTarget = new EventTarget();\n\n\t// MessageChannel for parser-main communication\n\tprivate parserMainPort: MessagePort;\n\n\t// MessageChannel for connections-main communication (relay status)\n\tprivate connectionsMainPort: MessagePort;\n\n\t// Relay status cache: url -> {status, timestamp}\n\tprivate relayStatuses = new Map<\n\t\tstring,\n\t\t{ status: 'connected' | 'failed' | 'close'; timestamp: number }\n\t>();\n\n\tpublic PERPETUAL_SUBSCRIPTIONS = ['notifications', 'starterpack'];\n\n\tconstructor(config: NostrManagerConfig = {}) {\n\t\t// Create 7 MessageChannels for worker-to-worker communication\n\t\t// Each channel connects two workers - each worker gets one port (which is bidirectional)\n\t\t// Channel naming: workerA_workerB (no direction, just identifies the pair)\n\t\tconst parser_cache = new MessageChannel(); // parser ↔ cache\n\t\tconst parser_connections = new MessageChannel(); // parser ↔ connections\n\t\tconst parser_crypto = new MessageChannel(); // parser ↔ crypto\n\t\tconst cache_connections = new MessageChannel(); // cache ↔ connections\n\t\tconst crypto_connections = new MessageChannel(); // crypto ↔ connections\n\t\tconst crypto_main = new MessageChannel(); // crypto ↔ main\n\t\tconst parser_main = new MessageChannel(); // parser ↔ main (for batched events)\n\t\tconst connections_main = new MessageChannel(); // connections ↔ main (for relay status)\n\n\t\tconst useProxyConnections = !!config.proxy;\n\t\t// Keep literal paths so Vite can statically rewrite worker URLs in production builds.\n\t\tconst connectionURL = useProxyConnections\n\t\t\t? new URL('./connections/proxy.js', import.meta.url)\n\t\t\t: new URL('./connections/index.js', import.meta.url);\n\t\tconst cacheURL = new URL('./cache/index.js', import.meta.url);\n\t\tconst parserURL = new URL('./parser/index.js', import.meta.url);\n\t\tconst cryptoURL = new URL('./crypto/index.js', import.meta.url);\n\t\tconsole.log('constructing crates');\n\t\tthis.connections = new Worker(connectionURL, { type: 'module' });\n\t\tthis.cache = new Worker(cacheURL, { type: 'module' });\n\t\tthis.parser = new Worker(parserURL, { type: 'module' });\n\t\tthis.crypto = new Worker(cryptoURL, { type: 'module' });\n\n\t\tconsole.log('connectionMode', useProxyConnections ? 'proxy' : 'rust');\n\n\t\tconsole.log(this.connections, this.cache, this.parser, this.crypto);\n\t\t// Transfer ports to connections worker\n\t\t// Needs: mainPort, cachePort, parserPort, cryptoPort\n\t\tthis.connections.postMessage(\n\t\t\t{\n\t\t\t\ttype: 'init',\n\t\t\t\tpayload: {\n\t\t\t\t\tmainPort: connections_main.port2,\n\t\t\t\t\tcachePort: cache_connections.port1,\n\t\t\t\t\tparserPort: parser_connections.port1,\n\t\t\t\t\tcryptoPort: crypto_connections.port1,\n\t\t\t\t\t...(config.proxy ? { proxy: config.proxy } : {})\n\t\t\t\t}\n\t\t\t} as InitConnectionsMsg,\n\t\t\t[\n\t\t\t\tconnections_main.port2,\n\t\t\t\tcache_connections.port1,\n\t\t\t\tparser_connections.port1,\n\t\t\t\tcrypto_connections.port1\n\t\t\t]\n\t\t);\n\n\t\t// Transfer ports to cache worker\n\t\t// Needs: parserPort, connectionsPort\n\t\tthis.cache.postMessage(\n\t\t\t{\n\t\t\t\ttype: 'init',\n\t\t\t\tpayload: {\n\t\t\t\t\tparserPort: parser_cache.port1,\n\t\t\t\t\tconnectionsPort: cache_connections.port2\n\t\t\t\t}\n\t\t\t} as InitCacheMsg,\n\t\t\t[parser_cache.port1, cache_connections.port2]\n\t\t);\n\n\t\t// Store parser_main port1 for receiving batched events from parser\n\t\tthis.parserMainPort = parser_main.port1;\n\n\t\t// Set up message handler for incoming batched events from parser\n\t\tthis.parserMainPort.onmessage = (event) => {\n\t\t\tconst { subId, data } = event.data;\n\t\t\t// console.log('[main] parserMainPort received message:', { subId, dataSize: data?.byteLength });\n\t\t\tif (!subId || !data) {\n\t\t\t\tconsole.log('[main] ignoring message - missing subId or data');\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Find subscription or publish buffer and write data\n\t\t\t// Note: data is already batched with [4-byte len][payload] format\n\t\t\tconst subscription = this.subscriptions.get(subId);\n\t\t\tif (subscription) {\n\t\t\t\t// console.log('[main] found subscription for subId:', subId);\n\t\t\t\tconst written = ArrayBufferReader.writeBatchedData(subscription.buffer, data, subId);\n\t\t\t\tif (written) {\n\t\t\t\t\tthis.dispatch(`subscription:${subId}`, subId);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst publish = this.publishes.get(subId);\n\t\t\tif (publish) {\n\t\t\t\t// console.log('[main] found publish for subId:', subId);\n\t\t\t\tconst written = ArrayBufferReader.writeBatchedData(publish.buffer, data, subId);\n\t\t\t\tif (written) {\n\t\t\t\t\tthis.dispatch(`publish:${subId}`, subId);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconsole.log('[main] no subscription or publish found for subId:', subId);\n\t\t};\n\n\t\t// Set up message handler for relay status from connections worker\n\t\tthis.connectionsMainPort = connections_main.port1;\n\t\tthis.connectionsMainPort.onmessage = (event) => {\n\t\t\tconst { type, status, url } = JSON.parse(event.data);\n\t\t\tif (type === 'relay:status' && url && status) {\n\t\t\t\tthis.relayStatuses.set(url, { status, timestamp: Date.now() });\n\t\t\t\tthis.dispatch('relay:status', { status, url });\n\t\t\t} else {\n\t\t\t\tconsole.log('[main] ignoring message - type:', type, 'url:', url, 'status:', status);\n\t\t\t}\n\t\t};\n\n\t\t// Transfer ports to parser worker\n\t\t// Needs: connectionsPort, cachePort, cryptoPort, mainPort\n\t\tthis.parser.postMessage(\n\t\t\t{\n\t\t\t\ttype: 'init',\n\t\t\t\tpayload: {\n\t\t\t\t\tconnectionsPort: parser_connections.port2,\n\t\t\t\t\tcachePort: parser_cache.port2,\n\t\t\t\t\tcryptoPort: parser_crypto.port1,\n\t\t\t\t\tmainPort: parser_main.port2\n\t\t\t\t}\n\t\t\t} as InitParserMsg,\n\t\t\t[parser_connections.port2, parser_cache.port2, parser_crypto.port1, parser_main.port2]\n\t\t);\n\n\t\t// Transfer ports to crypto worker\n\t\t// Needs: parserPort, connectionsPort, mainPort\n\t\tthis.crypto.postMessage(\n\t\t\t{\n\t\t\t\ttype: 'init',\n\t\t\t\tpayload: {\n\t\t\t\t\tparserPort: parser_crypto.port2,\n\t\t\t\t\tconnectionsPort: crypto_connections.port2,\n\t\t\t\t\tmainPort: crypto_main.port1\n\t\t\t\t}\n\t\t\t} as InitCryptoMsg,\n\t\t\t[parser_crypto.port2, crypto_connections.port2, crypto_main.port1]\n\t\t);\n\n\t\t// Listen on crypto_main.port2 for control responses\n\t\tcrypto_main.port2.onmessage = (event) => {\n\t\t\tconst msg = event.data;\n\t\t\tif (msg.type === 'response') {\n\t\t\t\tthis.handleCryptoResponse(msg);\n\t\t\t}\n\t\t};\n\n\t\tthis.setupWorkerListener();\n\t\t// Defer session restore so callers have time to add auth listeners\n\t\tqueueMicrotask(() => this.restoreSession());\n\t}\n\n\tprivate postToWorker(message: any, transfer?: Transferable[]) {\n\t\tif (transfer && transfer.length) {\n\t\t\tthis.parser.postMessage(message, transfer);\n\t\t} else {\n\t\t\tthis.parser.postMessage(message);\n\t\t}\n\t}\n\n\tprivate handleCryptoResponse(msg: any) {\n\t\tif (msg.op === 'get_pubkey') {\n\t\t\tconsole.log('[main] get_pubkey:', msg.ok ? 'success' : 'failed', msg.result);\n\t\t\tif (msg.ok) {\n\t\t\t\tthis.activePubkey = msg.result;\n\t\t\t\t// Check if bunker was discovered (QR flow) - convert to bunker format\n\t\t\t\tif (\n\t\t\t\t\tthis._discoveredBunkerUrl &&\n\t\t\t\t\tthis._pendingSession?.type === 'nip46_qr' &&\n\t\t\t\t\tthis._pendingSession?.payload?.clientSecret\n\t\t\t\t) {\n\t\t\t\t\tconsole.log('[main] Converting QR to bunker for pubkey:', this.activePubkey);\n\t\t\t\t\tthis.saveSession(this.activePubkey!, 'nip46_bunker', {\n\t\t\t\t\t\turl: this._discoveredBunkerUrl,\n\t\t\t\t\t\tclientSecret: this._pendingSession.payload.clientSecret\n\t\t\t\t\t});\n\t\t\t\t\tthis._pendingSession = null;\n\t\t\t\t\tthis._discoveredBunkerUrl = null;\n\t\t\t\t} else if (this._pendingSession) {\n\t\t\t\t\t// Normal session save\n\t\t\t\t\tthis.saveSession(\n\t\t\t\t\t\tthis.activePubkey!,\n\t\t\t\t\t\tthis._pendingSession.type,\n\t\t\t\t\t\tthis._pendingSession.payload\n\t\t\t\t\t);\n\t\t\t\t\tthis._pendingSession = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst hasSigner = msg.ok && !!this._pendingSession;\n\t\t\t// Include secret key for privkey signers so app can display nsec\n\t\t\tconst secretKey = this._pendingSession?.type === 'privkey' ? this._pendingSession.payload : undefined;\n\t\t\tthis.dispatch('auth', { pubkey: this.activePubkey, hasSigner, secretKey });\n\t\t} else if (msg.op === 'sign_event' && msg.ok) {\n\t\t\tconst parsed = JSON.parse(msg.result);\n\t\t\tthis.signCB(parsed);\n\t\t}\n\t}\n\n\tprivate setupWorkerListener() {\n\t\tthis.parser.onmessage = async (event) => {\n\t\t\tconst id = typeof event.data === 'string' ? event.data : undefined;\n\t\t\tif (!id) return;\n\t\t\tif (this.subscriptions.has(id)) {\n\t\t\t\tthis.dispatch(`subscription:${id}`, id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (this.publishes.has(id)) {\n\t\t\t\tthis.dispatch(`publish:${id}`, id);\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\n\t\t// NIP-07 extension requests are still handled via crypto worker postMessage\n\t\t// (these require main thread access to window.nostr)\n\t\tthis.crypto.onmessage = async (event) => {\n\t\t\tconst msg = event.data;\n\t\t\tconsole.log('[main] crypto.onmessage:', msg?.type, msg);\n\n\t\t\t// Handle signer ready event (ALL signers send this when connected and ready)\n\t\t\t// Contains all info needed to reconstruct session: pubkey, signer_type, bunker_url (for nip46)\n\t\t\tif (msg?.type === 'signer_ready') {\n\t\t\t\tconsole.log('[main] signer_ready:', msg.signer_type, msg.pubkey);\n\t\t\t\tthis.activePubkey = msg.pubkey;\n\n\t\t\t\t// For NIP-46, use the bunker_url from the message (covers both QR and bunker flows)\n\t\t\t\t\tif (\n\t\t\t\t\t\tmsg.signer_type === 'nip46' &&\n\t\t\t\t\t\tmsg.bunker_url &&\n\t\t\t\t\t\tthis._pendingSession?.payload?.clientSecret\n\t\t\t\t\t) {\n\t\t\t\t\tconsole.log('[main] NIP-46 session saved for:', msg.pubkey);\n\t\t\t\t\tthis.saveSession(msg.pubkey, 'nip46', {\n\t\t\t\t\t\turl: msg.bunker_url,\n\t\t\t\t\t\tclientSecret: this._pendingSession.payload.clientSecret\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._pendingSession = null;\n\t\t\t\t\t}\n\t\t\t\t\t// Include secret key for privkey signers so app can display nsec\n\t\t\t\t\tconst secretKey = this._pendingSession?.type === 'privkey' ? this._pendingSession.payload : undefined;\n\t\t\t\t\tif (this._pendingSession) {\n\t\t\t\t\t\t// Normal session save (privkey, nip07)\n\t\t\t\t\t\tthis.saveSession(msg.pubkey, msg.signer_type, this._pendingSession.payload);\n\t\t\t\t\t\tthis._pendingSession = null;\n\t\t\t\t\t}\n\t\t\t\t\tthis.dispatch('auth', { pubkey: msg.pubkey, hasSigner: true, secretKey });\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t// Handle control responses (get_pubkey, sign_event, etc.)\n\t\t\tif (msg?.type === 'response') {\n\t\t\t\tthis.handleCryptoResponse(msg);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Handle NIP-07 extension requests from the worker\n\t\t\tif (msg?.type === 'extension_request') {\n\t\t\t\tconst { id, op, payload } = msg;\n\t\t\t\ttry {\n\t\t\t\t\tconst nostr = (window as any).nostr;\n\t\t\t\t\tif (!nostr) throw new Error('NIP-07 extension (window.nostr) not found');\n\n\t\t\t\t\tlet result;\n\t\t\t\t\tswitch (op) {\n\t\t\t\t\t\tcase 'getPublicKey':\n\t\t\t\t\t\t\tresult = await nostr.getPublicKey();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'signEvent':\n\t\t\t\t\t\t\tresult = await nostr.signEvent(JSON.parse(payload));\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'nip04Encrypt':\n\t\t\t\t\t\t\tresult = await nostr.nip04.encrypt(payload.pubkey, payload.plaintext);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'nip04Decrypt':\n\t\t\t\t\t\t\tresult = await nostr.nip04.decrypt(payload.pubkey, payload.ciphertext);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'nip44Encrypt':\n\t\t\t\t\t\t\tresult = await nostr.nip44.encrypt(payload.pubkey, payload.plaintext);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'nip44Decrypt':\n\t\t\t\t\t\t\tresult = await nostr.nip44.decrypt(payload.pubkey, payload.ciphertext);\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tthrow new Error(`Unknown extension operation: ${op}`);\n\t\t\t\t\t}\n\t\t\t\t\tthis.crypto.postMessage({ type: 'extension_response', id, ok: true, result });\n\t\t\t\t} catch (e: any) {\n\t\t\t\t\tthis.crypto.postMessage({\n\t\t\t\t\t\ttype: 'extension_response',\n\t\t\t\t\t\tid,\n\t\t\t\t\t\tok: false,\n\t\t\t\t\t\terror: e.message || String(e)\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t};\n\t}\n\n\tpublic createShortId(input: string): string {\n\t\tif (input.length < 64) return input;\n\t\tlet hash = 0;\n\t\tfor (let i = 0; i < input.length; i++) {\n\t\t\tconst char = input.charCodeAt(i);\n\t\t\thash = (hash << 5) - hash + char;\n\t\t\thash = hash & hash;\n\t\t}\n\t\tconst shortId = Math.abs(hash).toString(36);\n\t\treturn shortId.substring(0, 63);\n\t}\n\n\tpublic addEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: AddEventListenerOptions\n\t): void {\n\t\tthis.eventTarget.addEventListener(type, listener as EventListener, options);\n\t}\n\n\tpublic removeEventListener(\n\t\ttype: string,\n\t\tlistener: EventListenerOrEventListenerObject,\n\t\toptions?: EventListenerOptions\n\t): void {\n\t\tthis.eventTarget.removeEventListener(type, listener as EventListener, options);\n\t}\n\n\tprivate dispatch(type: string, detail?: unknown): void {\n\t\tthis.eventTarget.dispatchEvent(new CustomEvent(type, { detail }));\n\t}\n\n\tsubscribe(\n\t\tsubscriptionId: string,\n\t\trequests: RequestObject[],\n\t\toptions: SubscriptionConfig\n\t): ArrayBuffer {\n\t\tconst subId = this.createShortId(subscriptionId);\n\t\tconst existingSubscription = this.subscriptions.get(subId);\n\t\tif (existingSubscription) {\n\t\t\texistingSubscription.refCount++;\n\t\t\treturn existingSubscription.buffer;\n\t\t}\n\n\t\tconst totalLimit = requests.reduce((sum, req) => sum + (req.limit || 100), 0);\n\t\tconst bufferSize = ArrayBufferReader.calculateBufferSize(totalLimit, options.bytesPerEvent);\n\t\tconst buffer = new ArrayBuffer(bufferSize);\n\t\tArrayBufferReader.initializeBuffer(buffer);\n\n\t\tthis.subscriptions.set(subId, { buffer, options, refCount: 1 });\n\n\t\tconst optionsT = new SubscriptionConfigT(\n\t\t\tnew PipelineConfigT(options.pipeline || []),\n\t\t\toptions.closeOnEose,\n\t\t\toptions.cacheFirst,\n\t\t\toptions.timeoutMs ? BigInt(options.timeoutMs) : undefined,\n\t\t\toptions.maxEvents,\n\t\t\toptions.skipCache,\n\t\t\toptions.force,\n\t\t\toptions.bytesPerEvent,\n\t\t\toptions.isSlow,\n\t\t\toptions.pagination ? this.textEncoder.encode(options.pagination) : null\n\t\t);\n\n\t\tconst subscribeT = new SubscribeT(\n\t\t\tthis.textEncoder.encode(subId),\n\t\t\trequests.map(\n\t\t\t\t(r) =>\n\t\t\t\t\tnew RequestT(\n\t\t\t\t\t\tr.ids,\n\t\t\t\t\t\tr.authors,\n\t\t\t\t\t\tr.kinds,\n\t\t\t\t\t\tObject.entries(r.tags || {}).flatMap(\n\t\t\t\t\t\t\t([key, values]) => new StringVecT([key, ...values])\n\t\t\t\t\t\t),\n\t\t\t\t\t\tr.limit,\n\t\t\t\t\t\tr.since,\n\t\t\t\t\t\tr.until,\n\t\t\t\t\t\tthis.textEncoder.encode(r.search),\n\t\t\t\t\t\tr.relays,\n\t\t\t\t\t\tr.closeOnEOSE,\n\t\t\t\t\t\tr.cacheFirst,\n\t\t\t\t\t\tr.noCache\n\t\t\t\t\t)\n\t\t\t),\n\t\t\toptionsT\n\t\t);\n\n\t\tconst mainT = new MainMessageT(MainContent.Subscribe, subscribeT);\n\t\tconst builder = new flatbuffers.Builder(2048);\n\t\tbuilder.finish(mainT.pack(builder));\n\t\tconst uint8Array = builder.asUint8Array();\n\t\t// Transfer the underlying buffer for zero-copy\n\t\tthis.postToWorker({ serializedMessage: uint8Array }, [uint8Array.buffer]);\n\n\t\treturn buffer;\n\t}\n\n\tgetBuffer(subId: string): ArrayBuffer | undefined {\n\t\tconst existingSubscription = this.subscriptions.get(subId);\n\t\tif (existingSubscription) {\n\t\t\texistingSubscription.refCount++;\n\t\t\treturn existingSubscription.buffer;\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Get current relay statuses. Returns a Map of relay URL to status.\n\t * Use this for initial state when mounting useRelayStatus.\n\t */\n\tgetRelayStatuses(): Map<string, { status: 'connected' | 'failed' | 'close'; timestamp: number }> {\n\t\treturn new Map(this.relayStatuses);\n\t}\n\n\tunsubscribe(subscriptionId: string): void {\n\t\tconst subId = subscriptionId.length < 64 ? subscriptionId : this.createShortId(subscriptionId);\n\t\tconst subscription = this.subscriptions.get(subId);\n\t\tif (subscription) {\n\t\t\tsubscription.refCount--;\n\t\t}\n\t}\n\n\tpublish(publish_id: string, event: NostrEvent, defaultRelays: string[] = []): ArrayBuffer {\n\t\tconst buffer = new ArrayBuffer(3072);\n\t\tArrayBufferReader.initializeBuffer(buffer);\n\n\t\tconst templateT = new TemplateT(\n\t\t\tevent.kind,\n\t\t\tevent.created_at,\n\t\t\tthis.textEncoder.encode(event.content),\n\t\t\tevent.tags.map((t) => new StringVecT(t)) || []\n\t\t);\n\t\tconst publishT = new PublishT(this.textEncoder.encode(publish_id), templateT, defaultRelays);\n\t\tconst mainT = new MainMessageT(MainContent.Publish, publishT);\n\t\tconst builder = new flatbuffers.Builder(2048);\n\t\tbuilder.finish(mainT.pack(builder));\n\t\tconst uint8Array = builder.asUint8Array();\n\t\t// Transfer the underlying buffer for zero-copy\n\t\tthis.postToWorker({ serializedMessage: uint8Array }, [uint8Array.buffer]);\n\t\tthis.publishes.set(publish_id, { buffer });\n\t\treturn buffer;\n\t}\n\n\tsetSigner(name: string, payload?: string | { url: string; clientSecret: string }): void {\n\t\t// Store pending session - crypto crate will send pubkey after successful connection\n\t\tthis._pendingSession = { type: name, payload };\n\t\tconsole.log('[main] set pending session:', name);\n\n\t\tswitch (name) {\n\t\t\tcase 'pubkey':\n\t\t\t\t// Read-only mode: just set the pubkey without a signer\n\t\t\t\tthis.activePubkey = payload as string;\n\t\t\t\tthis.saveSession(this.activePubkey, 'pubkey', payload);\n\t\t\t\tthis._pendingSession = null;\n\t\t\t\tthis.dispatch('auth', { pubkey: this.activePubkey, hasSigner: false });\n\t\t\t\tbreak;\n\t\t\tcase 'privkey':\n\t\t\t\tthis.crypto.postMessage({ type: 'set_private_key', payload });\n\t\t\t\tbreak;\n\t\t\tcase 'nip07':\n\t\t\t\tthis.crypto.postMessage({ type: 'set_nip07' });\n\t\t\t\tbreak;\n\t\t\tcase 'nip46':\n\t\t\t\t// Auto-detect bunker vs QR based on URL format\n\t\t\t\tif (payload?.url?.startsWith('bunker://')) {\n\t\t\t\t\tthis.crypto.postMessage({ type: 'set_nip46_bunker', payload });\n\t\t\t\t} else if (payload?.url?.startsWith('nostrconnect://')) {\n\t\t\t\t\tthis.crypto.postMessage({ type: 'set_nip46_qr', payload });\n\t\t\t\t} else {\n\t\t\t\t\tconsole.error('[main] Unknown NIP-46 URL format:', payload?.url);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t\t// Note: crypto crate will automatically send pubkey after successful connection\n\t}\n\n\tsignEvent(event: EventTemplate, cb: (event: NostrEvent) => void) {\n\t\tthis.signCB = cb;\n\t\tthis.crypto.postMessage({ type: 'sign_event', payload: JSON.stringify(event) });\n\t}\n\n\tgetPublicKey() {\n\t\tconst mainT = new MainMessageT(MainContent.GetPublicKey, new GetPublicKeyT());\n\t\tconst builder = new flatbuffers.Builder(2048);\n\t\tbuilder.finish(mainT.pack(builder));\n\t\tconst uint8Array = builder.asUint8Array();\n\t\t// Transfer the underlying buffer for zero-copy\n\t\tthis.parser.postMessage({ serializedMessage: uint8Array }, [uint8Array.buffer]);\n\t}\n\n\t/**\n\t * Generate a cryptographically secure random client secret for NIP-46\n\t * Returns a hex-encoded 32-byte private key\n\t */\n\tprivate generateClientSecret(): string {\n\t\tconst array = new Uint8Array(32);\n\t\tcrypto.getRandomValues(array);\n\t\treturn Array.from(array, (b) => b.toString(16).padStart(2, '0')).join('');\n\t}\n\n\tsetNip46Bunker(bunkerUrl: string, clientSecret?: string): void {\n\t\tconst secret = clientSecret || this.generateClientSecret();\n\t\tconsole.log('[main] NIP-46 bunker:', bunkerUrl.slice(0, 50) + '...');\n\t\tthis.setSigner('nip46', { url: bunkerUrl, clientSecret: secret });\n\t}\n\n\tsetNip46QR(nostrconnectUrl: string, clientSecret?: string): void {\n\t\tconst secret = clientSecret || this.generateClientSecret();\n\t\tconsole.log('[main] NIP-46 QR:', nostrconnectUrl.slice(0, 50) + '...');\n\t\tthis.setSigner('nip46', { url: nostrconnectUrl, clientSecret: secret });\n\t}\n\n\tsetNip07(): void {\n\t\tthis.setSigner('nip07', '');\n\t}\n\n\tsetPubkey(pubkey: string): void {\n\t\tthis.setSigner('pubkey', pubkey);\n\t}\n\n\tpublic getActivePubkey(): string | null {\n\t\treturn this.activePubkey;\n\t}\n\n\tpublic getSubscriptionCount(): number {\n\t\treturn this.subscriptions.size;\n\t}\n\n\tpublic getAccounts(): Record<string, { type: string; payload: any }> {\n\t\tconst accountsJson = localStorage.getItem('nostr_signer_accounts') || '{}';\n\t\ttry {\n\t\t\treturn JSON.parse(accountsJson);\n\t\t} catch (e) {\n\t\t\treturn {};\n\t\t}\n\t}\n\n\tpublic switchAccount(pubkey: string) {\n\t\tconst accounts = this.getAccounts();\n\t\tconst session = accounts[pubkey];\n\t\tif (session) {\n\t\t\tthis.setSigner(session.type, session.payload);\n\t\t}\n\t}\n\n\tprivate saveSession(pubkey: string, type: string, payload: any) {\n\t\tconsole.log('[main] saveSession:', {\n\t\t\tpubkey: pubkey.slice(0, 16) + '...',\n\t\t\ttype,\n\t\t\thasClientSecret: !!payload?.clientSecret\n\t\t});\n\t\tconst accounts = this.getAccounts();\n\t\taccounts[pubkey] = { type, payload };\n\t\tlocalStorage.setItem('nostr_signer_accounts', JSON.stringify(accounts));\n\t\tlocalStorage.setItem('nostr_active_pubkey', pubkey);\n\t\tconsole.log('[main] Session saved to localStorage');\n\t}\n\n\tprivate restoreSession() {\n\t\tconst activePubkey = localStorage.getItem('nostr_active_pubkey');\n\t\tif (activePubkey) {\n\t\t\tthis.switchAccount(activePubkey);\n\t\t} else {\n\t\t\tthis.dispatch('auth', { pubkey: null, hasSigner: false });\n\t\t}\n\t}\n\n\tpublic logout(): void {\n\t\tthis._pendingSession = null;\n\t\tthis.activePubkey = null;\n\t\tthis.crypto.postMessage({ type: 'clear_signer' });\n\t\tlocalStorage.removeItem('nostr_active_pubkey');\n\t\tthis.dispatch('logout');\n\t}\n\n\tpublic removeAccount(): void {\n\t\tconst currentPubkey = this.activePubkey;\n\t\tif (!currentPubkey) return;\n\n\t\t// Remove current account from storage\n\t\tconst accounts = this.getAccounts();\n\t\tdelete accounts[currentPubkey];\n\t\tlocalStorage.setItem('nostr_signer_accounts', JSON.stringify(accounts));\n\n\t\t// Check for other accounts to switch to\n\t\tconst remainingPubkeys = Object.keys(accounts);\n\t\tif (remainingPubkeys.length > 0) {\n\t\t\t// Switch to first available account\n\t\t\tconst nextPubkey = remainingPubkeys[0];\n\t\t\tif (nextPubkey) {\n\t\t\t\tthis.switchAccount(nextPubkey);\n\t\t\t}\n\t\t} else {\n\t\t\t// No other accounts - perform full logout\n\t\t\tthis.logout();\n\t\t}\n\t}\n\n\tcleanup(): void {\n\t\tconst subscriptionsToDelete: string[] = [];\n\n\t\tfor (const [subId, subscription] of this.subscriptions.entries()) {\n\t\t\tif (subscription.refCount <= 0 && !this.PERPETUAL_SUBSCRIPTIONS.includes(subId)) {\n\t\t\t\tsubscriptionsToDelete.push(subId);\n\t\t\t}\n\t\t}\n\n\t\t// Actually remove and tell workers to drop them\n\t\tfor (const subId of subscriptionsToDelete) {\n\t\t\t// Send Unsubscribe message to parser\n\t\t\tconst unsubscribeT = new UnsubscribeT(this.textEncoder.encode(subId));\n\t\t\tconst mainT = new MainMessageT(MainContent.Unsubscribe, unsubscribeT);\n\t\t\tconst builder = new flatbuffers.Builder(256);\n\t\t\tbuilder.finish(mainT.pack(builder));\n\t\t\tconst uint8Array = builder.asUint8Array();\n\t\t\t// Transfer the underlying buffer for zero-copy\n\t\t\tthis.postToWorker({ serializedMessage: uint8Array }, [uint8Array.buffer]);\n\n\t\t\t// Tell connections worker to close relay subscriptions\n\t\t\tthis.connections.postMessage(subId);\n\n\t\t\t// Remove from local subscriptions map\n\t\t\tthis.subscriptions.delete(subId);\n\t\t}\n\t}\n}\n\nexport function createNostrManager(config?: NostrManagerConfig): NostrManager {\n\treturn new NostrManager(config);\n}\n\n// Global manager instance for hooks. Must be explicitly set by the app.\nlet globalManager: NostrManager | null = null;\n\n/**\n * Get the global manager instance used by hooks.\n * Throws if no manager has been set.\n */\nexport function getManager(): NostrManager {\n\tif (!globalManager) {\n\t\tthrow new Error(\n\t\t\t'[nipworker] Global manager is not set. Call setManager(createNostrManager(...)) before using hooks.'\n\t\t);\n\t}\n\treturn globalManager;\n}\n\n/**\n * Set the global manager instance used by all hooks.\n * Call this early in your app before using any hooks.\n *\n * @example\n * import { createNostrManager, setManager } from '@candypoets/nipworker';\n *\n * const myManager = createNostrManager({\n * proxy: { url: import.meta.env.VITE_NIPWORKER_PROXY_URL }\n * });\n * setManager(myManager);\n */\nexport function setManager(manager: NostrManager): void {\n\tglobalManager = manager;\n}\n\n/**\n * Backward-compatible alias for `setManager`.\n * @deprecated Use `setManager()`.\n */\nexport function setGlobalManager(manager: NostrManager): void {\n\tsetManager(manager);\n}\n"],"names":["CacheRequest","i","bb","obj","flatbuffers","optionalEncoding","offset","index","Request","NostrEvent","ParsedEvent","builder","subIdOffset","requestsOffset","data","numElems","eventOffset","parsedEventOffset","relaysOffset","CacheRequestT","_o","subId","requests","event","parsedEvent","relays","CacheInput","unionToCacheInput","type","accessor","WorkerMessage","CacheInputMessage","contentType","contentOffset","CacheInputMessageT","temp","content","CacheResponse","payloadOffset","CacheResponseT","payload","CounterPipeConfig","kindsOffset","pubkeyOffset","CounterPipeConfigT","kinds","pubkey","GetPublicKey","GetPublicKeyT","KindFilterPipeConfig","KindFilterPipeConfigT","Template","StringVec","kind","createdAt","tagsOffset","TemplateT","tags","Publish","publishIdOffset","templateOffset","PublishT","publishId","template","PrivateKey","privateKeyOffset","PrivateKeyT","privateKey","SignerType","unionToSignerType","SetSigner","signerTypeType","signerTypeOffset","SetSignerT","signerType","SignEvent","SignEventT","MuteFilterPipeConfig","pubkeysOffset","hashtagsOffset","wordsOffset","eventIdsOffset","MuteFilterPipeConfigT","pubkeys","hashtags","words","eventIds","NpubLimiterPipeConfig","limitPerNpub","maxTotalNpubs","NpubLimiterPipeConfigT","ParsePipeConfig","ParsePipeConfigT","ProofVerificationPipeConfig","maxProofs","ProofVerificationPipeConfigT","SaveToDbPipeConfig","SaveToDbPipeConfigT","SerializeEventsPipeConfig","subscriptionIdOffset","SerializeEventsPipeConfigT","subscriptionId","PipeConfig","unionToPipeConfig","Pipe","configType","configOffset","PipeT","config","PipelineConfig","pipesOffset","PipelineConfigT","pipes","SubscriptionConfig","pipelineOffset","closeOnEose","cacheFirst","timeoutMs","maxEvents","skipCache","force","bytesPerEvent","isSlow","paginationOffset","SubscriptionConfigT","pipeline","pagination","Subscribe","SubscribeT","Unsubscribe","UnsubscribeT","MainContent","unionToMainContent","MainMessage","MainMessageT","ParsedDataUnion","SubscribeKind","ArrayBufferReader","buffer","view","uint8View","currentWritePosition","requiredSpace","newWritePosition","_debugId","lastReadPosition","dataStartOffset","currentPos","maxMessages","messages","msgCount","headerPos","eventLength","payloadStart","nextPos","ByteBuffer","message","error","result","actualLastReadPosition","totalEventLimit","dataSize","overhead","textDecoder","toUtf8String","value","readStringVec","vec","item","out","matchesTag","tag","key","options","extractTag","source","items","extractTagValue","valueIndexOrOptions","valueIndex","extractTagValues","tagOptions","values","extractTagMap","makeNaddr","pubkeyHex","d","isHex64","nip19","makeNaddrForEvent","evt","extractDFromTags","parseNaddr","naddr","decoded","identifier","s","normalizeSlug","input","randomId","bytes","len","arr","ensureD","existing","slug","makeAPointer","parseAPointer","a","parts","makeAPointerForEvent","makeNaddrLike","encodedRelays","r","makeNaddrLikeForEvent","parseNaddrLike","naddrLike","rest","aPart","qs","relaysParam","isPreKind","upsertDTag","replaced","t","ensureDTagForPre","NostrManager","_event","parser_cache","parser_connections","parser_crypto","cache_connections","crypto_connections","crypto_main","parser_main","connections_main","useProxyConnections","connectionURL","cacheURL","parserURL","cryptoURL","subscription","publish","status","url","msg","transfer","hasSigner","secretKey","parsed","id","op","nostr","e","hash","char","listener","detail","existingSubscription","totalLimit","sum","req","bufferSize","optionsT","subscribeT","RequestT","StringVecT","mainT","uint8Array","publish_id","defaultRelays","templateT","publishT","name","cb","array","b","bunkerUrl","clientSecret","secret","nostrconnectUrl","accountsJson","session","accounts","activePubkey","currentPubkey","remainingPubkeys","nextPubkey","subscriptionsToDelete","unsubscribeT","createNostrManager","globalManager","getManager","setManager","manager","setGlobalManager"],"mappings":";;;;;AAWO,MAAMA,EAAqE;AAAA,EAA3E,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOC,GAAUC,GAAwC;AACzD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,sBAAsBA,GAA2BC,GAAgC;AACtF,YAAQA,KAAO,IAAIH,EAAA,GAAgB,OAAOE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC3F;AAAA,EAEA,OAAO,kCAAkCA,GAA2BC,GAAgC;AAClG,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIH,EAAA,GAAgB,OAAOE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC3F;AAAA,EAIA,MAAMG,GAA8C;AAClD,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,SAASE,GAAeJ,GAA2B;AACjD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAIK,GAAA,GAAW,OAAO,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASF,CAAM,IAAIC,IAAQ,CAAC,GAAG,KAAK,EAAG,IAAI;AAAA,EACtI;AAAA,EAEA,iBAAwB;AACtB,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,MAAMH,GAAiC;AACrC,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAIM,GAAA,GAAc,OAAO,KAAK,GAAI,WAAW,KAAK,SAASH,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EAC1G;AAAA,EAEA,YAAYH,GAAmC;AAC7C,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,KAAUH,KAAO,IAAIO,GAAA,GAAe,OAAO,KAAK,GAAI,WAAW,KAAK,SAASJ,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EAC3G;AAAA,EAIA,OAAOC,GAAcF,GAA8C;AACjE,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,GAAGF,CAAgB,IAAI;AAAA,EAC7G;AAAA,EAEA,eAAsB;AACpB,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,kBAAkBK,GAA6B;AACpD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6BC,GAAgC;AAC3E,IAAAD,EAAQ,eAAe,GAAGC,GAAa,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,YAAYD,GAA6BE,GAAmC;AACjF,IAAAF,EAAQ,eAAe,GAAGE,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,qBAAqBF,GAA6BG,GAA8C;AACrG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,oBAAoBA,GAA6BI,GAAiB;AACvE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,SAASJ,GAA6BK,GAAgC;AAC3E,IAAAL,EAAQ,eAAe,GAAGK,GAAa,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,eAAeL,GAA6BM,GAAsC;AACvF,IAAAN,EAAQ,eAAe,GAAGM,GAAmB,CAAC;AAAA,EAChD;AAAA,EAEA,OAAO,UAAUN,GAA6BO,GAAiC;AAC7E,IAAAP,EAAQ,eAAe,GAAGO,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,mBAAmBP,GAA6BG,GAA8C;AACnG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BI,GAAiB;AACrE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,gBAAgBJ,GAAgD;AACrE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAGA,SAAwB;AACtB,WAAO,IAAIa;AAAA,MACT,KAAK,MAAA;AAAA,MACL,KAAK,GAAI,cAAiC,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,gBAAgB;AAAA,MACxF,KAAK,YAAY,OAAO,KAAK,MAAA,EAAS,WAAW;AAAA,MACjD,KAAK,kBAAkB,OAAO,KAAK,YAAA,EAAe,WAAW;AAAA,MAC9D,KAAK,GAAI,iBAAyB,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,aAAA,CAAc;AAAA,IAAA;AAAA,EAEjF;AAAA,EAGA,SAASC,GAAyB;AAChC,IAAAA,EAAG,QAAQ,KAAK,MAAA,GAChBA,EAAG,WAAW,KAAK,GAAI,cAAiC,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,eAAA,CAAgB,GACvGA,EAAG,QAAS,KAAK,MAAA,MAAY,OAAO,KAAK,MAAA,EAAS,OAAA,IAAW,MAC7DA,EAAG,cAAe,KAAK,YAAA,MAAkB,OAAO,KAAK,YAAA,EAAe,OAAA,IAAW,MAC/EA,EAAG,SAAS,KAAK,GAAI,iBAAyB,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,aAAA,CAAc;AAAA,EAC3F;AACA;AAEO,MAAMD,GAAsD;AAAA,EACnE,YACSE,IAAgC,MAChCC,IAAyB,CAAA,GACzBC,IAA0B,MAC1BC,IAAiC,MACjCC,IAAqB,CAAA,GAC7B;AALQ,SAAA,QAAAJ,GACA,KAAA,WAAAC,GACA,KAAA,QAAAC,GACA,KAAA,cAAAC,GACA,KAAA,SAAAC;AAAA,EACP;AAAA,EAGF,KAAKd,GAAiD;AACpD,UAAMU,IAAS,KAAK,UAAU,OAAOV,EAAQ,aAAa,KAAK,KAAM,IAAI,GACnEW,IAAWtB,EAAa,qBAAqBW,GAASA,EAAQ,uBAAuB,KAAK,QAAQ,CAAC,GACnGY,IAAS,KAAK,UAAU,OAAO,KAAK,MAAO,KAAKZ,CAAO,IAAI,GAC3Da,IAAe,KAAK,gBAAgB,OAAO,KAAK,YAAa,KAAKb,CAAO,IAAI,GAC7Ec,IAASzB,EAAa,mBAAmBW,GAASA,EAAQ,uBAAuB,KAAK,MAAM,CAAC;AAEnG,WAAAX,EAAa,kBAAkBW,CAAO,GACtCX,EAAa,SAASW,GAASU,CAAK,GACpCrB,EAAa,YAAYW,GAASW,CAAQ,GAC1CtB,EAAa,SAASW,GAASY,CAAK,GACpCvB,EAAa,eAAeW,GAASa,CAAW,GAChDxB,EAAa,UAAUW,GAASc,CAAM,GAE/BzB,EAAa,gBAAgBW,CAAO;AAAA,EAC7C;AACA;ACjKO,IAAKe,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,gBAAgB,CAAA,IAAhB,iBACAA,EAAAA,EAAA,eAAe,CAAA,IAAf,gBAHUA,IAAAA,KAAA,CAAA,CAAA;AAML,SAASC,GACdC,GACAC,GACiC;AACjC,UAAOH,EAAWE,CAAI,GAAA;AAAA,IACpB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAiB,aAAOC,EAAS,IAAIC,IAAe;AAAA,IACzD,KAAK;AAAgB,aAAOD,EAAS,IAAI7B,GAAc;AAAA,IACvD;AAAS,aAAO;AAAA,EAAA;AAEpB;ACbO,MAAM+B,EAA+E;AAAA,EAArF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO9B,GAAUC,GAA6C;AAC9D,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,2BAA2BA,GAA2BC,GAA0C;AACrG,YAAQA,KAAO,IAAI4B,EAAA,GAAqB,OAAO7B,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAChG;AAAA,EAEA,OAAO,uCAAuCA,GAA2BC,GAA0C;AACjH,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI4B,EAAA,GAAqB,OAAO7B,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAChG;AAAA,EAEA,cAAyB;AACvB,UAAMI,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAIoB,EAAW;AAAA,EACxE;AAAA,EAEA,QAAqCvB,GAAkB;AACrD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQH,GAAK,KAAK,SAASG,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,uBAAuBK,GAA6B;AACzD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,eAAeA,GAA6BqB,GAAwB;AACzE,IAAArB,EAAQ,aAAa,GAAGqB,GAAaN,EAAW,IAAI;AAAA,EACtD;AAAA,EAEA,OAAO,WAAWf,GAA6BsB,GAAkC;AAC/E,IAAAtB,EAAQ,eAAe,GAAGsB,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,qBAAqBtB,GAAgD;AAC1E,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,wBAAwBK,GAA6BqB,GAAwBC,GAAqD;AACvI,WAAAF,EAAkB,uBAAuBpB,CAAO,GAChDoB,EAAkB,eAAepB,GAASqB,CAAW,GACrDD,EAAkB,WAAWpB,GAASsB,CAAa,GAC5CF,EAAkB,qBAAqBpB,CAAO;AAAA,EACvD;AAAA,EAEA,SAA6B;AAC3B,WAAO,IAAIuB;AAAA,MACT,KAAK,YAAA;AAAA,OACJ,MAAM;AACL,cAAMC,IAAOR,GAAkB,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC1E,eAAGQ,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASf,GAA8B;AACrC,IAAAA,EAAG,cAAc,KAAK,YAAA,GACtBA,EAAG,WAAW,MAAM;AAChB,YAAMe,IAAOR,GAAkB,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC1E,aAAGQ,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAMD,GAA2D;AAAA,EACxE,YACSF,IAA0BN,EAAW,MACrCU,IAA6C,MACrD;AAFQ,SAAA,cAAAJ,GACA,KAAA,UAAAI;AAAA,EACP;AAAA,EAGF,KAAKzB,GAAiD;AACpD,UAAMyB,IAAUzB,EAAQ,mBAAmB,KAAK,OAAO;AAEvD,WAAOoB,EAAkB;AAAA,MAAwBpB;AAAA,MAC/C,KAAK;AAAA,MACLyB;AAAA,IAAA;AAAA,EAEJ;AACA;AC7FO,MAAMC,EAAuE;AAAA,EAA7E,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOpC,GAAUC,GAAyC;AAC1D,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,uBAAuBA,GAA2BC,GAAkC;AACzF,YAAQA,KAAO,IAAIkC,EAAA,GAAiB,OAAOnC,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC5F;AAAA,EAEA,OAAO,mCAAmCA,GAA2BC,GAAkC;AACrG,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIkC,EAAA,GAAiB,OAAOnC,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC5F;AAAA,EAIA,MAAMG,GAA8C;AAClD,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,QAAQE,GAA2B;AACjC,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,CAAK,IAAI;AAAA,EACxF;AAAA,EAEA,gBAAuB;AACrB,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,eAA+B;AAC7B,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,IAAI,WAAW,KAAK,GAAI,QAAQ,QAAQ,KAAK,GAAI,MAAA,EAAQ,aAAa,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,GAAG,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,CAAC,IAAI;AAAA,EAChL;AAAA,EAEA,OAAO,mBAAmBK,GAA6B;AACrD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6BC,GAAgC;AAC3E,IAAAD,EAAQ,eAAe,GAAGC,GAAa,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,WAAWD,GAA6B2B,GAAkC;AAC/E,IAAA3B,EAAQ,eAAe,GAAG2B,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,oBAAoB3B,GAA6BG,GAA6C;AACnG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,QAAQG,EAAKb,CAAC,CAAE;AAE1B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,mBAAmBA,GAA6BI,GAAiB;AACtE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,iBAAiBJ,GAAgD;AACtE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,oBAAoBK,GAA6BC,GAAgC0B,GAAqD;AAC3I,WAAAD,EAAc,mBAAmB1B,CAAO,GACxC0B,EAAc,SAAS1B,GAASC,CAAW,GAC3CyB,EAAc,WAAW1B,GAAS2B,CAAa,GACxCD,EAAc,iBAAiB1B,CAAO;AAAA,EAC/C;AAAA,EAEA,SAAyB;AACvB,WAAO,IAAI4B;AAAA,MACT,KAAK,MAAA;AAAA,MACL,KAAK,GAAI,iBAAyB,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,cAAA,CAAe;AAAA,IAAA;AAAA,EAEnF;AAAA,EAGA,SAASnB,GAA0B;AACjC,IAAAA,EAAG,QAAQ,KAAK,MAAA,GAChBA,EAAG,UAAU,KAAK,GAAI,iBAAyB,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,cAAA,CAAe;AAAA,EAC9F;AACA;AAEO,MAAMmB,GAAuD;AAAA,EACpE,YACSlB,IAAgC,MAChCmB,IAAsB,CAAA,GAC9B;AAFQ,SAAA,QAAAnB,GACA,KAAA,UAAAmB;AAAA,EACP;AAAA,EAGF,KAAK7B,GAAiD;AACpD,UAAMU,IAAS,KAAK,UAAU,OAAOV,EAAQ,aAAa,KAAK,KAAM,IAAI,GACnE6B,IAAUH,EAAc,oBAAoB1B,GAAS,KAAK,OAAO;AAEvE,WAAO0B,EAAc;AAAA,MAAoB1B;AAAA,MACvCU;AAAA,MACAmB;AAAA,IAAA;AAAA,EAEJ;AACA;AC3GO,MAAMC,EAA+E;AAAA,EAArF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOxC,GAAUC,GAA6C;AAC9D,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,2BAA2BA,GAA2BC,GAA0C;AACrG,YAAQA,KAAO,IAAIsC,EAAA,GAAqB,OAAOvC,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAChG;AAAA,EAEA,OAAO,uCAAuCA,GAA2BC,GAA0C;AACjH,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIsC,EAAA,GAAqB,OAAOvC,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAChG;AAAA,EAEA,MAAMK,GAA2B;AAC/B,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,CAAC,IAAI;AAAA,EAC7F;AAAA,EAEA,cAAqB;AACnB,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,aAA8B;AAC5B,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,IAAI,YAAY,KAAK,GAAI,QAAQ,QAAQ,KAAK,GAAI,MAAA,EAAQ,aAAa,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,GAAG,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,CAAC,IAAI;AAAA,EACjL;AAAA,EAIA,OAAOD,GAA8C;AACnD,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,OAAO,uBAAuBM,GAA6B;AACzD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6B+B,GAAgC;AAC3E,IAAA/B,EAAQ,eAAe,GAAG+B,GAAa,CAAC;AAAA,EAC1C;AAAA,EAOA,OAAO,kBAAkB/B,GAA6BG,GAAyD;AAC7G,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,SAASG,EAAKb,CAAC,CAAE;AAE3B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,iBAAiBA,GAA6BI,GAAiB;AACpE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,UAAUJ,GAA6BgC,GAAiC;AAC7E,IAAAhC,EAAQ,eAAe,GAAGgC,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,qBAAqBhC,GAAgD;AAC1E,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GAC/BK,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,wBAAwBK,GAA6B+B,GAAgCC,GAAoD;AAC9I,WAAAF,EAAkB,uBAAuB9B,CAAO,GAChD8B,EAAkB,SAAS9B,GAAS+B,CAAW,GAC/CD,EAAkB,UAAU9B,GAASgC,CAAY,GAC1CF,EAAkB,qBAAqB9B,CAAO;AAAA,EACvD;AAAA,EAEA,SAA6B;AAC3B,WAAO,IAAIiC;AAAA,MACT,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,aAAa;AAAA,MAC3E,KAAK,OAAA;AAAA,IAAO;AAAA,EAEhB;AAAA,EAGA,SAASxB,GAA8B;AACrC,IAAAA,EAAG,QAAQ,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa,GACtFA,EAAG,SAAS,KAAK,OAAA;AAAA,EACnB;AACA;AAEO,MAAMwB,GAA2D;AAAA,EACxE,YACSC,IAAoB,IACpBC,IAAiC,MACzC;AAFQ,SAAA,QAAAD,GACA,KAAA,SAAAC;AAAA,EACP;AAAA,EAGF,KAAKnC,GAAiD;AACpD,UAAMkC,IAAQJ,EAAkB,kBAAkB9B,GAAS,KAAK,KAAK,GAC/DmC,IAAU,KAAK,WAAW,OAAOnC,EAAQ,aAAa,KAAK,MAAO,IAAI;AAE5E,WAAO8B,EAAkB;AAAA,MAAwB9B;AAAA,MAC/CkC;AAAA,MACAC;AAAA,IAAA;AAAA,EAEJ;AACA;ACjHO,MAAMC,EAAqE;AAAA,EAA3E,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO9C,GAAUC,GAAwC;AACzD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,sBAAsBA,GAA2BC,GAAgC;AACtF,YAAQA,KAAO,IAAI4C,EAAA,GAAgB,OAAO7C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC3F;AAAA,EAEA,OAAO,kCAAkCA,GAA2BC,GAAgC;AAClG,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI4C,EAAA,GAAgB,OAAO7C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC3F;AAAA,EAEA,OAAO,kBAAkBS,GAA6B;AACpD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,gBAAgBA,GAAgD;AAErE,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,mBAAmBA,GAAgD;AACxE,WAAAoC,EAAa,kBAAkBpC,CAAO,GAC/BoC,EAAa,gBAAgBpC,CAAO;AAAA,EAC7C;AAAA,EAEA,SAAwB;AACtB,WAAO,IAAIqC,GAAA;AAAA,EACb;AAAA,EAGA,SAAS5B,GAAyB;AAAA,EAAC;AACnC;AAEO,MAAM4B,GAAsD;AAAA,EACnE,cAAa;AAAA,EAAC;AAAA,EAGd,KAAKrC,GAAiD;AACpD,WAAOoC,EAAa,mBAAmBpC,CAAO;AAAA,EAChD;AACA;AC/CO,MAAMsC,EAAqF;AAAA,EAA3F,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOhD,GAAUC,GAAgD;AACjE,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,8BAA8BA,GAA2BC,GAAgD;AAC9G,YAAQA,KAAO,IAAI8C,EAAA,GAAwB,OAAO/C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnG;AAAA,EAEA,OAAO,0CAA0CA,GAA2BC,GAAgD;AAC1H,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI8C,EAAA,GAAwB,OAAO/C,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnG;AAAA,EAEA,MAAMK,GAA2B;AAC/B,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,CAAC,IAAI;AAAA,EAC7F;AAAA,EAEA,cAAqB;AACnB,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,aAA8B;AAC5B,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,IAAI,YAAY,KAAK,GAAI,QAAQ,QAAQ,KAAK,GAAI,MAAA,EAAQ,aAAa,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,GAAG,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,CAAC,IAAI;AAAA,EACjL;AAAA,EAEA,OAAO,0BAA0BK,GAA6B;AAC5D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6B+B,GAAgC;AAC3E,IAAA/B,EAAQ,eAAe,GAAG+B,GAAa,CAAC;AAAA,EAC1C;AAAA,EAOA,OAAO,kBAAkB/B,GAA6BG,GAAyD;AAC7G,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,SAASG,EAAKb,CAAC,CAAE;AAE3B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,iBAAiBA,GAA6BI,GAAiB;AACpE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,wBAAwBJ,GAAgD;AAC7E,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,2BAA2BK,GAA6B+B,GAAmD;AAChH,WAAAO,EAAqB,0BAA0BtC,CAAO,GACtDsC,EAAqB,SAAStC,GAAS+B,CAAW,GAC3CO,EAAqB,wBAAwBtC,CAAO;AAAA,EAC7D;AAAA,EAEA,SAAgC;AAC9B,WAAO,IAAIuC;AAAA,MACT,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,IAAA;AAAA,EAE/E;AAAA,EAGA,SAAS9B,GAAiC;AACxC,IAAAA,EAAG,QAAQ,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,EACxF;AACA;AAEO,MAAM8B,GAA8D;AAAA,EAC3E,YACSL,IAAoB,IAC5B;AADQ,SAAA,QAAAA;AAAA,EACP;AAAA,EAGF,KAAKlC,GAAiD;AACpD,UAAMkC,IAAQI,EAAqB,kBAAkBtC,GAAS,KAAK,KAAK;AAExE,WAAOsC,EAAqB;AAAA,MAA2BtC;AAAA,MACrDkC;AAAA,IAAA;AAAA,EAEJ;AACA;AC9FO,MAAMM,EAA6D;AAAA,EAAnE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOlD,GAAUC,GAAoC;AACrD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,kBAAkBA,GAA2BC,GAAwB;AAC1E,YAAQA,KAAO,IAAIgD,EAAA,GAAY,OAAOjD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACvF;AAAA,EAEA,OAAO,8BAA8BA,GAA2BC,GAAwB;AACtF,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIgD,EAAA,GAAY,OAAOjD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACvF;AAAA,EAEA,OAAc;AACZ,UAAMI,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,YAAmB;AACjB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAI;AAAA,EAC7D;AAAA,EAIA,QAAQD,GAA8C;AACpD,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,KAAKE,GAAeJ,GAA+B;AACjD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,KAAUH,KAAO,IAAIiD,GAAA,GAAa,OAAO,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAAS9C,CAAM,IAAIC,IAAQ,CAAC,GAAG,KAAK,EAAG,IAAI;AAAA,EACxI;AAAA,EAEA,aAAoB;AAClB,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,cAAcK,GAA6B;AAChD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,QAAQA,GAA6B0C,GAAa;AACvD,IAAA1C,EAAQ,cAAc,GAAG0C,GAAM,CAAC;AAAA,EAClC;AAAA,EAEA,OAAO,aAAa1C,GAA6B2C,GAAkB;AACjE,IAAA3C,EAAQ,cAAc,GAAG2C,GAAW,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,WAAW3C,GAA6BsB,GAAkC;AAC/E,IAAAtB,EAAQ,eAAe,GAAGsB,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,QAAQtB,GAA6B4C,GAA+B;AACzE,IAAA5C,EAAQ,eAAe,GAAG4C,GAAY,CAAC;AAAA,EACzC;AAAA,EAEA,OAAO,iBAAiB5C,GAA6BG,GAA8C;AACjG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,gBAAgBA,GAA6BI,GAAiB;AACnE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,YAAYJ,GAAgD;AACjE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GAC/BK,EAAQ,cAAcL,GAAQ,EAAE,GACzBA;AAAA,EACT;AAAA,EAEA,OAAO,eAAeK,GAA6B0C,GAAaC,GAAkBrB,GAAkCsB,GAAkD;AACpK,WAAAJ,EAAS,cAAcxC,CAAO,GAC9BwC,EAAS,QAAQxC,GAAS0C,CAAI,GAC9BF,EAAS,aAAaxC,GAAS2C,CAAS,GACxCH,EAAS,WAAWxC,GAASsB,CAAa,GAC1CkB,EAAS,QAAQxC,GAAS4C,CAAU,GAC7BJ,EAAS,YAAYxC,CAAO;AAAA,EACrC;AAAA,EAEA,SAAoB;AAClB,WAAO,IAAI6C;AAAA,MACT,KAAK,KAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,QAAA;AAAA,MACL,KAAK,GAAI,cAAqC,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,WAAA,CAAY;AAAA,IAAA;AAAA,EAEzF;AAAA,EAGA,SAASpC,GAAqB;AAC5B,IAAAA,EAAG,OAAO,KAAK,KAAA,GACfA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,UAAU,KAAK,QAAA,GAClBA,EAAG,OAAO,KAAK,GAAI,cAAqC,KAAK,KAAK,KAAK,IAAI,GAAG,KAAK,WAAA,CAAY;AAAA,EACjG;AACA;AAEO,MAAMoC,GAAkD;AAAA,EAC/D,YACSH,IAAe,GACfC,IAAoB,GACpBlB,IAAkC,MAClCqB,IAAuB,IAC/B;AAJQ,SAAA,OAAAJ,GACA,KAAA,YAAAC,GACA,KAAA,UAAAlB,GACA,KAAA,OAAAqB;AAAA,EACP;AAAA,EAGF,KAAK9C,GAAiD;AACpD,UAAMyB,IAAW,KAAK,YAAY,OAAOzB,EAAQ,aAAa,KAAK,OAAQ,IAAI,GACzE8C,IAAON,EAAS,iBAAiBxC,GAASA,EAAQ,uBAAuB,KAAK,IAAI,CAAC;AAEzF,WAAOwC,EAAS;AAAA,MAAexC;AAAA,MAC7B,KAAK;AAAA,MACL,KAAK;AAAA,MACLyB;AAAA,MACAqB;AAAA,IAAA;AAAA,EAEJ;AACA;ACnIO,MAAMC,EAA2D;AAAA,EAAjE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOzD,GAAUC,GAAmC;AACpD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,iBAAiBA,GAA2BC,GAAsB;AACvE,YAAQA,KAAO,IAAIuD,EAAA,GAAW,OAAOxD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACtF;AAAA,EAEA,OAAO,6BAA6BA,GAA2BC,GAAsB;AACnF,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIuD,EAAA,GAAW,OAAOxD,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACtF;AAAA,EAIA,UAAUG,GAA8C;AACtD,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,SAASF,GAA6B;AACpC,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAIgD,EAAA,GAAY,OAAO,KAAK,GAAI,WAAW,KAAK,SAAS7C,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EACxG;AAAA,EAIA,OAAOC,GAAcF,GAA8C;AACjE,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,GAAGF,CAAgB,IAAI;AAAA,EAC7G;AAAA,EAEA,eAAsB;AACpB,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,aAAaK,GAA6B;AAC/C,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,aAAaA,GAA6BgD,GAAoC;AACnF,IAAAhD,EAAQ,eAAe,GAAGgD,GAAiB,CAAC;AAAA,EAC9C;AAAA,EAEA,OAAO,YAAYhD,GAA6BiD,GAAmC;AACjF,IAAAjD,EAAQ,eAAe,GAAGiD,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,UAAUjD,GAA6BO,GAAiC;AAC7E,IAAAP,EAAQ,eAAe,GAAGO,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,mBAAmBP,GAA6BG,GAA8C;AACnG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BI,GAAiB;AACrE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,WAAWJ,GAAgD;AAChE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GAC/BK,EAAQ,cAAcL,GAAQ,CAAC,GAC/BK,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAGA,SAAmB;AACjB,WAAO,IAAIuD;AAAA,MACT,KAAK,UAAA;AAAA,MACJ,KAAK,eAAe,OAAO,KAAK,SAAA,EAAY,WAAW;AAAA,MACxD,KAAK,GAAI,iBAAyB,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,aAAA,CAAc;AAAA,IAAA;AAAA,EAEjF;AAAA,EAGA,SAASzC,GAAoB;AAC3B,IAAAA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,WAAY,KAAK,SAAA,MAAe,OAAO,KAAK,SAAA,EAAY,OAAA,IAAW,MACtEA,EAAG,SAAS,KAAK,GAAI,iBAAyB,KAAK,OAAO,KAAK,IAAI,GAAG,KAAK,aAAA,CAAc;AAAA,EAC3F;AACA;AAEO,MAAMyC,GAAiD;AAAA,EAC9D,YACSC,IAAoC,MACpCC,IAA2B,MAC3BtC,IAAqB,IAC7B;AAHQ,SAAA,YAAAqC,GACA,KAAA,WAAAC,GACA,KAAA,SAAAtC;AAAA,EACP;AAAA,EAGF,KAAKd,GAAiD;AACpD,UAAMmD,IAAa,KAAK,cAAc,OAAOnD,EAAQ,aAAa,KAAK,SAAU,IAAI,GAC/EoD,IAAY,KAAK,aAAa,OAAO,KAAK,SAAU,KAAKpD,CAAO,IAAI,GACpEc,IAASiC,EAAQ,mBAAmB/C,GAASA,EAAQ,uBAAuB,KAAK,MAAM,CAAC;AAE9F,WAAA+C,EAAQ,aAAa/C,CAAO,GAC5B+C,EAAQ,aAAa/C,GAASmD,CAAS,GACvCJ,EAAQ,YAAY/C,GAASoD,CAAQ,GACrCL,EAAQ,UAAU/C,GAASc,CAAM,GAE1BiC,EAAQ,WAAW/C,CAAO;AAAA,EACnC;AACA;ACpHO,MAAMqD,EAAiE;AAAA,EAAvE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO/D,GAAUC,GAAsC;AACvD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,oBAAoBA,GAA2BC,GAA4B;AAChF,YAAQA,KAAO,IAAI6D,EAAA,GAAc,OAAO9D,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACzF;AAAA,EAEA,OAAO,gCAAgCA,GAA2BC,GAA4B;AAC5F,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI6D,EAAA,GAAc,OAAO9D,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACzF;AAAA,EAIA,WAAWG,GAA8C;AACvD,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,OAAO,gBAAgBM,GAA6B;AAClD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,cAAcA,GAA6BsD,GAAqC;AACrF,IAAAtD,EAAQ,eAAe,GAAGsD,GAAkB,CAAC;AAAA,EAC/C;AAAA,EAEA,OAAO,cAActD,GAAgD;AACnE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,iBAAiBK,GAA6BsD,GAAwD;AAC3G,WAAAD,EAAW,gBAAgBrD,CAAO,GAClCqD,EAAW,cAAcrD,GAASsD,CAAgB,GAC3CD,EAAW,cAAcrD,CAAO;AAAA,EACzC;AAAA,EAEA,SAAsB;AACpB,WAAO,IAAIuD;AAAA,MACT,KAAK,WAAA;AAAA,IAAW;AAAA,EAEpB;AAAA,EAGA,SAAS9C,GAAuB;AAC9B,IAAAA,EAAG,aAAa,KAAK,WAAA;AAAA,EACvB;AACA;AAEO,MAAM8C,GAAoD;AAAA,EACjE,YACSC,IAAqC,MAC7C;AADQ,SAAA,aAAAA;AAAA,EACP;AAAA,EAGF,KAAKxD,GAAiD;AACpD,UAAMwD,IAAc,KAAK,eAAe,OAAOxD,EAAQ,aAAa,KAAK,UAAW,IAAI;AAExF,WAAOqD,EAAW;AAAA,MAAiBrD;AAAA,MACjCwD;AAAA,IAAA;AAAA,EAEJ;AACA;ACvEO,IAAKC,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,aAAa,CAAA,IAAb,cAFUA,IAAAA,KAAA,CAAA,CAAA;AAKL,SAASC,GACdzC,GACAC,GACiB;AACjB,UAAOuC,EAAWxC,CAAI,GAAA;AAAA,IACpB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAc,aAAOC,EAAS,IAAImC,GAAY;AAAA,IACnD;AAAS,aAAO;AAAA,EAAA;AAEpB;ACXO,MAAMM,EAA+D;AAAA,EAArE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOrE,GAAUC,GAAqC;AACtD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mBAAmBA,GAA2BC,GAA0B;AAC7E,YAAQA,KAAO,IAAImE,EAAA,GAAa,OAAOpE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,OAAO,+BAA+BA,GAA2BC,GAA0B;AACzF,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAImE,EAAA,GAAa,OAAOpE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,iBAA4B;AAC1B,UAAMI,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAI8D,EAAW;AAAA,EACxE;AAAA,EAEA,WAAwCjE,GAAkB;AACxD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQH,GAAK,KAAK,SAASG,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,eAAeK,GAA6B;AACjD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6B4D,GAA2B;AAC/E,IAAA5D,EAAQ,aAAa,GAAG4D,GAAgBH,EAAW,IAAI;AAAA,EACzD;AAAA,EAEA,OAAO,cAAczD,GAA6B6D,GAAqC;AACrF,IAAA7D,EAAQ,eAAe,GAAG6D,GAAkB,CAAC;AAAA,EAC/C;AAAA,EAEA,OAAO,aAAa7D,GAAgD;AAClE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,gBAAgBK,GAA6B4D,GAA2BC,GAAwD;AACrI,WAAAF,EAAU,eAAe3D,CAAO,GAChC2D,EAAU,kBAAkB3D,GAAS4D,CAAc,GACnDD,EAAU,cAAc3D,GAAS6D,CAAgB,GAC1CF,EAAU,aAAa3D,CAAO;AAAA,EACvC;AAAA,EAEA,SAAqB;AACnB,WAAO,IAAI8D;AAAA,MACT,KAAK,eAAA;AAAA,OACJ,MAAM;AACL,cAAMtC,IAAOkC,GAAkB,KAAK,eAAA,GAAkB,KAAK,WAAW,KAAK,IAAI,CAAC;AAChF,eAAGlC,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASf,GAAsB;AAC7B,IAAAA,EAAG,iBAAiB,KAAK,eAAA,GACzBA,EAAG,cAAc,MAAM;AACnB,YAAMe,IAAOkC,GAAkB,KAAK,eAAA,GAAkB,KAAK,WAAW,KAAK,IAAI,CAAC;AAChF,aAAGlC,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAMsC,GAAmD;AAAA,EAChE,YACSF,IAA6BH,EAAW,MACxCM,IAA+B,MACvC;AAFQ,SAAA,iBAAAH,GACA,KAAA,aAAAG;AAAA,EACP;AAAA,EAGF,KAAK/D,GAAiD;AACpD,UAAM+D,IAAa/D,EAAQ,mBAAmB,KAAK,UAAU;AAE7D,WAAO2D,EAAU;AAAA,MAAgB3D;AAAA,MAC/B,KAAK;AAAA,MACL+D;AAAA,IAAA;AAAA,EAEJ;AACA;AC3FO,MAAMC,EAA+D;AAAA,EAArE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO1E,GAAUC,GAAqC;AACtD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mBAAmBA,GAA2BC,GAA0B;AAC7E,YAAQA,KAAO,IAAIwE,EAAA,GAAa,OAAOzE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,OAAO,+BAA+BA,GAA2BC,GAA0B;AACzF,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIwE,EAAA,GAAa,OAAOzE,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,SAASC,GAA6B;AACpC,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAIgD,EAAA,GAAY,OAAO,KAAK,GAAI,WAAW,KAAK,SAAS7C,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EACxG;AAAA,EAEA,OAAO,eAAeK,GAA6B;AACjD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,YAAYA,GAA6BiD,GAAmC;AACjF,IAAAjD,EAAQ,eAAe,GAAGiD,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,aAAajD,GAAgD;AAClE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,gBAAgBK,GAA6BiD,GAAsD;AACxG,WAAAe,EAAU,eAAehE,CAAO,GAChCgE,EAAU,YAAYhE,GAASiD,CAAc,GACtCe,EAAU,aAAahE,CAAO;AAAA,EACvC;AAAA,EAEA,SAAqB;AACnB,WAAO,IAAIiE;AAAA,MACR,KAAK,eAAe,OAAO,KAAK,SAAA,EAAY,WAAW;AAAA,IAAA;AAAA,EAE5D;AAAA,EAGA,SAASxD,GAAsB;AAC7B,IAAAA,EAAG,WAAY,KAAK,SAAA,MAAe,OAAO,KAAK,SAAA,EAAY,OAAA,IAAW;AAAA,EACxE;AACA;AAEO,MAAMwD,GAAmD;AAAA,EAChE,YACSb,IAA2B,MACnC;AADQ,SAAA,WAAAA;AAAA,EACP;AAAA,EAGF,KAAKpD,GAAiD;AACpD,UAAMoD,IAAY,KAAK,aAAa,OAAO,KAAK,SAAU,KAAKpD,CAAO,IAAI;AAE1E,WAAOgE,EAAU;AAAA,MAAgBhE;AAAA,MAC/BoD;AAAA,IAAA;AAAA,EAEJ;AACA;ACrEO,MAAMc,EAAqF;AAAA,EAA3F,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO5E,GAAUC,GAAgD;AACjE,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,8BAA8BA,GAA2BC,GAAgD;AAC9G,YAAQA,KAAO,IAAI0E,EAAA,GAAwB,OAAO3E,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnG;AAAA,EAEA,OAAO,0CAA0CA,GAA2BC,GAAgD;AAC1H,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI0E,EAAA,GAAwB,OAAO3E,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnG;AAAA,EAIA,QAAQK,GAAcF,GAA8C;AAClE,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,GAAGF,CAAgB,IAAI;AAAA,EAC7G;AAAA,EAEA,gBAAuB;AACrB,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAIA,SAASC,GAAcF,GAA8C;AACnE,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,GAAGF,CAAgB,IAAI;AAAA,EAC7G;AAAA,EAEA,iBAAwB;AACtB,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAIA,MAAMC,GAAcF,GAA8C;AAChE,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,GAAGF,CAAgB,IAAI;AAAA,EAC7G;AAAA,EAEA,cAAqB;AACnB,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAIA,SAASC,GAAcF,GAA8C;AACnE,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAIC,IAAQ,GAAGF,CAAgB,IAAI;AAAA,EAC7G;AAAA,EAEA,iBAAwB;AACtB,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,0BAA0BK,GAA6B;AAC5D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,WAAWA,GAA6BmE,GAAkC;AAC/E,IAAAnE,EAAQ,eAAe,GAAGmE,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,oBAAoBnE,GAA6BG,GAA8C;AACpG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,mBAAmBA,GAA6BI,GAAiB;AACtE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,YAAYJ,GAA6BoE,GAAmC;AACjF,IAAApE,EAAQ,eAAe,GAAGoE,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,qBAAqBpE,GAA6BG,GAA8C;AACrG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,oBAAoBA,GAA6BI,GAAiB;AACvE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,SAASJ,GAA6BqE,GAAgC;AAC3E,IAAArE,EAAQ,eAAe,GAAGqE,GAAa,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,kBAAkBrE,GAA6BG,GAA8C;AAClG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,iBAAiBA,GAA6BI,GAAiB;AACpE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,YAAYJ,GAA6BsE,GAAmC;AACjF,IAAAtE,EAAQ,eAAe,GAAGsE,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,qBAAqBtE,GAA6BG,GAA8C;AACrG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,oBAAoBA,GAA6BI,GAAiB;AACvE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,wBAAwBJ,GAAgD;AAE7E,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,2BAA2BA,GAA6BmE,GAAkCC,GAAmCC,GAAgCC,GAAsD;AACxN,WAAAJ,EAAqB,0BAA0BlE,CAAO,GACtDkE,EAAqB,WAAWlE,GAASmE,CAAa,GACtDD,EAAqB,YAAYlE,GAASoE,CAAc,GACxDF,EAAqB,SAASlE,GAASqE,CAAW,GAClDH,EAAqB,YAAYlE,GAASsE,CAAc,GACjDJ,EAAqB,wBAAwBlE,CAAO;AAAA,EAC7D;AAAA,EAEA,SAAgC;AAC9B,WAAO,IAAIuE;AAAA,MACT,KAAK,GAAI,iBAAyB,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,eAAe;AAAA,MAC/E,KAAK,GAAI,iBAAyB,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,gBAAgB;AAAA,MACjF,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,aAAa;AAAA,MAC3E,KAAK,GAAI,iBAAyB,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,eAAA,CAAgB;AAAA,IAAA;AAAA,EAErF;AAAA,EAGA,SAAS9D,GAAiC;AACxC,IAAAA,EAAG,UAAU,KAAK,GAAI,iBAAyB,KAAK,QAAQ,KAAK,IAAI,GAAG,KAAK,cAAA,CAAe,GAC5FA,EAAG,WAAW,KAAK,GAAI,iBAAyB,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,eAAA,CAAgB,GAC/FA,EAAG,QAAQ,KAAK,GAAI,iBAAyB,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa,GACtFA,EAAG,WAAW,KAAK,GAAI,iBAAyB,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,eAAA,CAAgB;AAAA,EACjG;AACA;AAEO,MAAM8D,GAA8D;AAAA,EAC3E,YACSC,IAAsB,CAAA,GACtBC,IAAuB,CAAA,GACvBC,IAAoB,CAAA,GACpBC,IAAuB,IAC/B;AAJQ,SAAA,UAAAH,GACA,KAAA,WAAAC,GACA,KAAA,QAAAC,GACA,KAAA,WAAAC;AAAA,EACP;AAAA,EAGF,KAAK3E,GAAiD;AACpD,UAAMwE,IAAUN,EAAqB,oBAAoBlE,GAASA,EAAQ,uBAAuB,KAAK,OAAO,CAAC,GACxGyE,IAAWP,EAAqB,qBAAqBlE,GAASA,EAAQ,uBAAuB,KAAK,QAAQ,CAAC,GAC3G0E,IAAQR,EAAqB,kBAAkBlE,GAASA,EAAQ,uBAAuB,KAAK,KAAK,CAAC,GAClG2E,IAAWT,EAAqB,qBAAqBlE,GAASA,EAAQ,uBAAuB,KAAK,QAAQ,CAAC;AAEjH,WAAOkE,EAAqB;AAAA,MAA2BlE;AAAA,MACrDwE;AAAA,MACAC;AAAA,MACAC;AAAA,MACAC;AAAA,IAAA;AAAA,EAEJ;AACA;AC5LO,MAAMC,EAAuF;AAAA,EAA7F,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOtF,GAAUC,GAAiD;AAClE,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,+BAA+BA,GAA2BC,GAAkD;AACjH,YAAQA,KAAO,IAAIoF,EAAA,GAAyB,OAAOrF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACpG;AAAA,EAEA,OAAO,2CAA2CA,GAA2BC,GAAkD;AAC7H,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIoF,EAAA,GAAyB,OAAOrF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACpG;AAAA,EAEA,OAAc;AACZ,UAAMI,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,eAAsB;AACpB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,gBAAuB;AACrB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,OAAO,2BAA2BK,GAA6B;AAC7D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,QAAQA,GAA6B0C,GAAa;AACvD,IAAA1C,EAAQ,cAAc,GAAG0C,GAAM,CAAC;AAAA,EAClC;AAAA,EAEA,OAAO,gBAAgB1C,GAA6B6E,GAAqB;AACvE,IAAA7E,EAAQ,cAAc,GAAG6E,GAAc,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,iBAAiB7E,GAA6B8E,GAAsB;AACzE,IAAA9E,EAAQ,cAAc,GAAG8E,GAAe,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,yBAAyB9E,GAAgD;AAE9E,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,4BAA4BA,GAA6B0C,GAAamC,GAAqBC,GAAyC;AACzI,WAAAF,EAAsB,2BAA2B5E,CAAO,GACxD4E,EAAsB,QAAQ5E,GAAS0C,CAAI,GAC3CkC,EAAsB,gBAAgB5E,GAAS6E,CAAY,GAC3DD,EAAsB,iBAAiB5E,GAAS8E,CAAa,GACtDF,EAAsB,yBAAyB5E,CAAO;AAAA,EAC/D;AAAA,EAEA,SAAiC;AAC/B,WAAO,IAAI+E;AAAA,MACT,KAAK,KAAA;AAAA,MACL,KAAK,aAAA;AAAA,MACL,KAAK,cAAA;AAAA,IAAc;AAAA,EAEvB;AAAA,EAGA,SAAStE,GAAkC;AACzC,IAAAA,EAAG,OAAO,KAAK,KAAA,GACfA,EAAG,eAAe,KAAK,aAAA,GACvBA,EAAG,gBAAgB,KAAK,cAAA;AAAA,EAC1B;AACA;AAEO,MAAMsE,GAA+D;AAAA,EAC5E,YACSrC,IAAe,GACfmC,IAAuB,GACvBC,IAAwB,GAChC;AAHQ,SAAA,OAAApC,GACA,KAAA,eAAAmC,GACA,KAAA,gBAAAC;AAAA,EACP;AAAA,EAGF,KAAK9E,GAAiD;AACpD,WAAO4E,EAAsB;AAAA,MAA4B5E;AAAA,MACvD,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,IAAA;AAAA,EAET;AACA;AC7FO,MAAMgF,EAA2E;AAAA,EAAjF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO1F,GAAUC,GAA2C;AAC5D,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,yBAAyBA,GAA2BC,GAAsC;AAC/F,YAAQA,KAAO,IAAIwF,EAAA,GAAmB,OAAOzF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC9F;AAAA,EAEA,OAAO,qCAAqCA,GAA2BC,GAAsC;AAC3G,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIwF,EAAA,GAAmB,OAAOzF,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC9F;AAAA,EAEA,OAAO,qBAAqBS,GAA6B;AACvD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,mBAAmBA,GAAgD;AAExE,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,sBAAsBA,GAAgD;AAC3E,WAAAgF,EAAgB,qBAAqBhF,CAAO,GACrCgF,EAAgB,mBAAmBhF,CAAO;AAAA,EACnD;AAAA,EAEA,SAA2B;AACzB,WAAO,IAAIiF,GAAA;AAAA,EACb;AAAA,EAGA,SAASxE,GAA4B;AAAA,EAAC;AACtC;AAEO,MAAMwE,GAAyD;AAAA,EACtE,cAAa;AAAA,EAAC;AAAA,EAGd,KAAKjF,GAAiD;AACpD,WAAOgF,EAAgB,sBAAsBhF,CAAO;AAAA,EACtD;AACA;AC/CO,MAAMkF,EAAmG;AAAA,EAAzG,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO5F,GAAUC,GAAuD;AACxE,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,qCAAqCA,GAA2BC,GAA8D;AACnI,YAAQA,KAAO,IAAI0F,EAAA,GAA+B,OAAO3F,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1G;AAAA,EAEA,OAAO,iDAAiDA,GAA2BC,GAA8D;AAC/I,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI0F,EAAA,GAA+B,OAAO3F,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1G;AAAA,EAEA,YAAmB;AACjB,UAAMI,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,OAAO,iCAAiCK,GAA6B;AACnE,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,aAAaA,GAA6BmF,GAAkB;AACjE,IAAAnF,EAAQ,cAAc,GAAGmF,GAAW,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,+BAA+BnF,GAAgD;AAEpF,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,kCAAkCA,GAA6BmF,GAAqC;AACzG,WAAAD,EAA4B,iCAAiClF,CAAO,GACpEkF,EAA4B,aAAalF,GAASmF,CAAS,GACpDD,EAA4B,+BAA+BlF,CAAO;AAAA,EAC3E;AAAA,EAEA,SAAuC;AACrC,WAAO,IAAIoF;AAAA,MACT,KAAK,UAAA;AAAA,IAAU;AAAA,EAEnB;AAAA,EAGA,SAAS3E,GAAwC;AAC/C,IAAAA,EAAG,YAAY,KAAK,UAAA;AAAA,EACtB;AACA;AAEO,MAAM2E,GAAqE;AAAA,EAClF,YACSD,IAAoB,GAC5B;AADQ,SAAA,YAAAA;AAAA,EACP;AAAA,EAGF,KAAKnF,GAAiD;AACpD,WAAOkF,EAA4B;AAAA,MAAkClF;AAAA,MACnE,KAAK;AAAA,IAAA;AAAA,EAET;AACA;ACjEO,MAAMqF,EAAiF;AAAA,EAAvF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO/F,GAAUC,GAA8C;AAC/D,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,4BAA4BA,GAA2BC,GAA4C;AACxG,YAAQA,KAAO,IAAI6F,EAAA,GAAsB,OAAO9F,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,OAAO,wCAAwCA,GAA2BC,GAA4C;AACpH,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI6F,EAAA,GAAsB,OAAO9F,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,OAAO,wBAAwBS,GAA6B;AAC1D,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,sBAAsBA,GAAgD;AAE3E,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,yBAAyBA,GAAgD;AAC9E,WAAAqF,EAAmB,wBAAwBrF,CAAO,GAC3CqF,EAAmB,sBAAsBrF,CAAO;AAAA,EACzD;AAAA,EAEA,SAA8B;AAC5B,WAAO,IAAIsF,GAAA;AAAA,EACb;AAAA,EAGA,SAAS7E,GAA+B;AAAA,EAAC;AACzC;AAEO,MAAM6E,GAA4D;AAAA,EACzE,cAAa;AAAA,EAAC;AAAA,EAGd,KAAKtF,GAAiD;AACpD,WAAOqF,EAAmB,yBAAyBrF,CAAO;AAAA,EAC5D;AACA;AC/CO,MAAMuF,EAA+F;AAAA,EAArG,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOjG,GAAUC,GAAqD;AACtE,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mCAAmCA,GAA2BC,GAA0D;AAC7H,YAAQA,KAAO,IAAI+F,EAAA,GAA6B,OAAOhG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxG;AAAA,EAEA,OAAO,+CAA+CA,GAA2BC,GAA0D;AACzI,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI+F,EAAA,GAA6B,OAAOhG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxG;AAAA,EAIA,eAAeG,GAA8C;AAC3D,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,OAAO,+BAA+BM,GAA6B;AACjE,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BwF,GAAyC;AAC7F,IAAAxF,EAAQ,eAAe,GAAGwF,GAAsB,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,6BAA6BxF,GAAgD;AAClF,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,gCAAgCK,GAA6BwF,GAA4D;AAC9H,WAAAD,EAA0B,+BAA+BvF,CAAO,GAChEuF,EAA0B,kBAAkBvF,GAASwF,CAAoB,GAClED,EAA0B,6BAA6BvF,CAAO;AAAA,EACvE;AAAA,EAEA,SAAqC;AACnC,WAAO,IAAIyF;AAAA,MACT,KAAK,eAAA;AAAA,IAAe;AAAA,EAExB;AAAA,EAGA,SAAShF,GAAsC;AAC7C,IAAAA,EAAG,iBAAiB,KAAK,eAAA;AAAA,EAC3B;AACA;AAEO,MAAMgF,GAAmE;AAAA,EAChF,YACSC,IAAyC,MACjD;AADQ,SAAA,iBAAAA;AAAA,EACP;AAAA,EAGF,KAAK1F,GAAiD;AACpD,UAAM0F,IAAkB,KAAK,mBAAmB,OAAO1F,EAAQ,aAAa,KAAK,cAAe,IAAI;AAEpG,WAAOuF,EAA0B;AAAA,MAAgCvF;AAAA,MAC/D0F;AAAA,IAAA;AAAA,EAEJ;AACA;AChEO,IAAKC,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,kBAAkB,CAAA,IAAlB,mBACAA,EAAAA,EAAA,uBAAuB,CAAA,IAAvB,wBACAA,EAAAA,EAAA,oBAAoB,CAAA,IAApB,qBACAA,EAAAA,EAAA,wBAAwB,CAAA,IAAxB,yBACAA,EAAAA,EAAA,qBAAqB,CAAA,IAArB,sBACAA,EAAAA,EAAA,4BAA4B,CAAA,IAA5B,6BACAA,EAAAA,EAAA,8BAA8B,CAAA,IAA9B,+BACAA,EAAAA,EAAA,uBAAuB,CAAA,IAAvB,wBATUA,IAAAA,KAAA,CAAA,CAAA;AAYL,SAASC,GACd3E,GACAC,GACiL;AACjL,UAAOyE,EAAW1E,CAAI,GAAA;AAAA,IACpB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAmB,aAAOC,EAAS,IAAI8D,GAAiB;AAAA,IAC7D,KAAK;AAAwB,aAAO9D,EAAS,IAAIoB,GAAsB;AAAA,IACvE,KAAK;AAAqB,aAAOpB,EAAS,IAAIY,GAAmB;AAAA,IACjE,KAAK;AAAyB,aAAOZ,EAAS,IAAI0D,GAAuB;AAAA,IACzE,KAAK;AAAsB,aAAO1D,EAAS,IAAImE,GAAoB;AAAA,IACnE,KAAK;AAA6B,aAAOnE,EAAS,IAAIqE,GAA2B;AAAA,IACjF,KAAK;AAA+B,aAAOrE,EAAS,IAAIgE,GAA6B;AAAA,IACrF,KAAK;AAAwB,aAAOhE,EAAS,IAAIgD,GAAsB;AAAA,IACvE;AAAS,aAAO;AAAA,EAAA;AAEpB;ACzBO,MAAM2B,EAAqD;AAAA,EAA3D,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOvG,GAAUC,GAAgC;AACjD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,cAAcA,GAA2BC,GAAgB;AAC9D,YAAQA,KAAO,IAAIqG,EAAA,GAAQ,OAAOtG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnF;AAAA,EAEA,OAAO,0BAA0BA,GAA2BC,GAAgB;AAC1E,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIqG,EAAA,GAAQ,OAAOtG,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACnF;AAAA,EAEA,aAAwB;AACtB,UAAMI,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAIgG,EAAW;AAAA,EACxE;AAAA,EAEA,OAAoCnG,GAAkB;AACpD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQH,GAAK,KAAK,SAASG,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,UAAUK,GAA6B;AAC5C,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,cAAcA,GAA6B8F,GAAuB;AACvE,IAAA9F,EAAQ,aAAa,GAAG8F,GAAYH,EAAW,IAAI;AAAA,EACrD;AAAA,EAEA,OAAO,UAAU3F,GAA6B+F,GAAiC;AAC7E,IAAA/F,EAAQ,eAAe,GAAG+F,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,QAAQ/F,GAAgD;AAC7D,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,WAAWK,GAA6B8F,GAAuBC,GAAoD;AACxH,WAAAF,EAAK,UAAU7F,CAAO,GACtB6F,EAAK,cAAc7F,GAAS8F,CAAU,GACtCD,EAAK,UAAU7F,GAAS+F,CAAY,GAC7BF,EAAK,QAAQ7F,CAAO;AAAA,EAC7B;AAAA,EAEA,SAAgB;AACd,WAAO,IAAIgG;AAAA,MACT,KAAK,WAAA;AAAA,OACJ,MAAM;AACL,cAAMxE,IAAOoE,GAAkB,KAAK,WAAA,GAAc,KAAK,OAAO,KAAK,IAAI,CAAC;AACxE,eAAGpE,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASf,GAAiB;AACxB,IAAAA,EAAG,aAAa,KAAK,WAAA,GACrBA,EAAG,UAAU,MAAM;AACf,YAAMe,IAAOoE,GAAkB,KAAK,WAAA,GAAc,KAAK,OAAO,KAAK,IAAI,CAAC;AACxE,aAAGpE,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAMwE,GAA8C;AAAA,EAC3D,YACSF,IAAyBH,EAAW,MACpCM,IAAkM,MAC1M;AAFQ,SAAA,aAAAH,GACA,KAAA,SAAAG;AAAA,EACP;AAAA,EAGF,KAAKjG,GAAiD;AACpD,UAAMiG,IAASjG,EAAQ,mBAAmB,KAAK,MAAM;AAErD,WAAO6F,EAAK;AAAA,MAAW7F;AAAA,MACrB,KAAK;AAAA,MACLiG;AAAA,IAAA;AAAA,EAEJ;AACA;AClGO,MAAMC,EAAyE;AAAA,EAA/E,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO5G,GAAUC,GAA0C;AAC3D,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,wBAAwBA,GAA2BC,GAAoC;AAC5F,YAAQA,KAAO,IAAI0G,EAAA,GAAkB,OAAO3G,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC7F;AAAA,EAEA,OAAO,oCAAoCA,GAA2BC,GAAoC;AACxG,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI0G,EAAA,GAAkB,OAAO3G,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC7F;AAAA,EAEA,MAAMK,GAAeJ,GAAqB;AACxC,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAIqG,EAAA,GAAQ,OAAO,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASlG,CAAM,IAAIC,IAAQ,CAAC,GAAG,KAAK,EAAG,IAAI;AAAA,EACnI;AAAA,EAEA,cAAqB;AACnB,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,oBAAoBK,GAA6B;AACtD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,SAASA,GAA6BmG,GAAgC;AAC3E,IAAAnG,EAAQ,eAAe,GAAGmG,GAAa,CAAC;AAAA,EAC1C;AAAA,EAEA,OAAO,kBAAkBnG,GAA6BG,GAA8C;AAClG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,iBAAiBA,GAA6BI,GAAiB;AACpE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,kBAAkBJ,GAAgD;AACvE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,qBAAqBK,GAA6BmG,GAAmD;AAC1G,WAAAD,EAAe,oBAAoBlG,CAAO,GAC1CkG,EAAe,SAASlG,GAASmG,CAAW,GACrCD,EAAe,kBAAkBlG,CAAO;AAAA,EACjD;AAAA,EAEA,SAA0B;AACxB,WAAO,IAAIoG;AAAA,MACT,KAAK,GAAI,cAA2B,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,IAAA;AAAA,EAEjF;AAAA,EAGA,SAAS3F,GAA2B;AAClC,IAAAA,EAAG,QAAQ,KAAK,GAAI,cAA2B,KAAK,MAAM,KAAK,IAAI,GAAG,KAAK,YAAA,CAAa;AAAA,EAC1F;AACA;AAEO,MAAM2F,GAAwD;AAAA,EACrE,YACSC,IAAmB,IAC3B;AADQ,SAAA,QAAAA;AAAA,EACP;AAAA,EAGF,KAAKrG,GAAiD;AACpD,UAAMqG,IAAQH,EAAe,kBAAkBlG,GAASA,EAAQ,uBAAuB,KAAK,KAAK,CAAC;AAElG,WAAOkG,EAAe;AAAA,MAAqBlG;AAAA,MACzCqG;AAAA,IAAA;AAAA,EAEJ;AACA;ACrFO,MAAMC,EAAiF;AAAA,EAAvF,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOhH,GAAUC,GAA8C;AAC/D,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,4BAA4BA,GAA2BC,GAA4C;AACxG,YAAQA,KAAO,IAAI8G,EAAA,GAAsB,OAAO/G,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,OAAO,wCAAwCA,GAA2BC,GAA4C;AACpH,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI8G,EAAA,GAAsB,OAAO/G,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACjG;AAAA,EAEA,SAASC,GAAyC;AAChD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAI0G,EAAA,GAAkB,OAAO,KAAK,GAAI,WAAW,KAAK,SAASvG,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EAC9G;AAAA,EAEA,cAAsB;AACpB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,aAAqB;AACnB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,YAAmB;AACjB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI,OAAO,GAAG;AAAA,EACxE;AAAA,EAEA,YAAmB;AACjB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,YAAoB;AAClB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,QAAgB;AACd,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,gBAAuB;AACrB,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,WAAW,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAEA,SAAiB;AACf,UAAMA,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,CAAC,CAAC,KAAK,GAAI,SAAS,KAAK,SAASA,CAAM,IAAI;AAAA,EAC9D;AAAA,EAIA,WAAWD,GAA8C;AACvD,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,EAAE;AAChD,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,OAAO,wBAAwBM,GAA6B;AAC1D,IAAAA,EAAQ,YAAY,EAAE;AAAA,EACxB;AAAA,EAEA,OAAO,YAAYA,GAA6BuG,GAAmC;AACjF,IAAAvG,EAAQ,eAAe,GAAGuG,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,eAAevG,GAA6BwG,GAAqB;AACtE,IAAAxG,EAAQ,aAAa,GAAG,CAACwG,GAAa,CAAM;AAAA,EAC9C;AAAA,EAEA,OAAO,cAAcxG,GAA6ByG,GAAoB;AACpE,IAAAzG,EAAQ,aAAa,GAAG,CAACyG,GAAY,CAAK;AAAA,EAC5C;AAAA,EAEA,OAAO,aAAazG,GAA6B0G,GAAkB;AACjE,IAAA1G,EAAQ,cAAc,GAAG0G,GAAW,OAAO,GAAG,CAAC;AAAA,EACjD;AAAA,EAEA,OAAO,aAAa1G,GAA6B2G,GAAkB;AACjE,IAAA3G,EAAQ,cAAc,GAAG2G,GAAW,CAAC;AAAA,EACvC;AAAA,EAEA,OAAO,aAAa3G,GAA6B4G,GAAmB;AAClE,IAAA5G,EAAQ,aAAa,GAAG,CAAC4G,GAAW,CAAM;AAAA,EAC5C;AAAA,EAEA,OAAO,SAAS5G,GAA6B6G,GAAe;AAC1D,IAAA7G,EAAQ,aAAa,GAAG,CAAC6G,GAAO,CAAM;AAAA,EACxC;AAAA,EAEA,OAAO,iBAAiB7G,GAA6B8G,GAAsB;AACzE,IAAA9G,EAAQ,cAAc,GAAG8G,GAAe,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,UAAU9G,GAA6B+G,GAAgB;AAC5D,IAAA/G,EAAQ,aAAa,GAAG,CAAC+G,GAAQ,CAAM;AAAA,EACzC;AAAA,EAEA,OAAO,cAAc/G,GAA6BgH,GAAqC;AACrF,IAAAhH,EAAQ,eAAe,GAAGgH,GAAkB,CAAC;AAAA,EAC/C;AAAA,EAEA,OAAO,sBAAsBhH,GAAgD;AAE3E,WADeA,EAAQ,UAAA;AAAA,EAEzB;AAAA,EAEA,OAAO,yBAAyBA,GAA6BuG,GAAmCC,GAAqBC,GAAoBC,GAAkBC,GAAkBC,GAAmBC,GAAeC,GAAsBC,GAAgBC,GAAwD;AAC3S,WAAAV,EAAmB,wBAAwBtG,CAAO,GAClDsG,EAAmB,YAAYtG,GAASuG,CAAc,GACtDD,EAAmB,eAAetG,GAASwG,CAAW,GACtDF,EAAmB,cAActG,GAASyG,CAAU,GACpDH,EAAmB,aAAatG,GAAS0G,CAAS,GAClDJ,EAAmB,aAAatG,GAAS2G,CAAS,GAClDL,EAAmB,aAAatG,GAAS4G,CAAS,GAClDN,EAAmB,SAAStG,GAAS6G,CAAK,GAC1CP,EAAmB,iBAAiBtG,GAAS8G,CAAa,GAC1DR,EAAmB,UAAUtG,GAAS+G,CAAM,GAC5CT,EAAmB,cAActG,GAASgH,CAAgB,GACnDV,EAAmB,sBAAsBtG,CAAO;AAAA,EACzD;AAAA,EAEA,SAA8B;AAC5B,WAAO,IAAIiH;AAAA,MACR,KAAK,eAAe,OAAO,KAAK,SAAA,EAAY,WAAW;AAAA,MACxD,KAAK,YAAA;AAAA,MACL,KAAK,WAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,UAAA;AAAA,MACL,KAAK,MAAA;AAAA,MACL,KAAK,cAAA;AAAA,MACL,KAAK,OAAA;AAAA,MACL,KAAK,WAAA;AAAA,IAAW;AAAA,EAEpB;AAAA,EAGA,SAASxG,GAA+B;AACtC,IAAAA,EAAG,WAAY,KAAK,SAAA,MAAe,OAAO,KAAK,SAAA,EAAY,OAAA,IAAW,MACtEA,EAAG,cAAc,KAAK,YAAA,GACtBA,EAAG,aAAa,KAAK,WAAA,GACrBA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,YAAY,KAAK,UAAA,GACpBA,EAAG,QAAQ,KAAK,MAAA,GAChBA,EAAG,gBAAgB,KAAK,cAAA,GACxBA,EAAG,SAAS,KAAK,OAAA,GACjBA,EAAG,aAAa,KAAK,WAAA;AAAA,EACvB;AACA;AAEO,MAAMwG,GAA4D;AAAA,EACzE,YACSC,IAAiC,MACjCV,IAAuB,IACvBC,IAAsB,IACtBC,IAAoB,OAAO,GAAG,GAC9BC,IAAoB,GACpBC,IAAqB,IACrBC,IAAiB,IACjBC,IAAwB,GACxBC,IAAkB,IAClBI,IAAqC,MAC7C;AAVQ,SAAA,WAAAD,GACA,KAAA,cAAAV,GACA,KAAA,aAAAC,GACA,KAAA,YAAAC,GACA,KAAA,YAAAC,GACA,KAAA,YAAAC,GACA,KAAA,QAAAC,GACA,KAAA,gBAAAC,GACA,KAAA,SAAAC,GACA,KAAA,aAAAI;AAAA,EACP;AAAA,EAGF,KAAKnH,GAAiD;AACpD,UAAMkH,IAAY,KAAK,aAAa,OAAO,KAAK,SAAU,KAAKlH,CAAO,IAAI,GACpEmH,IAAc,KAAK,eAAe,OAAOnH,EAAQ,aAAa,KAAK,UAAW,IAAI;AAExF,WAAOsG,EAAmB;AAAA,MAAyBtG;AAAA,MACjDkH;AAAA,MACA,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACLC;AAAA,IAAA;AAAA,EAEJ;AACA;ACnMO,MAAMC,EAA+D;AAAA,EAArE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAO9H,GAAUC,GAAqC;AACtD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,mBAAmBA,GAA2BC,GAA0B;AAC7E,YAAQA,KAAO,IAAI4H,EAAA,GAAa,OAAO7H,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAEA,OAAO,+BAA+BA,GAA2BC,GAA0B;AACzF,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI4H,EAAA,GAAa,OAAO7H,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EACxF;AAAA,EAIA,eAAeG,GAA8C;AAC3D,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,SAASE,GAAeJ,GAA2B;AACjD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAIK,GAAA,GAAW,OAAO,KAAK,GAAI,WAAW,KAAK,GAAI,SAAS,KAAK,SAASF,CAAM,IAAIC,IAAQ,CAAC,GAAG,KAAK,EAAG,IAAI;AAAA,EACtI;AAAA,EAEA,iBAAwB;AACtB,UAAMD,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,aAAa,KAAK,SAASA,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAOH,GAAiD;AACtD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,KAAUH,KAAO,IAAI8G,EAAA,GAAsB,OAAO,KAAK,GAAI,WAAW,KAAK,SAAS3G,CAAM,GAAG,KAAK,EAAG,IAAI;AAAA,EAClH;AAAA,EAEA,OAAO,eAAeK,GAA6B;AACjD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BwF,GAAyC;AAC7F,IAAAxF,EAAQ,eAAe,GAAGwF,GAAsB,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,YAAYxF,GAA6BE,GAAmC;AACjF,IAAAF,EAAQ,eAAe,GAAGE,GAAgB,CAAC;AAAA,EAC7C;AAAA,EAEA,OAAO,qBAAqBF,GAA6BG,GAA8C;AACrG,IAAAH,EAAQ,YAAY,GAAGG,EAAK,QAAQ,CAAC;AACrC,aAASb,IAAIa,EAAK,SAAS,GAAGb,KAAK,GAAGA;AACpC,MAAAU,EAAQ,UAAUG,EAAKb,CAAC,CAAE;AAE5B,WAAOU,EAAQ,UAAA;AAAA,EACjB;AAAA,EAEA,OAAO,oBAAoBA,GAA6BI,GAAiB;AACvE,IAAAJ,EAAQ,YAAY,GAAGI,GAAU,CAAC;AAAA,EACpC;AAAA,EAEA,OAAO,UAAUJ,GAA6B+F,GAAiC;AAC7E,IAAA/F,EAAQ,eAAe,GAAG+F,GAAc,CAAC;AAAA,EAC3C;AAAA,EAEA,OAAO,aAAa/F,GAAgD;AAClE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GAC/BK,EAAQ,cAAcL,GAAQ,CAAC,GAC/BK,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAGA,SAAqB;AACnB,WAAO,IAAI0H;AAAA,MACT,KAAK,eAAA;AAAA,MACL,KAAK,GAAI,cAAiC,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,gBAAgB;AAAA,MACxF,KAAK,aAAa,OAAO,KAAK,OAAA,EAAU,WAAW;AAAA,IAAA;AAAA,EAExD;AAAA,EAGA,SAAS5G,GAAsB;AAC7B,IAAAA,EAAG,iBAAiB,KAAK,eAAA,GACzBA,EAAG,WAAW,KAAK,GAAI,cAAiC,KAAK,SAAS,KAAK,IAAI,GAAG,KAAK,eAAA,CAAgB,GACvGA,EAAG,SAAU,KAAK,OAAA,MAAa,OAAO,KAAK,OAAA,EAAU,OAAA,IAAW;AAAA,EAClE;AACA;AAEO,MAAM4G,GAAmD;AAAA,EAChE,YACS3B,IAAyC,MACzC/E,IAAyB,CAAA,GACzBsF,IAAmC,MAC3C;AAHQ,SAAA,iBAAAP,GACA,KAAA,WAAA/E,GACA,KAAA,SAAAsF;AAAA,EACP;AAAA,EAGF,KAAKjG,GAAiD;AACpD,UAAM0F,IAAkB,KAAK,mBAAmB,OAAO1F,EAAQ,aAAa,KAAK,cAAe,IAAI,GAC9FW,IAAWyG,EAAU,qBAAqBpH,GAASA,EAAQ,uBAAuB,KAAK,QAAQ,CAAC,GAChGiG,IAAU,KAAK,WAAW,OAAO,KAAK,OAAQ,KAAKjG,CAAO,IAAI;AAEpE,WAAAoH,EAAU,eAAepH,CAAO,GAChCoH,EAAU,kBAAkBpH,GAAS0F,CAAc,GACnD0B,EAAU,YAAYpH,GAASW,CAAQ,GACvCyG,EAAU,UAAUpH,GAASiG,CAAM,GAE5BmB,EAAU,aAAapH,CAAO;AAAA,EACvC;AACA;ACnHO,MAAMsH,EAAmE;AAAA,EAAzE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOhI,GAAUC,GAAuC;AACxD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,qBAAqBA,GAA2BC,GAA8B;AACnF,YAAQA,KAAO,IAAI8H,EAAA,GAAe,OAAO/H,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAEA,OAAO,iCAAiCA,GAA2BC,GAA8B;AAC/F,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAI8H,EAAA,GAAe,OAAO/H,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAIA,eAAeG,GAA8C;AAC3D,UAAMC,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,SAAS,KAAK,SAASA,GAAQD,CAAgB,IAAI;AAAA,EAC9E;AAAA,EAEA,OAAO,iBAAiBM,GAA6B;AACnD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,kBAAkBA,GAA6BwF,GAAyC;AAC7F,IAAAxF,EAAQ,eAAe,GAAGwF,GAAsB,CAAC;AAAA,EACnD;AAAA,EAEA,OAAO,eAAexF,GAAgD;AACpE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,kBAAkBK,GAA6BwF,GAA4D;AAChH,WAAA8B,EAAY,iBAAiBtH,CAAO,GACpCsH,EAAY,kBAAkBtH,GAASwF,CAAoB,GACpD8B,EAAY,eAAetH,CAAO;AAAA,EAC3C;AAAA,EAEA,SAAuB;AACrB,WAAO,IAAIuH;AAAA,MACT,KAAK,eAAA;AAAA,IAAe;AAAA,EAExB;AAAA,EAGA,SAAS9G,GAAwB;AAC/B,IAAAA,EAAG,iBAAiB,KAAK,eAAA;AAAA,EAC3B;AACA;AAEO,MAAM8G,GAAqD;AAAA,EAClE,YACS7B,IAAyC,MACjD;AADQ,SAAA,iBAAAA;AAAA,EACP;AAAA,EAGF,KAAK1F,GAAiD;AACpD,UAAM0F,IAAkB,KAAK,mBAAmB,OAAO1F,EAAQ,aAAa,KAAK,cAAe,IAAI;AAEpG,WAAOsH,EAAY;AAAA,MAAkBtH;AAAA,MACnC0F;AAAA,IAAA;AAAA,EAEJ;AACA;AClEO,IAAK8B,sBAAAA,OACVA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,YAAY,CAAA,IAAZ,aACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,UAAU,CAAA,IAAV,WACAA,EAAAA,EAAA,YAAY,CAAA,IAAZ,aACAA,EAAAA,EAAA,YAAY,CAAA,IAAZ,aACAA,EAAAA,EAAA,eAAe,CAAA,IAAf,gBAPUA,IAAAA,KAAA,CAAA,CAAA;AAUL,SAASC,GACdxG,GACAC,GACqE;AACrE,UAAOsG,EAAYvG,CAAI,GAAA;AAAA,IACrB,KAAK;AAAQ,aAAO;AAAA,IACpB,KAAK;AAAa,aAAOC,EAAS,IAAIkG,GAAW;AAAA,IACjD,KAAK;AAAe,aAAOlG,EAAS,IAAIoG,GAAa;AAAA,IACrD,KAAK;AAAW,aAAOpG,EAAS,IAAI6B,GAAS;AAAA,IAC7C,KAAK;AAAa,aAAO7B,EAAS,IAAI8C,GAAW;AAAA,IACjD,KAAK;AAAa,aAAO9C,EAAS,IAAIyC,GAAW;AAAA,IACjD,KAAK;AAAgB,aAAOzC,EAAS,IAAIkB,GAAc;AAAA,IACvD;AAAS,aAAO;AAAA,EAAA;AAEpB;ACrBO,MAAMsF,EAAmE;AAAA,EAAzE,cAAA;AACL,SAAA,KAAkC,MAClC,KAAA,SAAS;AAAA,EAAA;AAAA,EACT,OAAOpI,GAAUC,GAAuC;AACxD,gBAAK,SAASD,GACd,KAAK,KAAKC,GACH;AAAA,EACT;AAAA,EAEA,OAAO,qBAAqBA,GAA2BC,GAA8B;AACnF,YAAQA,KAAO,IAAIkI,EAAA,GAAe,OAAOnI,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAEA,OAAO,iCAAiCA,GAA2BC,GAA8B;AAC/F,WAAAD,EAAG,YAAYA,EAAG,SAAA,IAAaE,EAAY,kBAAkB,IACrDD,KAAO,IAAIkI,EAAA,GAAe,OAAOnI,EAAG,UAAUA,EAAG,SAAA,CAAU,IAAIA,EAAG,SAAA,GAAYA,CAAE;AAAA,EAC1F;AAAA,EAEA,cAA0B;AACxB,UAAMI,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,UAAU,KAAK,SAASA,CAAM,IAAI6H,EAAY;AAAA,EACzE;AAAA,EAEA,QAAqChI,GAAkB;AACrD,UAAMG,IAAS,KAAK,GAAI,SAAS,KAAK,QAAQ,CAAC;AAC/C,WAAOA,IAAS,KAAK,GAAI,QAAQH,GAAK,KAAK,SAASG,CAAM,IAAI;AAAA,EAChE;AAAA,EAEA,OAAO,iBAAiBK,GAA6B;AACnD,IAAAA,EAAQ,YAAY,CAAC;AAAA,EACvB;AAAA,EAEA,OAAO,eAAeA,GAA6BqB,GAAyB;AAC1E,IAAArB,EAAQ,aAAa,GAAGqB,GAAamG,EAAY,IAAI;AAAA,EACvD;AAAA,EAEA,OAAO,WAAWxH,GAA6BsB,GAAkC;AAC/E,IAAAtB,EAAQ,eAAe,GAAGsB,GAAe,CAAC;AAAA,EAC5C;AAAA,EAEA,OAAO,eAAetB,GAAgD;AACpE,UAAML,IAASK,EAAQ,UAAA;AACvB,WAAAA,EAAQ,cAAcL,GAAQ,CAAC,GACxBA;AAAA,EACT;AAAA,EAEA,OAAO,kBAAkBK,GAA6BqB,GAAyBC,GAAqD;AAClI,WAAAoG,EAAY,iBAAiB1H,CAAO,GACpC0H,EAAY,eAAe1H,GAASqB,CAAW,GAC/CqG,EAAY,WAAW1H,GAASsB,CAAa,GACtCoG,EAAY,eAAe1H,CAAO;AAAA,EAC3C;AAAA,EAEA,SAAuB;AACrB,WAAO,IAAI2H;AAAA,MACT,KAAK,YAAA;AAAA,OACJ,MAAM;AACL,cAAMnG,IAAOiG,GAAmB,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC3E,eAAGjG,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,MAChB,GAAA;AAAA,IAAG;AAAA,EAEL;AAAA,EAGA,SAASf,GAAwB;AAC/B,IAAAA,EAAG,cAAc,KAAK,YAAA,GACtBA,EAAG,WAAW,MAAM;AAChB,YAAMe,IAAOiG,GAAmB,KAAK,YAAA,GAAe,KAAK,QAAQ,KAAK,IAAI,CAAC;AAC3E,aAAGjG,MAAS,OAAe,OACpBA,EAAK,OAAA;AAAA,IAChB,GAAA;AAAA,EACF;AACA;AAEO,MAAMmG,EAAqD;AAAA,EAClE,YACStG,IAA2BmG,EAAY,MACvC/F,IAAqF,MAC7F;AAFQ,SAAA,cAAAJ,GACA,KAAA,UAAAI;AAAA,EACP;AAAA,EAGF,KAAKzB,GAAiD;AACpD,UAAMyB,IAAUzB,EAAQ,mBAAmB,KAAK,OAAO;AAEvD,WAAO0H,EAAY;AAAA,MAAkB1H;AAAA,MACnC,KAAK;AAAA,MACLyB;AAAA,IAAA;AAAA,EAEJ;AACA;ACrGO,IAAKmG,uBAAAA,OACVA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,eAAe,EAAA,IAAf,gBACAA,EAAAA,EAAA,eAAe,EAAA,IAAf,gBACAA,EAAAA,EAAA,eAAe,EAAA,IAAf,gBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,iBAAiB,IAAA,IAAjB,kBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,kBAAkB,KAAA,IAAlB,mBACAA,EAAAA,EAAA,aAAa,IAAA,IAAb,cACAA,EAAAA,EAAA,mBAAmB,IAAA,IAAnB,oBAvBUA,IAAAA,MAAA,CAAA,CAAA,GCAAC,uBAAAA,OACVA,EAAAA,EAAA,cAAc,CAAA,IAAd,eACAA,EAAAA,EAAA,eAAe,CAAA,IAAf,gBACAA,EAAAA,EAAA,QAAQ,CAAA,IAAR,SACAA,EAAAA,EAAA,mBAAmB,CAAA,IAAnB,oBACAA,EAAAA,EAAA,OAAO,CAAA,IAAP,QACAA,EAAAA,EAAA,aAAa,CAAA,IAAb,cANUA,IAAAA,MAAA,CAAA,CAAA;ACOL,MAAMC,EAAkB;AAAA;AAAA;AAAA;AAAA;AAAA,EAK9B,OAAO,iBAAiBC,GAA2B;AAGlD,IAFa,IAAI,SAASA,CAAM,EAE3B,UAAU,GAAG,GAAG,EAAI;AAAA,EAC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAaA,GAAqB5H,GAA2B;AACnE,UAAM6H,IAAO,IAAI,SAASD,CAAM,GAC1BE,IAAY,IAAI,WAAWF,CAAM,GAGjCG,IAAuBF,EAAK,UAAU,GAAG,EAAI,GAG7CG,IAAgB,IAAIhI,EAAK;AAC/B,QAAI+H,IAAuBC,IAAgBJ,EAAO;AACjD,qBAAQ,KAAK,mCAAmC,GACzC;AAIR,IAAAC,EAAK,UAAUE,GAAsB/H,EAAK,QAAQ,EAAI,GAGtD8H,EAAU,IAAI9H,GAAM+H,IAAuB,CAAC;AAG5C,UAAME,IAAmBF,IAAuBC;AAChD,WAAAH,EAAK,UAAU,GAAGI,GAAkB,EAAI,GAEjC;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,OAAO,iBAAiBL,GAAqB5H,GAAkBkI,GAA4B;AAC1F,UAAML,IAAO,IAAI,SAASD,CAAM,GAC1BE,IAAY,IAAI,WAAWF,CAAM,GAGjCG,IAAuBF,EAAK,UAAU,GAAG,EAAI;AAGnD,QAAIE,IAAuB/H,EAAK,SAAS4H,EAAO;AAC/C,qBAAQ;AAAA,QACP,gCAAgCM,IAAW,2BAA2BA,CAAQ,MAAM,OAAO,kBAC3EH,CAAoB,IAAIH,EAAO,UAAU,qBACjD5H,EAAK,MAAM;AAAA,MAAA,GAGb;AAIR,IAAA8H,EAAU,IAAI9H,GAAM+H,CAAoB;AAGxC,UAAME,IAAmBF,IAAuB/H,EAAK;AACrD,WAAA6H,EAAK,UAAU,GAAGI,GAAkB,EAAI,GAEjC;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,aAAaL,GAAqBO,IAA2B,GAAGD,GAAmB;AACzF,UAAML,IAAO,IAAI,SAASD,CAAM,GAC1BE,IAAY,IAAI,WAAWF,CAAM,GAEjCG,IAAuBF,EAAK,UAAU,GAAG,EAAI,GAC7CO,IAAkB;AACxB,QAAIC,IAAaF,IAAmBC,IAAkBA,IAAkBD;AACxE,QAAIJ,KAAwBM;AAC3B,aAAO,EAAE,UAAU,CAAA,GAAI,iBAAiBA,GAAY,YAAY,GAAA;AAGjE,UAAMC,IAAc,KACdC,IAA4B,IAAI,MAAMD,CAAW;AACvD,QAAIE,IAAW;AAEf,QAAI;AACH,aAAOH,IAAaN,KAEf,EAAAS,KAAYF,KAGZD,IAAa,IAAIN,MALoB;AAOzC,cAAMU,IAAYJ,GACZK,IAAcb,EAAK,UAAUY,GAAW,EAAI,GAC5CE,IAAeF,IAAY,GAC3BG,IAAUD,IAAeD;AAG/B,YAAIE,IAAUb,EAAsB;AAGpC,cAAM3I,IAAK,IAAIyJ,GAAWf,EAAU,SAASa,GAAcC,CAAO,CAAC,GAC7DE,IAAU9H,GAAc,uBAAuB5B,CAAE;AAEvD,QAAAmJ,EAASC,GAAU,IAAIM,GAGvBT,IAAaO;AAAA,MACd;AAEA,aAAAL,EAAS,SAASC,GACX;AAAA,QACN,UAAAD;AAAA,QACA,iBAAiBF;AAAA,QACjB,YAAYG,IAAW;AAAA,MAAA;AAAA,IAEzB,SAASO,GAAO;AACf,qBAAQ,MAAM,sDAAsDA,CAAK,GACzER,EAAS,SAASC,GACX;AAAA,QACN,UAAAD;AAAA,QACA,iBAAiBJ,IAAmBC,IAAkBA,IAAkBD;AAAA,QACxE,YAAY;AAAA,MAAA;AAAA,IAEd;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,gBAAgBP,GAGrB;AACD,UAAMoB,IAAS,KAAK,aAAapB,GAAQ,CAAC;AAC1C,WAAO;AAAA,MACN,UAAUoB,EAAO;AAAA,MACjB,eAAeA,EAAO,SAAS;AAAA,IAAA;AAAA,EAEjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAO,wBAAwBpB,GAA6B;AAE3D,WADa,IAAI,SAASA,CAAM,EACpB,UAAU,GAAG,EAAI;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,WAAWA,GAAqBO,GAAmC;AACzE,UAAMJ,IAAuB,KAAK,wBAAwBH,CAAM,GAE1DqB,IAAyB,KAAK,IAAId,GADhB,CACiD;AACzE,WAAOJ,IAAuBkB;AAAA,EAC/B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,oBAAoBC,IAA0B,KAAKvC,IAAwB,MAAc;AAE/F,UAAMwC,IAAWD,IAAkBvC,GAC7ByC,IAAW,KAAK,MAAMD,IAAW,IAAI;AAC3C,WAAO,IAAaA,IAAWC;AAAA,EAChC;AACD;AC1KA,MAAMC,KAAc,IAAI,YAAA;AAExB,SAASC,GAAaC,GAAmE;AACxF,MAAI,OAAOA,KAAU,SAAU,QAAOA;AACtC,MAAIA,aAAiB,WAAY,QAAOF,GAAY,OAAOE,CAAK;AAEjE;AAMO,SAASC,EAAcC,GAAwB;AACrD,MAAI,MAAM,QAAQA,CAAG;AACpB,WAAOA,EAAI,OAAO,CAACC,MAAyB,OAAOA,KAAS,QAAQ;AAErE,MAAI,iBAAiBD,KAAO,OAAOA,EAAI,eAAgB,YAAY;AAClE,UAAME,IAAgB,CAAA;AACtB,aAASxK,IAAI,GAAGA,IAAIsK,EAAI,YAAA,GAAetK,KAAK;AAC3C,YAAMuK,IAAOJ,GAAaG,EAAI,MAAMtK,CAAC,CAAC;AACtC,MAAIuK,MAAS,UAAWC,EAAI,KAAKD,CAAI;AAAA,IACtC;AACA,WAAOC;AAAA,EACR;AACA,SAAI,WAAWF,IACPA,EAAI,MAAM,QAAQ,CAACC,MAAS;AAClC,UAAMH,IAAQD,GAAaI,CAAI;AAC/B,WAAOH,IAAQ,CAACA,CAAK,IAAI,CAAA;AAAA,EAC1B,CAAC,IAEK,CAAA;AACR;AAEA,SAASK,EAAWC,GAAwBC,GAAaC,GAAoC;AAC5F,SAAIF,EAAI,CAAC,MAAMC,IAAY,KACpBC,GAAS,QAAQA,EAAQ,MAAMF,CAAG,IAAI;AAC9C;AAMO,SAASG,GACfC,GACAH,GACAC,GACuB;AACvB,MAAI,MAAM,QAAQE,CAAM,GAAG;AAC1B,eAAWJ,KAAOI,GAAQ;AACzB,YAAMC,IAAQV,EAAcK,CAAG;AAC/B,UAAID,EAAWM,GAAOJ,GAAKC,CAAO;AACjC,eAAOG;AAAA,IAET;AACA;AAAA,EACD;AAEA,WAAS/K,IAAI,GAAGA,IAAI8K,EAAO,WAAA,GAAc9K,KAAK;AAC7C,UAAM0K,IAAMI,EAAO,KAAK9K,CAAC;AACzB,QAAI,CAAC0K,EAAK;AACV,UAAMK,IAAQV,EAAcK,CAAG;AAC/B,QAAID,EAAWM,GAAOJ,GAAKC,CAAO;AACjC,aAAOG;AAAA,EAET;AAGD;AAKO,SAASC,GACfF,GACAH,GACAM,IAAgD,GAChDL,GACqB;AACrB,QAAMM,IAAa,OAAOD,KAAwB,WAAWA,IAAsB;AAEnF,SAAOJ,GAAWC,GAAQH,GADP,OAAOM,KAAwB,WAAWL,IAAUK,CAC9B,IAAIC,CAAU;AACxD;AAMO,SAASC,GACfL,GACAH,GACAM,IAAgD,GAChDL,GACW;AACX,QAAMM,IAAa,OAAOD,KAAwB,WAAWA,IAAsB,GAC7EG,IAAa,OAAOH,KAAwB,WAAWL,IAAUK,GACjEI,IAAmB,CAAA;AAEzB,MAAI,MAAM,QAAQP,CAAM,GAAG;AAC1B,eAAWJ,KAAOI,GAAQ;AACzB,YAAMC,IAAQV,EAAcK,CAAG;AAC/B,MAAID,EAAWM,GAAOJ,GAAKS,CAAU,KAAKL,EAAMG,CAAU,MAAM,UAC/DG,EAAO,KAAKN,EAAMG,CAAU,CAAE;AAAA,IAEhC;AACA,WAAOG;AAAA,EACR;AAEA,WAASrL,IAAI,GAAGA,IAAI8K,EAAO,WAAA,GAAc9K,KAAK;AAC7C,UAAM0K,IAAMI,EAAO,KAAK9K,CAAC;AACzB,QAAI,CAAC0K,EAAK;AACV,UAAMK,IAAQV,EAAcK,CAAG;AAC/B,IAAID,EAAWM,GAAOJ,GAAKS,CAAU,KAAKL,EAAMG,CAAU,MAAM,UAC/DG,EAAO,KAAKN,EAAMG,CAAU,CAAE;AAAA,EAEhC;AAEA,SAAOG;AACR;AAKO,SAASC,GACfR,GACAF,GAC2B;AAC3B,QAAMpH,wBAAW,IAAA;AAEjB,MAAI,MAAM,QAAQsH,CAAM;AACvB,eAAWJ,KAAOI,GAAQ;AACzB,YAAMC,IAAQV,EAAcK,CAAG;AAC/B,UAAIK,EAAM,SAAS,EAAG;AACtB,YAAMJ,IAAMI,EAAM,CAAC;AACnB,UAAI,CAACN,EAAWM,GAAOJ,GAAKC,CAAO,EAAG;AACtC,YAAMS,IAAS7H,EAAK,IAAImH,CAAG,KAAK,CAAA;AAChC,MAAAU,EAAO,KAAK,GAAGN,EAAM,MAAM,CAAC,CAAC,GAC7BvH,EAAK,IAAImH,GAAKU,CAAM;AAAA,IACrB;AAAA;AAEA,aAASrL,IAAI,GAAGA,IAAI8K,EAAO,WAAA,GAAc9K,KAAK;AAC7C,YAAM0K,IAAMI,EAAO,KAAK9K,CAAC;AACzB,UAAI,CAAC0K,EAAK;AACV,YAAMK,IAAQV,EAAcK,CAAG;AAC/B,UAAIK,EAAM,SAAS,EAAG;AACtB,YAAMJ,IAAMI,EAAM,CAAC;AACnB,UAAI,CAACN,EAAWM,GAAOJ,GAAKC,CAAO,EAAG;AACtC,YAAMS,IAAS7H,EAAK,IAAImH,CAAG,KAAK,CAAA;AAChC,MAAAU,EAAO,KAAK,GAAGN,EAAM,MAAM,CAAC,CAAC,GAC7BvH,EAAK,IAAImH,GAAKU,CAAM;AAAA,IACrB;AAGD,SAAO,OAAO,YAAY7H,CAAI;AAC/B;AAQO,SAAS+H,GACfnI,GACAoI,GACAC,GACAjK,GACS;AACT,MAAI,CAAC,OAAO,UAAU4B,CAAI,KAAKA,IAAO,KAAKA,IAAO;AACjD,UAAM,IAAI,MAAM,iBAAiBA,CAAI,EAAE;AAExC,MAAI,CAACsI,EAAQF,CAAS;AACrB,UAAM,IAAI,MAAM,yDAAyDA,CAAS,EAAE;AAErF,MAAI,CAACC,KAAK,OAAOA,KAAM;AACtB,UAAM,IAAI,MAAM,kBAAkBA,CAAC,EAAE;AAEtC,SAAOE,GAAM,YAAY;AAAA,IACxB,YAAYF;AAAA,IACZ,MAAArI;AAAA,IACA,QAAQoI;AAAA,IACR,QAAQhK,KAAUA,EAAO,SAASA,IAAS;AAAA,EAAA,CACpC;AACT;AAKO,SAASoK,GAAkBC,GAAwBrK,GAAkC;AAC3F,QAAMiK,IAAIK,EAAiBD,EAAI,IAAI;AACnC,MAAI,CAACJ;AACJ,UAAM,IAAI,MAAM,yCAAyCI,EAAI,IAAI,EAAE;AAEpE,SAAON,GAAUM,EAAI,MAAMA,EAAI,QAAQJ,GAAGjK,CAAM;AACjD;AAKO,SAASuK,GAAWC,GAKzB;AACD,QAAMC,IAAUN,GAAM,OAAOK,CAAK;AAClC,MAAIC,EAAQ,SAAS;AACpB,UAAM,IAAI,MAAM,uBAAuBA,EAAQ,IAAI,EAAE;AAEtD,QAAM,EAAE,YAAAC,GAAY,MAAA9I,GAAM,QAAAP,GAAQ,QAAArB,EAAA,IAAWyK,EAAQ;AACrD,SAAO;AAAA,IACN,MAAA7I;AAAA,IACA,QAAAP;AAAA,IACA,GAAGqJ;AAAA,IACH,QAAA1K;AAAA,EAAA;AAEF;AAgBO,SAASkK,EAAQS,GAAoB;AAC3C,SAAO,iBAAiB,KAAKA,CAAC;AAC/B;AASO,SAASC,GAAcC,GAAuB;AAIpD,SAHcA,EAAM,YAAA,EACG,QAAQ,eAAe,GAAG,EACtB,QAAQ,OAAO,GAAG,EAC5B,QAAQ,YAAY,EAAE;AACxC;AAMO,SAASC,GAASC,IAAgB,GAAW;AACnD,QAAMC,IAAM,KAAK,IAAI,GAAG,KAAK,IAAID,GAAO,EAAE,CAAC;AAC3C,MAAIE;AACJ,MAAI,OAAO,aAAe,OAAe,WAAW,QAAQ;AAC3D,IAAAA,IAAM,IAAI,WAAWD,CAAG,GACxB,WAAW,OAAO,gBAAgBC,CAAG;AAAA,OAC/B;AAEN,IAAAA,IAAM,IAAI,WAAWD,CAAG;AACxB,aAASxM,IAAI,GAAGA,IAAIwM,GAAKxM;AACxB,MAAAyM,EAAIzM,CAAC,IAAI,KAAK,MAAM,KAAK,OAAA,IAAW,GAAG;AAAA,EAEzC;AAMA,UAHC,OAAO,SAAW,MACf,OAAO,KAAKyM,CAAG,EAAE,SAAS,QAAQ,IAClC,KAAK,OAAO,aAAa,GAAGA,CAAG,CAAC,GACzB,QAAQ,OAAO,GAAG,EAAE,QAAQ,OAAO,GAAG,EAAE,QAAQ,QAAQ,EAAE;AACtE;AAOO,SAASX,EAAiBtI,GAAsC;AACtE,aAAW,KAAKA;AACf,QAAI,EAAE,CAAC,MAAM,OAAO,OAAO,EAAE,CAAC,KAAM,YAAY,EAAE,CAAC,EAAE,SAAS;AAC7D,aAAO,EAAE,CAAC;AAIb;AAQO,SAASkJ,GACflJ,GACAsH,GACAF,GACS;AACT,QAAM+B,IAAWb,EAAiBtI,CAAI;AACtC,MAAImJ,EAAU,QAAOA;AACrB,MAAI7B,KAAUA,EAAO,KAAA,EAAO,SAAS,GAAG;AACvC,UAAM8B,IAAOR,GAActB,EAAO,KAAA,CAAM;AACxC,WAAO8B,EAAK,SAAS,IAAIA,IAAON,GAAS1B,GAAS,eAAe,CAAC;AAAA,EACnE;AACA,SAAO0B,GAAS1B,GAAS,eAAe,CAAC;AAC1C;AAOO,SAASiC,GAAazJ,GAAcoI,GAAmBC,GAAmB;AAChF,MAAI,CAAC,OAAO,UAAUrI,CAAI,KAAKA,IAAO,KAAKA,IAAO;AACjD,UAAM,IAAI,MAAM,iBAAiBA,CAAI,EAAE;AAExC,MAAI,CAACsI,EAAQF,CAAS;AACrB,UAAM,IAAI,MAAM,yDAAyDA,CAAS,EAAE;AAErF,MAAI,CAACC,KAAK,OAAOA,KAAM;AACtB,UAAM,IAAI,MAAM,kBAAkBA,CAAC,EAAE;AAEtC,SAAO,GAAGrI,CAAI,IAAIoI,CAAS,IAAIC,CAAC;AACjC;AAKO,SAASqB,GAAcC,GAAqB;AAClD,QAAMC,IAAQD,EAAE,MAAM,GAAG;AACzB,MAAIC,EAAM,WAAW;AACpB,UAAM,IAAI,MAAM,6BAA6BD,CAAC,EAAE;AAEjD,QAAM3J,IAAO,OAAO4J,EAAM,CAAC,CAAC,GACtBnK,IAASmK,EAAM,CAAC,GAChBvB,IAAIuB,EAAM,CAAC;AACjB,MAAI,CAAC,OAAO,UAAU5J,CAAI;AACzB,UAAM,IAAI,MAAM,8BAA8B4J,EAAM,CAAC,CAAC,EAAE;AAEzD,MAAI,CAACtB,EAAQ7I,CAAM;AAClB,UAAM,IAAI,MAAM,gCAAgCA,CAAM,EAAE;AAEzD,MAAI,CAAC4I;AACJ,UAAM,IAAI,MAAM,2BAA2BA,CAAC,EAAE;AAE/C,SAAO,EAAE,MAAArI,GAAM,QAAAP,GAAQ,GAAA4I,EAAA;AACxB;AAKO,SAASwB,GAAqBpB,GAAgC;AACpE,QAAMJ,IAAIK,EAAiBD,EAAI,IAAI;AACnC,MAAI,CAACJ;AACJ,UAAM,IAAI,MAAM,yCAAyCI,EAAI,IAAI,EAAE;AAEpE,SAAOgB,GAAahB,EAAI,MAAMA,EAAI,QAAQJ,CAAC;AAC5C;AAaO,SAASyB,GACf9J,GACAoI,GACAC,GACAjK,GACS;AACT,QAAMuL,IAAIF,GAAazJ,GAAMoI,GAAWC,CAAC;AACzC,MAAIjK,KAAUA,EAAO,SAAS,GAAG;AAChC,UAAM2L,IAAgB3L,EAAO,IAAI,CAAC4L,MAAM,mBAAmBA,CAAC,CAAC,EAAE,KAAK,GAAG;AACvE,WAAO,cAAcL,CAAC,WAAWI,CAAa;AAAA,EAC/C;AACA,SAAO,cAAcJ,CAAC;AACvB;AAMO,SAASM,GAAsBxB,GAAwBrK,GAAkC;AAC/F,QAAMiK,IAAIK,EAAiBD,EAAI,IAAI;AACnC,MAAI,CAACJ;AACJ,UAAM,IAAI,MAAM,yCAAyCI,EAAI,IAAI,EAAE;AAEpE,SAAOqB,GAAcrB,EAAI,MAAMA,EAAI,QAAQJ,GAAGjK,CAAM;AACrD;AAKO,SAAS8L,GAAeC,GAAuD;AACrF,MAAI,CAACA,EAAU,WAAW,aAAa;AACtC,UAAM,IAAI,MAAM,8BAA8BA,CAAS,EAAE;AAE1D,QAAMC,IAAOD,EAAU,MAAM,EAAoB,GAC3C,CAACE,GAAOC,CAAE,IAAIF,EAAK,MAAM,KAAK,CAAC,GAC/BT,IAAID,GAAcW,CAAK;AAC7B,MAAI,CAACC,EAAI,QAAO,EAAE,GAAAX,EAAA;AAElB,QAAMY,IADS,IAAI,gBAAgBD,CAAE,EACV,IAAI,QAAQ,GACjClM,IAASmM,IAAcA,EAAY,MAAM,GAAG,EAAE,IAAI,kBAAkB,IAAI;AAC9E,SAAO,EAAE,GAAAZ,GAAG,QAAAvL,EAAA;AACb;AAIO,SAASoM,GAAUxK,GAAuB;AAChD,SAAO,OAAO,UAAUA,CAAI,KAAKA,KAAQ,OAASA,IAAO;AAC1D;AAQO,SAASyK,GAAWrK,GAAkBiI,GAAuB;AACnE,QAAMjB,IAAkB,CAAA;AACxB,MAAIsD,IAAW;AACf,aAAWC,KAAKvK;AACf,IAAI,CAACsK,KAAYC,EAAE,CAAC,MAAM,OACzBvD,EAAI,KAAK,CAAC,KAAKiB,CAAC,CAAC,GACjBqC,IAAW,MAEXtD,EAAI,KAAKuD,CAAC;AAGZ,SAAKD,KAAUtD,EAAI,KAAK,CAAC,KAAKiB,CAAC,CAAC,GACzBjB;AACR;AAOO,SAASwD,GACfxK,GACAsH,GACAF,GACa;AAEb,MADiBkB,EAAiBtI,CAAI,EACxB,QAAOA,EAAK,MAAA;AAC1B,QAAMiI,IAAIiB,GAAQlJ,GAAMsH,GAAQF,CAAO;AACvC,SAAOiD,GAAWrK,GAAMiI,CAAC;AAC1B;AC7cO,MAAMwC,GAAa;AAAA,EAoCzB,YAAYtH,IAA6B,IAAI;AA/B7C,SAAQ,cAAc,IAAI,YAAA,GAC1B,KAAQ,oCAAoB,IAAA,GAQ5B,KAAQ,gCAAgB,IAAA,GAExB,KAAQ,eAA8B,MACtC,KAAQ,kBAAyD,MAEjE,KAAQ,SAAS,CAACuH,MAAgB;AAAA,IAAC,GACnC,KAAQ,cAAc,IAAI,YAAA,GAS1B,KAAQ,oCAAoB,IAAA,GAK5B,KAAO,0BAA0B,CAAC,iBAAiB,aAAa;AAM/D,UAAMC,IAAe,IAAI,eAAA,GACnBC,IAAqB,IAAI,eAAA,GACzBC,IAAgB,IAAI,eAAA,GACpBC,IAAoB,IAAI,eAAA,GACxBC,IAAqB,IAAI,eAAA,GACzBC,IAAc,IAAI,eAAA,GAClBC,IAAc,IAAI,eAAA,GAClBC,IAAmB,IAAI,eAAA,GAEvBC,IAAsB,CAAC,CAAChI,EAAO,OAE/BiI,IAAgBD,IACnB,IAAA,IAAA,0BAAA,YAAA,GAAA,IACA,oDACGE,IAAW,IAAA,IAAA,oBAAA,YAAA,GAAA,GACXC,IAAY,IAAA,IAAA,qBAAA,YAAA,GAAA,GACZC,IAAY,IAAA,IAAA,qBAAA,YAAA,GAAA;AAClB,YAAQ,IAAI,qBAAqB,GACjC,KAAK,cAAc,IAAI,OAAOH,GAAe,EAAE,MAAM,UAAU,GAC/D,KAAK,QAAQ,IAAI,OAAOC,GAAU,EAAE,MAAM,UAAU,GACpD,KAAK,SAAS,IAAI,OAAOC,GAAW,EAAE,MAAM,UAAU,GACtD,KAAK,SAAS,IAAI,OAAOC,GAAW,EAAE,MAAM,UAAU,GAEtD,QAAQ,IAAI,kBAAkBJ,IAAsB,UAAU,MAAM,GAEpE,QAAQ,IAAI,KAAK,aAAa,KAAK,OAAO,KAAK,QAAQ,KAAK,MAAM,GAGlE,KAAK,YAAY;AAAA,MAChB;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,UACR,UAAUD,EAAiB;AAAA,UAC3B,WAAWJ,EAAkB;AAAA,UAC7B,YAAYF,EAAmB;AAAA,UAC/B,YAAYG,EAAmB;AAAA,UAC/B,GAAI5H,EAAO,QAAQ,EAAE,OAAOA,EAAO,MAAA,IAAU,CAAA;AAAA,QAAC;AAAA,MAC/C;AAAA,MAED;AAAA,QACC+H,EAAiB;AAAA,QACjBJ,EAAkB;AAAA,QAClBF,EAAmB;AAAA,QACnBG,EAAmB;AAAA,MAAA;AAAA,IACpB,GAKD,KAAK,MAAM;AAAA,MACV;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,UACR,YAAYJ,EAAa;AAAA,UACzB,iBAAiBG,EAAkB;AAAA,QAAA;AAAA,MACpC;AAAA,MAED,CAACH,EAAa,OAAOG,EAAkB,KAAK;AAAA,IAAA,GAI7C,KAAK,iBAAiBG,EAAY,OAGlC,KAAK,eAAe,YAAY,CAACnN,MAAU;AAC1C,YAAM,EAAE,OAAAF,GAAO,MAAAP,EAAA,IAASS,EAAM;AAE9B,UAAI,CAACF,KAAS,CAACP,GAAM;AACpB,gBAAQ,IAAI,iDAAiD;AAC7D;AAAA,MACD;AAIA,YAAMmO,IAAe,KAAK,cAAc,IAAI5N,CAAK;AACjD,UAAI4N,GAAc;AAGjB,QADgBxG,EAAkB,iBAAiBwG,EAAa,QAAQnO,GAAMO,CAAK,KAElF,KAAK,SAAS,gBAAgBA,CAAK,IAAIA,CAAK;AAE7C;AAAA,MACD;AAEA,YAAM6N,KAAU,KAAK,UAAU,IAAI7N,CAAK;AACxC,UAAI6N,IAAS;AAGZ,QADgBzG,EAAkB,iBAAiByG,GAAQ,QAAQpO,GAAMO,CAAK,KAE7E,KAAK,SAAS,WAAWA,CAAK,IAAIA,CAAK;AAExC;AAAA,MACD;AAEA,cAAQ,IAAI,sDAAsDA,CAAK;AAAA,IACxE,GAGA,KAAK,sBAAsBsN,EAAiB,OAC5C,KAAK,oBAAoB,YAAY,CAACpN,MAAU;AAC/C,YAAM,EAAE,MAAAK,GAAM,QAAAuN,GAAQ,KAAAC,EAAA,IAAQ,KAAK,MAAM7N,EAAM,IAAI;AACnD,MAAIK,MAAS,kBAAkBwN,KAAOD,KACrC,KAAK,cAAc,IAAIC,GAAK,EAAE,QAAAD,GAAQ,WAAW,KAAK,IAAA,GAAO,GAC7D,KAAK,SAAS,gBAAgB,EAAE,QAAAA,GAAQ,KAAAC,GAAK,KAE7C,QAAQ,IAAI,mCAAmCxN,GAAM,QAAQwN,GAAK,WAAWD,CAAM;AAAA,IAErF,GAIA,KAAK,OAAO;AAAA,MACX;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,UACR,iBAAiBd,EAAmB;AAAA,UACpC,WAAWD,EAAa;AAAA,UACxB,YAAYE,EAAc;AAAA,UAC1B,UAAUI,EAAY;AAAA,QAAA;AAAA,MACvB;AAAA,MAED,CAACL,EAAmB,OAAOD,EAAa,OAAOE,EAAc,OAAOI,EAAY,KAAK;AAAA,IAAA,GAKtF,KAAK,OAAO;AAAA,MACX;AAAA,QACC,MAAM;AAAA,QACN,SAAS;AAAA,UACR,YAAYJ,EAAc;AAAA,UAC1B,iBAAiBE,EAAmB;AAAA,UACpC,UAAUC,EAAY;AAAA,QAAA;AAAA,MACvB;AAAA,MAED,CAACH,EAAc,OAAOE,EAAmB,OAAOC,EAAY,KAAK;AAAA,IAAA,GAIlEA,EAAY,MAAM,YAAY,CAAClN,MAAU;AACxC,YAAM8N,IAAM9N,EAAM;AAClB,MAAI8N,EAAI,SAAS,cAChB,KAAK,qBAAqBA,CAAG;AAAA,IAE/B,GAEA,KAAK,oBAAA,GAEL,eAAe,MAAM,KAAK,gBAAgB;AAAA,EAC3C;AAAA,EAEQ,aAAazF,GAAc0F,GAA2B;AAC7D,IAAIA,KAAYA,EAAS,SACxB,KAAK,OAAO,YAAY1F,GAAS0F,CAAQ,IAEzC,KAAK,OAAO,YAAY1F,CAAO;AAAA,EAEjC;AAAA,EAEQ,qBAAqByF,GAAU;AACtC,QAAIA,EAAI,OAAO,cAAc;AAC5B,cAAQ,IAAI,sBAAsBA,EAAI,KAAK,YAAY,UAAUA,EAAI,MAAM,GACvEA,EAAI,OACP,KAAK,eAAeA,EAAI,QAGvB,KAAK,wBACL,KAAK,iBAAiB,SAAS,cAC/B,KAAK,iBAAiB,SAAS,gBAE/B,QAAQ,IAAI,8CAA8C,KAAK,YAAY,GAC3E,KAAK,YAAY,KAAK,cAAe,gBAAgB;AAAA,QACpD,KAAK,KAAK;AAAA,QACV,cAAc,KAAK,gBAAgB,QAAQ;AAAA,MAAA,CAC3C,GACD,KAAK,kBAAkB,MACvB,KAAK,uBAAuB,QAClB,KAAK,oBAEf,KAAK;AAAA,QACJ,KAAK;AAAA,QACL,KAAK,gBAAgB;AAAA,QACrB,KAAK,gBAAgB;AAAA,MAAA,GAEtB,KAAK,kBAAkB;AAGzB,YAAME,IAAYF,EAAI,MAAM,CAAC,CAAC,KAAK,iBAE7BG,IAAY,KAAK,iBAAiB,SAAS,YAAY,KAAK,gBAAgB,UAAU;AAC5F,WAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,cAAc,WAAAD,GAAW,WAAAC,GAAW;AAAA,IAC1E,WAAWH,EAAI,OAAO,gBAAgBA,EAAI,IAAI;AAC7C,YAAMI,IAAS,KAAK,MAAMJ,EAAI,MAAM;AACpC,WAAK,OAAOI,CAAM;AAAA,IACnB;AAAA,EACD;AAAA,EAEQ,sBAAsB;AAC7B,SAAK,OAAO,YAAY,OAAOlO,MAAU;AACxC,YAAMmO,IAAK,OAAOnO,EAAM,QAAS,WAAWA,EAAM,OAAO;AACzD,UAAKmO,GACL;AAAA,YAAI,KAAK,cAAc,IAAIA,CAAE,GAAG;AAC/B,eAAK,SAAS,gBAAgBA,CAAE,IAAIA,CAAE;AACtC;AAAA,QACD;AACA,YAAI,KAAK,UAAU,IAAIA,CAAE,GAAG;AAC3B,eAAK,SAAS,WAAWA,CAAE,IAAIA,CAAE;AACjC;AAAA,QACD;AAAA;AAAA,IACD,GAIA,KAAK,OAAO,YAAY,OAAOnO,MAAU;AACxC,YAAM8N,IAAM9N,EAAM;AAKlB,UAJA,QAAQ,IAAI,4BAA4B8N,GAAK,MAAMA,CAAG,GAIlDA,GAAK,SAAS,gBAAgB;AACjC,gBAAQ,IAAI,wBAAwBA,EAAI,aAAaA,EAAI,MAAM,GAC/D,KAAK,eAAeA,EAAI,QAItBA,EAAI,gBAAgB,WACpBA,EAAI,cACJ,KAAK,iBAAiB,SAAS,iBAEhC,QAAQ,IAAI,oCAAoCA,EAAI,MAAM,GAC1D,KAAK,YAAYA,EAAI,QAAQ,SAAS;AAAA,UACrC,KAAKA,EAAI;AAAA,UACT,cAAc,KAAK,gBAAgB,QAAQ;AAAA,QAAA,CAC1C,GACD,KAAK,kBAAkB;AAGxB,cAAMG,IAAY,KAAK,iBAAiB,SAAS,YAAY,KAAK,gBAAgB,UAAU;AAC5F,QAAI,KAAK,oBAER,KAAK,YAAYH,EAAI,QAAQA,EAAI,aAAa,KAAK,gBAAgB,OAAO,GAC1E,KAAK,kBAAkB,OAExB,KAAK,SAAS,QAAQ,EAAE,QAAQA,EAAI,QAAQ,WAAW,IAAM,WAAAG,GAAW;AACxE;AAAA,MACD;AAGD,UAAIH,GAAK,SAAS,YAAY;AAC7B,aAAK,qBAAqBA,CAAG;AAC7B;AAAA,MACD;AAGA,UAAIA,GAAK,SAAS,qBAAqB;AACtC,cAAM,EAAE,IAAAK,GAAI,IAAAC,GAAI,SAAAnN,EAAA,IAAY6M;AAC5B,YAAI;AACH,gBAAMO,IAAS,OAAe;AAC9B,cAAI,CAACA,EAAO,OAAM,IAAI,MAAM,2CAA2C;AAEvE,cAAI9F;AACJ,kBAAQ6F,GAAA;AAAA,YACP,KAAK;AACJ,cAAA7F,IAAS,MAAM8F,EAAM,aAAA;AACrB;AAAA,YACD,KAAK;AACJ,cAAA9F,IAAS,MAAM8F,EAAM,UAAU,KAAK,MAAMpN,CAAO,CAAC;AAClD;AAAA,YACD,KAAK;AACJ,cAAAsH,IAAS,MAAM8F,EAAM,MAAM,QAAQpN,EAAQ,QAAQA,EAAQ,SAAS;AACpE;AAAA,YACD,KAAK;AACJ,cAAAsH,IAAS,MAAM8F,EAAM,MAAM,QAAQpN,EAAQ,QAAQA,EAAQ,UAAU;AACrE;AAAA,YACD,KAAK;AACJ,cAAAsH,IAAS,MAAM8F,EAAM,MAAM,QAAQpN,EAAQ,QAAQA,EAAQ,SAAS;AACpE;AAAA,YACD,KAAK;AACJ,cAAAsH,IAAS,MAAM8F,EAAM,MAAM,QAAQpN,EAAQ,QAAQA,EAAQ,UAAU;AACrE;AAAA,YACD;AACC,oBAAM,IAAI,MAAM,gCAAgCmN,CAAE,EAAE;AAAA,UAAA;AAEtD,eAAK,OAAO,YAAY,EAAE,MAAM,sBAAsB,IAAAD,GAAI,IAAI,IAAM,QAAA5F,GAAQ;AAAA,QAC7E,SAAS+F,GAAQ;AAChB,eAAK,OAAO,YAAY;AAAA,YACvB,MAAM;AAAA,YACN,IAAAH;AAAA,YACA,IAAI;AAAA,YACJ,OAAOG,EAAE,WAAW,OAAOA,CAAC;AAAA,UAAA,CAC5B;AAAA,QACF;AACA;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEO,cAAcvD,GAAuB;AAC3C,QAAIA,EAAM,SAAS,GAAI,QAAOA;AAC9B,QAAIwD,IAAO;AACX,aAAS7P,IAAI,GAAGA,IAAIqM,EAAM,QAAQrM,KAAK;AACtC,YAAM8P,IAAOzD,EAAM,WAAWrM,CAAC;AAC/B,MAAA6P,KAAQA,KAAQ,KAAKA,IAAOC,GAC5BD,IAAOA,IAAOA;AAAA,IACf;AAEA,WADgB,KAAK,IAAIA,CAAI,EAAE,SAAS,EAAE,EAC3B,UAAU,GAAG,EAAE;AAAA,EAC/B;AAAA,EAEO,iBACNlO,GACAoO,GACAnF,GACO;AACP,SAAK,YAAY,iBAAiBjJ,GAAMoO,GAA2BnF,CAAO;AAAA,EAC3E;AAAA,EAEO,oBACNjJ,GACAoO,GACAnF,GACO;AACP,SAAK,YAAY,oBAAoBjJ,GAAMoO,GAA2BnF,CAAO;AAAA,EAC9E;AAAA,EAEQ,SAASjJ,GAAcqO,GAAwB;AACtD,SAAK,YAAY,cAAc,IAAI,YAAYrO,GAAM,EAAE,QAAAqO,EAAA,CAAQ,CAAC;AAAA,EACjE;AAAA,EAEA,UACC5J,GACA/E,GACAuJ,GACc;AACd,UAAMxJ,IAAQ,KAAK,cAAcgF,CAAc,GACzC6J,IAAuB,KAAK,cAAc,IAAI7O,CAAK;AACzD,QAAI6O;AACH,aAAAA,EAAqB,YACdA,EAAqB;AAG7B,UAAMC,IAAa7O,EAAS,OAAO,CAAC8O,GAAKC,MAAQD,KAAOC,EAAI,SAAS,MAAM,CAAC,GACtEC,IAAa7H,EAAkB,oBAAoB0H,GAAYtF,EAAQ,aAAa,GACpFnC,IAAS,IAAI,YAAY4H,CAAU;AACzC,IAAA7H,EAAkB,iBAAiBC,CAAM,GAEzC,KAAK,cAAc,IAAIrH,GAAO,EAAE,QAAAqH,GAAQ,SAAAmC,GAAS,UAAU,GAAG;AAE9D,UAAM0F,IAAW,IAAI3I;AAAA,MACpB,IAAIb,GAAgB8D,EAAQ,YAAY,EAAE;AAAA,MAC1CA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ,YAAY,OAAOA,EAAQ,SAAS,IAAI;AAAA,MAChDA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ;AAAA,MACRA,EAAQ,aAAa,KAAK,YAAY,OAAOA,EAAQ,UAAU,IAAI;AAAA,IAAA,GAG9D2F,IAAa,IAAIxI;AAAA,MACtB,KAAK,YAAY,OAAO3G,CAAK;AAAA,MAC7BC,EAAS;AAAA,QACR,CAAC+L,MACA,IAAIoD;AAAA,UACHpD,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,UACF,OAAO,QAAQA,EAAE,QAAQ,CAAA,CAAE,EAAE;AAAA,YAC5B,CAAC,CAACzC,GAAKU,CAAM,MAAM,IAAIoF,GAAW,CAAC9F,GAAK,GAAGU,CAAM,CAAC;AAAA,UAAA;AAAA,UAEnD+B,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,UACF,KAAK,YAAY,OAAOA,EAAE,MAAM;AAAA,UAChCA,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,UACFA,EAAE;AAAA,QAAA;AAAA,MACH;AAAA,MAEFkD;AAAA,IAAA,GAGKI,IAAQ,IAAIrI,EAAaH,EAAY,WAAWqI,CAAU,GAC1D7P,IAAU,IAAIP,EAAY,QAAQ,IAAI;AAC5C,IAAAO,EAAQ,OAAOgQ,EAAM,KAAKhQ,CAAO,CAAC;AAClC,UAAMiQ,IAAajQ,EAAQ,aAAA;AAE3B,gBAAK,aAAa,EAAE,mBAAmBiQ,EAAA,GAAc,CAACA,EAAW,MAAM,CAAC,GAEjElI;AAAA,EACR;AAAA,EAEA,UAAUrH,GAAwC;AACjD,UAAM6O,IAAuB,KAAK,cAAc,IAAI7O,CAAK;AACzD,QAAI6O;AACH,aAAAA,EAAqB,YACdA,EAAqB;AAAA,EAG9B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAiG;AAChG,WAAO,IAAI,IAAI,KAAK,aAAa;AAAA,EAClC;AAAA,EAEA,YAAY7J,GAA8B;AACzC,UAAMhF,IAAQgF,EAAe,SAAS,KAAKA,IAAiB,KAAK,cAAcA,CAAc,GACvF4I,IAAe,KAAK,cAAc,IAAI5N,CAAK;AACjD,IAAI4N,KACHA,EAAa;AAAA,EAEf;AAAA,EAEA,QAAQ4B,GAAoBtP,GAAmBuP,IAA0B,CAAA,GAAiB;AACzF,UAAMpI,IAAS,IAAI,YAAY,IAAI;AACnC,IAAAD,EAAkB,iBAAiBC,CAAM;AAEzC,UAAMqI,IAAY,IAAIvN;AAAA,MACrBjC,EAAM;AAAA,MACNA,EAAM;AAAA,MACN,KAAK,YAAY,OAAOA,EAAM,OAAO;AAAA,MACrCA,EAAM,KAAK,IAAI,CAACyM,MAAM,IAAI0C,GAAW1C,CAAC,CAAC,KAAK,CAAA;AAAA,IAAC,GAExCgD,IAAW,IAAInN,GAAS,KAAK,YAAY,OAAOgN,CAAU,GAAGE,GAAWD,CAAa,GACrFH,IAAQ,IAAIrI,EAAaH,EAAY,SAAS6I,CAAQ,GACtDrQ,IAAU,IAAIP,EAAY,QAAQ,IAAI;AAC5C,IAAAO,EAAQ,OAAOgQ,EAAM,KAAKhQ,CAAO,CAAC;AAClC,UAAMiQ,IAAajQ,EAAQ,aAAA;AAE3B,gBAAK,aAAa,EAAE,mBAAmBiQ,EAAA,GAAc,CAACA,EAAW,MAAM,CAAC,GACxE,KAAK,UAAU,IAAIC,GAAY,EAAE,QAAAnI,GAAQ,GAClCA;AAAA,EACR;AAAA,EAEA,UAAUuI,GAAczO,GAAgE;AAKvF,YAHA,KAAK,kBAAkB,EAAE,MAAMyO,GAAM,SAAAzO,EAAA,GACrC,QAAQ,IAAI,+BAA+ByO,CAAI,GAEvCA,GAAA;AAAA,MACP,KAAK;AAEJ,aAAK,eAAezO,GACpB,KAAK,YAAY,KAAK,cAAc,UAAUA,CAAO,GACrD,KAAK,kBAAkB,MACvB,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,cAAc,WAAW,IAAO;AACrE;AAAA,MACD,KAAK;AACJ,aAAK,OAAO,YAAY,EAAE,MAAM,mBAAmB,SAAAA,GAAS;AAC5D;AAAA,MACD,KAAK;AACJ,aAAK,OAAO,YAAY,EAAE,MAAM,aAAa;AAC7C;AAAA,MACD,KAAK;AAEJ,QAAIA,GAAS,KAAK,WAAW,WAAW,IACvC,KAAK,OAAO,YAAY,EAAE,MAAM,oBAAoB,SAAAA,GAAS,IACnDA,GAAS,KAAK,WAAW,iBAAiB,IACpD,KAAK,OAAO,YAAY,EAAE,MAAM,gBAAgB,SAAAA,GAAS,IAEzD,QAAQ,MAAM,qCAAqCA,GAAS,GAAG;AAEhE;AAAA,IAAA;AAAA,EAGH;AAAA,EAEA,UAAUjB,GAAsB2P,GAAiC;AAChE,SAAK,SAASA,GACd,KAAK,OAAO,YAAY,EAAE,MAAM,cAAc,SAAS,KAAK,UAAU3P,CAAK,GAAG;AAAA,EAC/E;AAAA,EAEA,eAAe;AACd,UAAMoP,IAAQ,IAAIrI,EAAaH,EAAY,cAAc,IAAInF,IAAe,GACtErC,IAAU,IAAIP,EAAY,QAAQ,IAAI;AAC5C,IAAAO,EAAQ,OAAOgQ,EAAM,KAAKhQ,CAAO,CAAC;AAClC,UAAMiQ,IAAajQ,EAAQ,aAAA;AAE3B,SAAK,OAAO,YAAY,EAAE,mBAAmBiQ,KAAc,CAACA,EAAW,MAAM,CAAC;AAAA,EAC/E;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,uBAA+B;AACtC,UAAMO,IAAQ,IAAI,WAAW,EAAE;AAC/B,kBAAO,gBAAgBA,CAAK,GACrB,MAAM,KAAKA,GAAO,CAACC,MAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE;AAAA,EACzE;AAAA,EAEA,eAAeC,GAAmBC,GAA6B;AAC9D,UAAMC,IAASD,KAAgB,KAAK,qBAAA;AACpC,YAAQ,IAAI,yBAAyBD,EAAU,MAAM,GAAG,EAAE,IAAI,KAAK,GACnE,KAAK,UAAU,SAAS,EAAE,KAAKA,GAAW,cAAcE,GAAQ;AAAA,EACjE;AAAA,EAEA,WAAWC,GAAyBF,GAA6B;AAChE,UAAMC,IAASD,KAAgB,KAAK,qBAAA;AACpC,YAAQ,IAAI,qBAAqBE,EAAgB,MAAM,GAAG,EAAE,IAAI,KAAK,GACrE,KAAK,UAAU,SAAS,EAAE,KAAKA,GAAiB,cAAcD,GAAQ;AAAA,EACvE;AAAA,EAEA,WAAiB;AAChB,SAAK,UAAU,SAAS,EAAE;AAAA,EAC3B;AAAA,EAEA,UAAUzO,GAAsB;AAC/B,SAAK,UAAU,UAAUA,CAAM;AAAA,EAChC;AAAA,EAEO,kBAAiC;AACvC,WAAO,KAAK;AAAA,EACb;AAAA,EAEO,uBAA+B;AACrC,WAAO,KAAK,cAAc;AAAA,EAC3B;AAAA,EAEO,cAA8D;AACpE,UAAM2O,IAAe,aAAa,QAAQ,uBAAuB,KAAK;AACtE,QAAI;AACH,aAAO,KAAK,MAAMA,CAAY;AAAA,IAC/B,QAAY;AACX,aAAO,CAAA;AAAA,IACR;AAAA,EACD;AAAA,EAEO,cAAc3O,GAAgB;AAEpC,UAAM4O,IADW,KAAK,YAAA,EACG5O,CAAM;AAC/B,IAAI4O,KACH,KAAK,UAAUA,EAAQ,MAAMA,EAAQ,OAAO;AAAA,EAE9C;AAAA,EAEQ,YAAY5O,GAAgBlB,GAAcY,GAAc;AAC/D,YAAQ,IAAI,uBAAuB;AAAA,MAClC,QAAQM,EAAO,MAAM,GAAG,EAAE,IAAI;AAAA,MAC9B,MAAAlB;AAAA,MACA,iBAAiB,CAAC,CAACY,GAAS;AAAA,IAAA,CAC5B;AACD,UAAMmP,IAAW,KAAK,YAAA;AACtB,IAAAA,EAAS7O,CAAM,IAAI,EAAE,MAAAlB,GAAM,SAAAY,EAAA,GAC3B,aAAa,QAAQ,yBAAyB,KAAK,UAAUmP,CAAQ,CAAC,GACtE,aAAa,QAAQ,uBAAuB7O,CAAM,GAClD,QAAQ,IAAI,sCAAsC;AAAA,EACnD;AAAA,EAEQ,iBAAiB;AACxB,UAAM8O,IAAe,aAAa,QAAQ,qBAAqB;AAC/D,IAAIA,IACH,KAAK,cAAcA,CAAY,IAE/B,KAAK,SAAS,QAAQ,EAAE,QAAQ,MAAM,WAAW,IAAO;AAAA,EAE1D;AAAA,EAEO,SAAe;AACrB,SAAK,kBAAkB,MACvB,KAAK,eAAe,MACpB,KAAK,OAAO,YAAY,EAAE,MAAM,gBAAgB,GAChD,aAAa,WAAW,qBAAqB,GAC7C,KAAK,SAAS,QAAQ;AAAA,EACvB;AAAA,EAEO,gBAAsB;AAC5B,UAAMC,IAAgB,KAAK;AAC3B,QAAI,CAACA,EAAe;AAGpB,UAAMF,IAAW,KAAK,YAAA;AACtB,WAAOA,EAASE,CAAa,GAC7B,aAAa,QAAQ,yBAAyB,KAAK,UAAUF,CAAQ,CAAC;AAGtE,UAAMG,IAAmB,OAAO,KAAKH,CAAQ;AAC7C,QAAIG,EAAiB,SAAS,GAAG;AAEhC,YAAMC,IAAaD,EAAiB,CAAC;AACrC,MAAIC,KACH,KAAK,cAAcA,CAAU;AAAA,IAE/B;AAEC,WAAK,OAAA;AAAA,EAEP;AAAA,EAEA,UAAgB;AACf,UAAMC,IAAkC,CAAA;AAExC,eAAW,CAAC3Q,GAAO4N,CAAY,KAAK,KAAK,cAAc;AACtD,MAAIA,EAAa,YAAY,KAAK,CAAC,KAAK,wBAAwB,SAAS5N,CAAK,KAC7E2Q,EAAsB,KAAK3Q,CAAK;AAKlC,eAAWA,KAAS2Q,GAAuB;AAE1C,YAAMC,IAAe,IAAI/J,GAAa,KAAK,YAAY,OAAO7G,CAAK,CAAC,GAC9DsP,IAAQ,IAAIrI,EAAaH,EAAY,aAAa8J,CAAY,GAC9DtR,IAAU,IAAIP,EAAY,QAAQ,GAAG;AAC3C,MAAAO,EAAQ,OAAOgQ,EAAM,KAAKhQ,CAAO,CAAC;AAClC,YAAMiQ,IAAajQ,EAAQ,aAAA;AAE3B,WAAK,aAAa,EAAE,mBAAmBiQ,EAAA,GAAc,CAACA,EAAW,MAAM,CAAC,GAGxE,KAAK,YAAY,YAAYvP,CAAK,GAGlC,KAAK,cAAc,OAAOA,CAAK;AAAA,IAChC;AAAA,EACD;AACD;AAEO,SAAS6Q,GAAmBtL,GAA2C;AAC7E,SAAO,IAAIsH,GAAatH,CAAM;AAC/B;AAGA,IAAIuL,IAAqC;AAMlC,SAASC,KAA2B;AAC1C,MAAI,CAACD;AACJ,UAAM,IAAI;AAAA,MACT;AAAA,IAAA;AAGF,SAAOA;AACR;AAcO,SAASE,GAAWC,GAA6B;AACvD,EAAAH,IAAgBG;AACjB;AAMO,SAASC,GAAiBD,GAA6B;AAC7D,EAAAD,GAAWC,CAAO;AACnB;"}
|