@dxos/network-manager 0.1.14 → 0.1.17
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/lib/browser/index.mjs +1 -0
- package/dist/lib/browser/index.mjs.map +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/testing/index.mjs +1 -0
- package/dist/lib/browser/testing/index.mjs.map +1 -1
- package/dist/lib/node/index.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/testing/index.cjs.map +1 -1
- package/package.json +18 -18
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/connection-log.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/connection.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm.ts", "../../../src/signal/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/signal/message-router.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/peer.ts", "../../../src/swarm/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts", "../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/network-manager.ts", "../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/protocol-factory.ts", "../../../src/topology/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts", "../../../src/topology/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/mmst-topology.ts", "../../../src/topology/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/topology/star-topology.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/memory-transport.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc-transport.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts", "../../../src/transport/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts", "../../../src/home/runner/work/dxos/dxos/packages/core/mesh/network-manager/src/wire-protocol.ts"],
|
|
4
4
|
"sourcesContent": ["//\n// Copyright 2021 DXOS.org\n//\n\nimport { Event } from '@dxos/async';\nimport { raise } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { SwarmInfo, ConnectionInfo } from '@dxos/protocols/proto/dxos/devtools/swarm';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionState, Swarm } from './swarm';\n\nexport enum EventType {\n CONNECTION_STATE_CHANGED = 'CONNECTION_STATE_CHANGED',\n PROTOCOL_ERROR = 'PROTOCOL_ERROR',\n PROTOCOL_EXTENSIONS_INITIALIZED = 'PROTOCOL_EXTENSIONS_INITIALIZED',\n PROTOCOL_EXTENSIONS_HANDSHAKE = 'PROTOCOL_EXTENSIONS_HANDSHAKE',\n PROTOCOL_HANDSHAKE = 'PROTOCOL_HANDSHAKE'\n}\n\nexport class ConnectionLog {\n /**\n * SwarmId => info\n */\n private readonly _swarms = new ComplexMap<PublicKey, SwarmInfo>(PublicKey.hash);\n\n readonly update = new Event();\n\n getSwarmInfo(swarmId: PublicKey) {\n return this._swarms.get(swarmId) ?? raise(new Error(`Swarm not found: ${swarmId}`));\n }\n\n get swarms(): SwarmInfo[] {\n return Array.from(this._swarms.values());\n }\n\n swarmJoined(swarm: Swarm) {\n const info: SwarmInfo = {\n id: swarm.instanceId,\n topic: swarm.topic,\n isActive: true,\n label: swarm.label,\n connections: []\n };\n\n this._swarms.set(swarm.instanceId, info);\n this.update.emit();\n\n swarm.connectionAdded.on((connection) => {\n const connectionInfo: ConnectionInfo = {\n state: ConnectionState.INITIAL,\n remotePeerId: connection.remoteId,\n sessionId: connection.sessionId,\n transport: connection.transport && Object.getPrototypeOf(connection.transport).constructor.name,\n protocolExtensions: connection.protocol.protocol?.extensionNames,\n events: []\n };\n info.connections!.push(connectionInfo);\n this.update.emit();\n\n connection.stateChanged.on((state) => {\n connectionInfo.state = state;\n connectionInfo.events!.push({\n type: EventType.CONNECTION_STATE_CHANGED,\n newState: state\n });\n this.update.emit();\n });\n\n connection.protocol.protocol?.error.on((error) => {\n connectionInfo.events!.push({\n type: EventType.PROTOCOL_ERROR,\n error: error.stack ?? error.message\n });\n this.update.emit();\n });\n connection.protocol.protocol?.extensionsInitialized.on(() => {\n connectionInfo.events!.push({\n type: EventType.PROTOCOL_EXTENSIONS_INITIALIZED\n });\n this.update.emit();\n });\n connection.protocol.protocol?.extensionsHandshake.on(() => {\n connectionInfo.events!.push({\n type: EventType.PROTOCOL_EXTENSIONS_HANDSHAKE\n });\n this.update.emit();\n });\n connection.protocol.protocol?.handshake.on(() => {\n connectionInfo.events!.push({\n type: EventType.PROTOCOL_HANDSHAKE\n });\n this.update.emit();\n });\n });\n }\n\n swarmLeft(swarm: Swarm) {\n this.getSwarmInfo(swarm.instanceId).isActive = false;\n this.update.emit();\n }\n}\n", "//\n// Copyright 2021 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event, synchronized } from '@dxos/async';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { SignalMessage, SignalMessenger } from '../signal';\nimport { Transport, TransportFactory } from '../transport';\nimport { WireProtocol } from '../wire-protocol';\n\n/**\n * State machine for each connection.\n */\nexport enum ConnectionState {\n /**\n * Initial state. Connection is registered but no attempt to connect to the remote peer has been performed.\n * Might mean that we are waiting for the answer signal from the remote peer.\n */\n INITIAL = 'INITIAL',\n\n /**\n * Trying to establish connection.\n */\n CONNECTING = 'CONNECTING',\n\n /**\n * Connection is established.\n */\n CONNECTED = 'CONNECTED',\n\n /**\n * Connection closed.\n */\n CLOSED = 'CLOSED'\n}\n\n/**\n * Represents a connection to a remote peer.\n * Owns a transport paired together with a wire-protocol.\n */\nexport class Connection {\n private _state: ConnectionState = ConnectionState.INITIAL;\n private _transport: Transport | undefined;\n private _bufferedSignals: Signal[] = [];\n\n readonly stateChanged = new Event<ConnectionState>();\n readonly errors = new ErrorStream();\n\n constructor(\n public readonly topic: PublicKey,\n public readonly ownId: PublicKey, // TODO(burdon): peerID?\n public readonly remoteId: PublicKey,\n public readonly sessionId: PublicKey,\n public readonly initiator: boolean,\n private readonly _signalMessaging: SignalMessenger,\n private readonly _protocol: WireProtocol,\n private readonly _transportFactory: TransportFactory\n ) {}\n\n get state() {\n return this._state;\n }\n\n get transport() {\n return this._transport;\n }\n\n get protocol() {\n return this._protocol;\n }\n\n /**\n * Create an underlying transport and prepares it for the connection.\n */\n // TODO(burdon): Make async?\n openConnection() {\n assert(this._state === ConnectionState.INITIAL, 'Invalid state.');\n this._changeState(ConnectionState.CONNECTING);\n\n // TODO(dmaretskyi): Initialize only after the transport has established connection.\n this._protocol.initialize().catch((err) => {\n this.errors.raise(err);\n });\n\n assert(!this._transport);\n this._transport = this._transportFactory.createTransport({\n initiator: this.initiator,\n stream: this._protocol.stream,\n sendSignal: async (signal) => {\n await this._signalMessaging.signal({\n author: this.ownId,\n recipient: this.remoteId,\n sessionId: this.sessionId,\n topic: this.topic,\n data: { signal }\n });\n }\n });\n\n this._transport.connected.once(() => {\n this._changeState(ConnectionState.CONNECTED);\n });\n\n this._transport.closed.once(() => {\n this._transport = undefined;\n this.close().catch((err) => this.errors.raise(err));\n });\n\n this._transport.errors.pipeTo(this.errors);\n\n // Replay signals that were received before transport was created.\n for (const signal of this._bufferedSignals) {\n void this._transport.signal(signal); // TODO(burdon): Remove async?\n }\n\n this._bufferedSignals = [];\n }\n\n @synchronized\n async close() {\n if (this._state === ConnectionState.CLOSED) {\n return;\n }\n\n log('closing...', { peerId: this.ownId });\n\n try {\n // Gracefully close the stream flushing any unsent data packets.\n await this._protocol.destroy();\n } catch (err: any) {\n log.catch(err);\n }\n\n try {\n // After the transport is closed streams are disconnected.\n await this._transport?.destroy();\n } catch (err: any) {\n log.catch(err);\n }\n\n log('closed', { peerId: this.ownId });\n this._changeState(ConnectionState.CLOSED);\n }\n\n async signal(msg: SignalMessage) {\n assert(msg.sessionId);\n if (!msg.sessionId.equals(this.sessionId)) {\n log('dropping signal for incorrect session id');\n return;\n }\n assert(msg.data.signal);\n assert(msg.author?.equals(this.remoteId));\n assert(msg.recipient?.equals(this.ownId));\n\n if (this._state === ConnectionState.INITIAL) {\n log('buffered signal', { peerId: this.ownId, remoteId: this.remoteId, msg: msg.data });\n this._bufferedSignals.push(msg.data.signal);\n return;\n }\n\n assert(this._transport, 'Connection not ready to accept signals.');\n log('received signal', { peerId: this.ownId, remoteId: this.remoteId, msg: msg.data });\n await this._transport.signal(msg.data.signal);\n }\n\n private _changeState(state: ConnectionState): void {\n assert(state !== this._state, 'Already in this state.');\n this._state = state;\n this.stateChanged.emit(state);\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event, scheduleTask, sleep } from '@dxos/async';\nimport { Context } from '@dxos/context';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log, logInfo } from '@dxos/log';\nimport { Messenger } from '@dxos/messaging';\nimport { SwarmEvent } from '@dxos/protocols/proto/dxos/mesh/signal';\nimport { Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap, isNotNullOrUndefined } from '@dxos/util';\n\nimport { MessageRouter, OfferMessage, SignalMessage } from '../signal';\nimport { SwarmController, Topology } from '../topology';\nimport { TransportFactory } from '../transport';\nimport { Topic } from '../types';\nimport { WireProtocolProvider } from '../wire-protocol';\nimport { Connection } from './connection';\nimport { Peer } from './peer';\n\nconst INITIATION_DELAY = 100;\n\n// TODO(burdon): Factor out.\nconst getClassName = (obj: any) => Object.getPrototypeOf(obj).constructor.name;\n\n/**\n * A single peer's view of the swarm.\n * Manages a set of connections implemented by simple-peer instances.\n * Routes signal events and maintains swarm topology.\n */\nexport class Swarm {\n private readonly _peers = new ComplexMap<PublicKey, Peer>(PublicKey.hash);\n\n private readonly _swarmMessenger: MessageRouter;\n\n private _ctx = new Context();\n\n /**\n * Unique id of the swarm, local to the current peer, generated when swarm is joined.\n */\n @logInfo\n readonly instanceId = PublicKey.random();\n\n /**\n * New connection to a peer is started.\n * @internal\n */\n readonly connectionAdded = new Event<Connection>();\n\n /**\n * Connection to a peer is dropped.\n * @internal\n */\n readonly disconnected = new Event<PublicKey>();\n\n /**\n * Connection is established to a new peer.\n * @internal\n */\n readonly connected = new Event<PublicKey>();\n\n readonly errors = new ErrorStream();\n\n // TODO(burdon): Swarm => Peer.create/destroy =< Connection.open/close\n\n // TODO(burdon): Split up properties.\n constructor(\n private readonly _topic: PublicKey,\n private readonly _ownPeerId: PublicKey,\n private _topology: Topology,\n private readonly _protocolProvider: WireProtocolProvider,\n private readonly _messenger: Messenger,\n private readonly _transportFactory: TransportFactory,\n private readonly _label: string | undefined\n ) {\n log('creating swarm', { peerId: _ownPeerId });\n _topology.init(this._getSwarmController());\n\n this._swarmMessenger = new MessageRouter({\n sendMessage: async (msg) => await this._messenger.sendMessage(msg),\n onSignal: async (msg) => await this.onSignal(msg),\n onOffer: async (msg) => await this.onOffer(msg),\n topic: this._topic\n });\n\n this._messenger\n .listen({\n peerId: this._ownPeerId,\n payloadType: 'dxos.mesh.swarm.SwarmMessage',\n onMessage: async (message) => await this._swarmMessenger.receiveMessage(message)\n })\n .catch((error) => log.catch(error));\n }\n\n get connections() {\n return Array.from(this._peers.values())\n .map((peer) => peer.connection)\n .filter(isNotNullOrUndefined);\n }\n\n @logInfo\n get ownPeerId() {\n return this._ownPeerId;\n }\n\n /**\n * Custom label assigned to this swarm. Used in devtools to display human-readable names for swarms.\n */\n get label(): string | undefined {\n return this._label;\n }\n\n @logInfo\n get topic(): Topic {\n return this._topic;\n }\n\n // TODO(burdon): async open?\n async destroy() {\n log('destroying...');\n await this._ctx.dispose();\n await this._topology.destroy();\n await Promise.all(Array.from(this._peers.keys()).map((key) => this._destroyPeer(key)));\n log('destroyed');\n }\n\n async setTopology(topology: Topology) {\n if (topology === this._topology) {\n return;\n }\n log('setting topology', {\n previous: getClassName(this._topology),\n topology: getClassName(topology)\n });\n\n await this._topology.destroy();\n this._topology = topology;\n this._topology.init(this._getSwarmController());\n this._topology.update();\n }\n\n private _getOrCreatePeer(peerId: PublicKey): Peer {\n let peer = this._peers.get(peerId);\n if (!peer) {\n peer = new Peer(\n peerId,\n this._topic,\n this._ownPeerId,\n this._swarmMessenger,\n this._protocolProvider,\n this._transportFactory,\n {\n onInitiated: (connection) => {\n this.connectionAdded.emit(connection);\n },\n onConnected: () => {\n this.connected.emit(peerId);\n },\n onDisconnected: async () => {\n if (!peer!.advertizing) {\n await this._destroyPeer(peer!.id);\n }\n\n this.disconnected.emit(peerId);\n this._topology.update();\n },\n onRejected: () => {\n // If the peer rejected our connection remove it from the set of candidates.\n // TODO(dmaretskyi): Set flag instead.\n if (this._peers.has(peerId)) {\n void this._destroyPeer(peerId);\n }\n },\n onAccepted: () => {\n this._topology.update();\n },\n onOffer: (remoteId) => {\n return this._topology.onOffer(remoteId);\n }\n }\n );\n this._peers.set(peerId, peer);\n }\n\n return peer;\n }\n\n private async _destroyPeer(peerId: PublicKey) {\n assert(this._peers.has(peerId));\n await this._peers.get(peerId)!.destroy();\n this._peers.delete(peerId);\n }\n\n onSwarmEvent(swarmEvent: SwarmEvent) {\n log('swarm event', { swarmEvent }); // TODO(burdon): Stringify.\n if (this._ctx.disposed) {\n log.warn('ignored for destroyed swarm');\n return;\n }\n\n if (swarmEvent.peerAvailable) {\n const peerId = PublicKey.from(swarmEvent.peerAvailable.peer);\n log('new peer', { peerId });\n if (!peerId.equals(this._ownPeerId)) {\n const peer = this._getOrCreatePeer(peerId);\n peer.advertizing = true;\n }\n } else if (swarmEvent.peerLeft) {\n const peer = this._peers.get(PublicKey.from(swarmEvent.peerLeft.peer));\n if (peer) {\n peer.advertizing = false;\n if (!peer.connection) {\n void this._destroyPeer(peer.id);\n }\n }\n }\n\n this._topology.update();\n }\n\n async onOffer(message: OfferMessage): Promise<Answer> {\n log('offer', { message });\n if (this._ctx.disposed) {\n log.info('ignored for destroyed swarm');\n return { accept: false };\n }\n\n // Id of the peer offering us the connection.\n assert(message.author);\n if (!message.recipient?.equals(this._ownPeerId)) {\n log('rejecting offer with incorrect peerId', { message });\n return { accept: false };\n }\n if (!message.topic?.equals(this._topic)) {\n log('rejecting offer with incorrect topic', { message });\n return { accept: false };\n }\n\n const peer = this._getOrCreatePeer(message.author);\n const answer = await peer.onOffer(message);\n this._topology.update();\n return answer;\n }\n\n async onSignal(message: SignalMessage): Promise<void> {\n log('signal', { message });\n if (this._ctx.disposed) {\n log.info('ignored for destroyed swarm');\n return;\n }\n assert(\n message.recipient?.equals(this._ownPeerId),\n `Invalid signal peer id expected=${this.ownPeerId}, actual=${message.recipient}`\n );\n assert(message.topic?.equals(this._topic));\n assert(message.author);\n\n const peer = this._getOrCreatePeer(message.author);\n await peer.onSignal(message);\n }\n\n private _getSwarmController(): SwarmController {\n return {\n getState: () => ({\n ownPeerId: this._ownPeerId,\n connected: Array.from(this._peers.values())\n .filter((peer) => peer.connection)\n .map((peer) => peer.id),\n candidates: Array.from(this._peers.values())\n .filter((peer) => !peer.connection && peer.advertizing)\n .map((peer) => peer.id)\n }),\n connect: (peer) => {\n if (this._ctx.disposed) {\n return;\n }\n\n // Run in a separate non-blocking task.\n scheduleTask(this._ctx, async () => {\n try {\n await this._initiateConnection(peer);\n } catch (err: any) {\n log.warn('initiation error', err);\n }\n });\n },\n disconnect: async (peer) => {\n if (this._ctx.disposed) {\n return;\n }\n\n // Run in a separate non-blocking task.\n scheduleTask(this._ctx, async () => {\n await this._closeConnection(peer);\n this._topology.update();\n });\n }\n };\n }\n\n /**\n * Creates a connection then sends message over signal network.\n */\n private async _initiateConnection(remoteId: PublicKey) {\n // It is likely that the other peer will also try to connect to us at the same time.\n // If our peerId is higher, we will wait for a bit so that other peer has a chance to connect first.\n if (remoteId.toHex() < this._ownPeerId.toHex()) {\n log('initiation delay', { remoteId });\n await sleep(INITIATION_DELAY);\n }\n if (this._ctx.disposed) {\n return;\n }\n\n const peer = this._getOrCreatePeer(remoteId);\n\n if (peer.connection) {\n // Do nothing if peer is already connected.\n return;\n }\n\n log('initiating connection...', { remoteId });\n await peer.initiateConnection();\n this._topology.update();\n log('initiated', { remoteId });\n }\n\n private async _closeConnection(peerId: PublicKey) {\n const peer = this._peers.get(peerId);\n if (!peer) {\n return;\n }\n\n await peer.closeConnection();\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Any } from '@dxos/codec-protobuf';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { schema } from '@dxos/protocols';\nimport { Answer, SwarmMessage } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap, MakeOptional } from '@dxos/util';\n\nimport { OfferMessage, SignalMessage, SignalMessenger } from './signal-messenger';\n\ninterface OfferRecord {\n resolve: (answer: Answer) => void;\n reject: (error?: Error) => void;\n}\n\ninterface MessageRouterOptions {\n sendMessage: (params: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n onOffer: (message: OfferMessage) => Promise<Answer>;\n onSignal: (message: SignalMessage) => Promise<void>;\n topic: PublicKey;\n}\n\n/**\n * Adds offer/answer and signal interfaces.\n */\nexport class MessageRouter implements SignalMessenger {\n private readonly _onSignal: (message: SignalMessage) => Promise<void>;\n private readonly _sendMessage: (msg: { author: PublicKey; recipient: PublicKey; payload: Any }) => Promise<void>;\n\n private readonly _onOffer: (message: OfferMessage) => Promise<Answer>;\n private readonly _topic: PublicKey;\n\n private readonly _offerRecords: ComplexMap<PublicKey, OfferRecord> = new ComplexMap((key) => key.toHex());\n\n constructor({ sendMessage, onSignal, onOffer, topic }: MessageRouterOptions) {\n this._sendMessage = sendMessage;\n this._onSignal = onSignal;\n this._onOffer = onOffer;\n this._topic = topic;\n }\n\n async receiveMessage({\n author,\n recipient,\n payload\n }: {\n author: PublicKey;\n recipient: PublicKey;\n payload: Any;\n }): Promise<void> {\n if (payload.type_url !== 'dxos.mesh.swarm.SwarmMessage') {\n // Ignore not swarm messages.\n return;\n }\n const message: SwarmMessage = schema.getCodecForType('dxos.mesh.swarm.SwarmMessage').decode(payload.value);\n\n if (!this._topic.equals(message.topic)) {\n // Ignore messages from wrong topics.\n return;\n }\n\n log('received', { from: author, to: recipient, msg: message });\n\n if (message.data?.offer) {\n await this._handleOffer({ author, recipient, message });\n } else if (message.data?.answer) {\n await this._resolveAnswers(message);\n } else if (message.data?.signal) {\n await this._handleSignal({ author, recipient, message });\n }\n }\n\n async signal(message: SignalMessage): Promise<void> {\n assert(message.data?.signal);\n await this._sendReliableMessage({\n author: message.author,\n recipient: message.recipient,\n message\n });\n }\n\n async offer(message: OfferMessage): Promise<Answer> {\n const networkMessage: SwarmMessage = {\n ...message,\n messageId: PublicKey.random()\n };\n return new Promise<Answer>((resolve, reject) => {\n this._offerRecords.set(networkMessage.messageId!, { resolve, reject });\n return this._sendReliableMessage({\n author: message.author,\n recipient: message.recipient,\n message: networkMessage\n });\n });\n }\n\n private async _sendReliableMessage({\n author,\n recipient,\n message\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: MakeOptional<SwarmMessage, 'messageId'>;\n }): Promise<void> {\n const networkMessage: SwarmMessage = {\n ...message,\n // Setting unique message_id if it not specified yet.\n messageId: message.messageId ?? PublicKey.random()\n };\n\n log('sending', { from: author, to: recipient, msg: networkMessage });\n await this._encodeAndSend({ author, recipient, message: networkMessage });\n }\n\n private async _encodeAndSend({\n author,\n recipient,\n message\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: SwarmMessage;\n }) {\n await this._sendMessage({\n author,\n recipient,\n payload: {\n type_url: 'dxos.mesh.swarm.SwarmMessage',\n value: schema.getCodecForType('dxos.mesh.swarm.SwarmMessage').encode(message)\n }\n });\n }\n\n private async _resolveAnswers(message: SwarmMessage): Promise<void> {\n assert(message.data?.answer?.offerMessageId, 'No offerMessageId');\n const offerRecord = this._offerRecords.get(message.data.answer.offerMessageId);\n if (offerRecord) {\n this._offerRecords.delete(message.data.answer.offerMessageId);\n assert(message.data?.answer, 'No answer');\n log('resolving', { answer: message.data.answer });\n offerRecord.resolve(message.data.answer);\n }\n }\n\n private async _handleOffer({\n author,\n recipient,\n message\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: SwarmMessage;\n }): Promise<void> {\n assert(message.data.offer, 'No offer');\n const offerMessage: OfferMessage = {\n author,\n recipient,\n ...message,\n data: { offer: message.data.offer }\n };\n const answer = await this._onOffer(offerMessage);\n answer.offerMessageId = message.messageId;\n await this._sendReliableMessage({\n author: recipient,\n recipient: author,\n message: {\n topic: message.topic,\n sessionId: message.sessionId,\n data: { answer }\n }\n });\n }\n\n private async _handleSignal({\n author,\n recipient,\n message\n }: {\n author: PublicKey;\n recipient: PublicKey;\n message: SwarmMessage;\n }): Promise<void> {\n assert(message.messageId);\n assert(message.data.signal, 'No Signal');\n const signalMessage: SignalMessage = {\n author,\n recipient,\n ...message,\n data: { signal: message.data.signal }\n };\n\n await this._onSignal(signalMessage);\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { synchronized } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Answer } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { OfferMessage, SignalMessage, SignalMessenger } from '../signal';\nimport { TransportFactory } from '../transport';\nimport { WireProtocolProvider } from '../wire-protocol';\nimport { Connection, ConnectionState } from './connection';\n\ninterface PeerCallbacks {\n /**\n * Connection attempt initiated.\n */\n onInitiated: (connection: Connection) => void;\n\n /**\n * Connection opened.\n */\n onConnected: () => void;\n\n /**\n * Connection closed.\n */\n onDisconnected: () => void;\n\n /**\n * Peer accepted our offer to connect.\n */\n onAccepted: () => void;\n\n /**\n * Peer rejected our offer to connect.\n */\n onRejected: () => void;\n\n /**\n * Returns true if the remote peer's offer should be accepted.\n */\n onOffer: (remoteId: PublicKey) => Promise<boolean>;\n}\n\n/**\n * State of remote peer during the lifetime of a swarm connection.\n * Can open and close multiple connections to the remote peer.\n */\nexport class Peer {\n public connection?: Connection;\n\n /**\n * Whether the peer is currently advertizing itself on the signal-network.\n */\n public advertizing = false;\n\n public initiating = false;\n\n constructor(\n public readonly id: PublicKey,\n public readonly topic: PublicKey,\n public readonly localPeerId: PublicKey,\n private readonly _signalMessaging: SignalMessenger,\n private readonly _protocolProvider: WireProtocolProvider,\n private readonly _transportFactory: TransportFactory,\n private readonly _callbacks: PeerCallbacks\n ) {}\n\n /**\n * Respond to remote offer.\n */\n async onOffer(message: OfferMessage): Promise<Answer> {\n const remoteId = message.author;\n\n // Check if we are already trying to connect to that peer.\n if (this.connection || this.initiating) {\n // Peer with the highest Id closes its connection, and accepts remote peer's offer.\n if (remoteId.toHex() < this.localPeerId.toHex()) {\n log.info(\"closing local connection and accepting remote peer's offer\", {\n id: this.id,\n topic: this.topic,\n peerId: this.localPeerId\n });\n\n if (this.connection) {\n // Close our connection and accept remote peer's connection.\n await this.closeConnection();\n }\n } else {\n // Continue with our origination attempt, the remote peer will close it's connection and accept ours.\n return { accept: false };\n }\n }\n\n if (await this._callbacks.onOffer(remoteId)) {\n if (!this.connection) {\n // Connection might have been already established.\n assert(message.sessionId);\n const connection = this._createConnection(false, message.sessionId);\n try {\n connection.openConnection();\n } catch (err: any) {\n log.warn('connection error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, err });\n // Calls `onStateChange` with CLOSED state.\n await this.closeConnection();\n }\n\n return { accept: true };\n }\n }\n return { accept: false };\n }\n\n /**\n * Initiate a connection to the remote peer.\n */\n async initiateConnection() {\n assert(!this.initiating, 'Initiation in progress.');\n assert(!this.connection, 'Already connected.');\n const sessionId = PublicKey.random();\n log('initiating...', { id: this.id, topic: this.topic, peerId: this.id, sessionId });\n const connection = this._createConnection(true, sessionId);\n this.initiating = true;\n\n try {\n const answer = await this._signalMessaging.offer({\n author: this.localPeerId,\n recipient: this.id,\n sessionId,\n topic: this.topic,\n data: { offer: {} }\n });\n log('received', { answer, topic: this.topic, ownId: this.localPeerId, remoteId: this.id });\n if (connection.state !== ConnectionState.INITIAL) {\n log('ignoring response');\n return;\n }\n\n if (!answer.accept) {\n this._callbacks.onRejected();\n return;\n }\n connection.openConnection();\n this._callbacks.onAccepted();\n } catch (err: any) {\n log.warn('initiation error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, err });\n // Calls `onStateChange` with CLOSED state.\n await this.closeConnection();\n throw err;\n } finally {\n this.initiating = false;\n }\n }\n\n /**\n * Create new connection.\n * Either we're initiating a connection or creating one in response to an offer from the other peer.\n */\n private _createConnection(initiator: boolean, sessionId: PublicKey) {\n log('creating connection', {\n topic: this.topic,\n peerId: this.localPeerId,\n remoteId: this.id,\n initiator,\n sessionId\n });\n assert(!this.connection, 'Already connected.');\n\n const connection = new Connection(\n this.topic,\n this.localPeerId,\n this.id,\n sessionId,\n initiator,\n this._signalMessaging,\n // TODO(dmaretskyi): Init only when connection is established.\n this._protocolProvider({ initiator, localPeerId: this.localPeerId, remotePeerId: this.id, topic: this.topic }),\n this._transportFactory\n );\n this._callbacks.onInitiated(connection);\n connection.stateChanged.on((state) => {\n switch (state) {\n case ConnectionState.CONNECTED: {\n this._callbacks.onConnected();\n break;\n }\n\n case ConnectionState.CLOSED: {\n log('connection closed', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, initiator });\n assert(this.connection === connection, 'Connection mismatch (race condition).');\n\n this.connection = undefined;\n this._callbacks.onDisconnected();\n break;\n }\n }\n });\n connection.errors.handle((err) => {\n log.warn('connection error', { topic: this.topic, peerId: this.localPeerId, remoteId: this.id, initiator, err });\n\n // Calls `onStateChange` with CLOSED state.\n void this.closeConnection().catch(() => {\n log.catch(err);\n });\n });\n\n this.connection = connection;\n\n return connection;\n }\n\n async closeConnection() {\n if (!this.connection) {\n return;\n }\n const connection = this.connection;\n log('closing...', { peerId: this.id, sessionId: connection.sessionId });\n\n // Triggers `onStateChange` callback which will clean up the connection.\n // Won't throw.\n await connection.close();\n\n log('closed', { peerId: this.id, sessionId: connection.sessionId });\n }\n\n async onSignal(message: SignalMessage) {\n if (!this.connection) {\n log('dropping signal message for non-existent connection', { message });\n return;\n }\n await this.connection.signal(message);\n }\n\n @synchronized\n async destroy() {\n log('Destroying peer', { peerId: this.id, topic: this.topic });\n\n // Won't throw.\n await this?.connection?.close();\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport { Event, EventSubscriptions } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { PresencePlugin } from '@dxos/protocol-plugin-presence';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionState } from './connection';\nimport { Swarm } from './swarm';\n\n/**\n * State of the connection to the remote peer with additional info derived from network mapping.\n */\nexport type PeerState = ConnectionState | 'INDIRECTLY_CONNECTED' | 'ME';\n\n/**\n * Information about remote peer, directly or indirectly connected.\n */\nexport interface PeerInfo {\n id: PublicKey;\n state: PeerState;\n connections: PublicKey[];\n}\n\ntype Unsubscribe = () => void;\n\nexport class SwarmMapper {\n private readonly _subscriptions = new EventSubscriptions();\n private readonly _connectionSubscriptions = new ComplexMap<PublicKey, Unsubscribe>(PublicKey.hash);\n private readonly _peers = new ComplexMap<PublicKey, PeerInfo>(PublicKey.hash);\n\n readonly mapUpdated = new Event<PeerInfo[]>();\n\n get peers(): PeerInfo[] {\n return Array.from(this._peers.values());\n }\n\n // prettier-ignore\n constructor(\n private readonly _swarm: Swarm,\n private readonly _presence: PresencePlugin | undefined\n ) {\n this._subscriptions.add(\n _swarm.connectionAdded.on((connection) => {\n this._update();\n this._connectionSubscriptions.set(\n connection.remoteId,\n connection.stateChanged.on(() => {\n this._update();\n })\n );\n })\n );\n\n this._subscriptions.add(\n _swarm.disconnected.on((peerId) => {\n this._connectionSubscriptions.get(peerId)?.();\n this._connectionSubscriptions.delete(peerId);\n this._update();\n })\n );\n\n if (_presence) {\n this._subscriptions.add(_presence.graphUpdated.on(() => {\n this._update();\n }));\n }\n\n // TODO(burdon): Do not call from constructor.\n this._update();\n }\n\n private _update() {\n log('updating swarm');\n\n this._peers.clear();\n this._peers.set(this._swarm.ownPeerId, {\n id: this._swarm.ownPeerId,\n state: 'ME', // TODO(burdon): Enum (rename \"local\").\n connections: []\n });\n\n for (const connection of this._swarm.connections) {\n this._peers.set(connection.remoteId, {\n id: connection.remoteId,\n state: connection.state,\n connections: [this._swarm.ownPeerId]\n });\n }\n\n if (this._presence) {\n this._presence.graph.forEachNode((node: any) => {\n const id = PublicKey.fromHex(node.id);\n if (this._peers.has(id)) {\n return;\n }\n\n this._peers.set(id, {\n id,\n state: 'INDIRECTLY_CONNECTED',\n connections: []\n });\n });\n\n this._presence.graph.forEachLink((link: any) => {\n const from = PublicKey.from(link.fromId);\n const to = PublicKey.from(link.toId);\n // Ignore connections to self, they are already handled.\n if (!from.equals(this._swarm.ownPeerId) && !to.equals(this._swarm.ownPeerId)) {\n this._peers.get(from)!.connections.push(to);\n }\n });\n }\n\n log('graph changed', {\n directConnections: this._swarm.connections.length,\n totalPeersInSwarm: this._peers.size\n });\n\n this.mapUpdated.emit(Array.from(this._peers.values()));\n }\n\n // TODO(burdon): Async open/close.\n destroy() {\n Array.from(this._connectionSubscriptions.values()).forEach((cb) => cb());\n this._subscriptions.clear();\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event } from '@dxos/async';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Messenger, SignalManager } from '@dxos/messaging';\nimport { ComplexMap } from '@dxos/util';\n\nimport { ConnectionLog } from './connection-log';\nimport { SignalConnection } from './signal';\nimport { Swarm, SwarmMapper } from './swarm';\nimport { Topology } from './topology';\nimport { TransportFactory } from './transport';\nimport { WireProtocolProvider } from './wire-protocol';\n\n/**\n * Represents a single connection to a remote peer.\n */\nexport type SwarmConnection = {\n close(): Promise<void>;\n};\n\n// TODO(burdon): Add timeout.\nexport type SwarmOptions = {\n /**\n * Swarm topic.\n */\n topic: PublicKey;\n\n /**\n * This node's peer id.\n */\n peerId: PublicKey;\n\n /**\n * Protocol to use for every connection.\n */\n protocolProvider: WireProtocolProvider;\n\n /**\n * Requested topology. Must be a new instance for every swarm.\n */\n topology?: Topology;\n\n /**\n * Presence plugin for network mapping, if exists.\n */\n // TODO(dmaretskyi): Remove this dependency.\n presence?: any;\n\n /**\n * Custom label assigned to this swarm.\n * Used in devtools to display human-readable names for swarms.\n */\n label?: string;\n};\n\nexport type NetworkManagerOptions = {\n transportFactory: TransportFactory;\n signalManager: SignalManager;\n log?: boolean; // Log to devtools.\n};\n\n/**\n * Manages connection to the swarm.\n */\n// TODO(dmaretskyi): Rename SwarmManager.\nexport class NetworkManager {\n private readonly _swarms = new ComplexMap<PublicKey, Swarm>(PublicKey.hash);\n private readonly _mappers = new ComplexMap<PublicKey, SwarmMapper>(PublicKey.hash);\n\n private readonly _transportFactory: TransportFactory;\n private readonly _signalManager: SignalManager;\n private readonly _messenger: Messenger;\n private readonly _signalConnection: SignalConnection;\n private readonly _connectionLog?: ConnectionLog;\n\n public readonly topicsUpdated = new Event<void>();\n\n constructor({ transportFactory, signalManager, log }: NetworkManagerOptions) {\n this._transportFactory = transportFactory;\n\n // Listen for signal manager events.\n this._signalManager = signalManager;\n this._signalManager.swarmEvent.on(({ topic, swarmEvent: event }) => this._swarms.get(topic)?.onSwarmEvent(event));\n this._messenger = new Messenger({ signalManager: this._signalManager });\n this._signalConnection = {\n join: (opts) => this._signalManager.join(opts),\n leave: (opts) => this._signalManager.leave(opts)\n };\n\n // TODO(burdon): Inject listener (generic pattern).\n if (log) {\n this._connectionLog = new ConnectionLog();\n }\n }\n\n // TODO(burdon): Remove access (Devtools only).\n get connectionLog() {\n return this._connectionLog;\n }\n\n // TODO(burdon): Remove access (Devtools only).\n get signalManager() {\n return this._signalManager;\n }\n\n // TODO(burdon): Reconcile with \"discovery_key\".\n get topics() {\n return Array.from(this._swarms.keys());\n }\n\n getSwarmMap(topic: PublicKey): SwarmMapper | undefined {\n return this._mappers.get(topic);\n }\n\n getSwarm(topic: PublicKey): Swarm | undefined {\n return this._swarms.get(topic);\n }\n\n async close() {\n for (const topic of this._swarms.keys()) {\n await this.leaveSwarm(topic).catch((err) => {\n log(err);\n });\n }\n\n await this._signalManager.destroy();\n }\n\n /**\n * Join the swarm.\n */\n // TODO(burdon): Join/Open? Swarm abstraction?\n async joinSwarm({\n topic,\n peerId,\n topology,\n protocolProvider: protocol,\n presence,\n label\n }: SwarmOptions): Promise<SwarmConnection> {\n assert(PublicKey.isPublicKey(topic));\n assert(PublicKey.isPublicKey(peerId));\n assert(topology);\n assert(typeof protocol === 'function');\n if (this._swarms.has(topic)) {\n throw new Error(`Already connected to swarm: ${PublicKey.from(topic)}`);\n }\n\n log('joining', { topic: PublicKey.from(topic), peerId, topology: topology.toString() }); // TODO(burdon): Log peerId.\n const swarm = new Swarm(topic, peerId, topology, protocol, this._messenger, this._transportFactory, label);\n swarm.errors.handle((error) => {\n log('swarm error', { error });\n });\n\n this._swarms.set(topic, swarm);\n this._signalConnection.join({ topic, peerId }).catch((error) => log.catch(error));\n this._mappers.set(topic, new SwarmMapper(swarm, presence));\n\n this.topicsUpdated.emit();\n this._connectionLog?.swarmJoined(swarm);\n log('joined', { topic: PublicKey.from(topic), count: this._swarms.size });\n\n return {\n close: () => this.leaveSwarm(topic)\n };\n }\n\n /**\n * Close the connection.\n */\n async leaveSwarm(topic: PublicKey) {\n if (!this._swarms.has(topic)) {\n log.warn('swarm not open', { topic: PublicKey.from(topic) });\n return;\n }\n\n log('leaving', { topic: PublicKey.from(topic) });\n const swarm = this._swarms.get(topic)!;\n await this._signalConnection.leave({ topic, peerId: swarm.ownPeerId });\n\n const map = this._mappers.get(topic)!;\n map.destroy();\n this._mappers.delete(topic);\n\n this._connectionLog?.swarmLeft(swarm);\n\n await swarm.destroy();\n this._swarms.delete(topic);\n\n await this.topicsUpdated.emit();\n log('left', { topic: PublicKey.from(topic), count: this._swarms.size });\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { discoveryKey } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Extension, Protocol } from '@dxos/mesh-protocol';\n\ninterface ProtocolFactoryOptions {\n plugins: any[];\n getTopics: () => Buffer[];\n session: Record<string, any>;\n}\n\n/**\n * @deprecated Replaced by WireProtocolProvider.\n */\nexport type MeshProtocolProvider = (params: { channel: Buffer; initiator: boolean }) => Protocol;\n\n/**\n * Returns a function that takes a channel parameter, returns a Protocol object\n * with its context set to channel, plugins from plugins parameter and session\n * set to session parameter.\n *\n * @param plugins array of Protocol plugin objects to add to created Protocol objects\n * @param getTopics retrieve a list of known topic keys to encrypt by public key.\n * @deprecated Use `createProtocolFactory`.\n */\nexport const protocolFactory = ({\n session = {},\n plugins = [],\n getTopics\n}: ProtocolFactoryOptions): MeshProtocolProvider => {\n assert(getTopics);\n\n // eslint-disable-next-line no-unused-vars\n return ({ channel, initiator }) => {\n log('creating protocol');\n const protocol = new Protocol({\n streamOptions: { live: true },\n discoveryToPublicKey: (dk) => {\n const publicKey = getTopics().find((topic) => discoveryKey(topic).equals(dk));\n if (publicKey) {\n protocol.setContext({ topic: PublicKey.stringify(publicKey) });\n }\n\n assert(publicKey, 'PublicKey not found in discovery.');\n return publicKey;\n },\n initiator,\n userSession: session,\n discoveryKey: channel\n });\n\n protocol.setExtensions(plugins.map((plugin) => plugin.createExtension())).init();\n return protocol;\n };\n};\n\nexport interface Plugin {\n createExtension: () => Extension;\n}\n\nexport const createProtocolFactory = (topic: PublicKey, peerId: PublicKey, plugins: Plugin[]) =>\n protocolFactory({\n getTopics: () => [topic.asBuffer()],\n session: { peerId: PublicKey.stringify(peerId.asBuffer()) },\n plugins\n });\n\n/**\n * Creates a ProtocolProvider for simple transport connections with only one protocol plugin.\n * @deprecated Use `createProtocolFactory`.\n */\nexport const transportProtocolProvider = (\n rendezvousKey: Buffer,\n peerId: Buffer,\n protocolPlugin: any\n): MeshProtocolProvider => {\n return protocolFactory({\n getTopics: () => [rendezvousKey],\n session: { peerId: PublicKey.stringify(peerId) },\n plugins: [protocolPlugin]\n });\n};\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { PublicKey } from '@dxos/keys';\n\nimport { SwarmController, Topology } from './topology';\n\nexport class FullyConnectedTopology implements Topology {\n private _controller?: SwarmController;\n\n toString() {\n return 'FullyConnectedTopology';\n }\n\n init(controller: SwarmController): void {\n assert(!this._controller, 'Already initialized');\n this._controller = controller;\n }\n\n update(): void {\n assert(this._controller, 'Not initialized');\n const { candidates: discovered } = this._controller.getState();\n for (const peer of discovered) {\n // TODO(burdon): Back-off.\n this._controller.connect(peer);\n }\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n return true;\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\nimport distance from 'xor-distance';\n\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { SwarmController, Topology } from './topology';\n\nexport interface MMSTTopologyOptions {\n /**\n * Number of connections the peer will originate by itself.\n */\n originateConnections?: number;\n\n /**\n * Maximum number of connections allowed, all other connections will be dropped.\n */\n maxPeers?: number;\n\n /**\n * Size of random sample from which peer candidates are selected.\n */\n sampleSize?: number;\n}\n\nexport class MMSTTopology implements Topology {\n private readonly _originateConnections: number;\n private readonly _maxPeers: number;\n private readonly _sampleSize: number;\n\n private _controller?: SwarmController;\n\n private _sampleCollected = false;\n\n constructor({ originateConnections = 2, maxPeers = 4, sampleSize = 10 }: MMSTTopologyOptions = {}) {\n this._originateConnections = originateConnections;\n this._maxPeers = maxPeers;\n this._sampleSize = sampleSize;\n }\n\n init(controller: SwarmController): void {\n assert(!this._controller, 'Already initialized');\n this._controller = controller;\n }\n\n update(): void {\n assert(this._controller, 'Not initialized');\n const { connected, candidates } = this._controller.getState();\n // Run the algorithms if we have first candidates, ran it before, or have more connections than needed.\n if (this._sampleCollected || connected.length > this._maxPeers || candidates.length > 0) {\n log('Running the algorithm.');\n this._sampleCollected = true;\n this._runAlgorithm();\n }\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n assert(this._controller, 'Not initialized');\n const { connected } = this._controller.getState();\n const accept = connected.length < this._maxPeers;\n log(`Offer ${peer} accept=${accept}`);\n return accept;\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n\n private _runAlgorithm() {\n assert(this._controller, 'Not initialized');\n const { connected, candidates, ownPeerId } = this._controller.getState();\n\n if (connected.length > this._maxPeers) {\n // Disconnect extra peers.\n const sorted = sortByXorDistance(connected, ownPeerId)\n .reverse()\n .slice(0, this._maxPeers - connected.length);\n for (const peer of sorted) {\n log(`Disconnect ${peer}.`);\n this._controller.disconnect(peer);\n }\n } else if (connected.length < this._originateConnections) {\n // Connect new peers to reach desired quota.\n const sample = candidates.sort(() => Math.random() - 0.5).slice(0, this._sampleSize);\n const sorted = sortByXorDistance(sample, ownPeerId).slice(0, this._originateConnections - connected.length);\n for (const peer of sorted) {\n log(`Connect ${peer}.`);\n this._controller.connect(peer);\n }\n }\n }\n\n toString() {\n return 'MMSTTopology';\n }\n}\n\nconst sortByXorDistance = (keys: PublicKey[], reference: PublicKey): PublicKey[] =>\n keys.sort((a, b) =>\n distance.gt(distance(a.asBuffer(), reference.asBuffer()), distance(b.asBuffer(), reference.asBuffer()))\n );\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\n\nimport { SwarmController, Topology } from './topology';\n\nexport class StarTopology implements Topology {\n private _controller?: SwarmController;\n\n // prettier-ignore\n constructor(\n private readonly _centralPeer: PublicKey\n ) {}\n\n toString() {\n return `StarTopology(${this._centralPeer.truncate()})`;\n }\n\n init(controller: SwarmController): void {\n assert(!this._controller, 'Already initialized.');\n this._controller = controller;\n }\n\n update(): void {\n assert(this._controller, 'Not initialized.');\n const { candidates, connected, ownPeerId } = this._controller.getState();\n if (!ownPeerId.equals(this._centralPeer)) {\n log('leaf peer dropping all connections apart from central peer.');\n\n // Drop all connections other than central peer.\n for (const peer of connected) {\n if (!peer.equals(this._centralPeer)) {\n log('dropping connection', { peer });\n this._controller.disconnect(peer);\n }\n }\n }\n\n for (const peer of candidates) {\n // Connect to central peer.\n if (peer.equals(this._centralPeer) || ownPeerId.equals(this._centralPeer)) {\n log('connecting to peer', { peer });\n this._controller.connect(peer);\n }\n }\n }\n\n async onOffer(peer: PublicKey): Promise<boolean> {\n assert(this._controller, 'Not initialized.');\n const { ownPeerId } = this._controller.getState();\n log('offer', {\n peer,\n isCentral: peer.equals(this._centralPeer),\n isSelfCentral: ownPeerId.equals(this._centralPeer)\n });\n return ownPeerId.equals(this._centralPeer) || peer.equals(this._centralPeer);\n }\n\n async destroy(): Promise<void> {\n // Nothing to do.\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\nimport { Transform } from 'node:stream';\n\nimport { Event, Trigger } from '@dxos/async';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\nimport { ComplexMap } from '@dxos/util';\n\nimport { Transport, TransportFactory, TransportOptions } from './transport';\n\n// TODO(burdon): Make configurable.\n// Delay (in milliseconds) for data being sent through in-memory connections to simulate network latency.\nconst MEMORY_TRANSPORT_DELAY = 1;\n\n/**\n * Creates a binary stream that delays data being sent through the stream by the specified amount of time.\n */\nconst createStreamDelay = (delay: number): NodeJS.ReadWriteStream => {\n return new Transform({\n objectMode: true,\n transform: (chunk, _, cb) => {\n setTimeout(() => cb(null, chunk), delay); // TODO(burdon): Randomize.\n }\n });\n};\n\nexport const MemoryTransportFactory: TransportFactory = {\n createTransport: (params) => new MemoryTransport(params)\n};\n\n/**\n * Fake transport.\n */\nexport class MemoryTransport implements Transport {\n // TODO(burdon): Remove static properties (inject context into constructor).\n private static readonly _connections = new ComplexMap<PublicKey, MemoryTransport>(PublicKey.hash);\n\n public readonly closed = new Event<void>();\n public readonly connected = new Event<void>();\n public readonly errors = new ErrorStream();\n\n private readonly _id = PublicKey.random(); // TODO(burdon): Rename peerId? (Use local/remote labels in logs).\n private readonly _remote = new Trigger<PublicKey>();\n\n private readonly _outgoingDelay = createStreamDelay(MEMORY_TRANSPORT_DELAY);\n private readonly _incomingDelay = createStreamDelay(MEMORY_TRANSPORT_DELAY);\n\n private _destroyed = false;\n private _remoteId!: PublicKey;\n private _remoteConnection?: MemoryTransport;\n\n constructor(private readonly options: TransportOptions) {\n log('creating', { id: this._id });\n\n assert(!MemoryTransport._connections.has(this._id), 'Duplicate memory connection');\n MemoryTransport._connections.set(this._id, this);\n\n // Initiator will send a signal, the receiver will receive the unique ID and connect the streams.\n if (this.options.initiator) {\n // prettier-ignore\n setTimeout(async () => {\n log('sending signal', { transportId: this._id });\n void this.options.sendSignal({\n payload: { transportId: this._id.toHex() }\n });\n });\n } else {\n this._remote\n .wait({ timeout: this.options.timeout ?? 1000 })\n .then((remoteId) => {\n if (this._destroyed) {\n return;\n }\n\n this._remoteId = remoteId;\n this._remoteConnection = MemoryTransport._connections.get(this._remoteId);\n if (!this._remoteConnection) {\n // Remote connection was destroyed before we could connect.\n this._destroyed = true;\n this.closed.emit();\n return;\n }\n\n assert(!this._remoteConnection._remoteConnection, new Error(`Remote already connected: ${this._remoteId}`));\n this._remoteConnection._remoteConnection = this;\n this._remoteConnection._remoteId = this._id;\n\n log('connected', { id: this._id, remote: this._remoteId });\n this.options.stream\n .pipe(this._outgoingDelay)\n .pipe(this._remoteConnection.options.stream)\n .pipe(this._incomingDelay)\n .pipe(this.options.stream);\n\n this.connected.emit();\n this._remoteConnection.connected.emit();\n })\n .catch((err) => {\n if (this._destroyed) {\n return;\n }\n\n this.errors.raise(err);\n });\n }\n }\n\n async destroy(): Promise<void> {\n log('closing', { id: this._id });\n this._destroyed = true;\n\n MemoryTransport._connections.delete(this._id);\n if (this._remoteConnection) {\n log('closing', { id: this._remoteId });\n this._remoteConnection._destroyed = true;\n MemoryTransport._connections.delete(this._remoteId);\n\n // TODO(dmaretskyi): Hypercore streams do not seem to have the unpipe method.\n // NOTE(burdon): Using readable-stream.wrap() might help (see feed-store).\n // code this._stream\n // code .unpipe(this._outgoingDelay)\n // code .unpipe(this._remoteConnection._stream)\n // code .unpipe(this._incomingDelay)\n // code .unpipe(this._stream);\n\n this._outgoingDelay.unpipe();\n this._incomingDelay.unpipe();\n\n this._remoteConnection.closed.emit();\n this._remoteConnection._remoteConnection = undefined;\n this._remoteConnection = undefined;\n log('closed', { id: this._remoteId });\n }\n\n this.closed.emit();\n log('closed', { id: this._id });\n }\n\n signal(signal: Signal) {\n const { payload: json } = signal;\n if (json && json.transportId) {\n // TODO(burdon): Check open?\n const transportId = json.transportId as string;\n if (transportId) {\n const remoteId = PublicKey.fromHex(transportId);\n log('received signal', { id: this._id, remoteId });\n this._remote.wake(remoteId);\n }\n }\n }\n}\n", "//\n// Copyright 2020 DXOS.org\n//\n\nimport assert from 'node:assert';\nimport SimplePeerConstructor, { Instance as SimplePeer } from 'simple-peer';\n\nimport { Event } from '@dxos/async';\nimport { ErrorStream, raise } from '@dxos/debug';\nimport { log } from '@dxos/log';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { Transport, TransportFactory } from './transport';\nimport { wrtc } from './webrtc';\n\nexport type WebRTCTransportParams = {\n initiator: boolean;\n stream: NodeJS.ReadWriteStream;\n webrtcConfig?: any;\n sendSignal: (signal: Signal) => Promise<void>;\n};\n\n/**\n * Implements Transport for WebRTC. Uses simple-peer under the hood.\n */\nexport class WebRTCTransport implements Transport {\n private readonly _peer: SimplePeer;\n\n readonly closed = new Event();\n readonly connected = new Event();\n readonly errors = new ErrorStream();\n\n constructor(private readonly params: WebRTCTransportParams) {\n log('created connection', params);\n this._peer = new SimplePeerConstructor({\n initiator: this.params.initiator,\n wrtc: SimplePeerConstructor.WEBRTC_SUPPORT ? undefined : wrtc ?? raise(new Error('wrtc not available')),\n config: this.params.webrtcConfig\n });\n\n this._peer.on('signal', async (data) => {\n log('signal', data);\n await this.params.sendSignal({ payload: { data } });\n });\n\n this._peer.on('connect', () => {\n log('connected');\n this.params.stream.pipe(this._peer!).pipe(this.params.stream);\n this.connected.emit();\n });\n\n this._peer.on('close', async () => {\n log('closed');\n await this._disconnectStreams();\n this.closed.emit();\n });\n\n this._peer.on('error', async (err) => {\n this.errors.raise(err);\n await this.destroy();\n });\n }\n\n async destroy() {\n log('closing...');\n await this._disconnectStreams();\n this._peer!.destroy();\n this.closed.emit();\n log('closed');\n }\n\n signal(signal: Signal) {\n assert(this._peer, 'Connection not ready to accept signals.');\n assert(signal.payload.data, 'Signal message must contain signal data.');\n this._peer.signal(signal.payload.data);\n }\n\n private async _disconnectStreams() {\n // TODO(rzadp): Find a way of unpiping this?\n this.params.stream.unpipe?.(this._peer)?.unpipe?.(this.params.stream);\n }\n}\n\n// TODO(dmaretskyi): Convert to class.\nexport const createWebRTCTransportFactory = (webrtcConfig?: any): TransportFactory => ({\n createTransport: (params) =>\n new WebRTCTransport({\n ...params,\n webrtcConfig\n })\n});\n", "//\n// Copyright 2022 DXOS.org\n//\n\n/**\n * Will be null if WebRTC is not available in this environment.\n */\nlet wrtc: any = null;\n\n// Try to load WebRTC if available. This will fail in the shared-worker context.\ntry {\n wrtc = require('@koush/wrtc');\n} catch {}\n\nexport { wrtc };\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport assert from 'node:assert';\nimport { Duplex } from 'node:stream';\n\nimport { Stream } from '@dxos/codec-protobuf';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport {\n BridgeService,\n ConnectionRequest,\n SignalRequest,\n DataRequest,\n BridgeEvent,\n ConnectionState,\n CloseRequest\n} from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { ComplexMap } from '@dxos/util';\n\nimport { WebRTCTransport } from './webrtc-transport';\n\nexport class WebRTCTransportService implements BridgeService {\n private readonly transports = new ComplexMap<PublicKey, { transport: WebRTCTransport; stream: Duplex }>(\n PublicKey.hash\n );\n\n // prettier-ignore\n constructor(\n private readonly _webrtcConfig?: any\n ) {}\n\n open(request: ConnectionRequest): Stream<BridgeEvent> {\n const rpcStream: Stream<BridgeEvent> = new Stream(({ ready, next, close }) => {\n const duplex: Duplex = new Duplex({\n read: () => {},\n write: function (chunk, _, callback) {\n next({ data: { payload: chunk } });\n callback();\n }\n });\n\n const transport = new WebRTCTransport({\n initiator: request.initiator,\n stream: duplex,\n sendSignal: async (signal) => {\n next({\n signal: { payload: signal }\n });\n }\n });\n\n next({\n connection: {\n state: ConnectionState.CONNECTING\n }\n });\n\n transport.connected.on(() => {\n next({\n connection: {\n state: ConnectionState.CONNECTED\n }\n });\n });\n\n transport.errors.handle((err) => {\n next({\n connection: {\n state: ConnectionState.CLOSED,\n error: err.toString()\n }\n });\n close(err);\n });\n\n transport.closed.on(() => {\n next({\n connection: {\n state: ConnectionState.CLOSED\n }\n });\n close();\n });\n\n ready();\n this.transports.set(request.proxyId, { transport, stream: duplex });\n });\n\n return rpcStream;\n }\n\n async sendSignal({ proxyId, signal }: SignalRequest): Promise<void> {\n assert(this.transports.has(proxyId));\n await this.transports.get(proxyId)!.transport.signal(signal);\n }\n\n async sendData({ proxyId, payload }: DataRequest): Promise<void> {\n assert(this.transports.has(proxyId));\n await this.transports.get(proxyId)!.stream.push(payload);\n }\n\n async close({ proxyId }: CloseRequest) {\n await this.transports.get(proxyId)?.transport.destroy();\n await this.transports.get(proxyId)?.stream.end();\n this.transports.delete(proxyId);\n log('Closed.');\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport assert from 'node:assert';\n\nimport { Event } from '@dxos/async';\nimport { Stream } from '@dxos/codec-protobuf';\nimport { ErrorStream } from '@dxos/debug';\nimport { PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { ConnectionState, BridgeEvent, BridgeService } from '@dxos/protocols/proto/dxos/mesh/bridge';\nimport { Signal } from '@dxos/protocols/proto/dxos/mesh/swarm';\n\nimport { Transport, TransportFactory, TransportOptions } from './transport';\n\nexport type WebRTCTransportProxyParams = {\n initiator: boolean;\n stream: NodeJS.ReadWriteStream;\n bridgeService: BridgeService;\n sendSignal: (signal: Signal) => Promise<void>;\n};\n\nexport class WebRTCTransportProxy implements Transport {\n readonly closed = new Event();\n private _closed = false;\n readonly connected = new Event();\n\n readonly errors = new ErrorStream();\n\n private _serviceStream!: Stream<BridgeEvent>;\n private readonly _proxyId = PublicKey.random();\n\n // prettier-ignore\n constructor(\n private readonly _params: WebRTCTransportProxyParams\n ) {\n this._serviceStream = this._params.bridgeService.open({\n proxyId: this._proxyId,\n initiator: this._params.initiator\n });\n\n this._serviceStream.waitUntilReady().then(\n () => {\n this._serviceStream.subscribe(async (event: BridgeEvent) => {\n log('WebRTCTransportProxy: event', event);\n if (event.connection) {\n await this._handleConnection(event.connection);\n } else if (event.data) {\n this._handleData(event.data);\n } else if (event.signal) {\n await this._handleSignal(event.signal);\n }\n });\n\n this._params.stream.on('data', async (data: Uint8Array) => {\n try {\n await this._params.bridgeService.sendData({\n proxyId: this._proxyId,\n payload: data\n });\n } catch (err: any) {\n log.catch(err);\n }\n });\n },\n (error) => log.catch(error)\n );\n }\n\n private async _handleConnection(connectionEvent: BridgeEvent.ConnectionEvent): Promise<void> {\n if (connectionEvent.error) {\n this.errors.raise(new Error(connectionEvent.error));\n }\n\n switch (connectionEvent.state) {\n case ConnectionState.CONNECTED: {\n this.connected.emit();\n break;\n }\n case ConnectionState.CLOSED: {\n await this.destroy();\n break;\n }\n }\n }\n\n private _handleData(dataEvent: BridgeEvent.DataEvent) {\n // NOTE: This must be a Buffer otherwise hypercore-protocol breaks.\n this._params.stream.write(Buffer.from(dataEvent.payload));\n }\n\n private async _handleSignal(signalEvent: BridgeEvent.SignalEvent) {\n await this._params.sendSignal(signalEvent.payload);\n }\n\n signal(signal: Signal): void {\n this._params.bridgeService\n .sendSignal({\n proxyId: this._proxyId,\n signal\n })\n .catch((err) => this.errors.raise(err));\n }\n\n // TODO(burdon): Move open from constructor.\n async destroy(): Promise<void> {\n if (this._closed) {\n return;\n }\n\n this._serviceStream.close();\n\n try {\n await this._params.bridgeService.close({ proxyId: this._proxyId });\n } catch (err: any) {\n log.catch(err);\n }\n\n this.closed.emit();\n this._closed = true;\n }\n\n /**\n * Called when underlying proxy service becomes unavailable.\n */\n // TODO(burdon): Option on close method.\n forceClose() {\n this._serviceStream.close();\n this.closed.emit();\n this._closed = true;\n }\n}\n\n// TODO(burdon): Why is this named Proxy?\nexport class WebRTCTransportProxyFactory implements TransportFactory {\n private _bridgeService: BridgeService | undefined;\n private _connections = new Set<WebRTCTransportProxy>();\n\n /**\n * Sets the current BridgeService to be used to open connections.\n * Calling this method will close any existing connections.\n */\n setBridgeService(bridgeService: BridgeService | undefined): this {\n this._bridgeService = bridgeService;\n for (const connection of this._connections) {\n connection.forceClose();\n }\n\n return this;\n }\n\n createTransport(options: TransportOptions): Transport {\n assert(this._bridgeService, 'WebRTCTransportProxyFactory is not ready to open connections');\n\n const transport = new WebRTCTransportProxy({\n ...options,\n bridgeService: this._bridgeService\n });\n\n this._connections.add(transport);\n transport.closed.on(() => this._connections.delete(transport));\n\n return transport;\n }\n}\n", "//\n// Copyright 2022 DXOS.org\n//\n\nimport { Duplex } from 'node:stream';\n\nimport { discoveryKey } from '@dxos/crypto';\nimport { PublicKey } from '@dxos/keys';\nimport { Protocol } from '@dxos/mesh-protocol';\nimport { Teleport } from '@dxos/teleport';\n\nimport { MeshProtocolProvider } from './protocol-factory';\n\nexport type WireProtocolParams = {\n initiator: boolean;\n localPeerId: PublicKey;\n remotePeerId: PublicKey;\n topic: PublicKey;\n};\n\nexport type WireProtocolProvider = (params: WireProtocolParams) => WireProtocol;\n\n/**\n * Application-specific network protocol that is used when a connection to a peer is established.\n * Will implement high-level logic, like replication, authentication, etc.\n */\nexport interface WireProtocol {\n stream: Duplex;\n\n /**\n * @deprecated Only for devtools comapatibility.\n */\n protocol?: Protocol;\n\n initialize(): Promise<void>;\n destroy(): Promise<void>;\n}\n\n/**\n * @deprecated\n */\nexport const adaptProtocolProvider =\n (factory: MeshProtocolProvider): WireProtocolProvider =>\n ({ initiator, localPeerId, remotePeerId, topic }) => {\n const protocol = factory({ channel: discoveryKey(topic), initiator });\n return {\n initialize: () => protocol.open(),\n destroy: () => protocol.close(),\n stream: protocol.stream,\n protocol\n };\n };\n\n/**\n * Create a wire-protocol provider backed by a teleport instance.\n * @param onConnection Called after teleport is initialized for the session. Protocol extensions could be attached here.\n * @returns\n */\nexport const createTeleportProtocolFactory = (\n onConnection: (teleport: Teleport) => Promise<void>\n): WireProtocolProvider => {\n return (params) => {\n const teleport = new Teleport(params);\n return {\n stream: teleport.stream,\n initialize: async () => {\n await teleport.open();\n await onConnection(teleport);\n },\n destroy: async () => {\n await teleport.close();\n }\n };\n };\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
5
|
+
"mappings": ";;;;;;;;;;AAIA,SAASA,SAAAA,cAAa;AACtB,SAASC,aAAa;AACtB,SAASC,aAAAA,kBAAiB;AAE1B,SAASC,cAAAA,mBAAkB;;;ACJ3B,OAAOC,YAAY;AAEnB,SAASC,OAAOC,oBAAoB;AACpC,SAASC,mBAAmB;AAE5B,SAASC,WAAW;AALpB,IAAA,aAAA,SAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;;IAeO;UAAKC,kBAAe;AAAfA,EAAAA,iBAKVC,aAAAA;AALUD,EAAAA,iBAUVE,gBAAAA;AAVUF,EAAAA,iBAeVG,eAAAA;AAfUH,EAAAA,iBAoBVI,YAAAA;GApBUJ,oBAAAA,kBAAAA,CAAAA,EAAAA;AA2BL,IAAMK,aAAN,MAAMA;EAQXC,YACkBC,OACAC,OACAC,UACAC,WACAC,WACCC,kBACAC,WACAC,mBACjB;iBARgBP;iBACAC;oBACAC;qBACAC;qBACAC;4BACCC;qBACAC;6BACAC;SAfXC,SAA0Bf,gBAAgBC;SAE1Ce,mBAA6B,CAAA;SAE5BC,eAAe,IAAIrB,MAAAA;SACnBsB,SAAS,IAAIpB,YAAAA;EAWnB;EAEH,IAAIqB,QAAQ;AACV,WAAO,KAAKJ;EACd;EAEA,IAAIK,YAAY;AACd,WAAO,KAAKC;EACd;EAEA,IAAIC,WAAW;AACb,WAAO,KAAKT;EACd;EAMAU,iBAAiB;AACf5B,WAAO,KAAKoB,WAAWf,gBAAgBC,SAAS,gBAAA;AAChD,SAAKuB,aAAaxB,gBAAgBE,UAAU;AAG5C,SAAKW,UAAUY,WAAU,EAAGC,MAAM,CAACC,QAAQ;AACzC,WAAKT,OAAOU,MAAMD,GAAAA;IACpB,CAAA;AAEAhC,WAAO,CAAC,KAAK0B,UAAU;AACvB,SAAKA,aAAa,KAAKP,kBAAkBe,gBAAgB;MACvDlB,WAAW,KAAKA;MAChBmB,QAAQ,KAAKjB,UAAUiB;MACvBC,YAAY,OAAOC,WAAW;AAC5B,cAAM,KAAKpB,iBAAiBoB,OAAO;UACjCC,QAAQ,KAAKzB;UACb0B,WAAW,KAAKzB;UAChBC,WAAW,KAAKA;UAChBH,OAAO,KAAKA;UACZ4B,MAAM;YAAEH;UAAO;QACjB,CAAA;MACF;IACF,CAAA;AAEA,SAAKX,WAAWe,UAAUC,KAAK,MAAM;AACnC,WAAKb,aAAaxB,gBAAgBG,SAAS;IAC7C,CAAA;AAEA,SAAKkB,WAAWiB,OAAOD,KAAK,MAAM;AAChC,WAAKhB,aAAakB;AAClB,WAAKC,MAAK,EAAGd,MAAM,CAACC,QAAQ,KAAKT,OAAOU,MAAMD,GAAAA,CAAAA;IAChD,CAAA;AAEA,SAAKN,WAAWH,OAAOuB,OAAO,KAAKvB,MAAM;AAGzC,eAAWc,UAAU,KAAKhB,kBAAkB;AAC1C,WAAK,KAAKK,WAAWW,OAAOA,MAAAA;IAC9B;AAEA,SAAKhB,mBAAmB,CAAA;EAC1B;EAEA,MACMwB,QAAQ;AA7HhB;AA8HI,QAAI,KAAKzB,WAAWf,gBAAgBI,QAAQ;AAC1C;IACF;AAEAL,QAAI,cAAc;MAAE2C,QAAQ,KAAKlC;IAAM,GAAA;;;;;;AAEvC,QAAI;AAEF,YAAM,KAAKK,UAAU8B,QAAO;IAC9B,SAAShB,KAAP;AACA5B,UAAI2B,MAAMC,KAAAA,CAAAA,GAAAA;;;;;;IACZ;AAEA,QAAI;AAEF,cAAM,UAAKN,eAAL,mBAAiBsB;IACzB,SAAShB,MAAP;AACA5B,UAAI2B,MAAMC,MAAAA,CAAAA,GAAAA;;;;;;IACZ;AAEA5B,QAAI,UAAU;MAAE2C,QAAQ,KAAKlC;IAAM,GAAA;;;;;;AACnC,SAAKgB,aAAaxB,gBAAgBI,MAAM;EAC1C;EAEA,MAAM4B,OAAOY,KAAoB;AAtJnC;AAuJIjD,WAAOiD,IAAIlC,SAAS;AACpB,QAAI,CAACkC,IAAIlC,UAAUmC,OAAO,KAAKnC,SAAS,GAAG;AACzCX,UAAI,4CAAA,CAAA,GAAA;;;;;;AACJ;IACF;AACAJ,WAAOiD,IAAIT,KAAKH,MAAM;AACtBrC,YAAOiD,SAAIX,WAAJW,mBAAYC,OAAO,KAAKpC,SAAQ;AACvCd,YAAOiD,SAAIV,cAAJU,mBAAeC,OAAO,KAAKrC,MAAK;AAEvC,QAAI,KAAKO,WAAWf,gBAAgBC,SAAS;AAC3CF,UAAI,mBAAmB;QAAE2C,QAAQ,KAAKlC;QAAOC,UAAU,KAAKA;QAAUmC,KAAKA,IAAIT;MAAK,GAAA;;;;;;AACpF,WAAKnB,iBAAiB8B,KAAKF,IAAIT,KAAKH,MAAM;AAC1C;IACF;AAEArC,WAAO,KAAK0B,YAAY,yCAAA;AACxBtB,QAAI,mBAAmB;MAAE2C,QAAQ,KAAKlC;MAAOC,UAAU,KAAKA;MAAUmC,KAAKA,IAAIT;IAAK,GAAA;;;;;;AACpF,UAAM,KAAKd,WAAWW,OAAOY,IAAIT,KAAKH,MAAM;EAC9C;EAEQR,aAAaL,OAA8B;AACjDxB,WAAOwB,UAAU,KAAKJ,QAAQ,wBAAA;AAC9B,SAAKA,SAASI;AACd,SAAKF,aAAa8B,KAAK5B,KAAAA;EACzB;AACF;;EApDGtB;GA9EUQ,WAAAA,WAAAA,SAAAA,IAAAA;;;AC1Cb,OAAO2C,aAAY;AAEnB,SAASC,SAAAA,QAAOC,cAAcC,aAAa;AAC3C,SAASC,eAAe;AACxB,SAASC,eAAAA,oBAAmB;AAC5B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,MAAKC,eAAe;AAI7B,SAASC,cAAAA,aAAYC,4BAA4B;;;ACVjD,OAAOC,aAAY;AAGnB,SAASC,iBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,cAAc;AAEvB,SAASC,kBAAgC;AAmBlC,IAAMC,gBAAN,MAAMA;EASXC,YAAY,EAAEC,aAAaC,UAAUC,SAASC,MAAK,GAA0B;AAF5DC,yBAAoD,IAAIP,WAAW,CAACQ,QAAQA,IAAIC,MAAK,CAAA;AAGpG,SAAKC,eAAeP;AACpB,SAAKQ,YAAYP;AACjB,SAAKQ,WAAWP;AAChB,SAAKQ,SAASP;EAChB;EAEA,MAAMQ,eAAe,EACnBC,QACAC,WACAC,QAAO,GAKS;AAtDpB;AAuDI,QAAIA,QAAQC,aAAa,gCAAgC;AAEvD;IACF;AACA,UAAMC,UAAwBpB,OAAOqB,gBAAgB,8BAAA,EAAgCC,OAAOJ,QAAQK,KAAK;AAEzG,QAAI,CAAC,KAAKT,OAAOU,OAAOJ,QAAQb,KAAK,GAAG;AAEtC;IACF;AAEAR,IAAAA,KAAI,YAAY;MAAE0B,MAAMT;MAAQU,IAAIT;MAAWU,KAAKP;IAAQ,GAAA;;;;;;AAE5D,SAAIA,aAAQQ,SAARR,mBAAcS,OAAO;AACvB,YAAM,KAAKC,aAAa;QAAEd;QAAQC;QAAWG;MAAQ,CAAA;IACvD,YAAWA,aAAQQ,SAARR,mBAAcW,QAAQ;AAC/B,YAAM,KAAKC,gBAAgBZ,OAAAA;IAC7B,YAAWA,aAAQQ,SAARR,mBAAca,QAAQ;AAC/B,YAAM,KAAKC,cAAc;QAAElB;QAAQC;QAAWG;MAAQ,CAAA;IACxD;EACF;EAEA,MAAMa,OAAOb,SAAuC;AA7EtD;AA8EIvB,IAAAA,SAAOuB,aAAQQ,SAARR,mBAAca,MAAAA;AACrB,UAAM,KAAKE,qBAAqB;MAC9BnB,QAAQI,QAAQJ;MAChBC,WAAWG,QAAQH;MACnBG;IACF,CAAA;EACF;EAEA,MAAMS,MAAMT,SAAwC;AAClD,UAAMgB,iBAA+B;MACnC,GAAGhB;MACHiB,WAAWvC,UAAUwC,OAAM;IAC7B;AACA,WAAO,IAAIC,QAAgB,CAACC,SAASC,WAAW;AAC9C,WAAKjC,cAAckC,IAAIN,eAAeC,WAAY;QAAEG;QAASC;MAAO,CAAA;AACpE,aAAO,KAAKN,qBAAqB;QAC/BnB,QAAQI,QAAQJ;QAChBC,WAAWG,QAAQH;QACnBG,SAASgB;MACX,CAAA;IACF,CAAA;EACF;EAEA,MAAcD,qBAAqB,EACjCnB,QACAC,WACAG,QAAO,GAKS;AA7GpB;AA8GI,UAAMgB,iBAA+B;MACnC,GAAGhB;MAEHiB,YAAWjB,aAAQiB,cAARjB,YAAqBtB,UAAUwC,OAAM;IAClD;AAEAvC,IAAAA,KAAI,WAAW;MAAE0B,MAAMT;MAAQU,IAAIT;MAAWU,KAAKS;IAAe,GAAA;;;;;;AAClE,UAAM,KAAKO,eAAe;MAAE3B;MAAQC;MAAWG,SAASgB;IAAe,CAAA;EACzE;EAEA,MAAcO,eAAe,EAC3B3B,QACAC,WACAG,QAAO,GAKN;AACD,UAAM,KAAKT,aAAa;MACtBK;MACAC;MACAC,SAAS;QACPC,UAAU;QACVI,OAAOvB,OAAOqB,gBAAgB,8BAAA,EAAgCuB,OAAOxB,OAAAA;MACvE;IACF,CAAA;EACF;EAEA,MAAcY,gBAAgBZ,SAAsC;AA3ItE;AA4IIvB,IAAAA,SAAOuB,mBAAQQ,SAARR,mBAAcW,WAAdX,mBAAsByB,gBAAgB,mBAAA;AAC7C,UAAMC,cAAc,KAAKtC,cAAcuC,IAAI3B,QAAQQ,KAAKG,OAAOc,cAAc;AAC7E,QAAIC,aAAa;AACf,WAAKtC,cAAcwC,OAAO5B,QAAQQ,KAAKG,OAAOc,cAAc;AAC5DhD,MAAAA,SAAOuB,aAAQQ,SAARR,mBAAcW,QAAQ,WAAA;AAC7BhC,MAAAA,KAAI,aAAa;QAAEgC,QAAQX,QAAQQ,KAAKG;MAAO,GAAA;;;;;;AAC/Ce,kBAAYN,QAAQpB,QAAQQ,KAAKG,MAAM;IACzC;EACF;EAEA,MAAcD,aAAa,EACzBd,QACAC,WACAG,QAAO,GAKS;AAChBvB,IAAAA,QAAOuB,QAAQQ,KAAKC,OAAO,UAAA;AAC3B,UAAMoB,eAA6B;MACjCjC;MACAC;MACA,GAAGG;MACHQ,MAAM;QAAEC,OAAOT,QAAQQ,KAAKC;MAAM;IACpC;AACA,UAAME,SAAS,MAAM,KAAKlB,SAASoC,YAAAA;AACnClB,WAAOc,iBAAiBzB,QAAQiB;AAChC,UAAM,KAAKF,qBAAqB;MAC9BnB,QAAQC;MACRA,WAAWD;MACXI,SAAS;QACPb,OAAOa,QAAQb;QACf2C,WAAW9B,QAAQ8B;QACnBtB,MAAM;UAAEG;QAAO;MACjB;IACF,CAAA;EACF;EAEA,MAAcG,cAAc,EAC1BlB,QACAC,WACAG,QAAO,GAKS;AAChBvB,IAAAA,QAAOuB,QAAQiB,SAAS;AACxBxC,IAAAA,QAAOuB,QAAQQ,KAAKK,QAAQ,WAAA;AAC5B,UAAMkB,gBAA+B;MACnCnC;MACAC;MACA,GAAGG;MACHQ,MAAM;QAAEK,QAAQb,QAAQQ,KAAKK;MAAO;IACtC;AAEA,UAAM,KAAKrB,UAAUuC,aAAAA;EACvB;AACF;;;ACnMA,OAAOC,aAAY;AAEnB,SAASC,gBAAAA,qBAAoB;AAC7B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAJpB,IAAAC,cAAA,SAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;;AAgDO,IAAMC,OAAN,MAAMA;EAUXC,YACkBC,IACAC,OACAC,aACCC,kBACAC,mBACAC,mBACAC,YACjB;cAPgBN;iBACAC;uBACAC;4BACCC;6BACAC;6BACAC;sBACAC;SAXZC,cAAc;SAEdC,aAAa;EAUjB;EAKH,MAAMC,QAAQC,SAAwC;AACpD,UAAMC,WAAWD,QAAQE;AAGzB,QAAI,KAAKC,cAAc,KAAKL,YAAY;AAEtC,UAAIG,SAASG,MAAK,IAAK,KAAKZ,YAAYY,MAAK,GAAI;AAC/CC,QAAAA,KAAIC,KAAK,8DAA8D;UACrEhB,IAAI,KAAKA;UACTC,OAAO,KAAKA;UACZgB,QAAQ,KAAKf;QACf,GAAA;;;;;;AAEA,YAAI,KAAKW,YAAY;AAEnB,gBAAM,KAAKK,gBAAe;QAC5B;MACF,OAAO;AAEL,eAAO;UAAEC,QAAQ;QAAM;MACzB;IACF;AAEA,QAAI,MAAM,KAAKb,WAAWG,QAAQE,QAAAA,GAAW;AAC3C,UAAI,CAAC,KAAKE,YAAY;AAEpBO,QAAAA,QAAOV,QAAQW,SAAS;AACxB,cAAMR,aAAa,KAAKS,kBAAkB,OAAOZ,QAAQW,SAAS;AAClE,YAAI;AACFR,qBAAWU,eAAc;QAC3B,SAASC,KAAP;AACAT,UAAAA,KAAIU,KAAK,oBAAoB;YAAExB,OAAO,KAAKA;YAAOgB,QAAQ,KAAKf;YAAaS,UAAU,KAAKX;YAAIwB;UAAI,GAAA;;;;;;AAEnG,gBAAM,KAAKN,gBAAe;QAC5B;AAEA,eAAO;UAAEC,QAAQ;QAAK;MACxB;IACF;AACA,WAAO;MAAEA,QAAQ;IAAM;EACzB;EAKA,MAAMO,qBAAqB;AACzBN,IAAAA,QAAO,CAAC,KAAKZ,YAAY,yBAAA;AACzBY,IAAAA,QAAO,CAAC,KAAKP,YAAY,oBAAA;AACzB,UAAMQ,YAAYM,WAAUC,OAAM;AAClCb,IAAAA,KAAI,iBAAiB;MAAEf,IAAI,KAAKA;MAAIC,OAAO,KAAKA;MAAOgB,QAAQ,KAAKjB;MAAIqB;IAAU,GAAA;;;;;;AAClF,UAAMR,aAAa,KAAKS,kBAAkB,MAAMD,SAAAA;AAChD,SAAKb,aAAa;AAElB,QAAI;AACF,YAAMqB,SAAS,MAAM,KAAK1B,iBAAiB2B,MAAM;QAC/ClB,QAAQ,KAAKV;QACb6B,WAAW,KAAK/B;QAChBqB;QACApB,OAAO,KAAKA;QACZ+B,MAAM;UAAEF,OAAO,CAAC;QAAE;MACpB,CAAA;AACAf,MAAAA,KAAI,YAAY;QAAEc;QAAQ5B,OAAO,KAAKA;QAAOgC,OAAO,KAAK/B;QAAaS,UAAU,KAAKX;MAAG,GAAA;;;;;;AACxF,UAAIa,WAAWqB,UAAUC,gBAAgBC,SAAS;AAChDrB,QAAAA,KAAI,qBAAA,CAAA,GAAA;;;;;;AACJ;MACF;AAEA,UAAI,CAACc,OAAOV,QAAQ;AAClB,aAAKb,WAAW+B,WAAU;AAC1B;MACF;AACAxB,iBAAWU,eAAc;AACzB,WAAKjB,WAAWgC,WAAU;IAC5B,SAASd,KAAP;AACAT,MAAAA,KAAIU,KAAK,oBAAoB;QAAExB,OAAO,KAAKA;QAAOgB,QAAQ,KAAKf;QAAaS,UAAU,KAAKX;QAAIwB;MAAI,GAAA;;;;;;AAEnG,YAAM,KAAKN,gBAAe;AAC1B,YAAMM;IACR,UAAA;AACE,WAAKhB,aAAa;IACpB;EACF;EAMQc,kBAAkBiB,WAAoBlB,WAAsB;AAClEN,IAAAA,KAAI,uBAAuB;MACzBd,OAAO,KAAKA;MACZgB,QAAQ,KAAKf;MACbS,UAAU,KAAKX;MACfuC;MACAlB;IACF,GAAA;;;;;;AACAD,IAAAA,QAAO,CAAC,KAAKP,YAAY,oBAAA;AAEzB,UAAMA,aAAa,IAAI2B;MACrB,KAAKvC;MACL,KAAKC;MACL,KAAKF;MACLqB;MACAkB;MACA,KAAKpC;MAEL,KAAKC,kBAAkB;QAAEmC;QAAWrC,aAAa,KAAKA;QAAauC,cAAc,KAAKzC;QAAIC,OAAO,KAAKA;MAAM,CAAA;MAC5G,KAAKI;IAAiB;AAExB,SAAKC,WAAWoC,YAAY7B,UAAAA;AAC5BA,eAAW8B,aAAaC,GAAG,CAACV,UAAU;AACpC,cAAQA,OAAAA;QACN,KAAKC,gBAAgBU,WAAW;AAC9B,eAAKvC,WAAWwC,YAAW;AAC3B;QACF;QAEA,KAAKX,gBAAgBY,QAAQ;AAC3BhC,UAAAA,KAAI,qBAAqB;YAAEd,OAAO,KAAKA;YAAOgB,QAAQ,KAAKf;YAAaS,UAAU,KAAKX;YAAIuC;UAAU,GAAA;;;;;;AACrGnB,UAAAA,QAAO,KAAKP,eAAeA,YAAY,uCAAA;AAEvC,eAAKA,aAAamC;AAClB,eAAK1C,WAAW2C,eAAc;AAC9B;QACF;MACF;IACF,CAAA;AACApC,eAAWqC,OAAOC,OAAO,CAAC3B,QAAQ;AAChCT,MAAAA,KAAIU,KAAK,oBAAoB;QAAExB,OAAO,KAAKA;QAAOgB,QAAQ,KAAKf;QAAaS,UAAU,KAAKX;QAAIuC;QAAWf;MAAI,GAAA;;;;;;AAG9G,WAAK,KAAKN,gBAAe,EAAGkC,MAAM,MAAM;AACtCrC,QAAAA,KAAIqC,MAAM5B,KAAAA,CAAAA,GAAAA;;;;;;MACZ,CAAA;IACF,CAAA;AAEA,SAAKX,aAAaA;AAElB,WAAOA;EACT;EAEA,MAAMK,kBAAkB;AACtB,QAAI,CAAC,KAAKL,YAAY;AACpB;IACF;AACA,UAAMA,aAAa,KAAKA;AACxBE,IAAAA,KAAI,cAAc;MAAEE,QAAQ,KAAKjB;MAAIqB,WAAWR,WAAWQ;IAAU,GAAA;;;;;;AAIrE,UAAMR,WAAWwC,MAAK;AAEtBtC,IAAAA,KAAI,UAAU;MAAEE,QAAQ,KAAKjB;MAAIqB,WAAWR,WAAWQ;IAAU,GAAA;;;;;;EACnE;EAEA,MAAMiC,SAAS5C,SAAwB;AACrC,QAAI,CAAC,KAAKG,YAAY;AACpBE,MAAAA,KAAI,uDAAuD;QAAEL;MAAQ,GAAA;;;;;;AACrE;IACF;AACA,UAAM,KAAKG,WAAW0C,OAAO7C,OAAAA;EAC/B;EAEA,MACM8C,UAAU;AA9OlB;AA+OIzC,IAAAA,KAAI,mBAAmB;MAAEE,QAAQ,KAAKjB;MAAIC,OAAO,KAAKA;IAAM,GAAA;;;;;;AAG5D,YAAM,kCAAMY,eAAN,mBAAkBwC;EAC1B;AACF;;EAPGI;GAzLU3D,KAAAA,WAAAA,WAAAA,IAAAA;;;AFhDb,IAAA4D,cAAA,SAAA,YAAA,QAAA,KAAA,MAAA;;;;;;;;;;AAoBA,IAAMC,mBAAmB;AAGzB,IAAMC,eAAe,CAACC,QAAaC,OAAOC,eAAeF,GAAAA,EAAKG,YAAYC;AAOnE,IAAMC,QAAN,MAAMA;EAoCXF,YACmBG,QACAC,YACTC,WACSC,mBACAC,YACAC,mBACAC,QACjB;kBAPiBN;sBACAC;qBACTC;6BACSC;sBACAC;6BACAC;kBACAC;SA1CFC,SAAS,IAAIC,YAA4BC,WAAUC,IAAI;SAIhEC,OAAO,IAAIC,QAAAA;SAYVC,kBAAkB,IAAIC,OAAAA;SAMtBC,eAAe,IAAID,OAAAA;SAMnBE,YAAY,IAAIF,OAAAA;SAEhBG,SAAS,IAAIC,aAAAA;AAtBrB,SAEQC,aAAaV,WAAUW,OAAM;AAkCpCC,IAAAA,KAAI,kBAAkB;MAAEC,QAAQrB;IAAW,GAAA;;;;;;AAC3CC,cAAUqB,KAAK,KAAKC,oBAAmB,CAAA;AAEvC,SAAKC,kBAAkB,IAAIC,cAAc;MACvCC,aAAa,OAAOC,QAAQ,MAAM,KAAKxB,WAAWuB,YAAYC,GAAAA;MAC9DC,UAAU,OAAOD,QAAQ,MAAM,KAAKC,SAASD,GAAAA;MAC7CE,SAAS,OAAOF,QAAQ,MAAM,KAAKE,QAAQF,GAAAA;MAC3CG,OAAO,KAAK/B;IACd,CAAA;AAEA,SAAKI,WACF4B,OAAO;MACNV,QAAQ,KAAKrB;MACbgC,aAAa;MACbC,WAAW,OAAOC,YAAY,MAAM,KAAKV,gBAAgBW,eAAeD,OAAAA;IAC1E,CAAA,EACCE,MAAM,CAACC,UAAUjB,KAAIgB,MAAMC,OAAAA,CAAAA,GAAAA;;;;;;EAChC;EAEA,IAAIC,cAAc;AAChB,WAAOC,MAAMC,KAAK,KAAKlC,OAAOmC,OAAM,CAAA,EACjCC,IAAI,CAACC,SAASA,KAAKC,UAAU,EAC7BC,OAAOC,oBAAAA;EACZ;EAEA,IACIC,YAAY;AACd,WAAO,KAAK/C;EACd;EAKA,IAAIgD,QAA4B;AAC9B,WAAO,KAAK3C;EACd;EAEA,IACIyB,QAAe;AACjB,WAAO,KAAK/B;EACd;EAGA,MAAMkD,UAAU;AACd7B,IAAAA,KAAI,iBAAA,CAAA,GAAA;;;;;;AACJ,UAAM,KAAKV,KAAKwC,QAAO;AACvB,UAAM,KAAKjD,UAAUgD,QAAO;AAC5B,UAAME,QAAQC,IAAIb,MAAMC,KAAK,KAAKlC,OAAO+C,KAAI,CAAA,EAAIX,IAAI,CAACY,QAAQ,KAAKC,aAAaD,GAAAA,CAAAA,CAAAA;AAChFlC,IAAAA,KAAI,aAAA,CAAA,GAAA;;;;;;EACN;EAEA,MAAMoC,YAAYC,UAAoB;AACpC,QAAIA,aAAa,KAAKxD,WAAW;AAC/B;IACF;AACAmB,IAAAA,KAAI,oBAAoB;MACtBsC,UAAUlE,aAAa,KAAKS,SAAS;MACrCwD,UAAUjE,aAAaiE,QAAAA;IACzB,GAAA;;;;;;AAEA,UAAM,KAAKxD,UAAUgD,QAAO;AAC5B,SAAKhD,YAAYwD;AACjB,SAAKxD,UAAUqB,KAAK,KAAKC,oBAAmB,CAAA;AAC5C,SAAKtB,UAAU0D,OAAM;EACvB;EAEQC,iBAAiBvC,QAAyB;AAChD,QAAIsB,OAAO,KAAKrC,OAAOuD,IAAIxC,MAAAA;AAC3B,QAAI,CAACsB,MAAM;AACTA,aAAO,IAAImB,KACTzC,QACA,KAAKtB,QACL,KAAKC,YACL,KAAKwB,iBACL,KAAKtB,mBACL,KAAKE,mBACL;QACE2D,aAAa,CAACnB,eAAe;AAC3B,eAAKhC,gBAAgBoD,KAAKpB,UAAAA;QAC5B;QACAqB,aAAa,MAAM;AACjB,eAAKlD,UAAUiD,KAAK3C,MAAAA;QACtB;QACA6C,gBAAgB,YAAY;AAC1B,cAAI,CAACvB,KAAMwB,aAAa;AACtB,kBAAM,KAAKZ,aAAaZ,KAAMyB,EAAE;UAClC;AAEA,eAAKtD,aAAakD,KAAK3C,MAAAA;AACvB,eAAKpB,UAAU0D,OAAM;QACvB;QACAU,YAAY,MAAM;AAGhB,cAAI,KAAK/D,OAAOgE,IAAIjD,MAAAA,GAAS;AAC3B,iBAAK,KAAKkC,aAAalC,MAAAA;UACzB;QACF;QACAkD,YAAY,MAAM;AAChB,eAAKtE,UAAU0D,OAAM;QACvB;QACA9B,SAAS,CAAC2C,aAAa;AACrB,iBAAO,KAAKvE,UAAU4B,QAAQ2C,QAAAA;QAChC;MACF,CAAA;AAEF,WAAKlE,OAAOmE,IAAIpD,QAAQsB,IAAAA;IAC1B;AAEA,WAAOA;EACT;EAEA,MAAcY,aAAalC,QAAmB;AAC5CqD,IAAAA,QAAO,KAAKpE,OAAOgE,IAAIjD,MAAAA,CAAAA;AACvB,UAAM,KAAKf,OAAOuD,IAAIxC,MAAAA,EAAS4B,QAAO;AACtC,SAAK3C,OAAOqE,OAAOtD,MAAAA;EACrB;EAEAuD,aAAaC,YAAwB;AACnCzD,IAAAA,KAAI,eAAe;MAAEyD;IAAW,GAAA;;;;;;AAChC,QAAI,KAAKnE,KAAKoE,UAAU;AACtB1D,MAAAA,KAAI2D,KAAK,+BAAA,CAAA,GAAA;;;;;;AACT;IACF;AAEA,QAAIF,WAAWG,eAAe;AAC5B,YAAM3D,SAASb,WAAUgC,KAAKqC,WAAWG,cAAcrC,IAAI;AAC3DvB,MAAAA,KAAI,YAAY;QAAEC;MAAO,GAAA;;;;;;AACzB,UAAI,CAACA,OAAO4D,OAAO,KAAKjF,UAAU,GAAG;AACnC,cAAM2C,OAAO,KAAKiB,iBAAiBvC,MAAAA;AACnCsB,aAAKwB,cAAc;MACrB;IACF,WAAWU,WAAWK,UAAU;AAC9B,YAAMvC,QAAO,KAAKrC,OAAOuD,IAAIrD,WAAUgC,KAAKqC,WAAWK,SAASvC,IAAI,CAAA;AACpE,UAAIA,OAAM;AACRA,cAAKwB,cAAc;AACnB,YAAI,CAACxB,MAAKC,YAAY;AACpB,eAAK,KAAKW,aAAaZ,MAAKyB,EAAE;QAChC;MACF;IACF;AAEA,SAAKnE,UAAU0D,OAAM;EACvB;EAEA,MAAM9B,QAAQK,SAAwC;AAhOxD;AAiOId,IAAAA,KAAI,SAAS;MAAEc;IAAQ,GAAA;;;;;;AACvB,QAAI,KAAKxB,KAAKoE,UAAU;AACtB1D,MAAAA,KAAI+D,KAAK,+BAAA,CAAA,GAAA;;;;;;AACT,aAAO;QAAEC,QAAQ;MAAM;IACzB;AAGAV,IAAAA,QAAOxC,QAAQmD,MAAM;AACrB,QAAI,GAACnD,aAAQoD,cAARpD,mBAAmB+C,OAAO,KAAKjF,cAAa;AAC/CoB,MAAAA,KAAI,yCAAyC;QAAEc;MAAQ,GAAA;;;;;;AACvD,aAAO;QAAEkD,QAAQ;MAAM;IACzB;AACA,QAAI,GAAClD,aAAQJ,UAARI,mBAAe+C,OAAO,KAAKlF,UAAS;AACvCqB,MAAAA,KAAI,wCAAwC;QAAEc;MAAQ,GAAA;;;;;;AACtD,aAAO;QAAEkD,QAAQ;MAAM;IACzB;AAEA,UAAMzC,OAAO,KAAKiB,iBAAiB1B,QAAQmD,MAAM;AACjD,UAAME,SAAS,MAAM5C,KAAKd,QAAQK,OAAAA;AAClC,SAAKjC,UAAU0D,OAAM;AACrB,WAAO4B;EACT;EAEA,MAAM3D,SAASM,SAAuC;AAxPxD;AAyPId,IAAAA,KAAI,UAAU;MAAEc;IAAQ,GAAA;;;;;;AACxB,QAAI,KAAKxB,KAAKoE,UAAU;AACtB1D,MAAAA,KAAI+D,KAAK,+BAAA,CAAA,GAAA;;;;;;AACT;IACF;AACAT,IAAAA,SACExC,aAAQoD,cAARpD,mBAAmB+C,OAAO,KAAKjF,aAC/B,mCAAmC,KAAK+C,qBAAqBb,QAAQoD,WAAW;AAElFZ,IAAAA,SAAOxC,aAAQJ,UAARI,mBAAe+C,OAAO,KAAKlF,OAAM;AACxC2E,IAAAA,QAAOxC,QAAQmD,MAAM;AAErB,UAAM1C,OAAO,KAAKiB,iBAAiB1B,QAAQmD,MAAM;AACjD,UAAM1C,KAAKf,SAASM,OAAAA;EACtB;EAEQX,sBAAuC;AAC7C,WAAO;MACLiE,UAAU,OAAO;QACfzC,WAAW,KAAK/C;QAChBe,WAAWwB,MAAMC,KAAK,KAAKlC,OAAOmC,OAAM,CAAA,EACrCI,OAAO,CAACF,SAASA,KAAKC,UAAU,EAChCF,IAAI,CAACC,SAASA,KAAKyB,EAAE;QACxBqB,YAAYlD,MAAMC,KAAK,KAAKlC,OAAOmC,OAAM,CAAA,EACtCI,OAAO,CAACF,SAAS,CAACA,KAAKC,cAAcD,KAAKwB,WAAW,EACrDzB,IAAI,CAACC,SAASA,KAAKyB,EAAE;MAC1B;MACAsB,SAAS,CAAC/C,SAAS;AACjB,YAAI,KAAKjC,KAAKoE,UAAU;AACtB;QACF;AAGAa,qBAAa,KAAKjF,MAAM,YAAY;AAClC,cAAI;AACF,kBAAM,KAAKkF,oBAAoBjD,IAAAA;UACjC,SAASkD,KAAP;AACAzE,YAAAA,KAAI2D,KAAK,oBAAoBc,KAAAA;;;;;;UAC/B;QACF,CAAA;MACF;MACAC,YAAY,OAAOnD,SAAS;AAC1B,YAAI,KAAKjC,KAAKoE,UAAU;AACtB;QACF;AAGAa,qBAAa,KAAKjF,MAAM,YAAY;AAClC,gBAAM,KAAKqF,iBAAiBpD,IAAAA;AAC5B,eAAK1C,UAAU0D,OAAM;QACvB,CAAA;MACF;IACF;EACF;EAKA,MAAciC,oBAAoBpB,UAAqB;AAGrD,QAAIA,SAASwB,MAAK,IAAK,KAAKhG,WAAWgG,MAAK,GAAI;AAC9C5E,MAAAA,KAAI,oBAAoB;QAAEoD;MAAS,GAAA;;;;;;AACnC,YAAMyB,MAAM1G,gBAAAA;IACd;AACA,QAAI,KAAKmB,KAAKoE,UAAU;AACtB;IACF;AAEA,UAAMnC,OAAO,KAAKiB,iBAAiBY,QAAAA;AAEnC,QAAI7B,KAAKC,YAAY;AAEnB;IACF;AAEAxB,IAAAA,KAAI,4BAA4B;MAAEoD;IAAS,GAAA;;;;;;AAC3C,UAAM7B,KAAKuD,mBAAkB;AAC7B,SAAKjG,UAAU0D,OAAM;AACrBvC,IAAAA,KAAI,aAAa;MAAEoD;IAAS,GAAA;;;;;;EAC9B;EAEA,MAAcuB,iBAAiB1E,QAAmB;AAChD,UAAMsB,OAAO,KAAKrC,OAAOuD,IAAIxC,MAAAA;AAC7B,QAAI,CAACsB,MAAM;AACT;IACF;AAEA,UAAMA,KAAKwD,gBAAe;EAC5B;AACF;;EAvSGC;GAVUtG,MAAAA,WAAAA,cAAAA,MAAAA;;EAsEVsG;GAtEUtG,MAAAA,WAAAA,aAAAA,IAAAA;;EAkFVsG;GAlFUtG,MAAAA,WAAAA,SAAAA,IAAAA;;;AG9Bb,SAASuG,SAAAA,QAAOC,0BAA0B;AAC1C,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AAEpB,SAASC,cAAAA,mBAAkB;AAqBpB,IAAMC,cAAN,MAAMA;EAOX,IAAIC,QAAoB;AACtB,WAAOC,MAAMC,KAAK,KAAKC,OAAOC,OAAM,CAAA;EACtC;EAGAC,YACmBC,QACAC,WACjB;kBAFiBD;qBACAC;SAbFC,iBAAiB,IAAIb,mBAAAA;SACrBc,2BAA2B,IAAIX,YAAmCF,WAAUc,IAAI;SAChFP,SAAS,IAAIL,YAAgCF,WAAUc,IAAI;SAEnEC,aAAa,IAAIjB,OAAAA;AAWxB,SAAKc,eAAeI,IAClBN,OAAOO,gBAAgBC,GAAG,CAACC,eAAe;AACxC,WAAKC,QAAO;AACZ,WAAKP,yBAAyBQ,IAC5BF,WAAWG,UACXH,WAAWI,aAAaL,GAAG,MAAM;AAC/B,aAAKE,QAAO;MACd,CAAA,CAAA;IAEJ,CAAA,CAAA;AAGF,SAAKR,eAAeI,IAClBN,OAAOc,aAAaN,GAAG,CAACO,WAAW;AA1DzC;AA2DQ,iBAAKZ,yBAAyBa,IAAID,MAAAA,MAAlC;AACA,WAAKZ,yBAAyBc,OAAOF,MAAAA;AACrC,WAAKL,QAAO;IACd,CAAA,CAAA;AAGF,QAAIT,WAAW;AACb,WAAKC,eAAeI,IAAIL,UAAUiB,aAAaV,GAAG,MAAM;AACtD,aAAKE,QAAO;MACd,CAAA,CAAA;IACF;AAGA,SAAKA,QAAO;EACd;EAEQA,UAAU;AAChBnB,IAAAA,KAAI,kBAAA,CAAA,GAAA;;;;;;AAEJ,SAAKM,OAAOsB,MAAK;AACjB,SAAKtB,OAAOc,IAAI,KAAKX,OAAOoB,WAAW;MACrCC,IAAI,KAAKrB,OAAOoB;MAChBE,OAAO;MACPC,aAAa,CAAA;IACf,CAAA;AAEA,eAAWd,cAAc,KAAKT,OAAOuB,aAAa;AAChD,WAAK1B,OAAOc,IAAIF,WAAWG,UAAU;QACnCS,IAAIZ,WAAWG;QACfU,OAAOb,WAAWa;QAClBC,aAAa;UAAC,KAAKvB,OAAOoB;;MAC5B,CAAA;IACF;AAEA,QAAI,KAAKnB,WAAW;AAClB,WAAKA,UAAUuB,MAAMC,YAAY,CAACC,SAAc;AAC9C,cAAML,KAAK/B,WAAUqC,QAAQD,KAAKL,EAAE;AACpC,YAAI,KAAKxB,OAAO+B,IAAIP,EAAAA,GAAK;AACvB;QACF;AAEA,aAAKxB,OAAOc,IAAIU,IAAI;UAClBA;UACAC,OAAO;UACPC,aAAa,CAAA;QACf,CAAA;MACF,CAAA;AAEA,WAAKtB,UAAUuB,MAAMK,YAAY,CAACC,SAAc;AAC9C,cAAMlC,OAAON,WAAUM,KAAKkC,KAAKC,MAAM;AACvC,cAAMC,KAAK1C,WAAUM,KAAKkC,KAAKG,IAAI;AAEnC,YAAI,CAACrC,KAAKsC,OAAO,KAAKlC,OAAOoB,SAAS,KAAK,CAACY,GAAGE,OAAO,KAAKlC,OAAOoB,SAAS,GAAG;AAC5E,eAAKvB,OAAOmB,IAAIpB,IAAAA,EAAO2B,YAAYY,KAAKH,EAAAA;QAC1C;MACF,CAAA;IACF;AAEAzC,IAAAA,KAAI,iBAAiB;MACnB6C,mBAAmB,KAAKpC,OAAOuB,YAAYc;MAC3CC,mBAAmB,KAAKzC,OAAO0C;IACjC,GAAA;;;;;;AAEA,SAAKlC,WAAWmC,KAAK7C,MAAMC,KAAK,KAAKC,OAAOC,OAAM,CAAA,CAAA;EACpD;EAGA2C,UAAU;AACR9C,UAAMC,KAAK,KAAKO,yBAAyBL,OAAM,CAAA,EAAI4C,QAAQ,CAACC,OAAOA,GAAAA,CAAAA;AACnE,SAAKzC,eAAeiB,MAAK;EAC3B;AACF;;;ILtHO;UAAKyB,YAAS;AAATA,EAAAA,WACVC,8BAAAA;AADUD,EAAAA,WAEVE,oBAAAA;AAFUF,EAAAA,WAGVG,qCAAAA;AAHUH,EAAAA,WAIVI,mCAAAA;AAJUJ,EAAAA,WAKVK,wBAAAA;GALUL,cAAAA,YAAAA,CAAAA,EAAAA;AAQL,IAAMM,gBAAN,MAAMA;EAAN;AAIYC,mBAAU,IAAIC,YAAiCC,WAAUC,IAAI;AAErEC,kBAAS,IAAIC,OAAAA;;EAEtBC,aAAaC,SAAoB;AA5BnC;AA6BI,YAAO,UAAKP,QAAQQ,IAAID,OAAAA,MAAjB,YAA6BE,MAAM,IAAIC,MAAM,oBAAoBH,SAAS,CAAA;EACnF;EAEA,IAAII,SAAsB;AACxB,WAAOC,MAAMC,KAAK,KAAKb,QAAQc,OAAM,CAAA;EACvC;EAEAC,YAAYC,OAAc;AACxB,UAAMC,OAAkB;MACtBC,IAAIF,MAAMG;MACVC,OAAOJ,MAAMI;MACbC,UAAU;MACVC,OAAON,MAAMM;MACbC,aAAa,CAAA;IACf;AAEA,SAAKvB,QAAQwB,IAAIR,MAAMG,YAAYF,IAAAA;AACnC,SAAKb,OAAOqB,KAAI;AAEhBT,UAAMU,gBAAgBC,GAAG,CAACC,eAAe;AAhD7C;AAiDM,YAAMC,iBAAiC;QACrCC,OAAOC,gBAAgBC;QACvBC,cAAcL,WAAWM;QACzBC,WAAWP,WAAWO;QACtBC,WAAWR,WAAWQ,aAAaC,OAAOC,eAAeV,WAAWQ,SAAS,EAAEG,YAAYC;QAC3FC,qBAAoBb,gBAAWc,SAASA,aAApBd,mBAA8Be;QAClDC,QAAQ,CAAA;MACV;AACA3B,WAAKM,YAAasB,KAAKhB,cAAAA;AACvB,WAAKzB,OAAOqB,KAAI;AAEhBG,iBAAWkB,aAAanB,GAAG,CAACG,UAAU;AACpCD,uBAAeC,QAAQA;AACvBD,uBAAee,OAAQC,KAAK;UAC1BE,MAAMtD,UAAUC;UAChBsD,UAAUlB;QACZ,CAAA;AACA,aAAK1B,OAAOqB,KAAI;MAClB,CAAA;AAEAG,uBAAWc,SAASA,aAApBd,mBAA8BqB,MAAMtB,GAAG,CAACsB,UAAU;AArExD,YAAAC;AAsEQrB,uBAAee,OAAQC,KAAK;UAC1BE,MAAMtD,UAAUE;UAChBsD,QAAOA,MAAAA,MAAME,UAANF,OAAAA,MAAeA,MAAMG;QAC9B,CAAA;AACA,aAAKhD,OAAOqB,KAAI;MAClB;AACAG,uBAAWc,SAASA,aAApBd,mBAA8ByB,sBAAsB1B,GAAG,MAAM;AAC3DE,uBAAee,OAAQC,KAAK;UAC1BE,MAAMtD,UAAUG;QAClB,CAAA;AACA,aAAKQ,OAAOqB,KAAI;MAClB;AACAG,uBAAWc,SAASA,aAApBd,mBAA8B0B,oBAAoB3B,GAAG,MAAM;AACzDE,uBAAee,OAAQC,KAAK;UAC1BE,MAAMtD,UAAUI;QAClB,CAAA;AACA,aAAKO,OAAOqB,KAAI;MAClB;AACAG,uBAAWc,SAASA,aAApBd,mBAA8B2B,UAAU5B,GAAG,MAAM;AAC/CE,uBAAee,OAAQC,KAAK;UAC1BE,MAAMtD,UAAUK;QAClB,CAAA;AACA,aAAKM,OAAOqB,KAAI;MAClB;IACF,CAAA;EACF;EAEA+B,UAAUxC,OAAc;AACtB,SAAKV,aAAaU,MAAMG,UAAU,EAAEE,WAAW;AAC/C,SAAKjB,OAAOqB,KAAI;EAClB;AACF;;;AMjGA,OAAOgC,aAAY;AAEnB,SAASC,SAAAA,cAAa;AACtB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAASC,iBAAgC;AACzC,SAASC,cAAAA,mBAAkB;AA6DpB,IAAMC,iBAAN,MAAMA;EAYXC,YAAY,EAAEC,kBAAkBC,eAAeC,KAAAA,MAAG,GAA2B;AAX5DC,mBAAU,IAAIC,YAA6BC,WAAUC,IAAI;AACzDC,oBAAW,IAAIH,YAAmCC,WAAUC,IAAI;AAQjEE,yBAAgB,IAAIC,OAAAA;AAGlC,SAAKC,oBAAoBV;AAGzB,SAAKW,iBAAiBV;AACtB,SAAKU,eAAeC,WAAWC,GAAG,CAAC,EAAEC,OAAOF,YAAYG,MAAK,MAAE;AAxFnE;AAwFwE,wBAAKZ,QAAQa,IAAIF,KAAAA,MAAjB,mBAAyBG,aAAaF;KAAAA;AAC1G,SAAKG,aAAa,IAAIC,UAAU;MAAElB,eAAe,KAAKU;IAAe,CAAA;AACrE,SAAKS,oBAAoB;MACvBC,MAAM,CAACC,SAAS,KAAKX,eAAeU,KAAKC,IAAAA;MACzCC,OAAO,CAACD,SAAS,KAAKX,eAAeY,MAAMD,IAAAA;IAC7C;AAGA,QAAIpB,OAAK;AACP,WAAKsB,iBAAiB,IAAIC,cAAAA;IAC5B;EACF;EAGA,IAAIC,gBAAgB;AAClB,WAAO,KAAKF;EACd;EAGA,IAAIvB,gBAAgB;AAClB,WAAO,KAAKU;EACd;EAGA,IAAIgB,SAAS;AACX,WAAOC,MAAMC,KAAK,KAAK1B,QAAQ2B,KAAI,CAAA;EACrC;EAEAC,YAAYjB,OAA2C;AACrD,WAAO,KAAKP,SAASS,IAAIF,KAAAA;EAC3B;EAEAkB,SAASlB,OAAqC;AAC5C,WAAO,KAAKX,QAAQa,IAAIF,KAAAA;EAC1B;EAEA,MAAMmB,QAAQ;AACZ,eAAWnB,SAAS,KAAKX,QAAQ2B,KAAI,GAAI;AACvC,YAAM,KAAKI,WAAWpB,KAAAA,EAAOqB,MAAM,CAACC,QAAQ;AAC1ClC,QAAAA,KAAIkC,KAAAA,CAAAA,GAAAA;;;;;;MACN,CAAA;IACF;AAEA,UAAM,KAAKzB,eAAe0B,QAAO;EACnC;EAMA,MAAMC,UAAU,EACdxB,OACAyB,QACAC,UACAC,kBAAkBC,UAClBC,UACAC,MAAK,GACoC;AAjJ7C;AAkJIC,IAAAA,QAAOxC,WAAUyC,YAAYhC,KAAAA,CAAAA;AAC7B+B,IAAAA,QAAOxC,WAAUyC,YAAYP,MAAAA,CAAAA;AAC7BM,IAAAA,QAAOL,QAAAA;AACPK,IAAAA,QAAO,OAAOH,aAAa,UAAA;AAC3B,QAAI,KAAKvC,QAAQ4C,IAAIjC,KAAAA,GAAQ;AAC3B,YAAM,IAAIkC,MAAM,+BAA+B3C,WAAUwB,KAAKf,KAAAA,GAAQ;IACxE;AAEAZ,IAAAA,KAAI,WAAW;MAAEY,OAAOT,WAAUwB,KAAKf,KAAAA;MAAQyB;MAAQC,UAAUA,SAASS,SAAQ;IAAG,GAAA;;;;;;AACrF,UAAMC,QAAQ,IAAIC,MAAMrC,OAAOyB,QAAQC,UAAUE,UAAU,KAAKxB,YAAY,KAAKR,mBAAmBkC,KAAAA;AACpGM,UAAME,OAAOC,OAAO,CAACC,UAAU;AAC7BpD,MAAAA,KAAI,eAAe;QAAEoD;MAAM,GAAA;;;;;;IAC7B,CAAA;AAEA,SAAKnD,QAAQoD,IAAIzC,OAAOoC,KAAAA;AACxB,SAAK9B,kBAAkBC,KAAK;MAAEP;MAAOyB;IAAO,CAAA,EAAGJ,MAAM,CAACmB,UAAUpD,KAAIiC,MAAMmB,OAAAA,CAAAA,GAAAA;;;;;;AAC1E,SAAK/C,SAASgD,IAAIzC,OAAO,IAAI0C,YAAYN,OAAOP,QAAAA,CAAAA;AAEhD,SAAKnC,cAAciD,KAAI;AACvB,eAAKjC,mBAAL,mBAAqBkC,YAAYR;AACjChD,IAAAA,KAAI,UAAU;MAAEY,OAAOT,WAAUwB,KAAKf,KAAAA;MAAQ6C,OAAO,KAAKxD,QAAQyD;IAAK,GAAA;;;;;;AAEvE,WAAO;MACL3B,OAAO,MAAM,KAAKC,WAAWpB,KAAAA;IAC/B;EACF;EAKA,MAAMoB,WAAWpB,OAAkB;AAhLrC;AAiLI,QAAI,CAAC,KAAKX,QAAQ4C,IAAIjC,KAAAA,GAAQ;AAC5BZ,MAAAA,KAAI2D,KAAK,kBAAkB;QAAE/C,OAAOT,WAAUwB,KAAKf,KAAAA;MAAO,GAAA;;;;;;AAC1D;IACF;AAEAZ,IAAAA,KAAI,WAAW;MAAEY,OAAOT,WAAUwB,KAAKf,KAAAA;IAAO,GAAA;;;;;;AAC9C,UAAMoC,QAAQ,KAAK/C,QAAQa,IAAIF,KAAAA;AAC/B,UAAM,KAAKM,kBAAkBG,MAAM;MAAET;MAAOyB,QAAQW,MAAMY;IAAU,CAAA;AAEpE,UAAMC,MAAM,KAAKxD,SAASS,IAAIF,KAAAA;AAC9BiD,QAAI1B,QAAO;AACX,SAAK9B,SAASyD,OAAOlD,KAAAA;AAErB,eAAKU,mBAAL,mBAAqByC,UAAUf;AAE/B,UAAMA,MAAMb,QAAO;AACnB,SAAKlC,QAAQ6D,OAAOlD,KAAAA;AAEpB,UAAM,KAAKN,cAAciD,KAAI;AAC7BvD,IAAAA,KAAI,QAAQ;MAAEY,OAAOT,WAAUwB,KAAKf,KAAAA;MAAQ6C,OAAO,KAAKxD,QAAQyD;IAAK,GAAA;;;;;;EACvE;AACF;;;AClMA,OAAOM,aAAY;AAEnB,SAASC,oBAAoB;AAC7B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,YAAW;AACpB,SAAoBC,gBAAgB;AAsB7B,IAAMC,kBAAkB,CAAC,EAC9BC,UAAU,CAAC,GACXC,UAAU,CAAA,GACVC,UAAS,MACyC;AAClDR,EAAAA,QAAOQ,SAAAA;AAGP,SAAO,CAAC,EAAEC,SAASC,UAAS,MAAO;AACjCP,IAAAA,KAAI,qBAAA,CAAA,GAAA;;;;;;AACJ,UAAMQ,WAAW,IAAIP,SAAS;MAC5BQ,eAAe;QAAEC,MAAM;MAAK;MAC5BC,sBAAsB,CAACC,OAAO;AAC5B,cAAMC,YAAYR,UAAAA,EAAYS,KAAK,CAACC,UAAUjB,aAAaiB,KAAAA,EAAOC,OAAOJ,EAAAA,CAAAA;AACzE,YAAIC,WAAW;AACbL,mBAASS,WAAW;YAAEF,OAAOhB,WAAUmB,UAAUL,SAAAA;UAAW,CAAA;QAC9D;AAEAhB,QAAAA,QAAOgB,WAAW,mCAAA;AAClB,eAAOA;MACT;MACAN;MACAY,aAAahB;MACbL,cAAcQ;IAChB,CAAA;AAEAE,aAASY,cAAchB,QAAQiB,IAAI,CAACC,WAAWA,OAAOC,gBAAe,CAAA,CAAA,EAAKC,KAAI;AAC9E,WAAOhB;EACT;AACF;AAMO,IAAMiB,wBAAwB,CAACV,OAAkBW,QAAmBtB,YACzEF,gBAAgB;EACdG,WAAW,MAAM;IAACU,MAAMY,SAAQ;;EAChCxB,SAAS;IAAEuB,QAAQ3B,WAAUmB,UAAUQ,OAAOC,SAAQ,CAAA;EAAI;EAC1DvB;AACF,CAAA;AAMK,IAAMwB,4BAA4B,CACvCC,eACAH,QACAI,mBACyB;AACzB,SAAO5B,gBAAgB;IACrBG,WAAW,MAAM;MAACwB;;IAClB1B,SAAS;MAAEuB,QAAQ3B,WAAUmB,UAAUQ,MAAAA;IAAQ;IAC/CtB,SAAS;MAAC0B;;EACZ,CAAA;AACF;;;ACnFA,OAAOC,aAAY;AAMZ,IAAMC,yBAAN,MAAMA;EAGXC,WAAW;AACT,WAAO;EACT;EAEAC,KAAKC,YAAmC;AACtCJ,IAAAA,QAAO,CAAC,KAAKK,aAAa,qBAAA;AAC1B,SAAKA,cAAcD;EACrB;EAEAE,SAAe;AACbN,IAAAA,QAAO,KAAKK,aAAa,iBAAA;AACzB,UAAM,EAAEE,YAAYC,WAAU,IAAK,KAAKH,YAAYI,SAAQ;AAC5D,eAAWC,QAAQF,YAAY;AAE7B,WAAKH,YAAYM,QAAQD,IAAAA;IAC3B;EACF;EAEA,MAAME,QAAQF,MAAmC;AAC/C,WAAO;EACT;EAEA,MAAMG,UAAyB;EAE/B;AACF;;;AClCA,OAAOC,aAAY;AACnB,OAAOC,cAAc;AAGrB,SAASC,OAAAA,YAAW;AAqBb,IAAMC,eAAN,MAAMA;EASXC,YAAY,EAAEC,uBAAuB,GAAGC,WAAW,GAAGC,aAAa,GAAE,IAA0B,CAAC,GAAG;AAF3FC,4BAAmB;AAGzB,SAAKC,wBAAwBJ;AAC7B,SAAKK,YAAYJ;AACjB,SAAKK,cAAcJ;EACrB;EAEAK,KAAKC,YAAmC;AACtCb,IAAAA,QAAO,CAAC,KAAKc,aAAa,qBAAA;AAC1B,SAAKA,cAAcD;EACrB;EAEAE,SAAe;AACbf,IAAAA,QAAO,KAAKc,aAAa,iBAAA;AACzB,UAAM,EAAEE,WAAWC,WAAU,IAAK,KAAKH,YAAYI,SAAQ;AAE3D,QAAI,KAAKV,oBAAoBQ,UAAUG,SAAS,KAAKT,aAAaO,WAAWE,SAAS,GAAG;AACvFjB,MAAAA,KAAI,0BAAA,CAAA,GAAA;;;;;;AACJ,WAAKM,mBAAmB;AACxB,WAAKY,cAAa;IACpB;EACF;EAEA,MAAMC,QAAQC,MAAmC;AAC/CtB,IAAAA,QAAO,KAAKc,aAAa,iBAAA;AACzB,UAAM,EAAEE,UAAS,IAAK,KAAKF,YAAYI,SAAQ;AAC/C,UAAMK,SAASP,UAAUG,SAAS,KAAKT;AACvCR,IAAAA,KAAI,SAASoB,eAAeC,UAAQ,CAAA,GAAA;;;;;;AACpC,WAAOA;EACT;EAEA,MAAMC,UAAyB;EAE/B;EAEQJ,gBAAgB;AACtBpB,IAAAA,QAAO,KAAKc,aAAa,iBAAA;AACzB,UAAM,EAAEE,WAAWC,YAAYQ,UAAS,IAAK,KAAKX,YAAYI,SAAQ;AAEtE,QAAIF,UAAUG,SAAS,KAAKT,WAAW;AAErC,YAAMgB,SAASC,kBAAkBX,WAAWS,SAAAA,EACzCG,QAAO,EACPC,MAAM,GAAG,KAAKnB,YAAYM,UAAUG,MAAM;AAC7C,iBAAWG,QAAQI,QAAQ;AACzBxB,QAAAA,KAAI,cAAcoB,SAAO,CAAA,GAAA;;;;;;AACzB,aAAKR,YAAYgB,WAAWR,IAAAA;MAC9B;IACF,WAAWN,UAAUG,SAAS,KAAKV,uBAAuB;AAExD,YAAMsB,SAASd,WAAWe,KAAK,MAAMC,KAAKC,OAAM,IAAK,GAAA,EAAKL,MAAM,GAAG,KAAKlB,WAAW;AACnF,YAAMe,UAASC,kBAAkBI,QAAQN,SAAAA,EAAWI,MAAM,GAAG,KAAKpB,wBAAwBO,UAAUG,MAAM;AAC1G,iBAAWG,SAAQI,SAAQ;AACzBxB,QAAAA,KAAI,WAAWoB,UAAO,CAAA,GAAA;;;;;;AACtB,aAAKR,YAAYqB,QAAQb,KAAAA;MAC3B;IACF;EACF;EAEAc,WAAW;AACT,WAAO;EACT;AACF;AAEA,IAAMT,oBAAoB,CAACU,MAAmBC,cAC5CD,KAAKL,KAAK,CAACO,GAAGC,MACZvC,SAASwC,GAAGxC,SAASsC,EAAEG,SAAQ,GAAIJ,UAAUI,SAAQ,CAAA,GAAKzC,SAASuC,EAAEE,SAAQ,GAAIJ,UAAUI,SAAQ,CAAA,CAAA,CAAA;;;ACnGvG,OAAOC,aAAY;AAGnB,SAASC,OAAAA,YAAW;AAIb,IAAMC,eAAN,MAAMA;EAIXC,YACmBC,cACjB;wBADiBA;EAChB;EAEHC,WAAW;AACT,WAAO,gBAAgB,KAAKD,aAAaE,SAAQ;EACnD;EAEAC,KAAKC,YAAmC;AACtCR,IAAAA,QAAO,CAAC,KAAKS,aAAa,sBAAA;AAC1B,SAAKA,cAAcD;EACrB;EAEAE,SAAe;AACbV,IAAAA,QAAO,KAAKS,aAAa,kBAAA;AACzB,UAAM,EAAEE,YAAYC,WAAWC,UAAS,IAAK,KAAKJ,YAAYK,SAAQ;AACtE,QAAI,CAACD,UAAUE,OAAO,KAAKX,YAAY,GAAG;AACxCH,MAAAA,KAAI,+DAAA,CAAA,GAAA;;;;;;AAGJ,iBAAWe,QAAQJ,WAAW;AAC5B,YAAI,CAACI,KAAKD,OAAO,KAAKX,YAAY,GAAG;AACnCH,UAAAA,KAAI,uBAAuB;YAAEe;UAAK,GAAA;;;;;;AAClC,eAAKP,YAAYQ,WAAWD,IAAAA;QAC9B;MACF;IACF;AAEA,eAAWA,SAAQL,YAAY;AAE7B,UAAIK,MAAKD,OAAO,KAAKX,YAAY,KAAKS,UAAUE,OAAO,KAAKX,YAAY,GAAG;AACzEH,QAAAA,KAAI,sBAAsB;UAAEe,MAAAA;QAAK,GAAA;;;;;;AACjC,aAAKP,YAAYS,QAAQF,KAAAA;MAC3B;IACF;EACF;EAEA,MAAMG,QAAQH,MAAmC;AAC/ChB,IAAAA,QAAO,KAAKS,aAAa,kBAAA;AACzB,UAAM,EAAEI,UAAS,IAAK,KAAKJ,YAAYK,SAAQ;AAC/Cb,IAAAA,KAAI,SAAS;MACXe;MACAI,WAAWJ,KAAKD,OAAO,KAAKX,YAAY;MACxCiB,eAAeR,UAAUE,OAAO,KAAKX,YAAY;IACnD,GAAA;;;;;;AACA,WAAOS,UAAUE,OAAO,KAAKX,YAAY,KAAKY,KAAKD,OAAO,KAAKX,YAAY;EAC7E;EAEA,MAAMkB,UAAyB;EAE/B;AACF;;;AC9DA,OAAOC,cAAY;AACnB,SAASC,iBAAiB;AAE1B,SAASC,SAAAA,QAAOC,eAAe;AAC/B,SAASC,eAAAA,oBAAmB;AAC5B,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,aAAW;AAEpB,SAASC,cAAAA,mBAAkB;AAM3B,IAAMC,yBAAyB;AAK/B,IAAMC,oBAAoB,CAACC,UAA0C;AACnE,SAAO,IAAIT,UAAU;IACnBU,YAAY;IACZC,WAAW,CAACC,OAAOC,GAAGC,OAAO;AAC3BC,iBAAW,MAAMD,GAAG,MAAMF,KAAAA,GAAQH,KAAAA;IACpC;EACF,CAAA;AACF;AAEO,IAAMO,yBAA2C;EACtDC,iBAAiB,CAACC,WAAW,IAAIC,gBAAgBD,MAAAA;AACnD;AAKO,IAAMC,mBAAN,MAAMA;EAkBXC,YAA6BC,SAA2B;AAzD1D;mBAyD+BA;SAdbC,SAAS,IAAIrB,OAAAA;SACbsB,YAAY,IAAItB,OAAAA;SAChBuB,SAAS,IAAIrB,aAAAA;SAEZsB,MAAMrB,WAAUsB,OAAM;SACtBC,UAAU,IAAIzB,QAAAA;SAEd0B,iBAAiBpB,kBAAkBD,sBAAAA;SACnCsB,iBAAiBrB,kBAAkBD,sBAAAA;SAE5CuB,aAAa;AAKnBzB,IAAAA,MAAI,YAAY;MAAE0B,IAAI,KAAKN;IAAI,GAAA;;;;;;AAE/B1B,IAAAA,SAAO,CAACoB,iBAAgBa,aAAaC,IAAI,KAAKR,GAAG,GAAG,6BAAA;AACpDN,qBAAgBa,aAAaE,IAAI,KAAKT,KAAK,IAAI;AAG/C,QAAI,KAAKJ,QAAQc,WAAW;AAE1BpB,iBAAW,YAAY;AACrBV,QAAAA,MAAI,kBAAkB;UAAE+B,aAAa,KAAKX;QAAI,GAAA;;;;;;AAC9C,aAAK,KAAKJ,QAAQgB,WAAW;UAC3BC,SAAS;YAAEF,aAAa,KAAKX,IAAIc,MAAK;UAAG;QAC3C,CAAA;MACJ,CAAA;IACA,OAAO;AACL,WAAKZ,QACFa,KAAK;QAAEC,UAAS,UAAKpB,QAAQoB,YAAb,YAAwB;MAAK,CAAA,EAC7CC,KAAK,CAACC,aAAa;AAClB,YAAI,KAAKb,YAAY;AACnB;QACF;AAEA,aAAKc,YAAYD;AACjB,aAAKE,oBAAoB1B,iBAAgBa,aAAac,IAAI,KAAKF,SAAS;AACxE,YAAI,CAAC,KAAKC,mBAAmB;AAE3B,eAAKf,aAAa;AAClB,eAAKR,OAAOyB,KAAI;AAChB;QACF;AAEAhD,QAAAA,SAAO,CAAC,KAAK8C,kBAAkBA,mBAAmB,IAAIG,MAAM,6BAA6B,KAAKJ,WAAW,CAAA;AACzG,aAAKC,kBAAkBA,oBAAoB;AAC3C,aAAKA,kBAAkBD,YAAY,KAAKnB;AAExCpB,QAAAA,MAAI,aAAa;UAAE0B,IAAI,KAAKN;UAAKwB,QAAQ,KAAKL;QAAU,GAAA;;;;;;AACxD,aAAKvB,QAAQ6B,OACVC,KAAK,KAAKvB,cAAc,EACxBuB,KAAK,KAAKN,kBAAkBxB,QAAQ6B,MAAM,EAC1CC,KAAK,KAAKtB,cAAc,EACxBsB,KAAK,KAAK9B,QAAQ6B,MAAM;AAE3B,aAAK3B,UAAUwB,KAAI;AACnB,aAAKF,kBAAkBtB,UAAUwB,KAAI;MACvC,CAAA,EACCK,MAAM,CAACC,QAAQ;AACd,YAAI,KAAKvB,YAAY;AACnB;QACF;AAEA,aAAKN,OAAO8B,MAAMD,GAAAA;MACpB,CAAA;IACJ;EACF;EAEA,MAAME,UAAyB;AAC7BlD,IAAAA,MAAI,WAAW;MAAE0B,IAAI,KAAKN;IAAI,GAAA;;;;;;AAC9B,SAAKK,aAAa;AAElBX,qBAAgBa,aAAawB,OAAO,KAAK/B,GAAG;AAC5C,QAAI,KAAKoB,mBAAmB;AAC1BxC,MAAAA,MAAI,WAAW;QAAE0B,IAAI,KAAKa;MAAU,GAAA;;;;;;AACpC,WAAKC,kBAAkBf,aAAa;AACpCX,uBAAgBa,aAAawB,OAAO,KAAKZ,SAAS;AAUlD,WAAKhB,eAAe6B,OAAM;AAC1B,WAAK5B,eAAe4B,OAAM;AAE1B,WAAKZ,kBAAkBvB,OAAOyB,KAAI;AAClC,WAAKF,kBAAkBA,oBAAoBa;AAC3C,WAAKb,oBAAoBa;AACzBrD,MAAAA,MAAI,UAAU;QAAE0B,IAAI,KAAKa;MAAU,GAAA;;;;;;IACrC;AAEA,SAAKtB,OAAOyB,KAAI;AAChB1C,IAAAA,MAAI,UAAU;MAAE0B,IAAI,KAAKN;IAAI,GAAA;;;;;;EAC/B;EAEAkC,OAAOA,QAAgB;AACrB,UAAM,EAAErB,SAASsB,KAAI,IAAKD;AAC1B,QAAIC,QAAQA,KAAKxB,aAAa;AAE5B,YAAMA,cAAcwB,KAAKxB;AACzB,UAAIA,aAAa;AACf,cAAMO,WAAWvC,WAAUyD,QAAQzB,WAAAA;AACnC/B,QAAAA,MAAI,mBAAmB;UAAE0B,IAAI,KAAKN;UAAKkB;QAAS,GAAA;;;;;;AAChD,aAAKhB,QAAQmC,KAAKnB,QAAAA;MACpB;IACF;EACF;AACF;AArHO,IAAMxB,kBAAN;AAAMA,gBAEaa,eAAe,IAAI1B,YAAuCF,WAAU2D,IAAI;;;ACrClG,OAAOC,cAAY;AACnB,OAAOC,2BAAuD;AAE9D,SAASC,SAAAA,cAAa;AACtB,SAASC,eAAAA,cAAaC,SAAAA,cAAa;AACnC,SAASC,OAAAA,aAAW;;;ACFpB,IAAIC,OAAY;AAGhB,IAAI;AACFA,SAAOC,UAAQ;AACjB,SAAQ,GAAN;AAAO;;;ADaF,IAAMC,kBAAN,MAAMA;EAOXC,YAA6BC,QAA+B;AAhC9D;kBAgC+BA;SAJpBC,SAAS,IAAIC,OAAAA;SACbC,YAAY,IAAID,OAAAA;SAChBE,SAAS,IAAIC,aAAAA;AAGpBC,IAAAA,MAAI,sBAAsBN,QAAAA;;;;;;AAC1B,SAAKO,QAAQ,IAAIC,sBAAsB;MACrCC,WAAW,KAAKT,OAAOS;MACvBC,MAAMF,sBAAsBG,iBAAiBC,UAAYF,0BAAQG,OAAM,IAAIC,MAAM,oBAAA,CAAA;MACjFC,QAAQ,KAAKf,OAAOgB;IACtB,CAAA;AAEA,SAAKT,MAAMU,GAAG,UAAU,OAAOC,SAAS;AACtCZ,MAAAA,MAAI,UAAUY,MAAAA;;;;;;AACd,YAAM,KAAKlB,OAAOmB,WAAW;QAAEC,SAAS;UAAEF;QAAK;MAAE,CAAA;IACnD,CAAA;AAEA,SAAKX,MAAMU,GAAG,WAAW,MAAM;AAC7BX,MAAAA,MAAI,aAAA,CAAA,GAAA;;;;;;AACJ,WAAKN,OAAOqB,OAAOC,KAAK,KAAKf,KAAK,EAAGe,KAAK,KAAKtB,OAAOqB,MAAM;AAC5D,WAAKlB,UAAUoB,KAAI;IACrB,CAAA;AAEA,SAAKhB,MAAMU,GAAG,SAAS,YAAY;AACjCX,MAAAA,MAAI,UAAA,CAAA,GAAA;;;;;;AACJ,YAAM,KAAKkB,mBAAkB;AAC7B,WAAKvB,OAAOsB,KAAI;IAClB,CAAA;AAEA,SAAKhB,MAAMU,GAAG,SAAS,OAAOQ,QAAQ;AACpC,WAAKrB,OAAOS,MAAMY,GAAAA;AAClB,YAAM,KAAKC,QAAO;IACpB,CAAA;EACF;EAEA,MAAMA,UAAU;AACdpB,IAAAA,MAAI,cAAA,CAAA,GAAA;;;;;;AACJ,UAAM,KAAKkB,mBAAkB;AAC7B,SAAKjB,MAAOmB,QAAO;AACnB,SAAKzB,OAAOsB,KAAI;AAChBjB,IAAAA,MAAI,UAAA,CAAA,GAAA;;;;;;EACN;EAEAqB,OAAOA,QAAgB;AACrBC,IAAAA,SAAO,KAAKrB,OAAO,yCAAA;AACnBqB,IAAAA,SAAOD,OAAOP,QAAQF,MAAM,0CAAA;AAC5B,SAAKX,MAAMoB,OAAOA,OAAOP,QAAQF,IAAI;EACvC;EAEA,MAAcM,qBAAqB;AA7ErC;AA+EI,iCAAKxB,OAAOqB,QAAOQ,WAAnB,4BAA4B,KAAKtB,WAAjC,mBAAyCsB,WAAzC,4BAAkD,KAAK7B,OAAOqB;EAChE;AACF;AAGO,IAAMS,+BAA+B,CAACd,kBAA0C;EACrFe,iBAAiB,CAAC/B,WAChB,IAAIF,gBAAgB;IAClB,GAAGE;IACHgB;EACF,CAAA;AACJ;;;AEtFA,OAAOgB,cAAY;AACnB,SAASC,cAAc;AAEvB,SAASC,cAAc;AACvB,SAASC,aAAAA,kBAAiB;AAC1B,SAASC,OAAAA,aAAW;AACpB,SAMEC,mBAAAA,wBAEK;AACP,SAASC,cAAAA,mBAAkB;AAIpB,IAAMC,yBAAN,MAAMA;EAMXC,YACmBC,eACjB;yBADiBA;SANFC,aAAa,IAAIC,YAChCC,WAAUC,IAAI;EAMb;EAEHC,KAAKC,SAAiD;AACpD,UAAMC,YAAiC,IAAIC,OAAO,CAAC,EAAEC,OAAOC,MAAMC,MAAK,MAAO;AAC5E,YAAMC,SAAiB,IAAIC,OAAO;QAChCC,MAAM,MAAM;QAAC;QACbC,OAAO,SAAUC,OAAOC,GAAGC,UAAU;AACnCR,eAAK;YAAES,MAAM;cAAEC,SAASJ;YAAM;UAAE,CAAA;AAChCE,mBAAAA;QACF;MACF,CAAA;AAEA,YAAMG,YAAY,IAAIC,gBAAgB;QACpCC,WAAWjB,QAAQiB;QACnBC,QAAQZ;QACRa,YAAY,OAAOC,WAAW;AAC5BhB,eAAK;YACHgB,QAAQ;cAAEN,SAASM;YAAO;UAC5B,CAAA;QACF;MACF,CAAA;AAEAhB,WAAK;QACHiB,YAAY;UACVC,OAAOC,iBAAgBC;QACzB;MACF,CAAA;AAEAT,gBAAUU,UAAUC,GAAG,MAAM;AAC3BtB,aAAK;UACHiB,YAAY;YACVC,OAAOC,iBAAgBI;UACzB;QACF,CAAA;MACF,CAAA;AAEAZ,gBAAUa,OAAOC,OAAO,CAACC,QAAQ;AAC/B1B,aAAK;UACHiB,YAAY;YACVC,OAAOC,iBAAgBQ;YACvBC,OAAOF,IAAIG,SAAQ;UACrB;QACF,CAAA;AACA5B,cAAMyB,GAAAA;MACR,CAAA;AAEAf,gBAAUmB,OAAOR,GAAG,MAAM;AACxBtB,aAAK;UACHiB,YAAY;YACVC,OAAOC,iBAAgBQ;UACzB;QACF,CAAA;AACA1B,cAAAA;MACF,CAAA;AAEAF,YAAAA;AACA,WAAKR,WAAWwC,IAAInC,QAAQoC,SAAS;QAAErB;QAAWG,QAAQZ;MAAO,CAAA;IACnE,CAAA;AAEA,WAAOL;EACT;EAEA,MAAMkB,WAAW,EAAEiB,SAAShB,OAAM,GAAkC;AAClEiB,IAAAA,SAAO,KAAK1C,WAAW2C,IAAIF,OAAAA,CAAAA;AAC3B,UAAM,KAAKzC,WAAW4C,IAAIH,OAAAA,EAAUrB,UAAUK,OAAOA,MAAAA;EACvD;EAEA,MAAMoB,SAAS,EAAEJ,SAAStB,QAAO,GAAgC;AAC/DuB,IAAAA,SAAO,KAAK1C,WAAW2C,IAAIF,OAAAA,CAAAA;AAC3B,UAAM,KAAKzC,WAAW4C,IAAIH,OAAAA,EAAUlB,OAAOuB,KAAK3B,OAAAA;EAClD;EAEA,MAAMT,MAAM,EAAE+B,QAAO,GAAkB;AAvGzC;AAwGI,YAAM,UAAKzC,WAAW4C,IAAIH,OAAAA,MAApB,mBAA8BrB,UAAU2B;AAC9C,YAAM,UAAK/C,WAAW4C,IAAIH,OAAAA,MAApB,mBAA8BlB,OAAOyB;AAC3C,SAAKhD,WAAWiD,OAAOR,OAAAA;AACvBS,IAAAA,MAAI,WAAA,CAAA,GAAA;;;;;;EACN;AACF;;;ACzGA,OAAOC,cAAY;AAEnB,SAASC,SAAAA,cAAa;AAEtB,SAASC,eAAAA,oBAAmB;AAC5B,SAASC,aAAAA,mBAAiB;AAC1B,SAASC,OAAAA,aAAW;AACpB,SAASC,mBAAAA,wBAAmD;AAYrD,IAAMC,uBAAN,MAAMA;EAWXC,YACmBC,SACjB;mBADiBA;SAXVC,SAAS,IAAIR,OAAAA;SACdS,UAAU;SACTC,YAAY,IAAIV,OAAAA;SAEhBW,SAAS,IAAIV,aAAAA;SAGLW,WAAWV,YAAUW,OAAM;AAM1C,SAAKC,iBAAiB,KAAKP,QAAQQ,cAAcC,KAAK;MACpDC,SAAS,KAAKL;MACdM,WAAW,KAAKX,QAAQW;IAC1B,CAAA;AAEA,SAAKJ,eAAeK,eAAc,EAAGC,KACnC,MAAM;AACJ,WAAKN,eAAeO,UAAU,OAAOC,UAAuB;AAC1DnB,QAAAA,MAAI,+BAA+BmB,OAAAA;;;;;;AACnC,YAAIA,MAAMC,YAAY;AACpB,gBAAM,KAAKC,kBAAkBF,MAAMC,UAAU;QAC/C,WAAWD,MAAMG,MAAM;AACrB,eAAKC,YAAYJ,MAAMG,IAAI;QAC7B,WAAWH,MAAMK,QAAQ;AACvB,gBAAM,KAAKC,cAAcN,MAAMK,MAAM;QACvC;MACF,CAAA;AAEA,WAAKpB,QAAQsB,OAAOC,GAAG,QAAQ,OAAOL,SAAqB;AACzD,YAAI;AACF,gBAAM,KAAKlB,QAAQQ,cAAcgB,SAAS;YACxCd,SAAS,KAAKL;YACdoB,SAASP;UACX,CAAA;QACF,SAASQ,KAAP;AACA9B,UAAAA,MAAI+B,MAAMD,KAAAA,CAAAA,GAAAA;;;;;;QACZ;MACF,CAAA;IACF,GACA,CAACE,UAAUhC,MAAI+B,MAAMC,OAAAA,CAAAA,GAAAA;;;;;;EAEzB;EAEA,MAAcX,kBAAkBY,iBAA6D;AAC3F,QAAIA,gBAAgBD,OAAO;AACzB,WAAKxB,OAAO0B,MAAM,IAAIC,MAAMF,gBAAgBD,KAAK,CAAA;IACnD;AAEA,YAAQC,gBAAgBG,OAAK;MAC3B,KAAKnC,iBAAgBoC,WAAW;AAC9B,aAAK9B,UAAU+B,KAAI;AACnB;MACF;MACA,KAAKrC,iBAAgBsC,QAAQ;AAC3B,cAAM,KAAKC,QAAO;AAClB;MACF;IACF;EACF;EAEQjB,YAAYkB,WAAkC;AAEpD,SAAKrC,QAAQsB,OAAOgB,MAAMC,OAAOC,KAAKH,UAAUZ,OAAO,CAAA;EACzD;EAEA,MAAcJ,cAAcoB,aAAsC;AAChE,UAAM,KAAKzC,QAAQ0C,WAAWD,YAAYhB,OAAO;EACnD;EAEAL,OAAOA,QAAsB;AAC3B,SAAKpB,QAAQQ,cACVkC,WAAW;MACVhC,SAAS,KAAKL;MACde;IACF,CAAA,EACCO,MAAM,CAACD,QAAQ,KAAKtB,OAAO0B,MAAMJ,GAAAA,CAAAA;EACtC;EAGA,MAAMU,UAAyB;AAC7B,QAAI,KAAKlC,SAAS;AAChB;IACF;AAEA,SAAKK,eAAeoC,MAAK;AAEzB,QAAI;AACF,YAAM,KAAK3C,QAAQQ,cAAcmC,MAAM;QAAEjC,SAAS,KAAKL;MAAS,CAAA;IAClE,SAASqB,KAAP;AACA9B,MAAAA,MAAI+B,MAAMD,KAAAA,CAAAA,GAAAA;;;;;;IACZ;AAEA,SAAKzB,OAAOiC,KAAI;AAChB,SAAKhC,UAAU;EACjB;EAMA0C,aAAa;AACX,SAAKrC,eAAeoC,MAAK;AACzB,SAAK1C,OAAOiC,KAAI;AAChB,SAAKhC,UAAU;EACjB;AACF;AAGO,IAAM2C,8BAAN,MAAMA;EAAN;AAEGC,wBAAe,oBAAIC,IAAAA;;EAM3BC,iBAAiBxC,eAAgD;AAC/D,SAAKyC,iBAAiBzC;AACtB,eAAWQ,cAAc,KAAK8B,cAAc;AAC1C9B,iBAAW4B,WAAU;IACvB;AAEA,WAAO;EACT;EAEAM,gBAAgBC,SAAsC;AACpD3D,IAAAA,SAAO,KAAKyD,gBAAgB,8DAAA;AAE5B,UAAMG,YAAY,IAAItD,qBAAqB;MACzC,GAAGqD;MACH3C,eAAe,KAAKyC;IACtB,CAAA;AAEA,SAAKH,aAAaO,IAAID,SAAAA;AACtBA,cAAUnD,OAAOsB,GAAG,MAAM,KAAKuB,aAAaQ,OAAOF,SAAAA,CAAAA;AAEnD,WAAOA;EACT;AACF;;;AC/JA,SAASG,gBAAAA,qBAAoB;AAG7B,SAASC,gBAAgB;AAgClB,IAAMC,wBACX,CAACC,YACD,CAAC,EAAEC,WAAWC,aAAaC,cAAcC,MAAK,MAAO;AACnD,QAAMC,WAAWL,QAAQ;IAAEM,SAAST,cAAaO,KAAAA;IAAQH;EAAU,CAAA;AACnE,SAAO;IACLM,YAAY,MAAMF,SAASG,KAAI;IAC/BC,SAAS,MAAMJ,SAASK,MAAK;IAC7BC,QAAQN,SAASM;IACjBN;EACF;AACF;AAOK,IAAMO,gCAAgC,CAC3CC,iBACyB;AACzB,SAAO,CAACC,WAAW;AACjB,UAAMC,WAAW,IAAIjB,SAASgB,MAAAA;AAC9B,WAAO;MACLH,QAAQI,SAASJ;MACjBJ,YAAY,YAAY;AACtB,cAAMQ,SAASP,KAAI;AACnB,cAAMK,aAAaE,QAAAA;MACrB;MACAN,SAAS,YAAY;AACnB,cAAMM,SAASL,MAAK;MACtB;IACF;EACF;AACF;",
|
|
6
6
|
"names": ["Event", "raise", "PublicKey", "ComplexMap", "assert", "Event", "synchronized", "ErrorStream", "log", "ConnectionState", "INITIAL", "CONNECTING", "CONNECTED", "CLOSED", "Connection", "constructor", "topic", "ownId", "remoteId", "sessionId", "initiator", "_signalMessaging", "_protocol", "_transportFactory", "_state", "_bufferedSignals", "stateChanged", "errors", "state", "transport", "_transport", "protocol", "openConnection", "_changeState", "initialize", "catch", "err", "raise", "createTransport", "stream", "sendSignal", "signal", "author", "recipient", "data", "connected", "once", "closed", "undefined", "close", "pipeTo", "peerId", "destroy", "msg", "equals", "push", "emit", "assert", "Event", "scheduleTask", "sleep", "Context", "ErrorStream", "PublicKey", "log", "logInfo", "ComplexMap", "isNotNullOrUndefined", "assert", "PublicKey", "log", "schema", "ComplexMap", "MessageRouter", "constructor", "sendMessage", "onSignal", "onOffer", "topic", "_offerRecords", "key", "toHex", "_sendMessage", "_onSignal", "_onOffer", "_topic", "receiveMessage", "author", "recipient", "payload", "type_url", "message", "getCodecForType", "decode", "value", "equals", "from", "to", "msg", "data", "offer", "_handleOffer", "answer", "_resolveAnswers", "signal", "_handleSignal", "_sendReliableMessage", "networkMessage", "messageId", "random", "Promise", "resolve", "reject", "set", "_encodeAndSend", "encode", "offerMessageId", "offerRecord", "get", "delete", "offerMessage", "sessionId", "signalMessage", "assert", "synchronized", "PublicKey", "log", "__decorate", "Peer", "constructor", "id", "topic", "localPeerId", "_signalMessaging", "_protocolProvider", "_transportFactory", "_callbacks", "advertizing", "initiating", "onOffer", "message", "remoteId", "author", "connection", "toHex", "log", "info", "peerId", "closeConnection", "accept", "assert", "sessionId", "_createConnection", "openConnection", "err", "warn", "initiateConnection", "PublicKey", "random", "answer", "offer", "recipient", "data", "ownId", "state", "ConnectionState", "INITIAL", "onRejected", "onAccepted", "initiator", "Connection", "remotePeerId", "onInitiated", "stateChanged", "on", "CONNECTED", "onConnected", "CLOSED", "undefined", "onDisconnected", "errors", "handle", "catch", "close", "onSignal", "signal", "destroy", "synchronized", "__decorate", "INITIATION_DELAY", "getClassName", "obj", "Object", "getPrototypeOf", "constructor", "name", "Swarm", "_topic", "_ownPeerId", "_topology", "_protocolProvider", "_messenger", "_transportFactory", "_label", "_peers", "ComplexMap", "PublicKey", "hash", "_ctx", "Context", "connectionAdded", "Event", "disconnected", "connected", "errors", "ErrorStream", "instanceId", "random", "log", "peerId", "init", "_getSwarmController", "_swarmMessenger", "MessageRouter", "sendMessage", "msg", "onSignal", "onOffer", "topic", "listen", "payloadType", "onMessage", "message", "receiveMessage", "catch", "error", "connections", "Array", "from", "values", "map", "peer", "connection", "filter", "isNotNullOrUndefined", "ownPeerId", "label", "destroy", "dispose", "Promise", "all", "keys", "key", "_destroyPeer", "setTopology", "topology", "previous", "update", "_getOrCreatePeer", "get", "Peer", "onInitiated", "emit", "onConnected", "onDisconnected", "advertizing", "id", "onRejected", "has", "onAccepted", "remoteId", "set", "assert", "delete", "onSwarmEvent", "swarmEvent", "disposed", "warn", "peerAvailable", "equals", "peerLeft", "info", "accept", "author", "recipient", "answer", "getState", "candidates", "connect", "scheduleTask", "_initiateConnection", "err", "disconnect", "_closeConnection", "toHex", "sleep", "initiateConnection", "closeConnection", "logInfo", "Event", "EventSubscriptions", "PublicKey", "log", "ComplexMap", "SwarmMapper", "peers", "Array", "from", "_peers", "values", "constructor", "_swarm", "_presence", "_subscriptions", "_connectionSubscriptions", "hash", "mapUpdated", "add", "connectionAdded", "on", "connection", "_update", "set", "remoteId", "stateChanged", "disconnected", "peerId", "get", "delete", "graphUpdated", "clear", "ownPeerId", "id", "state", "connections", "graph", "forEachNode", "node", "fromHex", "has", "forEachLink", "link", "fromId", "to", "toId", "equals", "push", "directConnections", "length", "totalPeersInSwarm", "size", "emit", "destroy", "forEach", "cb", "EventType", "CONNECTION_STATE_CHANGED", "PROTOCOL_ERROR", "PROTOCOL_EXTENSIONS_INITIALIZED", "PROTOCOL_EXTENSIONS_HANDSHAKE", "PROTOCOL_HANDSHAKE", "ConnectionLog", "_swarms", "ComplexMap", "PublicKey", "hash", "update", "Event", "getSwarmInfo", "swarmId", "get", "raise", "Error", "swarms", "Array", "from", "values", "swarmJoined", "swarm", "info", "id", "instanceId", "topic", "isActive", "label", "connections", "set", "emit", "connectionAdded", "on", "connection", "connectionInfo", "state", "ConnectionState", "INITIAL", "remotePeerId", "remoteId", "sessionId", "transport", "Object", "getPrototypeOf", "constructor", "name", "protocolExtensions", "protocol", "extensionNames", "events", "push", "stateChanged", "type", "newState", "error", "_a", "stack", "message", "extensionsInitialized", "extensionsHandshake", "handshake", "swarmLeft", "assert", "Event", "PublicKey", "log", "Messenger", "ComplexMap", "NetworkManager", "constructor", "transportFactory", "signalManager", "log", "_swarms", "ComplexMap", "PublicKey", "hash", "_mappers", "topicsUpdated", "Event", "_transportFactory", "_signalManager", "swarmEvent", "on", "topic", "event", "get", "onSwarmEvent", "_messenger", "Messenger", "_signalConnection", "join", "opts", "leave", "_connectionLog", "ConnectionLog", "connectionLog", "topics", "Array", "from", "keys", "getSwarmMap", "getSwarm", "close", "leaveSwarm", "catch", "err", "destroy", "joinSwarm", "peerId", "topology", "protocolProvider", "protocol", "presence", "label", "assert", "isPublicKey", "has", "Error", "toString", "swarm", "Swarm", "errors", "handle", "error", "set", "SwarmMapper", "emit", "swarmJoined", "count", "size", "warn", "ownPeerId", "map", "delete", "swarmLeft", "assert", "discoveryKey", "PublicKey", "log", "Protocol", "protocolFactory", "session", "plugins", "getTopics", "channel", "initiator", "protocol", "streamOptions", "live", "discoveryToPublicKey", "dk", "publicKey", "find", "topic", "equals", "setContext", "stringify", "userSession", "setExtensions", "map", "plugin", "createExtension", "init", "createProtocolFactory", "peerId", "asBuffer", "transportProtocolProvider", "rendezvousKey", "protocolPlugin", "assert", "FullyConnectedTopology", "toString", "init", "controller", "_controller", "update", "candidates", "discovered", "getState", "peer", "connect", "onOffer", "destroy", "assert", "distance", "log", "MMSTTopology", "constructor", "originateConnections", "maxPeers", "sampleSize", "_sampleCollected", "_originateConnections", "_maxPeers", "_sampleSize", "init", "controller", "_controller", "update", "connected", "candidates", "getState", "length", "_runAlgorithm", "onOffer", "peer", "accept", "destroy", "ownPeerId", "sorted", "sortByXorDistance", "reverse", "slice", "disconnect", "sample", "sort", "Math", "random", "connect", "toString", "keys", "reference", "a", "b", "gt", "asBuffer", "assert", "log", "StarTopology", "constructor", "_centralPeer", "toString", "truncate", "init", "controller", "_controller", "update", "candidates", "connected", "ownPeerId", "getState", "equals", "peer", "disconnect", "connect", "onOffer", "isCentral", "isSelfCentral", "destroy", "assert", "Transform", "Event", "Trigger", "ErrorStream", "PublicKey", "log", "ComplexMap", "MEMORY_TRANSPORT_DELAY", "createStreamDelay", "delay", "objectMode", "transform", "chunk", "_", "cb", "setTimeout", "MemoryTransportFactory", "createTransport", "params", "MemoryTransport", "constructor", "options", "closed", "connected", "errors", "_id", "random", "_remote", "_outgoingDelay", "_incomingDelay", "_destroyed", "id", "_connections", "has", "set", "initiator", "transportId", "sendSignal", "payload", "toHex", "wait", "timeout", "then", "remoteId", "_remoteId", "_remoteConnection", "get", "emit", "Error", "remote", "stream", "pipe", "catch", "err", "raise", "destroy", "delete", "unpipe", "undefined", "signal", "json", "fromHex", "wake", "hash", "assert", "SimplePeerConstructor", "Event", "ErrorStream", "raise", "log", "wrtc", "require", "WebRTCTransport", "constructor", "params", "closed", "Event", "connected", "errors", "ErrorStream", "log", "_peer", "SimplePeerConstructor", "initiator", "wrtc", "WEBRTC_SUPPORT", "undefined", "raise", "Error", "config", "webrtcConfig", "on", "data", "sendSignal", "payload", "stream", "pipe", "emit", "_disconnectStreams", "err", "destroy", "signal", "assert", "unpipe", "createWebRTCTransportFactory", "createTransport", "assert", "Duplex", "Stream", "PublicKey", "log", "ConnectionState", "ComplexMap", "WebRTCTransportService", "constructor", "_webrtcConfig", "transports", "ComplexMap", "PublicKey", "hash", "open", "request", "rpcStream", "Stream", "ready", "next", "close", "duplex", "Duplex", "read", "write", "chunk", "_", "callback", "data", "payload", "transport", "WebRTCTransport", "initiator", "stream", "sendSignal", "signal", "connection", "state", "ConnectionState", "CONNECTING", "connected", "on", "CONNECTED", "errors", "handle", "err", "CLOSED", "error", "toString", "closed", "set", "proxyId", "assert", "has", "get", "sendData", "push", "destroy", "end", "delete", "log", "assert", "Event", "ErrorStream", "PublicKey", "log", "ConnectionState", "WebRTCTransportProxy", "constructor", "_params", "closed", "_closed", "connected", "errors", "_proxyId", "random", "_serviceStream", "bridgeService", "open", "proxyId", "initiator", "waitUntilReady", "then", "subscribe", "event", "connection", "_handleConnection", "data", "_handleData", "signal", "_handleSignal", "stream", "on", "sendData", "payload", "err", "catch", "error", "connectionEvent", "raise", "Error", "state", "CONNECTED", "emit", "CLOSED", "destroy", "dataEvent", "write", "Buffer", "from", "signalEvent", "sendSignal", "close", "forceClose", "WebRTCTransportProxyFactory", "_connections", "Set", "setBridgeService", "_bridgeService", "createTransport", "options", "transport", "add", "delete", "discoveryKey", "Teleport", "adaptProtocolProvider", "factory", "initiator", "localPeerId", "remotePeerId", "topic", "protocol", "channel", "initialize", "open", "destroy", "close", "stream", "createTeleportProtocolFactory", "onConnection", "params", "teleport"]
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"inputs":{"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytes":19345,"imports":[]},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytes":18604,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-connection.ts":{"bytes":1040,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-messenger.ts":{"bytes":1436,"imports":[]},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytes":711,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/message-router.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-messenger.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytes":28664,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytes":38970,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/peer.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytes":12888,"imports":[]},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytes":659,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytes":11783,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytes":19386,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytes":8502,"imports":[]},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytes":3023,"imports":[]},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytes":11622,"imports":[]},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytes":7788,"imports":[]},"packages/core/mesh/network-manager/src/topology/topology.ts":{"bytes":2132,"imports":[]},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytes":810,"imports":[{"path":"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/mmst-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/star-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/topology.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytes":20562,"imports":[]},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytes":1596,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytes":1148,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytes":10429,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytes":10580,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytes":16644,"imports":[]},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytes":951,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/memory-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/types.ts":{"bytes":540,"imports":[]},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytes":5302,"imports":[]},"packages/core/mesh/network-manager/src/index.ts":{"bytes":1223,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/types.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytes":18746,"imports":[{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytes":18208,"imports":[{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytes":589,"imports":[{"path":"packages/core/mesh/network-manager/src/testing/test-builder.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]}},"outputs":{"packages/core/mesh/network-manager/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":114873},"packages/core/mesh/network-manager/dist/lib/browser/index.mjs":{"imports":[],"exports":["Connection","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","MMSTTopology","MemoryTransport","MemoryTransportFactory","MessageRouter","NetworkManager","StarTopology","Swarm","SwarmMapper","WebRTCTransport","WebRTCTransportProxy","WebRTCTransportProxyFactory","WebRTCTransportService","adaptProtocolProvider","createProtocolFactory","createTeleportProtocolFactory","createWebRTCTransportFactory","protocolFactory","transportProtocolProvider"],"entryPoint":"packages/core/mesh/network-manager/src/index.ts","inputs":{"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3115},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":5699},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":11578},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":4722},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":8697},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3018},"packages/core/mesh/network-manager/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5028},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1697},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":541},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":2983},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":2319},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5510},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3303},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":74},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2725},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4150},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":782}},"bytes":68184},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":128438},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs":{"imports":[],"exports":["TEST_SIGNAL_URL","TestBuilder","TestPeer","TestProtocolPlugin","TestSwarmConnection","getPeerId","testProtocolProvider"],"entryPoint":"packages/core/mesh/network-manager/src/testing/index.ts","inputs":{"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytesInOutput":3746},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5028},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3115},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":5699},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":11578},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":4722},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":8697},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3018},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":541},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":123},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":86},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5498},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3153},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":74},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2725},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4148},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":404},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytesInOutput":4305},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1247},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytesInOutput":0}},"bytes":70122}}}
|
|
1
|
+
{"inputs":{"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytes":19345,"imports":[]},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytes":18604,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-connection.ts":{"bytes":1040,"imports":[]},"packages/core/mesh/network-manager/src/signal/signal-messenger.ts":{"bytes":1436,"imports":[]},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytes":711,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/message-router.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/signal-messenger.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytes":28664,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytes":38970,"imports":[{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/peer.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytes":12888,"imports":[]},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytes":659,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/connection.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytes":11783,"imports":[{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytes":19386,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytes":8502,"imports":[]},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytes":3023,"imports":[]},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytes":11622,"imports":[]},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytes":7788,"imports":[]},"packages/core/mesh/network-manager/src/topology/topology.ts":{"bytes":2132,"imports":[]},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytes":810,"imports":[{"path":"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/mmst-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/star-topology.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/topology.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytes":20562,"imports":[]},"packages/core/mesh/network-manager/src/transport/transport.ts":{"bytes":1596,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytes":1148,"imports":[]},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytes":10429,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytes":10580,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytes":16644,"imports":[]},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytes":951,"imports":[{"path":"packages/core/mesh/network-manager/src/transport/memory-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/types.ts":{"bytes":540,"imports":[]},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytes":5302,"imports":[]},"packages/core/mesh/network-manager/src/index.ts":{"bytes":1223,"imports":[{"path":"packages/core/mesh/network-manager/src/connection-log.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/signal/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/swarm/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/types.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytes":18746,"imports":[{"path":"packages/core/mesh/network-manager/src/protocol-factory.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytes":18208,"imports":[{"path":"packages/core/mesh/network-manager/src/network-manager.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/topology/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/transport/index.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/wire-protocol.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytes":589,"imports":[{"path":"packages/core/mesh/network-manager/src/testing/test-builder.ts","kind":"import-statement"},{"path":"packages/core/mesh/network-manager/src/testing/test-protocol.ts","kind":"import-statement"}]}},"outputs":{"packages/core/mesh/network-manager/dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":114913},"packages/core/mesh/network-manager/dist/lib/browser/index.mjs":{"imports":[],"exports":["Connection","ConnectionLog","ConnectionState","EventType","FullyConnectedTopology","MMSTTopology","MemoryTransport","MemoryTransportFactory","MessageRouter","NetworkManager","StarTopology","Swarm","SwarmMapper","WebRTCTransport","WebRTCTransportProxy","WebRTCTransportProxyFactory","WebRTCTransportService","adaptProtocolProvider","createProtocolFactory","createTeleportProtocolFactory","createWebRTCTransportFactory","protocolFactory","transportProtocolProvider"],"entryPoint":"packages/core/mesh/network-manager/src/index.ts","inputs":{"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3115},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":5699},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":11578},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":4722},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":8697},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3018},"packages/core/mesh/network-manager/src/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5028},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1697},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":541},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":2983},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":2319},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5510},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3303},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":74},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2725},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4150},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":782}},"bytes":68216},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":128478},"packages/core/mesh/network-manager/dist/lib/browser/testing/index.mjs":{"imports":[],"exports":["TEST_SIGNAL_URL","TestBuilder","TestPeer","TestProtocolPlugin","TestSwarmConnection","getPeerId","testProtocolProvider"],"entryPoint":"packages/core/mesh/network-manager/src/testing/index.ts","inputs":{"packages/core/mesh/network-manager/src/testing/test-builder.ts":{"bytesInOutput":3746},"packages/core/mesh/network-manager/src/network-manager.ts":{"bytesInOutput":5028},"packages/core/mesh/network-manager/src/connection-log.ts":{"bytesInOutput":3115},"packages/core/mesh/network-manager/src/swarm/connection.ts":{"bytesInOutput":5699},"packages/core/mesh/network-manager/src/swarm/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/swarm.ts":{"bytesInOutput":11578},"packages/core/mesh/network-manager/src/signal/message-router.ts":{"bytesInOutput":4722},"packages/core/mesh/network-manager/src/signal/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/swarm/peer.ts":{"bytesInOutput":8697},"packages/core/mesh/network-manager/src/swarm/swarm-mapper.ts":{"bytesInOutput":3018},"packages/core/mesh/network-manager/src/topology/fully-connected-topology.ts":{"bytesInOutput":541},"packages/core/mesh/network-manager/src/topology/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/topology/mmst-topology.ts":{"bytesInOutput":123},"packages/core/mesh/network-manager/src/topology/star-topology.ts":{"bytesInOutput":86},"packages/core/mesh/network-manager/src/transport/memory-transport.ts":{"bytesInOutput":5498},"packages/core/mesh/network-manager/src/transport/index.ts":{"bytesInOutput":0},"packages/core/mesh/network-manager/src/transport/webrtc-transport.ts":{"bytesInOutput":3153},"packages/core/mesh/network-manager/src/transport/webrtc.ts":{"bytesInOutput":74},"packages/core/mesh/network-manager/src/transport/webrtc-transport-service.ts":{"bytesInOutput":2725},"packages/core/mesh/network-manager/src/transport/webrtc-transport-proxy.ts":{"bytesInOutput":4148},"packages/core/mesh/network-manager/src/wire-protocol.ts":{"bytesInOutput":404},"packages/core/mesh/network-manager/src/testing/test-protocol.ts":{"bytesInOutput":4305},"packages/core/mesh/network-manager/src/protocol-factory.ts":{"bytesInOutput":1247},"packages/core/mesh/network-manager/src/testing/index.ts":{"bytesInOutput":0}},"bytes":70154}}}
|