tedious 16.4.1 → 16.5.0
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/benchmarks/bulk-load/iterable.js +1 -1
- package/benchmarks/common.js +2 -4
- package/benchmarks/package-lock.json +21173 -0
- package/benchmarks/package.json +11 -0
- package/benchmarks/query/call-tvp.js +1 -1
- package/benchmarks/query/insert-varbinary.js +1 -1
- package/benchmarks/query/select-many-rows.js +1 -1
- package/benchmarks/query/select-nvarchar.js +1 -1
- package/benchmarks/query/select-varbinary.js +1 -1
- package/benchmarks/request/rpcrequest-payload-tvp.js +2 -2
- package/benchmarks/request/rpcrequest-payload-varbinary.js +2 -2
- package/benchmarks/token-parser/colmetadata-token.js +4 -2
- package/benchmarks/token-parser/done-token.js +5 -2
- package/benchmarks/token-parser/simple-tokens.js +8 -2
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +1 -8
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -1
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +1 -8
- package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -1
- package/lib/always-encrypted/cek-entry.js +1 -7
- package/lib/always-encrypted/cek-entry.js.map +1 -1
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js +1 -8
- package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -1
- package/lib/always-encrypted/symmetric-key.js +1 -2
- package/lib/always-encrypted/symmetric-key.js.map +1 -1
- package/lib/bulk-load-payload.js +1 -3
- package/lib/bulk-load-payload.js.map +1 -1
- package/lib/bulk-load.js +15 -23
- package/lib/bulk-load.js.map +1 -1
- package/lib/collation.js +1 -7
- package/lib/collation.js.map +1 -1
- package/lib/connection.js +22 -28
- package/lib/connection.js.map +1 -1
- package/lib/debug.js +1 -4
- package/lib/debug.js.map +1 -1
- package/lib/errors/abort-error.js +1 -2
- package/lib/errors/abort-error.js.map +1 -1
- package/lib/errors/timeout-error.js +1 -2
- package/lib/errors/timeout-error.js.map +1 -1
- package/lib/errors.js +1 -10
- package/lib/errors.js.map +1 -1
- package/lib/incoming-message-stream.js +1 -4
- package/lib/incoming-message-stream.js.map +1 -1
- package/lib/login7-payload.js +1 -23
- package/lib/login7-payload.js.map +1 -1
- package/lib/message-io.js +1 -8
- package/lib/message-io.js.map +1 -1
- package/lib/message.js +1 -4
- package/lib/message.js.map +1 -1
- package/lib/ntlm-payload.js +1 -2
- package/lib/ntlm-payload.js.map +1 -1
- package/lib/outgoing-message-stream.js +1 -5
- package/lib/outgoing-message-stream.js.map +1 -1
- package/lib/packet.js +1 -2
- package/lib/packet.js.map +1 -1
- package/lib/prelogin-payload.js +1 -11
- package/lib/prelogin-payload.js.map +1 -1
- package/lib/request.js +13 -19
- package/lib/request.js.map +1 -1
- package/lib/rpcrequest-payload.js +1 -6
- package/lib/rpcrequest-payload.js.map +1 -1
- package/lib/sqlbatch-payload.js +1 -4
- package/lib/sqlbatch-payload.js.map +1 -1
- package/lib/token/handler.js +3 -13
- package/lib/token/handler.js.map +1 -1
- package/lib/token/stream-parser.js +1 -10
- package/lib/token/stream-parser.js.map +1 -1
- package/lib/token/token-stream-parser.js +1 -4
- package/lib/token/token-stream-parser.js.map +1 -1
- package/lib/token/token.js +2 -88
- package/lib/token/token.js.map +1 -1
- package/lib/tracking-buffer/writable-tracking-buffer.js +1 -7
- package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -1
- package/lib/transaction.js +1 -4
- package/lib/transaction.js.map +1 -1
- package/package.json +1 -1
- package/benchmarks/bulk-load/stream.js +0 -62
- package/benchmarks/bulk-load/sync.js +0 -59
package/lib/token/handler.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","names":["_request","_interopRequireDefault","require","_errors","_esAggregateError","obj","__esModule","default","UnexpectedTokenError","Error","constructor","handler","token","name","exports","TokenHandler","onInfoMessage","onErrorMessage","onSSPI","onDatabaseChange","onLanguageChange","onCharsetChange","onSqlCollationChange","onRoutingChange","onPacketSizeChange","onResetConnection","onBeginTransaction","onCommitTransaction","onRollbackTransaction","onFedAuthInfo","onFeatureExtAck","onLoginAck","onColMetadata","onOrder","onRow","onReturnStatus","onReturnValue","onDoneProc","onDoneInProc","onDone","onDatabaseMirroringPartner","InitialSqlTokenHandler","connection","emit","newValue","databaseCollation","messageIo","packetSize","transactionDescriptors","push","inTransaction","length","close","Login7TokenHandler","fedAuthInfoToken","routingData","loginAckReceived","error","ConnectionError","message","isLoginErrorTransient","transientErrorLookup","isTransientError","number","curTransientRetryCount","config","options","maxRetriesOnTransientErrors","isTransient","loginError","ntlmpacket","ntlmpacketBuffer","authentication","type","fedAuth","undefined","utf8Support","tdsVersion","interface","server","split","port","RequestTokenHandler","request","errors","canceled","RequestError","state","class","serverName","procName","lineNumber","Request","AggregateError","useColumnNames","columns","Object","create","j","len","col","colName","orderColumns","rowCollectionOnRequestCompletion","rows","rowCollectionOnDone","rst","procReturnStatusValue","value","paramName","metadata","sqlError","rowCount","more","AttentionTokenHandler","attentionReceived","attention"],"sources":["../../src/token/handler.ts"],"sourcesContent":["import Connection from '../connection';\nimport Request from '../request';\nimport { ConnectionError, RequestError } from '../errors';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\nimport {\n BeginTransactionEnvChangeToken,\n CharsetEnvChangeToken,\n CollationChangeToken,\n ColMetadataToken,\n CommitTransactionEnvChangeToken,\n DatabaseEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n DoneInProcToken,\n DoneProcToken,\n DoneToken,\n ErrorMessageToken,\n FeatureExtAckToken,\n FedAuthInfoToken,\n InfoMessageToken,\n LanguageEnvChangeToken,\n LoginAckToken,\n NBCRowToken,\n OrderToken,\n PacketSizeEnvChangeToken,\n ResetConnectionEnvChangeToken,\n ReturnStatusToken,\n ReturnValueToken,\n RollbackTransactionEnvChangeToken,\n RoutingEnvChangeToken,\n RowToken,\n SSPIToken,\n Token\n} from './token';\nimport BulkLoad from '../bulk-load';\n\nimport AggregateError from 'es-aggregate-error';\n\nexport class UnexpectedTokenError extends Error {\n constructor(handler: TokenHandler, token: Token) {\n super('Unexpected token `' + token.name + '` in `' + handler.constructor.name + '`');\n }\n}\n\nexport class TokenHandler {\n onInfoMessage(token: InfoMessageToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onSSPI(token: SSPIToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRoutingChange(token: RoutingEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onFedAuthInfo(token: FedAuthInfoToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onFeatureExtAck(token: FeatureExtAckToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onLoginAck(token: LoginAckToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onColMetadata(token: ColMetadataToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onOrder(token: OrderToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRow(token: RowToken | NBCRowToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onReturnValue(token: ReturnValueToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDoneProc(token: DoneProcToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDoneInProc(token: DoneInProcToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDone(token: DoneToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n}\n\n/**\n * A handler for tokens received in the response message to the initial SQL Batch request\n * that sets up different connection settings.\n */\nexport class InitialSqlTokenHandler extends TokenHandler {\n connection: Connection;\n\n constructor(connection: Connection) {\n super();\n\n this.connection = connection;\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.push(token.newValue);\n this.connection.inTransaction = true;\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n this.connection.inTransaction = false;\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n // An outermost transaction was rolled back. Reset the transaction counter\n this.connection.inTransaction = false;\n this.connection.emit('rollbackTransaction');\n }\n\n onColMetadata(token: ColMetadataToken) {\n this.connection.emit('error', new Error(\"Received 'columnMetadata' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onOrder(token: OrderToken) {\n this.connection.emit('error', new Error(\"Received 'order' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onRow(token: RowToken | NBCRowToken) {\n this.connection.emit('error', new Error(\"Received 'row' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n // Do nothing\n }\n\n onReturnValue(token: ReturnValueToken) {\n // Do nothing\n }\n\n onDoneProc(token: DoneProcToken) {\n // Do nothing\n }\n\n onDoneInProc(token: DoneInProcToken) {\n // Do nothing\n }\n\n onDone(token: DoneToken) {\n // Do nothing\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n this.connection.emit('resetConnection');\n }\n}\n\n/**\n * A handler for tokens received in the response message to a Login7 message.\n */\nexport class Login7TokenHandler extends TokenHandler {\n connection: Connection;\n\n fedAuthInfoToken: FedAuthInfoToken | undefined;\n routingData: { server: string, port: number } | undefined;\n\n loginAckReceived = false;\n\n constructor(connection: Connection) {\n super();\n\n this.connection = connection;\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n\n const error = new ConnectionError(token.message, 'ELOGIN');\n\n const isLoginErrorTransient = this.connection.transientErrorLookup.isTransientError(token.number);\n if (isLoginErrorTransient && this.connection.curTransientRetryCount !== this.connection.config.options.maxRetriesOnTransientErrors) {\n error.isTransient = true;\n }\n\n this.connection.loginError = error;\n }\n\n onSSPI(token: SSPIToken) {\n if (token.ntlmpacket) {\n this.connection.ntlmpacket = token.ntlmpacket;\n this.connection.ntlmpacketBuffer = token.ntlmpacketBuffer;\n }\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onFedAuthInfo(token: FedAuthInfoToken) {\n this.fedAuthInfoToken = token;\n }\n\n onFeatureExtAck(token: FeatureExtAckToken) {\n const { authentication } = this.connection.config;\n\n if (authentication.type === 'azure-active-directory-password' || authentication.type === 'azure-active-directory-access-token' || authentication.type === 'azure-active-directory-msi-vm' || authentication.type === 'azure-active-directory-msi-app-service' || authentication.type === 'azure-active-directory-service-principal-secret' || authentication.type === 'azure-active-directory-default') {\n if (token.fedAuth === undefined) {\n this.connection.loginError = new ConnectionError('Did not receive Active Directory authentication acknowledgement');\n } else if (token.fedAuth.length !== 0) {\n this.connection.loginError = new ConnectionError(`Active Directory authentication acknowledgment for ${authentication.type} authentication method includes extra data`);\n }\n } else if (token.fedAuth === undefined && token.utf8Support === undefined) {\n this.connection.loginError = new ConnectionError('Received acknowledgement for unknown feature');\n } else if (token.fedAuth) {\n this.connection.loginError = new ConnectionError('Did not request Active Directory authentication, but received the acknowledgment');\n }\n }\n\n onLoginAck(token: LoginAckToken) {\n if (!token.tdsVersion) {\n // unsupported TDS version\n this.connection.loginError = new ConnectionError('Server responded with unknown TDS version.', 'ETDS');\n return;\n }\n\n if (!token.interface) {\n // unsupported interface\n this.connection.loginError = new ConnectionError('Server responded with unsupported interface.', 'EINTERFACENOTSUPP');\n return;\n }\n\n // use negotiated version\n this.connection.config.options.tdsVersion = token.tdsVersion;\n\n this.loginAckReceived = true;\n }\n\n onRoutingChange(token: RoutingEnvChangeToken) {\n // Removes instance name attached to the redirect url. E.g., redirect.db.net\\instance1 --> redirect.db.net\n const [ server ] = token.newValue.server.split('\\\\');\n\n this.routingData = {\n server, port: token.newValue.port\n };\n }\n\n onDoneInProc(token: DoneInProcToken) {\n // Do nothing\n }\n\n onDone(token: DoneToken) {\n // Do nothing\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken) {\n // Do nothing\n }\n}\n\n/**\n * A handler for tokens received in the response message to a RPC Request,\n * a SQL Batch Request, a Bulk Load BCP Request or a Transaction Manager Request.\n */\nexport class RequestTokenHandler extends TokenHandler {\n connection: Connection;\n request: Request | BulkLoad;\n errors: RequestError[];\n\n constructor(connection: Connection, request: Request | BulkLoad) {\n super();\n\n this.connection = connection;\n this.request = request;\n this.errors = [];\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n\n if (!this.request.canceled) {\n const error = new RequestError(token.message, 'EREQUEST');\n\n error.number = token.number;\n error.state = token.state;\n error.class = token.class;\n error.serverName = token.serverName;\n error.procName = token.procName;\n error.lineNumber = token.lineNumber;\n this.errors.push(error);\n this.request.error = error;\n if (this.request instanceof Request && this.errors.length > 1) {\n this.request.error = new AggregateError(this.errors);\n }\n }\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.push(token.newValue);\n this.connection.inTransaction = true;\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n this.connection.inTransaction = false;\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n // An outermost transaction was rolled back. Reset the transaction counter\n this.connection.inTransaction = false;\n this.connection.emit('rollbackTransaction');\n }\n\n onColMetadata(token: ColMetadataToken) {\n if (!this.request.canceled) {\n if (this.connection.config.options.useColumnNames) {\n const columns: { [key: string]: ColumnMetadata } = Object.create(null);\n\n for (let j = 0, len = token.columns.length; j < len; j++) {\n const col = token.columns[j];\n if (columns[col.colName] == null) {\n columns[col.colName] = col;\n }\n }\n\n this.request.emit('columnMetadata', columns);\n } else {\n this.request.emit('columnMetadata', token.columns);\n }\n }\n }\n\n onOrder(token: OrderToken) {\n if (!this.request.canceled) {\n this.request.emit('order', token.orderColumns);\n }\n }\n\n onRow(token: RowToken | NBCRowToken) {\n if (!this.request.canceled) {\n if (this.connection.config.options.rowCollectionOnRequestCompletion) {\n this.request.rows!.push(token.columns);\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst!.push(token.columns);\n }\n\n this.request.emit('row', token.columns);\n }\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n if (!this.request.canceled) {\n // Keep value for passing in 'doneProc' event.\n this.connection.procReturnStatusValue = token.value;\n }\n }\n\n onReturnValue(token: ReturnValueToken) {\n if (!this.request.canceled) {\n this.request.emit('returnValue', token.paramName, token.value, token.metadata);\n }\n }\n\n onDoneProc(token: DoneProcToken) {\n if (!this.request.canceled) {\n if (token.sqlError && !this.request.error) {\n // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n this.request.error = new RequestError('An unknown error has occurred.', 'UNKNOWN');\n }\n\n this.request.emit('doneProc', token.rowCount, token.more, this.connection.procReturnStatusValue, this.request.rst);\n\n this.connection.procReturnStatusValue = undefined;\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onDoneInProc(token: DoneInProcToken) {\n if (!this.request.canceled) {\n this.request.emit('doneInProc', token.rowCount, token.more, this.request.rst);\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onDone(token: DoneToken) {\n if (!this.request.canceled) {\n if (token.sqlError && !this.request.error) {\n // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n this.request.error = new RequestError('An unknown error has occurred.', 'UNKNOWN');\n }\n\n this.request.emit('done', token.rowCount, token.more, this.request.rst);\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n this.connection.emit('resetConnection');\n }\n}\n\n/**\n * A handler for the attention acknowledgement message.\n *\n * This message only contains a `DONE` token that acknowledges\n * that the attention message was received by the server.\n */\nexport class AttentionTokenHandler extends TokenHandler {\n connection: Connection;\n request: Request | BulkLoad;\n\n /**\n * Returns whether an attention acknowledgement was received.\n */\n attentionReceived: boolean;\n\n constructor(connection: Connection, request: Request | BulkLoad) {\n super();\n\n this.connection = connection;\n this.request = request;\n\n this.attentionReceived = false;\n }\n\n onDone(token: DoneToken) {\n if (token.attention) {\n this.attentionReceived = true;\n }\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"handler.js","names":["_request","_interopRequireDefault","require","_errors","_esAggregateError","obj","__esModule","default","UnexpectedTokenError","Error","constructor","handler","token","name","exports","TokenHandler","onInfoMessage","onErrorMessage","onSSPI","onDatabaseChange","onLanguageChange","onCharsetChange","onSqlCollationChange","onRoutingChange","onPacketSizeChange","onResetConnection","onBeginTransaction","onCommitTransaction","onRollbackTransaction","onFedAuthInfo","onFeatureExtAck","onLoginAck","onColMetadata","onOrder","onRow","onReturnStatus","onReturnValue","onDoneProc","onDoneInProc","onDone","onDatabaseMirroringPartner","InitialSqlTokenHandler","connection","emit","newValue","databaseCollation","messageIo","packetSize","transactionDescriptors","push","inTransaction","length","close","Login7TokenHandler","loginAckReceived","error","ConnectionError","message","isLoginErrorTransient","transientErrorLookup","isTransientError","number","curTransientRetryCount","config","options","maxRetriesOnTransientErrors","isTransient","loginError","ntlmpacket","ntlmpacketBuffer","fedAuthInfoToken","authentication","type","fedAuth","undefined","utf8Support","tdsVersion","interface","server","split","routingData","port","RequestTokenHandler","request","errors","canceled","RequestError","state","class","serverName","procName","lineNumber","Request","AggregateError","useColumnNames","columns","Object","create","j","len","col","colName","orderColumns","rowCollectionOnRequestCompletion","rows","rowCollectionOnDone","rst","procReturnStatusValue","value","paramName","metadata","sqlError","rowCount","more","AttentionTokenHandler","attentionReceived","attention"],"sources":["../../src/token/handler.ts"],"sourcesContent":["import Connection from '../connection';\nimport Request from '../request';\nimport { ConnectionError, RequestError } from '../errors';\nimport { type ColumnMetadata } from './colmetadata-token-parser';\nimport {\n BeginTransactionEnvChangeToken,\n CharsetEnvChangeToken,\n CollationChangeToken,\n ColMetadataToken,\n CommitTransactionEnvChangeToken,\n DatabaseEnvChangeToken,\n DatabaseMirroringPartnerEnvChangeToken,\n DoneInProcToken,\n DoneProcToken,\n DoneToken,\n ErrorMessageToken,\n FeatureExtAckToken,\n FedAuthInfoToken,\n InfoMessageToken,\n LanguageEnvChangeToken,\n LoginAckToken,\n NBCRowToken,\n OrderToken,\n PacketSizeEnvChangeToken,\n ResetConnectionEnvChangeToken,\n ReturnStatusToken,\n ReturnValueToken,\n RollbackTransactionEnvChangeToken,\n RoutingEnvChangeToken,\n RowToken,\n SSPIToken,\n Token\n} from './token';\nimport BulkLoad from '../bulk-load';\n\nimport AggregateError from 'es-aggregate-error';\n\nexport class UnexpectedTokenError extends Error {\n constructor(handler: TokenHandler, token: Token) {\n super('Unexpected token `' + token.name + '` in `' + handler.constructor.name + '`');\n }\n}\n\nexport class TokenHandler {\n onInfoMessage(token: InfoMessageToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onSSPI(token: SSPIToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRoutingChange(token: RoutingEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onFedAuthInfo(token: FedAuthInfoToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onFeatureExtAck(token: FeatureExtAckToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onLoginAck(token: LoginAckToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onColMetadata(token: ColMetadataToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onOrder(token: OrderToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onRow(token: RowToken | NBCRowToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onReturnValue(token: ReturnValueToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDoneProc(token: DoneProcToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDoneInProc(token: DoneInProcToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDone(token: DoneToken) {\n throw new UnexpectedTokenError(this, token);\n }\n\n onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken) {\n throw new UnexpectedTokenError(this, token);\n }\n}\n\n/**\n * A handler for tokens received in the response message to the initial SQL Batch request\n * that sets up different connection settings.\n */\nexport class InitialSqlTokenHandler extends TokenHandler {\n declare connection: Connection;\n\n constructor(connection: Connection) {\n super();\n\n this.connection = connection;\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.push(token.newValue);\n this.connection.inTransaction = true;\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n this.connection.inTransaction = false;\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n // An outermost transaction was rolled back. Reset the transaction counter\n this.connection.inTransaction = false;\n this.connection.emit('rollbackTransaction');\n }\n\n onColMetadata(token: ColMetadataToken) {\n this.connection.emit('error', new Error(\"Received 'columnMetadata' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onOrder(token: OrderToken) {\n this.connection.emit('error', new Error(\"Received 'order' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onRow(token: RowToken | NBCRowToken) {\n this.connection.emit('error', new Error(\"Received 'row' when no sqlRequest is in progress\"));\n this.connection.close();\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n // Do nothing\n }\n\n onReturnValue(token: ReturnValueToken) {\n // Do nothing\n }\n\n onDoneProc(token: DoneProcToken) {\n // Do nothing\n }\n\n onDoneInProc(token: DoneInProcToken) {\n // Do nothing\n }\n\n onDone(token: DoneToken) {\n // Do nothing\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n this.connection.emit('resetConnection');\n }\n}\n\n/**\n * A handler for tokens received in the response message to a Login7 message.\n */\nexport class Login7TokenHandler extends TokenHandler {\n declare connection: Connection;\n\n declare fedAuthInfoToken: FedAuthInfoToken | undefined;\n declare routingData: { server: string, port: number } | undefined;\n\n declare loginAckReceived: boolean;\n\n constructor(connection: Connection) {\n super();\n this.loginAckReceived = false;\n this.connection = connection;\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n\n const error = new ConnectionError(token.message, 'ELOGIN');\n\n const isLoginErrorTransient = this.connection.transientErrorLookup.isTransientError(token.number);\n if (isLoginErrorTransient && this.connection.curTransientRetryCount !== this.connection.config.options.maxRetriesOnTransientErrors) {\n error.isTransient = true;\n }\n\n this.connection.loginError = error;\n }\n\n onSSPI(token: SSPIToken) {\n if (token.ntlmpacket) {\n this.connection.ntlmpacket = token.ntlmpacket;\n this.connection.ntlmpacketBuffer = token.ntlmpacketBuffer;\n }\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onFedAuthInfo(token: FedAuthInfoToken) {\n this.fedAuthInfoToken = token;\n }\n\n onFeatureExtAck(token: FeatureExtAckToken) {\n const { authentication } = this.connection.config;\n\n if (authentication.type === 'azure-active-directory-password' || authentication.type === 'azure-active-directory-access-token' || authentication.type === 'azure-active-directory-msi-vm' || authentication.type === 'azure-active-directory-msi-app-service' || authentication.type === 'azure-active-directory-service-principal-secret' || authentication.type === 'azure-active-directory-default') {\n if (token.fedAuth === undefined) {\n this.connection.loginError = new ConnectionError('Did not receive Active Directory authentication acknowledgement');\n } else if (token.fedAuth.length !== 0) {\n this.connection.loginError = new ConnectionError(`Active Directory authentication acknowledgment for ${authentication.type} authentication method includes extra data`);\n }\n } else if (token.fedAuth === undefined && token.utf8Support === undefined) {\n this.connection.loginError = new ConnectionError('Received acknowledgement for unknown feature');\n } else if (token.fedAuth) {\n this.connection.loginError = new ConnectionError('Did not request Active Directory authentication, but received the acknowledgment');\n }\n }\n\n onLoginAck(token: LoginAckToken) {\n if (!token.tdsVersion) {\n // unsupported TDS version\n this.connection.loginError = new ConnectionError('Server responded with unknown TDS version.', 'ETDS');\n return;\n }\n\n if (!token.interface) {\n // unsupported interface\n this.connection.loginError = new ConnectionError('Server responded with unsupported interface.', 'EINTERFACENOTSUPP');\n return;\n }\n\n // use negotiated version\n this.connection.config.options.tdsVersion = token.tdsVersion;\n\n this.loginAckReceived = true;\n }\n\n onRoutingChange(token: RoutingEnvChangeToken) {\n // Removes instance name attached to the redirect url. E.g., redirect.db.net\\instance1 --> redirect.db.net\n const [ server ] = token.newValue.server.split('\\\\');\n\n this.routingData = {\n server, port: token.newValue.port\n };\n }\n\n onDoneInProc(token: DoneInProcToken) {\n // Do nothing\n }\n\n onDone(token: DoneToken) {\n // Do nothing\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onDatabaseMirroringPartner(token: DatabaseMirroringPartnerEnvChangeToken) {\n // Do nothing\n }\n}\n\n/**\n * A handler for tokens received in the response message to a RPC Request,\n * a SQL Batch Request, a Bulk Load BCP Request or a Transaction Manager Request.\n */\nexport class RequestTokenHandler extends TokenHandler {\n declare connection: Connection;\n declare request: Request | BulkLoad;\n declare errors: RequestError[];\n\n constructor(connection: Connection, request: Request | BulkLoad) {\n super();\n\n this.connection = connection;\n this.request = request;\n this.errors = [];\n }\n\n onInfoMessage(token: InfoMessageToken) {\n this.connection.emit('infoMessage', token);\n }\n\n onErrorMessage(token: ErrorMessageToken) {\n this.connection.emit('errorMessage', token);\n\n if (!this.request.canceled) {\n const error = new RequestError(token.message, 'EREQUEST');\n\n error.number = token.number;\n error.state = token.state;\n error.class = token.class;\n error.serverName = token.serverName;\n error.procName = token.procName;\n error.lineNumber = token.lineNumber;\n this.errors.push(error);\n this.request.error = error;\n if (this.request instanceof Request && this.errors.length > 1) {\n this.request.error = new AggregateError(this.errors);\n }\n }\n }\n\n onDatabaseChange(token: DatabaseEnvChangeToken) {\n this.connection.emit('databaseChange', token.newValue);\n }\n\n onLanguageChange(token: LanguageEnvChangeToken) {\n this.connection.emit('languageChange', token.newValue);\n }\n\n onCharsetChange(token: CharsetEnvChangeToken) {\n this.connection.emit('charsetChange', token.newValue);\n }\n\n onSqlCollationChange(token: CollationChangeToken) {\n this.connection.databaseCollation = token.newValue;\n }\n\n onPacketSizeChange(token: PacketSizeEnvChangeToken) {\n this.connection.messageIo.packetSize(token.newValue);\n }\n\n onBeginTransaction(token: BeginTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.push(token.newValue);\n this.connection.inTransaction = true;\n }\n\n onCommitTransaction(token: CommitTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n this.connection.inTransaction = false;\n }\n\n onRollbackTransaction(token: RollbackTransactionEnvChangeToken) {\n this.connection.transactionDescriptors.length = 1;\n // An outermost transaction was rolled back. Reset the transaction counter\n this.connection.inTransaction = false;\n this.connection.emit('rollbackTransaction');\n }\n\n onColMetadata(token: ColMetadataToken) {\n if (!this.request.canceled) {\n if (this.connection.config.options.useColumnNames) {\n const columns: { [key: string]: ColumnMetadata } = Object.create(null);\n\n for (let j = 0, len = token.columns.length; j < len; j++) {\n const col = token.columns[j];\n if (columns[col.colName] == null) {\n columns[col.colName] = col;\n }\n }\n\n this.request.emit('columnMetadata', columns);\n } else {\n this.request.emit('columnMetadata', token.columns);\n }\n }\n }\n\n onOrder(token: OrderToken) {\n if (!this.request.canceled) {\n this.request.emit('order', token.orderColumns);\n }\n }\n\n onRow(token: RowToken | NBCRowToken) {\n if (!this.request.canceled) {\n if (this.connection.config.options.rowCollectionOnRequestCompletion) {\n this.request.rows!.push(token.columns);\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst!.push(token.columns);\n }\n\n this.request.emit('row', token.columns);\n }\n }\n\n onReturnStatus(token: ReturnStatusToken) {\n if (!this.request.canceled) {\n // Keep value for passing in 'doneProc' event.\n this.connection.procReturnStatusValue = token.value;\n }\n }\n\n onReturnValue(token: ReturnValueToken) {\n if (!this.request.canceled) {\n this.request.emit('returnValue', token.paramName, token.value, token.metadata);\n }\n }\n\n onDoneProc(token: DoneProcToken) {\n if (!this.request.canceled) {\n if (token.sqlError && !this.request.error) {\n // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n this.request.error = new RequestError('An unknown error has occurred.', 'UNKNOWN');\n }\n\n this.request.emit('doneProc', token.rowCount, token.more, this.connection.procReturnStatusValue, this.request.rst);\n\n this.connection.procReturnStatusValue = undefined;\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onDoneInProc(token: DoneInProcToken) {\n if (!this.request.canceled) {\n this.request.emit('doneInProc', token.rowCount, token.more, this.request.rst);\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onDone(token: DoneToken) {\n if (!this.request.canceled) {\n if (token.sqlError && !this.request.error) {\n // check if the DONE_ERROR flags was set, but an ERROR token was not sent.\n this.request.error = new RequestError('An unknown error has occurred.', 'UNKNOWN');\n }\n\n this.request.emit('done', token.rowCount, token.more, this.request.rst);\n\n if (token.rowCount !== undefined) {\n this.request.rowCount! += token.rowCount;\n }\n\n if (this.connection.config.options.rowCollectionOnDone) {\n this.request.rst = [];\n }\n }\n }\n\n onResetConnection(token: ResetConnectionEnvChangeToken) {\n this.connection.emit('resetConnection');\n }\n}\n\n/**\n * A handler for the attention acknowledgement message.\n *\n * This message only contains a `DONE` token that acknowledges\n * that the attention message was received by the server.\n */\nexport class AttentionTokenHandler extends TokenHandler {\n declare connection: Connection;\n declare request: Request | BulkLoad;\n\n /**\n * Returns whether an attention acknowledgement was received.\n */\n declare attentionReceived: boolean;\n\n constructor(connection: Connection, request: Request | BulkLoad) {\n super();\n\n this.connection = connection;\n this.request = request;\n\n this.attentionReceived = false;\n }\n\n onDone(token: DoneToken) {\n if (token.attention) {\n this.attentionReceived = true;\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -35,9 +35,6 @@ const tokenParsers = {
|
|
|
35
35
|
[_token.TYPE.SSPI]: _sspiTokenParser.default
|
|
36
36
|
};
|
|
37
37
|
class StreamBuffer {
|
|
38
|
-
iterator;
|
|
39
|
-
buffer;
|
|
40
|
-
position;
|
|
41
38
|
constructor(iterable) {
|
|
42
39
|
this.iterator = (iterable[Symbol.asyncIterator] || iterable[Symbol.iterator]).call(iterable);
|
|
43
40
|
this.buffer = Buffer.alloc(0);
|
|
@@ -57,12 +54,6 @@ class StreamBuffer {
|
|
|
57
54
|
}
|
|
58
55
|
}
|
|
59
56
|
class Parser {
|
|
60
|
-
debug;
|
|
61
|
-
colMetadata;
|
|
62
|
-
options;
|
|
63
|
-
suspended;
|
|
64
|
-
next;
|
|
65
|
-
streamBuffer;
|
|
66
57
|
static async *parseTokens(iterable, debug, options, colMetadata = []) {
|
|
67
58
|
let token;
|
|
68
59
|
const onDoneParsing = t => {
|
|
@@ -380,4 +371,4 @@ class Parser {
|
|
|
380
371
|
var _default = Parser;
|
|
381
372
|
exports.default = _default;
|
|
382
373
|
module.exports = Parser;
|
|
383
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2NvbG1ldGFkYXRhVG9rZW5QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2RvbmVUb2tlblBhcnNlciIsIl9lbnZDaGFuZ2VUb2tlblBhcnNlciIsIl9pbmZvZXJyb3JUb2tlblBhcnNlciIsIl9mZWRhdXRoSW5mb1BhcnNlciIsIl9mZWF0dXJlRXh0QWNrUGFyc2VyIiwiX2xvZ2luYWNrVG9rZW5QYXJzZXIiLCJfb3JkZXJUb2tlblBhcnNlciIsIl9yZXR1cm5zdGF0dXNUb2tlblBhcnNlciIsIl9yZXR1cm52YWx1ZVRva2VuUGFyc2VyIiwiX3Jvd1Rva2VuUGFyc2VyIiwiX25iY3Jvd1Rva2VuUGFyc2VyIiwiX3NzcGlUb2tlblBhcnNlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidG9rZW5QYXJzZXJzIiwiVFlQRSIsIkRPTkUiLCJkb25lUGFyc2VyIiwiRE9ORUlOUFJPQyIsImRvbmVJblByb2NQYXJzZXIiLCJET05FUFJPQyIsImRvbmVQcm9jUGFyc2VyIiwiRU5WQ0hBTkdFIiwiZW52Q2hhbmdlUGFyc2VyIiwiRVJST1IiLCJlcnJvclBhcnNlciIsIkZFREFVVEhJTkZPIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJGRUFUVVJFRVhUQUNLIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsIklORk8iLCJpbmZvUGFyc2VyIiwiTE9HSU5BQ0siLCJsb2dpbkFja1BhcnNlciIsIk9SREVSIiwib3JkZXJQYXJzZXIiLCJSRVRVUk5TVEFUVVMiLCJyZXR1cm5TdGF0dXNQYXJzZXIiLCJSRVRVUk5WQUxVRSIsInJldHVyblZhbHVlUGFyc2VyIiwiU1NQSSIsInNzcGlQYXJzZXIiLCJTdHJlYW1CdWZmZXIiLCJpdGVyYXRvciIsImJ1ZmZlciIsInBvc2l0aW9uIiwiY29uc3RydWN0b3IiLCJpdGVyYWJsZSIsIlN5bWJvbCIsImFzeW5jSXRlcmF0b3IiLCJjYWxsIiwiQnVmZmVyIiwiYWxsb2MiLCJ3YWl0Rm9yQ2h1bmsiLCJyZXN1bHQiLCJuZXh0IiwiZG9uZSIsIkVycm9yIiwibGVuZ3RoIiwidmFsdWUiLCJjb25jYXQiLCJzbGljZSIsIlBhcnNlciIsImRlYnVnIiwiY29sTWV0YWRhdGEiLCJvcHRpb25zIiwic3VzcGVuZGVkIiwic3RyZWFtQnVmZmVyIiwicGFyc2VUb2tlbnMiLCJ0b2tlbiIsIm9uRG9uZVBhcnNpbmciLCJ0IiwicGFyc2VyIiwiZXJyIiwiQ29sTWV0YWRhdGFUb2tlbiIsImNvbHVtbnMiLCJ0eXBlIiwicmVhZFVJbnQ4IiwiQ09MTUVUQURBVEEiLCJjb2xNZXRhZGF0YVBhcnNlciIsIlJPVyIsInJvd1BhcnNlciIsIk5CQ1JPVyIsIm5iY1Jvd1BhcnNlciIsInVuZGVmaW5lZCIsInN1c3BlbmQiLCJhd2FpdERhdGEiLCJjYWxsYmFjayIsInJlYWRJbnQ4IiwiZGF0YSIsInJlYWRJbnQxNkxFIiwicmVhZEludDE2QkUiLCJyZWFkVUludDE2TEUiLCJyZWFkVUludDE2QkUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEJpZ0ludDY0TEUiLCJyZWFkSW50NjRMRSIsIk1hdGgiLCJwb3ciLCJyZWFkSW50NjRCRSIsInJlYWRCaWdVSW50NjRMRSIsInJlYWRVSW50NjRMRSIsInJlYWRVSW50NjRCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJyZWFkVUludDI0TEUiLCJsb3ciLCJoaWdoIiwicmVhZFVJbnQ0MExFIiwicmVhZFVOdW1lcmljNjRMRSIsInJlYWRVTnVtZXJpYzk2TEUiLCJkd29yZDEiLCJkd29yZDIiLCJkd29yZDMiLCJyZWFkVU51bWVyaWMxMjhMRSIsImR3b3JkNCIsInJlYWRCdWZmZXIiLCJyZWFkQlZhckNoYXIiLCJ0b1N0cmluZyIsInJlYWRVc1ZhckNoYXIiLCJyZWFkQlZhckJ5dGUiLCJyZWFkVXNWYXJCeXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3N0cmVhbS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlYnVnIGZyb20gJy4uL2RlYnVnJztcbmltcG9ydCB7IHR5cGUgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2Nvbm5lY3Rpb24nO1xuXG5pbXBvcnQgeyBUWVBFLCBUb2tlbiwgQ29sTWV0YWRhdGFUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgY29sTWV0YWRhdGFQYXJzZXIsIHsgdHlwZSBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IGRvbmVQYXJzZXIsIGRvbmVJblByb2NQYXJzZXIsIGRvbmVQcm9jUGFyc2VyIH0gZnJvbSAnLi9kb25lLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgZW52Q2hhbmdlUGFyc2VyIGZyb20gJy4vZW52LWNoYW5nZS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgZXJyb3JQYXJzZXIsIGluZm9QYXJzZXIgfSBmcm9tICcuL2luZm9lcnJvci10b2tlbi1wYXJzZXInO1xuaW1wb3J0IGZlZEF1dGhJbmZvUGFyc2VyIGZyb20gJy4vZmVkYXV0aC1pbmZvLXBhcnNlcic7XG5pbXBvcnQgZmVhdHVyZUV4dEFja1BhcnNlciBmcm9tICcuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXInO1xuaW1wb3J0IGxvZ2luQWNrUGFyc2VyIGZyb20gJy4vbG9naW5hY2stdG9rZW4tcGFyc2VyJztcbmltcG9ydCBvcmRlclBhcnNlciBmcm9tICcuL29yZGVyLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcmV0dXJuU3RhdHVzUGFyc2VyIGZyb20gJy4vcmV0dXJuc3RhdHVzLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcmV0dXJuVmFsdWVQYXJzZXIgZnJvbSAnLi9yZXR1cm52YWx1ZS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHJvd1BhcnNlciBmcm9tICcuL3Jvdy10b2tlbi1wYXJzZXInO1xuaW1wb3J0IG5iY1Jvd1BhcnNlciBmcm9tICcuL25iY3Jvdy10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHNzcGlQYXJzZXIgZnJvbSAnLi9zc3BpLXRva2VuLXBhcnNlcic7XG5cbmNvbnN0IHRva2VuUGFyc2VycyA9IHtcbiAgW1RZUEUuRE9ORV06IGRvbmVQYXJzZXIsXG4gIFtUWVBFLkRPTkVJTlBST0NdOiBkb25lSW5Qcm9jUGFyc2VyLFxuICBbVFlQRS5ET05FUFJPQ106IGRvbmVQcm9jUGFyc2VyLFxuICBbVFlQRS5FTlZDSEFOR0VdOiBlbnZDaGFuZ2VQYXJzZXIsXG4gIFtUWVBFLkVSUk9SXTogZXJyb3JQYXJzZXIsXG4gIFtUWVBFLkZFREFVVEhJTkZPXTogZmVkQXV0aEluZm9QYXJzZXIsXG4gIFtUWVBFLkZFQVRVUkVFWFRBQ0tdOiBmZWF0dXJlRXh0QWNrUGFyc2VyLFxuICBbVFlQRS5JTkZPXTogaW5mb1BhcnNlcixcbiAgW1RZUEUuTE9HSU5BQ0tdOiBsb2dpbkFja1BhcnNlcixcbiAgW1RZUEUuT1JERVJdOiBvcmRlclBhcnNlcixcbiAgW1RZUEUuUkVUVVJOU1RBVFVTXTogcmV0dXJuU3RhdHVzUGFyc2VyLFxuICBbVFlQRS5SRVRVUk5WQUxVRV06IHJldHVyblZhbHVlUGFyc2VyLFxuICBbVFlQRS5TU1BJXTogc3NwaVBhcnNlclxufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VyT3B0aW9ucyA9IFBpY2s8SW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucywgJ3VzZVVUQycgfCAnbG93ZXJDYXNlR3VpZHMnIHwgJ3Rkc1ZlcnNpb24nIHwgJ3VzZUNvbHVtbk5hbWVzJyB8ICdjb2x1bW5OYW1lUmVwbGFjZXInIHwgJ2NhbWVsQ2FzZUNvbHVtbnMnPjtcblxuY2xhc3MgU3RyZWFtQnVmZmVyIHtcbiAgaXRlcmF0b3I6IEFzeW5jSXRlcmF0b3I8QnVmZmVyLCBhbnksIHVuZGVmaW5lZD4gfCBJdGVyYXRvcjxCdWZmZXIsIGFueSwgdW5kZWZpbmVkPjtcbiAgYnVmZmVyOiBCdWZmZXI7XG4gIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IEFzeW5jSXRlcmFibGU8QnVmZmVyPiB8IEl0ZXJhYmxlPEJ1ZmZlcj4pIHtcbiAgICB0aGlzLml0ZXJhdG9yID0gKChpdGVyYWJsZSBhcyBBc3luY0l0ZXJhYmxlPEJ1ZmZlcj4pW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSB8fCAoaXRlcmFibGUgYXMgSXRlcmFibGU8QnVmZmVyPilbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChpdGVyYWJsZSk7XG5cbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIGFzeW5jIHdhaXRGb3JDaHVuaygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLml0ZXJhdG9yLm5leHQoKTtcbiAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBlbmQgb2YgZGF0YScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSB0aGlzLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gcmVzdWx0LnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zaXRpb24pLCByZXN1bHQudmFsdWVdKTtcbiAgICB9XG4gICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gIH1cbn1cblxuY2xhc3MgUGFyc2VyIHtcbiAgZGVidWc6IERlYnVnO1xuICBjb2xNZXRhZGF0YTogQ29sdW1uTWV0YWRhdGFbXTtcbiAgb3B0aW9uczogUGFyc2VyT3B0aW9ucztcblxuICBzdXNwZW5kZWQ6IGJvb2xlYW47XG4gIG5leHQ6ICgoKSA9PiB2b2lkKSB8IHVuZGVmaW5lZDtcbiAgc3RyZWFtQnVmZmVyOiBTdHJlYW1CdWZmZXI7XG5cbiAgc3RhdGljIGFzeW5jICpwYXJzZVRva2VucyhpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxCdWZmZXI+IHwgSXRlcmFibGU8QnVmZmVyPiwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjb2xNZXRhZGF0YTogQ29sdW1uTWV0YWRhdGFbXSA9IFtdKSB7XG4gICAgbGV0IHRva2VuOiBUb2tlbiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbkRvbmVQYXJzaW5nID0gKHQ6IFRva2VuIHwgdW5kZWZpbmVkKSA9PiB7IHRva2VuID0gdDsgfTtcblxuICAgIGNvbnN0IHN0cmVhbUJ1ZmZlciA9IG5ldyBTdHJlYW1CdWZmZXIoaXRlcmFibGUpO1xuXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihzdHJlYW1CdWZmZXIsIGRlYnVnLCBvcHRpb25zKTtcbiAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSBjb2xNZXRhZGF0YTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzdHJlYW1CdWZmZXIud2FpdEZvckNodW5rKCk7XG4gICAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgICAgaWYgKHN0cmVhbUJ1ZmZlci5wb3NpdGlvbiA9PT0gc3RyZWFtQnVmZmVyLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZXIuc3VzcGVuZGVkKSB7XG4gICAgICAgIC8vIFVuc3VzcGVuZCBhbmQgY29udGludWUgZnJvbSB3aGVyZSBldmVyIHdlIGxlZnQgb2ZmLlxuICAgICAgICBwYXJzZXIuc3VzcGVuZGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5leHQgPSBwYXJzZXIubmV4dCE7XG5cbiAgICAgICAgbmV4dCgpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGEgbmV3IHRva2VuIHdhcyBwYXJzZWQgYWZ0ZXIgdW5zdXNwZW5zaW9uLlxuICAgICAgICBpZiAoIXBhcnNlci5zdXNwZW5kZWQgJiYgdG9rZW4pIHtcbiAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBDb2xNZXRhZGF0YVRva2VuKSB7XG4gICAgICAgICAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdoaWxlICghcGFyc2VyLnN1c3BlbmRlZCAmJiBwYXJzZXIucG9zaXRpb24gKyAxIDw9IHBhcnNlci5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBwYXJzZXIuYnVmZmVyLnJlYWRVSW50OChwYXJzZXIucG9zaXRpb24pO1xuXG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiArPSAxO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUWVBFLkNPTE1FVEFEQVRBKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBjb2xNZXRhZGF0YVBhcnNlcihwYXJzZXIpO1xuICAgICAgICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IHRva2VuLmNvbHVtbnM7XG4gICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVFlQRS5ST1cpIHtcbiAgICAgICAgICB5aWVsZCByb3dQYXJzZXIocGFyc2VyKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUWVBFLk5CQ1JPVykge1xuICAgICAgICAgIHlpZWxkIG5iY1Jvd1BhcnNlcihwYXJzZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuUGFyc2Vyc1t0eXBlXSkge1xuICAgICAgICAgIHRva2VuUGFyc2Vyc1t0eXBlXShwYXJzZXIsIHBhcnNlci5vcHRpb25zLCBvbkRvbmVQYXJzaW5nKTtcblxuICAgICAgICAgIC8vIENoZWNrIGlmIGEgbmV3IHRva2VuIHdhcyBwYXJzZWQgYWZ0ZXIgdW5zdXNwZW5zaW9uLlxuICAgICAgICAgIGlmICghcGFyc2VyLnN1c3BlbmRlZCAmJiB0b2tlbikge1xuICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQ29sTWV0YWRhdGFUb2tlbikge1xuICAgICAgICAgICAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biB0eXBlOiAnICsgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdHJlYW1CdWZmZXI6IFN0cmVhbUJ1ZmZlciwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKSB7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuY29sTWV0YWRhdGEgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgdGhpcy5zdHJlYW1CdWZmZXIgPSBzdHJlYW1CdWZmZXI7XG4gICAgdGhpcy5zdXNwZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5leHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgYnVmZmVyKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmVhbUJ1ZmZlci5idWZmZXI7XG4gIH1cblxuICBnZXQgcG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyZWFtQnVmZmVyLnBvc2l0aW9uO1xuICB9XG5cbiAgc2V0IHBvc2l0aW9uKHZhbHVlKSB7XG4gICAgdGhpcy5zdHJlYW1CdWZmZXIucG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIHN1c3BlbmQobmV4dDogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuc3VzcGVuZGVkID0gdHJ1ZTtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgYXdhaXREYXRhKGxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLnBvc2l0aW9uICsgbGVuZ3RoIDw9IHRoaXMuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdXNwZW5kKCgpID0+IHtcbiAgICAgICAgdGhpcy5hd2FpdERhdGEobGVuZ3RoLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWFkSW50OChjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDEsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50OCh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMTtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ4KGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMSwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OCh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMTtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDE2TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEludDE2TEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDI7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRJbnQxNkJFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMiwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRJbnQxNkJFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDE2TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZFVJbnQxNkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDE2QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50MzJMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDMyQkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg0LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEludDMyQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MzJMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MzJCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRCaWdJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogYmlnaW50KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRCaWdJbnQ2NExFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50NjRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNYXRoLnBvdygyLCAzMikgKiB0aGlzLmJ1ZmZlci5yZWFkSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCkgKyAoKHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb24gKyA0XSAmIDB4ODApID09PSAweDgwID8gMSA6IC0xKSAqIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDY0QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg4LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gTWF0aC5wb3coMiwgMzIpICogdGhpcy5idWZmZXIucmVhZEludDMyQkUodGhpcy5wb3NpdGlvbikgKyAoKHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb25dICYgMHg4MCkgPT09IDB4ODAgPyAxIDogLTEpICogdGhpcy5idWZmZXIucmVhZFVJbnQzMkJFKHRoaXMucG9zaXRpb24gKyA0KTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEJpZ1VJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogYmlnaW50KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRCaWdVSW50NjRMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IE1hdGgucG93KDIsIDMyKSAqIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCkgKyB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50NjRCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNYXRoLnBvdygyLCAzMikgKiB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbikgKyB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkRmxvYXRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRmxvYXRMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEZsb2F0QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg0LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEZsb2F0QkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWREb3VibGVMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRG91YmxlTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWREb3VibGVCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRG91YmxlQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MjRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDMsICgpID0+IHtcbiAgICAgIGNvbnN0IGxvdyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MTZMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGhpZ2ggPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgodGhpcy5wb3NpdGlvbiArIDIpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDM7XG5cbiAgICAgIGNhbGxiYWNrKGxvdyB8IChoaWdoIDw8IDE2KSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDQwTEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg1LCAoKSA9PiB7XG4gICAgICBjb25zdCBsb3cgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBoaWdoID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KHRoaXMucG9zaXRpb24gKyA0KTtcblxuICAgICAgdGhpcy5wb3NpdGlvbiArPSA1O1xuXG4gICAgICBjYWxsYmFjaygoMHgxMDAwMDAwMDAgKiBoaWdoKSArIGxvdyk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVU51bWVyaWM2NExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgbG93ID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgY29uc3QgaGlnaCA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCk7XG5cbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcblxuICAgICAgY2FsbGJhY2soKDB4MTAwMDAwMDAwICogaGlnaCkgKyBsb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVOdW1lcmljOTZMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDEyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkd29yZDEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBkd29yZDIgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgY29uc3QgZHdvcmQzID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA4KTtcblxuICAgICAgdGhpcy5wb3NpdGlvbiArPSAxMjtcblxuICAgICAgY2FsbGJhY2soZHdvcmQxICsgKDB4MTAwMDAwMDAwICogZHdvcmQyKSArICgweDEwMDAwMDAwMCAqIDB4MTAwMDAwMDAwICogZHdvcmQzKSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVU51bWVyaWMxMjhMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDE2LCAoKSA9PiB7XG4gICAgICBjb25zdCBkd29yZDEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBkd29yZDIgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgY29uc3QgZHdvcmQzID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA4KTtcbiAgICAgIGNvbnN0IGR3b3JkNCA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgMTIpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDE2O1xuXG4gICAgICBjYWxsYmFjayhkd29yZDEgKyAoMHgxMDAwMDAwMDAgKiBkd29yZDIpICsgKDB4MTAwMDAwMDAwICogMHgxMDAwMDAwMDAgKiBkd29yZDMpICsgKDB4MTAwMDAwMDAwICogMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkNCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVmFyaWFibGUgbGVuZ3RoIGRhdGFcblxuICByZWFkQnVmZmVyKGxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKGRhdGE6IEJ1ZmZlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKGxlbmd0aCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zaXRpb24sIHRoaXMucG9zaXRpb24gKyBsZW5ndGgpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlYWQgYSBVbmljb2RlIFN0cmluZyAoQlZBUkNIQVIpXG4gIHJlYWRCVmFyQ2hhcihjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMucmVhZFVJbnQ4KChsZW5ndGgpID0+IHtcbiAgICAgIHRoaXMucmVhZEJ1ZmZlcihsZW5ndGggKiAyLCAoZGF0YSkgPT4ge1xuICAgICAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIGEgVW5pY29kZSBTdHJpbmcgKFVTVkFSQ0hBUilcbiAgcmVhZFVzVmFyQ2hhcihjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMucmVhZFVJbnQxNkxFKChsZW5ndGgpID0+IHtcbiAgICAgIHRoaXMucmVhZEJ1ZmZlcihsZW5ndGggKiAyLCAoZGF0YSkgPT4ge1xuICAgICAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIGJpbmFyeSBkYXRhIChCVkFSQllURSlcbiAgcmVhZEJWYXJCeXRlKGNhbGxiYWNrOiAoZGF0YTogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDgoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCwgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhZCBiaW5hcnkgZGF0YSAoVVNWQVJCWVRFKVxuICByZWFkVXNWYXJCeXRlKGNhbGxiYWNrOiAoZGF0YTogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDE2TEUoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCwgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxxQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQUosc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFPLG9CQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxvQkFBQSxH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
|
|
374
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfdG9rZW4iLCJyZXF1aXJlIiwiX2NvbG1ldGFkYXRhVG9rZW5QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2RvbmVUb2tlblBhcnNlciIsIl9lbnZDaGFuZ2VUb2tlblBhcnNlciIsIl9pbmZvZXJyb3JUb2tlblBhcnNlciIsIl9mZWRhdXRoSW5mb1BhcnNlciIsIl9mZWF0dXJlRXh0QWNrUGFyc2VyIiwiX2xvZ2luYWNrVG9rZW5QYXJzZXIiLCJfb3JkZXJUb2tlblBhcnNlciIsIl9yZXR1cm5zdGF0dXNUb2tlblBhcnNlciIsIl9yZXR1cm52YWx1ZVRva2VuUGFyc2VyIiwiX3Jvd1Rva2VuUGFyc2VyIiwiX25iY3Jvd1Rva2VuUGFyc2VyIiwiX3NzcGlUb2tlblBhcnNlciIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwidG9rZW5QYXJzZXJzIiwiVFlQRSIsIkRPTkUiLCJkb25lUGFyc2VyIiwiRE9ORUlOUFJPQyIsImRvbmVJblByb2NQYXJzZXIiLCJET05FUFJPQyIsImRvbmVQcm9jUGFyc2VyIiwiRU5WQ0hBTkdFIiwiZW52Q2hhbmdlUGFyc2VyIiwiRVJST1IiLCJlcnJvclBhcnNlciIsIkZFREFVVEhJTkZPIiwiZmVkQXV0aEluZm9QYXJzZXIiLCJGRUFUVVJFRVhUQUNLIiwiZmVhdHVyZUV4dEFja1BhcnNlciIsIklORk8iLCJpbmZvUGFyc2VyIiwiTE9HSU5BQ0siLCJsb2dpbkFja1BhcnNlciIsIk9SREVSIiwib3JkZXJQYXJzZXIiLCJSRVRVUk5TVEFUVVMiLCJyZXR1cm5TdGF0dXNQYXJzZXIiLCJSRVRVUk5WQUxVRSIsInJldHVyblZhbHVlUGFyc2VyIiwiU1NQSSIsInNzcGlQYXJzZXIiLCJTdHJlYW1CdWZmZXIiLCJjb25zdHJ1Y3RvciIsIml0ZXJhYmxlIiwiaXRlcmF0b3IiLCJTeW1ib2wiLCJhc3luY0l0ZXJhdG9yIiwiY2FsbCIsImJ1ZmZlciIsIkJ1ZmZlciIsImFsbG9jIiwicG9zaXRpb24iLCJ3YWl0Rm9yQ2h1bmsiLCJyZXN1bHQiLCJuZXh0IiwiZG9uZSIsIkVycm9yIiwibGVuZ3RoIiwidmFsdWUiLCJjb25jYXQiLCJzbGljZSIsIlBhcnNlciIsInBhcnNlVG9rZW5zIiwiZGVidWciLCJvcHRpb25zIiwiY29sTWV0YWRhdGEiLCJ0b2tlbiIsIm9uRG9uZVBhcnNpbmciLCJ0Iiwic3RyZWFtQnVmZmVyIiwicGFyc2VyIiwiZXJyIiwic3VzcGVuZGVkIiwiQ29sTWV0YWRhdGFUb2tlbiIsImNvbHVtbnMiLCJ0eXBlIiwicmVhZFVJbnQ4IiwiQ09MTUVUQURBVEEiLCJjb2xNZXRhZGF0YVBhcnNlciIsIlJPVyIsInJvd1BhcnNlciIsIk5CQ1JPVyIsIm5iY1Jvd1BhcnNlciIsInVuZGVmaW5lZCIsInN1c3BlbmQiLCJhd2FpdERhdGEiLCJjYWxsYmFjayIsInJlYWRJbnQ4IiwiZGF0YSIsInJlYWRJbnQxNkxFIiwicmVhZEludDE2QkUiLCJyZWFkVUludDE2TEUiLCJyZWFkVUludDE2QkUiLCJyZWFkSW50MzJMRSIsInJlYWRJbnQzMkJFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEJpZ0ludDY0TEUiLCJyZWFkSW50NjRMRSIsIk1hdGgiLCJwb3ciLCJyZWFkSW50NjRCRSIsInJlYWRCaWdVSW50NjRMRSIsInJlYWRVSW50NjRMRSIsInJlYWRVSW50NjRCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJyZWFkVUludDI0TEUiLCJsb3ciLCJoaWdoIiwicmVhZFVJbnQ0MExFIiwicmVhZFVOdW1lcmljNjRMRSIsInJlYWRVTnVtZXJpYzk2TEUiLCJkd29yZDEiLCJkd29yZDIiLCJkd29yZDMiLCJyZWFkVU51bWVyaWMxMjhMRSIsImR3b3JkNCIsInJlYWRCdWZmZXIiLCJyZWFkQlZhckNoYXIiLCJ0b1N0cmluZyIsInJlYWRVc1ZhckNoYXIiLCJyZWFkQlZhckJ5dGUiLCJyZWFkVXNWYXJCeXRlIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwibW9kdWxlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rva2VuL3N0cmVhbS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERlYnVnIGZyb20gJy4uL2RlYnVnJztcbmltcG9ydCB7IHR5cGUgSW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucyB9IGZyb20gJy4uL2Nvbm5lY3Rpb24nO1xuXG5pbXBvcnQgeyBUWVBFLCBUb2tlbiwgQ29sTWV0YWRhdGFUb2tlbiB9IGZyb20gJy4vdG9rZW4nO1xuXG5pbXBvcnQgY29sTWV0YWRhdGFQYXJzZXIsIHsgdHlwZSBDb2x1bW5NZXRhZGF0YSB9IGZyb20gJy4vY29sbWV0YWRhdGEtdG9rZW4tcGFyc2VyJztcbmltcG9ydCB7IGRvbmVQYXJzZXIsIGRvbmVJblByb2NQYXJzZXIsIGRvbmVQcm9jUGFyc2VyIH0gZnJvbSAnLi9kb25lLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgZW52Q2hhbmdlUGFyc2VyIGZyb20gJy4vZW52LWNoYW5nZS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHsgZXJyb3JQYXJzZXIsIGluZm9QYXJzZXIgfSBmcm9tICcuL2luZm9lcnJvci10b2tlbi1wYXJzZXInO1xuaW1wb3J0IGZlZEF1dGhJbmZvUGFyc2VyIGZyb20gJy4vZmVkYXV0aC1pbmZvLXBhcnNlcic7XG5pbXBvcnQgZmVhdHVyZUV4dEFja1BhcnNlciBmcm9tICcuL2ZlYXR1cmUtZXh0LWFjay1wYXJzZXInO1xuaW1wb3J0IGxvZ2luQWNrUGFyc2VyIGZyb20gJy4vbG9naW5hY2stdG9rZW4tcGFyc2VyJztcbmltcG9ydCBvcmRlclBhcnNlciBmcm9tICcuL29yZGVyLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcmV0dXJuU3RhdHVzUGFyc2VyIGZyb20gJy4vcmV0dXJuc3RhdHVzLXRva2VuLXBhcnNlcic7XG5pbXBvcnQgcmV0dXJuVmFsdWVQYXJzZXIgZnJvbSAnLi9yZXR1cm52YWx1ZS10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHJvd1BhcnNlciBmcm9tICcuL3Jvdy10b2tlbi1wYXJzZXInO1xuaW1wb3J0IG5iY1Jvd1BhcnNlciBmcm9tICcuL25iY3Jvdy10b2tlbi1wYXJzZXInO1xuaW1wb3J0IHNzcGlQYXJzZXIgZnJvbSAnLi9zc3BpLXRva2VuLXBhcnNlcic7XG5cbmNvbnN0IHRva2VuUGFyc2VycyA9IHtcbiAgW1RZUEUuRE9ORV06IGRvbmVQYXJzZXIsXG4gIFtUWVBFLkRPTkVJTlBST0NdOiBkb25lSW5Qcm9jUGFyc2VyLFxuICBbVFlQRS5ET05FUFJPQ106IGRvbmVQcm9jUGFyc2VyLFxuICBbVFlQRS5FTlZDSEFOR0VdOiBlbnZDaGFuZ2VQYXJzZXIsXG4gIFtUWVBFLkVSUk9SXTogZXJyb3JQYXJzZXIsXG4gIFtUWVBFLkZFREFVVEhJTkZPXTogZmVkQXV0aEluZm9QYXJzZXIsXG4gIFtUWVBFLkZFQVRVUkVFWFRBQ0tdOiBmZWF0dXJlRXh0QWNrUGFyc2VyLFxuICBbVFlQRS5JTkZPXTogaW5mb1BhcnNlcixcbiAgW1RZUEUuTE9HSU5BQ0tdOiBsb2dpbkFja1BhcnNlcixcbiAgW1RZUEUuT1JERVJdOiBvcmRlclBhcnNlcixcbiAgW1RZUEUuUkVUVVJOU1RBVFVTXTogcmV0dXJuU3RhdHVzUGFyc2VyLFxuICBbVFlQRS5SRVRVUk5WQUxVRV06IHJldHVyblZhbHVlUGFyc2VyLFxuICBbVFlQRS5TU1BJXTogc3NwaVBhcnNlclxufTtcblxuZXhwb3J0IHR5cGUgUGFyc2VyT3B0aW9ucyA9IFBpY2s8SW50ZXJuYWxDb25uZWN0aW9uT3B0aW9ucywgJ3VzZVVUQycgfCAnbG93ZXJDYXNlR3VpZHMnIHwgJ3Rkc1ZlcnNpb24nIHwgJ3VzZUNvbHVtbk5hbWVzJyB8ICdjb2x1bW5OYW1lUmVwbGFjZXInIHwgJ2NhbWVsQ2FzZUNvbHVtbnMnPjtcblxuY2xhc3MgU3RyZWFtQnVmZmVyIHtcbiAgZGVjbGFyZSBpdGVyYXRvcjogQXN5bmNJdGVyYXRvcjxCdWZmZXIsIGFueSwgdW5kZWZpbmVkPiB8IEl0ZXJhdG9yPEJ1ZmZlciwgYW55LCB1bmRlZmluZWQ+O1xuICBkZWNsYXJlIGJ1ZmZlcjogQnVmZmVyO1xuICBkZWNsYXJlIHBvc2l0aW9uOiBudW1iZXI7XG5cbiAgY29uc3RydWN0b3IoaXRlcmFibGU6IEFzeW5jSXRlcmFibGU8QnVmZmVyPiB8IEl0ZXJhYmxlPEJ1ZmZlcj4pIHtcbiAgICB0aGlzLml0ZXJhdG9yID0gKChpdGVyYWJsZSBhcyBBc3luY0l0ZXJhYmxlPEJ1ZmZlcj4pW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSB8fCAoaXRlcmFibGUgYXMgSXRlcmFibGU8QnVmZmVyPilbU3ltYm9sLml0ZXJhdG9yXSkuY2FsbChpdGVyYWJsZSk7XG5cbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYygwKTtcbiAgICB0aGlzLnBvc2l0aW9uID0gMDtcbiAgfVxuXG4gIGFzeW5jIHdhaXRGb3JDaHVuaygpIHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLml0ZXJhdG9yLm5leHQoKTtcbiAgICBpZiAocmVzdWx0LmRvbmUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5leHBlY3RlZCBlbmQgb2YgZGF0YScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBvc2l0aW9uID09PSB0aGlzLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgIHRoaXMuYnVmZmVyID0gcmVzdWx0LnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5jb25jYXQoW3RoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zaXRpb24pLCByZXN1bHQudmFsdWVdKTtcbiAgICB9XG4gICAgdGhpcy5wb3NpdGlvbiA9IDA7XG4gIH1cbn1cblxuY2xhc3MgUGFyc2VyIHtcbiAgZGVjbGFyZSBkZWJ1ZzogRGVidWc7XG4gIGRlY2xhcmUgY29sTWV0YWRhdGE6IENvbHVtbk1ldGFkYXRhW107XG4gIGRlY2xhcmUgb3B0aW9uczogUGFyc2VyT3B0aW9ucztcblxuICBkZWNsYXJlIHN1c3BlbmRlZDogYm9vbGVhbjtcbiAgZGVjbGFyZSBuZXh0OiAoKCkgPT4gdm9pZCkgfCB1bmRlZmluZWQ7XG4gIGRlY2xhcmUgc3RyZWFtQnVmZmVyOiBTdHJlYW1CdWZmZXI7XG5cbiAgc3RhdGljIGFzeW5jICpwYXJzZVRva2VucyhpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxCdWZmZXI+IHwgSXRlcmFibGU8QnVmZmVyPiwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjb2xNZXRhZGF0YTogQ29sdW1uTWV0YWRhdGFbXSA9IFtdKSB7XG4gICAgbGV0IHRva2VuOiBUb2tlbiB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBvbkRvbmVQYXJzaW5nID0gKHQ6IFRva2VuIHwgdW5kZWZpbmVkKSA9PiB7IHRva2VuID0gdDsgfTtcblxuICAgIGNvbnN0IHN0cmVhbUJ1ZmZlciA9IG5ldyBTdHJlYW1CdWZmZXIoaXRlcmFibGUpO1xuXG4gICAgY29uc3QgcGFyc2VyID0gbmV3IFBhcnNlcihzdHJlYW1CdWZmZXIsIGRlYnVnLCBvcHRpb25zKTtcbiAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSBjb2xNZXRhZGF0YTtcblxuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBzdHJlYW1CdWZmZXIud2FpdEZvckNodW5rKCk7XG4gICAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgICAgaWYgKHN0cmVhbUJ1ZmZlci5wb3NpdGlvbiA9PT0gc3RyZWFtQnVmZmVyLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJzZXIuc3VzcGVuZGVkKSB7XG4gICAgICAgIC8vIFVuc3VzcGVuZCBhbmQgY29udGludWUgZnJvbSB3aGVyZSBldmVyIHdlIGxlZnQgb2ZmLlxuICAgICAgICBwYXJzZXIuc3VzcGVuZGVkID0gZmFsc2U7XG4gICAgICAgIGNvbnN0IG5leHQgPSBwYXJzZXIubmV4dCE7XG5cbiAgICAgICAgbmV4dCgpO1xuXG4gICAgICAgIC8vIENoZWNrIGlmIGEgbmV3IHRva2VuIHdhcyBwYXJzZWQgYWZ0ZXIgdW5zdXNwZW5zaW9uLlxuICAgICAgICBpZiAoIXBhcnNlci5zdXNwZW5kZWQgJiYgdG9rZW4pIHtcbiAgICAgICAgICBpZiAodG9rZW4gaW5zdGFuY2VvZiBDb2xNZXRhZGF0YVRva2VuKSB7XG4gICAgICAgICAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHlpZWxkIHRva2VuO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHdoaWxlICghcGFyc2VyLnN1c3BlbmRlZCAmJiBwYXJzZXIucG9zaXRpb24gKyAxIDw9IHBhcnNlci5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHR5cGUgPSBwYXJzZXIuYnVmZmVyLnJlYWRVSW50OChwYXJzZXIucG9zaXRpb24pO1xuXG4gICAgICAgIHBhcnNlci5wb3NpdGlvbiArPSAxO1xuXG4gICAgICAgIGlmICh0eXBlID09PSBUWVBFLkNPTE1FVEFEQVRBKSB7XG4gICAgICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCBjb2xNZXRhZGF0YVBhcnNlcihwYXJzZXIpO1xuICAgICAgICAgIHBhcnNlci5jb2xNZXRhZGF0YSA9IHRva2VuLmNvbHVtbnM7XG4gICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gVFlQRS5ST1cpIHtcbiAgICAgICAgICB5aWVsZCByb3dQYXJzZXIocGFyc2VyKTtcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUWVBFLk5CQ1JPVykge1xuICAgICAgICAgIHlpZWxkIG5iY1Jvd1BhcnNlcihwYXJzZXIpO1xuICAgICAgICB9IGVsc2UgaWYgKHRva2VuUGFyc2Vyc1t0eXBlXSkge1xuICAgICAgICAgIHRva2VuUGFyc2Vyc1t0eXBlXShwYXJzZXIsIHBhcnNlci5vcHRpb25zLCBvbkRvbmVQYXJzaW5nKTtcblxuICAgICAgICAgIC8vIENoZWNrIGlmIGEgbmV3IHRva2VuIHdhcyBwYXJzZWQgYWZ0ZXIgdW5zdXNwZW5zaW9uLlxuICAgICAgICAgIGlmICghcGFyc2VyLnN1c3BlbmRlZCAmJiB0b2tlbikge1xuICAgICAgICAgICAgaWYgKHRva2VuIGluc3RhbmNlb2YgQ29sTWV0YWRhdGFUb2tlbikge1xuICAgICAgICAgICAgICBwYXJzZXIuY29sTWV0YWRhdGEgPSB0b2tlbi5jb2x1bW5zO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeWllbGQgdG9rZW47XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVW5rbm93biB0eXBlOiAnICsgdHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzdHJlYW1CdWZmZXI6IFN0cmVhbUJ1ZmZlciwgZGVidWc6IERlYnVnLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKSB7XG4gICAgdGhpcy5kZWJ1ZyA9IGRlYnVnO1xuICAgIHRoaXMuY29sTWV0YWRhdGEgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgdGhpcy5zdHJlYW1CdWZmZXIgPSBzdHJlYW1CdWZmZXI7XG4gICAgdGhpcy5zdXNwZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLm5leHQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgYnVmZmVyKCkge1xuICAgIHJldHVybiB0aGlzLnN0cmVhbUJ1ZmZlci5idWZmZXI7XG4gIH1cblxuICBnZXQgcG9zaXRpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RyZWFtQnVmZmVyLnBvc2l0aW9uO1xuICB9XG5cbiAgc2V0IHBvc2l0aW9uKHZhbHVlKSB7XG4gICAgdGhpcy5zdHJlYW1CdWZmZXIucG9zaXRpb24gPSB2YWx1ZTtcbiAgfVxuXG4gIHN1c3BlbmQobmV4dDogKCkgPT4gdm9pZCkge1xuICAgIHRoaXMuc3VzcGVuZGVkID0gdHJ1ZTtcbiAgICB0aGlzLm5leHQgPSBuZXh0O1xuICB9XG5cbiAgYXdhaXREYXRhKGxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKCkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLnBvc2l0aW9uICsgbGVuZ3RoIDw9IHRoaXMuYnVmZmVyLmxlbmd0aCkge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdXNwZW5kKCgpID0+IHtcbiAgICAgICAgdGhpcy5hd2FpdERhdGEobGVuZ3RoLCBjYWxsYmFjayk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICByZWFkSW50OChjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDEsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50OCh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMTtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ4KGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMSwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRVSW50OCh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gMTtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDE2TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEludDE2TEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDI7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRJbnQxNkJFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoMiwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRJbnQxNkJFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDE2TEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZFVJbnQxNkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDE2QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSgyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZFVJbnQxNkJFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSAyO1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50MzJMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDMyQkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg0LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEludDMyQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MzJMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MzJCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRCaWdJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogYmlnaW50KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRCaWdJbnQ2NExFKHRoaXMucG9zaXRpb24pO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkSW50NjRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNYXRoLnBvdygyLCAzMikgKiB0aGlzLmJ1ZmZlci5yZWFkSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCkgKyAoKHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb24gKyA0XSAmIDB4ODApID09PSAweDgwID8gMSA6IC0xKSAqIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEludDY0QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg4LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gTWF0aC5wb3coMiwgMzIpICogdGhpcy5idWZmZXIucmVhZEludDMyQkUodGhpcy5wb3NpdGlvbikgKyAoKHRoaXMuYnVmZmVyW3RoaXMucG9zaXRpb25dICYgMHg4MCkgPT09IDB4ODAgPyAxIDogLTEpICogdGhpcy5idWZmZXIucmVhZFVJbnQzMkJFKHRoaXMucG9zaXRpb24gKyA0KTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEJpZ1VJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogYmlnaW50KSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnJlYWRCaWdVSW50NjRMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVJbnQ2NExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IE1hdGgucG93KDIsIDMyKSAqIHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCkgKyB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50NjRCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBNYXRoLnBvdygyLCAzMikgKiB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbikgKyB0aGlzLmJ1ZmZlci5yZWFkVUludDMyQkUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSA4O1xuICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkRmxvYXRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDQsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRmxvYXRMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIHRoaXMucG9zaXRpb24gKz0gNDtcbiAgICAgIGNhbGxiYWNrKGRhdGEpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZEZsb2F0QkUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg0LCAoKSA9PiB7XG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5idWZmZXIucmVhZEZsb2F0QkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDQ7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWREb3VibGVMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRG91YmxlTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWREb3VibGVCRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDgsICgpID0+IHtcbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLmJ1ZmZlci5yZWFkRG91YmxlQkUodGhpcy5wb3NpdGlvbik7XG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlYWRVSW50MjRMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDMsICgpID0+IHtcbiAgICAgIGNvbnN0IGxvdyA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MTZMRSh0aGlzLnBvc2l0aW9uKTtcbiAgICAgIGNvbnN0IGhpZ2ggPSB0aGlzLmJ1ZmZlci5yZWFkVUludDgodGhpcy5wb3NpdGlvbiArIDIpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDM7XG5cbiAgICAgIGNhbGxiYWNrKGxvdyB8IChoaWdoIDw8IDE2KSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVUludDQwTEUoY2FsbGJhY2s6IChkYXRhOiBudW1iZXIpID0+IHZvaWQpIHtcbiAgICB0aGlzLmF3YWl0RGF0YSg1LCAoKSA9PiB7XG4gICAgICBjb25zdCBsb3cgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBoaWdoID0gdGhpcy5idWZmZXIucmVhZFVJbnQ4KHRoaXMucG9zaXRpb24gKyA0KTtcblxuICAgICAgdGhpcy5wb3NpdGlvbiArPSA1O1xuXG4gICAgICBjYWxsYmFjaygoMHgxMDAwMDAwMDAgKiBoaWdoKSArIGxvdyk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVU51bWVyaWM2NExFKGNhbGxiYWNrOiAoZGF0YTogbnVtYmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5hd2FpdERhdGEoOCwgKCkgPT4ge1xuICAgICAgY29uc3QgbG93ID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24pO1xuICAgICAgY29uc3QgaGlnaCA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgNCk7XG5cbiAgICAgIHRoaXMucG9zaXRpb24gKz0gODtcblxuICAgICAgY2FsbGJhY2soKDB4MTAwMDAwMDAwICogaGlnaCkgKyBsb3cpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVhZFVOdW1lcmljOTZMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDEyLCAoKSA9PiB7XG4gICAgICBjb25zdCBkd29yZDEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBkd29yZDIgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgY29uc3QgZHdvcmQzID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA4KTtcblxuICAgICAgdGhpcy5wb3NpdGlvbiArPSAxMjtcblxuICAgICAgY2FsbGJhY2soZHdvcmQxICsgKDB4MTAwMDAwMDAwICogZHdvcmQyKSArICgweDEwMDAwMDAwMCAqIDB4MTAwMDAwMDAwICogZHdvcmQzKSk7XG4gICAgfSk7XG4gIH1cblxuICByZWFkVU51bWVyaWMxMjhMRShjYWxsYmFjazogKGRhdGE6IG51bWJlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKDE2LCAoKSA9PiB7XG4gICAgICBjb25zdCBkd29yZDEgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbik7XG4gICAgICBjb25zdCBkd29yZDIgPSB0aGlzLmJ1ZmZlci5yZWFkVUludDMyTEUodGhpcy5wb3NpdGlvbiArIDQpO1xuICAgICAgY29uc3QgZHdvcmQzID0gdGhpcy5idWZmZXIucmVhZFVJbnQzMkxFKHRoaXMucG9zaXRpb24gKyA4KTtcbiAgICAgIGNvbnN0IGR3b3JkNCA9IHRoaXMuYnVmZmVyLnJlYWRVSW50MzJMRSh0aGlzLnBvc2l0aW9uICsgMTIpO1xuXG4gICAgICB0aGlzLnBvc2l0aW9uICs9IDE2O1xuXG4gICAgICBjYWxsYmFjayhkd29yZDEgKyAoMHgxMDAwMDAwMDAgKiBkd29yZDIpICsgKDB4MTAwMDAwMDAwICogMHgxMDAwMDAwMDAgKiBkd29yZDMpICsgKDB4MTAwMDAwMDAwICogMHgxMDAwMDAwMDAgKiAweDEwMDAwMDAwMCAqIGR3b3JkNCkpO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gVmFyaWFibGUgbGVuZ3RoIGRhdGFcblxuICByZWFkQnVmZmVyKGxlbmd0aDogbnVtYmVyLCBjYWxsYmFjazogKGRhdGE6IEJ1ZmZlcikgPT4gdm9pZCkge1xuICAgIHRoaXMuYXdhaXREYXRhKGxlbmd0aCwgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuYnVmZmVyLnNsaWNlKHRoaXMucG9zaXRpb24sIHRoaXMucG9zaXRpb24gKyBsZW5ndGgpO1xuICAgICAgdGhpcy5wb3NpdGlvbiArPSBsZW5ndGg7XG4gICAgICBjYWxsYmFjayhkYXRhKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlYWQgYSBVbmljb2RlIFN0cmluZyAoQlZBUkNIQVIpXG4gIHJlYWRCVmFyQ2hhcihjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMucmVhZFVJbnQ4KChsZW5ndGgpID0+IHtcbiAgICAgIHRoaXMucmVhZEJ1ZmZlcihsZW5ndGggKiAyLCAoZGF0YSkgPT4ge1xuICAgICAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIGEgVW5pY29kZSBTdHJpbmcgKFVTVkFSQ0hBUilcbiAgcmVhZFVzVmFyQ2hhcihjYWxsYmFjazogKGRhdGE6IHN0cmluZykgPT4gdm9pZCkge1xuICAgIHRoaXMucmVhZFVJbnQxNkxFKChsZW5ndGgpID0+IHtcbiAgICAgIHRoaXMucmVhZEJ1ZmZlcihsZW5ndGggKiAyLCAoZGF0YSkgPT4ge1xuICAgICAgICBjYWxsYmFjayhkYXRhLnRvU3RyaW5nKCd1Y3MyJykpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBSZWFkIGJpbmFyeSBkYXRhIChCVkFSQllURSlcbiAgcmVhZEJWYXJCeXRlKGNhbGxiYWNrOiAoZGF0YTogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDgoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCwgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhZCBiaW5hcnkgZGF0YSAoVVNWQVJCWVRFKVxuICByZWFkVXNWYXJCeXRlKGNhbGxiYWNrOiAoZGF0YTogQnVmZmVyKSA9PiB2b2lkKSB7XG4gICAgdGhpcy5yZWFkVUludDE2TEUoKGxlbmd0aCkgPT4ge1xuICAgICAgdGhpcy5yZWFkQnVmZmVyKGxlbmd0aCwgY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFBhcnNlcjtcbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFHQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyx1QkFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsZ0JBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLHFCQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxxQkFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sa0JBQUEsR0FBQUosc0JB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-parser.js","names":["_token","require","_colmetadataTokenParser","_interopRequireDefault","_doneTokenParser","_envChangeTokenParser","_infoerrorTokenParser","_fedauthInfoParser","_featureExtAckParser","_loginackTokenParser","_orderTokenParser","_returnstatusTokenParser","_returnvalueTokenParser","_rowTokenParser","_nbcrowTokenParser","_sspiTokenParser","obj","__esModule","default","tokenParsers","TYPE","DONE","doneParser","DONEINPROC","doneInProcParser","DONEPROC","doneProcParser","ENVCHANGE","envChangeParser","ERROR","errorParser","FEDAUTHINFO","fedAuthInfoParser","FEATUREEXTACK","featureExtAckParser","INFO","infoParser","LOGINACK","loginAckParser","ORDER","orderParser","RETURNSTATUS","returnStatusParser","RETURNVALUE","returnValueParser","SSPI","sspiParser","StreamBuffer","iterator","buffer","position","constructor","iterable","Symbol","asyncIterator","call","Buffer","alloc","waitForChunk","result","next","done","Error","length","value","concat","slice","Parser","debug","colMetadata","options","suspended","streamBuffer","parseTokens","token","onDoneParsing","t","parser","err","ColMetadataToken","columns","type","readUInt8","COLMETADATA","colMetadataParser","ROW","rowParser","NBCROW","nbcRowParser","undefined","suspend","awaitData","callback","readInt8","data","readInt16LE","readInt16BE","readUInt16LE","readUInt16BE","readInt32LE","readInt32BE","readUInt32LE","readUInt32BE","readBigInt64LE","readInt64LE","Math","pow","readInt64BE","readBigUInt64LE","readUInt64LE","readUInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","readUInt24LE","low","high","readUInt40LE","readUNumeric64LE","readUNumeric96LE","dword1","dword2","dword3","readUNumeric128LE","dword4","readBuffer","readBVarChar","toString","readUsVarChar","readBVarByte","readUsVarByte","_default","exports","module"],"sources":["../../src/token/stream-parser.ts"],"sourcesContent":["import Debug from '../debug';\nimport { type InternalConnectionOptions } from '../connection';\n\nimport { TYPE, Token, ColMetadataToken } from './token';\n\nimport colMetadataParser, { type ColumnMetadata } from './colmetadata-token-parser';\nimport { doneParser, doneInProcParser, doneProcParser } from './done-token-parser';\nimport envChangeParser from './env-change-token-parser';\nimport { errorParser, infoParser } from './infoerror-token-parser';\nimport fedAuthInfoParser from './fedauth-info-parser';\nimport featureExtAckParser from './feature-ext-ack-parser';\nimport loginAckParser from './loginack-token-parser';\nimport orderParser from './order-token-parser';\nimport returnStatusParser from './returnstatus-token-parser';\nimport returnValueParser from './returnvalue-token-parser';\nimport rowParser from './row-token-parser';\nimport nbcRowParser from './nbcrow-token-parser';\nimport sspiParser from './sspi-token-parser';\n\nconst tokenParsers = {\n [TYPE.DONE]: doneParser,\n [TYPE.DONEINPROC]: doneInProcParser,\n [TYPE.DONEPROC]: doneProcParser,\n [TYPE.ENVCHANGE]: envChangeParser,\n [TYPE.ERROR]: errorParser,\n [TYPE.FEDAUTHINFO]: fedAuthInfoParser,\n [TYPE.FEATUREEXTACK]: featureExtAckParser,\n [TYPE.INFO]: infoParser,\n [TYPE.LOGINACK]: loginAckParser,\n [TYPE.ORDER]: orderParser,\n [TYPE.RETURNSTATUS]: returnStatusParser,\n [TYPE.RETURNVALUE]: returnValueParser,\n [TYPE.SSPI]: sspiParser\n};\n\nexport type ParserOptions = Pick<InternalConnectionOptions, 'useUTC' | 'lowerCaseGuids' | 'tdsVersion' | 'useColumnNames' | 'columnNameReplacer' | 'camelCaseColumns'>;\n\nclass StreamBuffer {\n iterator: AsyncIterator<Buffer, any, undefined> | Iterator<Buffer, any, undefined>;\n buffer: Buffer;\n position: number;\n\n constructor(iterable: AsyncIterable<Buffer> | Iterable<Buffer>) {\n this.iterator = ((iterable as AsyncIterable<Buffer>)[Symbol.asyncIterator] || (iterable as Iterable<Buffer>)[Symbol.iterator]).call(iterable);\n\n this.buffer = Buffer.alloc(0);\n this.position = 0;\n }\n\n async waitForChunk() {\n const result = await this.iterator.next();\n if (result.done) {\n throw new Error('unexpected end of data');\n }\n\n if (this.position === this.buffer.length) {\n this.buffer = result.value;\n } else {\n this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]);\n }\n this.position = 0;\n }\n}\n\nclass Parser {\n debug: Debug;\n colMetadata: ColumnMetadata[];\n options: ParserOptions;\n\n suspended: boolean;\n next: (() => void) | undefined;\n streamBuffer: StreamBuffer;\n\n static async *parseTokens(iterable: AsyncIterable<Buffer> | Iterable<Buffer>, debug: Debug, options: ParserOptions, colMetadata: ColumnMetadata[] = []) {\n let token: Token | undefined;\n const onDoneParsing = (t: Token | undefined) => { token = t; };\n\n const streamBuffer = new StreamBuffer(iterable);\n\n const parser = new Parser(streamBuffer, debug, options);\n parser.colMetadata = colMetadata;\n\n while (true) {\n try {\n await streamBuffer.waitForChunk();\n } catch (err: unknown) {\n if (streamBuffer.position === streamBuffer.buffer.length) {\n return;\n }\n\n throw err;\n }\n\n if (parser.suspended) {\n // Unsuspend and continue from where ever we left off.\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n\n yield token;\n }\n }\n\n while (!parser.suspended && parser.position + 1 <= parser.buffer.length) {\n const type = parser.buffer.readUInt8(parser.position);\n\n parser.position += 1;\n\n if (type === TYPE.COLMETADATA) {\n const token = await colMetadataParser(parser);\n parser.colMetadata = token.columns;\n yield token;\n } else if (type === TYPE.ROW) {\n yield rowParser(parser);\n } else if (type === TYPE.NBCROW) {\n yield nbcRowParser(parser);\n } else if (tokenParsers[type]) {\n tokenParsers[type](parser, parser.options, onDoneParsing);\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n yield token;\n }\n } else {\n throw new Error('Unknown type: ' + type);\n }\n }\n }\n }\n\n constructor(streamBuffer: StreamBuffer, debug: Debug, options: ParserOptions) {\n this.debug = debug;\n this.colMetadata = [];\n this.options = options;\n\n this.streamBuffer = streamBuffer;\n this.suspended = false;\n this.next = undefined;\n }\n\n get buffer() {\n return this.streamBuffer.buffer;\n }\n\n get position() {\n return this.streamBuffer.position;\n }\n\n set position(value) {\n this.streamBuffer.position = value;\n }\n\n suspend(next: () => void) {\n this.suspended = true;\n this.next = next;\n }\n\n awaitData(length: number, callback: () => void) {\n if (this.position + length <= this.buffer.length) {\n callback();\n } else {\n this.suspend(() => {\n this.awaitData(length, callback);\n });\n }\n }\n\n readInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readUInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readUInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readBigInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32LE(this.position + 4) + ((this.buffer[this.position + 4] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32BE(this.position) + ((this.buffer[this.position] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readBigUInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigUInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32LE(this.position + 4) + this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32BE(this.position) + this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readFloatLE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatLE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readFloatBE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatBE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readDoubleLE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleLE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readDoubleBE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleBE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt24LE(callback: (data: number) => void) {\n this.awaitData(3, () => {\n const low = this.buffer.readUInt16LE(this.position);\n const high = this.buffer.readUInt8(this.position + 2);\n\n this.position += 3;\n\n callback(low | (high << 16));\n });\n }\n\n readUInt40LE(callback: (data: number) => void) {\n this.awaitData(5, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt8(this.position + 4);\n\n this.position += 5;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt32LE(this.position + 4);\n\n this.position += 8;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric96LE(callback: (data: number) => void) {\n this.awaitData(12, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n\n this.position += 12;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3));\n });\n }\n\n readUNumeric128LE(callback: (data: number) => void) {\n this.awaitData(16, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n const dword4 = this.buffer.readUInt32LE(this.position + 12);\n\n this.position += 16;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3) + (0x100000000 * 0x100000000 * 0x100000000 * dword4));\n });\n }\n\n // Variable length data\n\n readBuffer(length: number, callback: (data: Buffer) => void) {\n this.awaitData(length, () => {\n const data = this.buffer.slice(this.position, this.position + length);\n this.position += length;\n callback(data);\n });\n }\n\n // Read a Unicode String (BVARCHAR)\n readBVarChar(callback: (data: string) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read a Unicode String (USVARCHAR)\n readUsVarChar(callback: (data: string) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read binary data (BVARBYTE)\n readBVarByte(callback: (data: Buffer) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length, callback);\n });\n }\n\n // Read binary data (USVARBYTE)\n readUsVarByte(callback: (data: Buffer) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length, callback);\n });\n }\n}\n\nexport default Parser;\nmodule.exports = Parser;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"stream-parser.js","names":["_token","require","_colmetadataTokenParser","_interopRequireDefault","_doneTokenParser","_envChangeTokenParser","_infoerrorTokenParser","_fedauthInfoParser","_featureExtAckParser","_loginackTokenParser","_orderTokenParser","_returnstatusTokenParser","_returnvalueTokenParser","_rowTokenParser","_nbcrowTokenParser","_sspiTokenParser","obj","__esModule","default","tokenParsers","TYPE","DONE","doneParser","DONEINPROC","doneInProcParser","DONEPROC","doneProcParser","ENVCHANGE","envChangeParser","ERROR","errorParser","FEDAUTHINFO","fedAuthInfoParser","FEATUREEXTACK","featureExtAckParser","INFO","infoParser","LOGINACK","loginAckParser","ORDER","orderParser","RETURNSTATUS","returnStatusParser","RETURNVALUE","returnValueParser","SSPI","sspiParser","StreamBuffer","constructor","iterable","iterator","Symbol","asyncIterator","call","buffer","Buffer","alloc","position","waitForChunk","result","next","done","Error","length","value","concat","slice","Parser","parseTokens","debug","options","colMetadata","token","onDoneParsing","t","streamBuffer","parser","err","suspended","ColMetadataToken","columns","type","readUInt8","COLMETADATA","colMetadataParser","ROW","rowParser","NBCROW","nbcRowParser","undefined","suspend","awaitData","callback","readInt8","data","readInt16LE","readInt16BE","readUInt16LE","readUInt16BE","readInt32LE","readInt32BE","readUInt32LE","readUInt32BE","readBigInt64LE","readInt64LE","Math","pow","readInt64BE","readBigUInt64LE","readUInt64LE","readUInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","readUInt24LE","low","high","readUInt40LE","readUNumeric64LE","readUNumeric96LE","dword1","dword2","dword3","readUNumeric128LE","dword4","readBuffer","readBVarChar","toString","readUsVarChar","readBVarByte","readUsVarByte","_default","exports","module"],"sources":["../../src/token/stream-parser.ts"],"sourcesContent":["import Debug from '../debug';\nimport { type InternalConnectionOptions } from '../connection';\n\nimport { TYPE, Token, ColMetadataToken } from './token';\n\nimport colMetadataParser, { type ColumnMetadata } from './colmetadata-token-parser';\nimport { doneParser, doneInProcParser, doneProcParser } from './done-token-parser';\nimport envChangeParser from './env-change-token-parser';\nimport { errorParser, infoParser } from './infoerror-token-parser';\nimport fedAuthInfoParser from './fedauth-info-parser';\nimport featureExtAckParser from './feature-ext-ack-parser';\nimport loginAckParser from './loginack-token-parser';\nimport orderParser from './order-token-parser';\nimport returnStatusParser from './returnstatus-token-parser';\nimport returnValueParser from './returnvalue-token-parser';\nimport rowParser from './row-token-parser';\nimport nbcRowParser from './nbcrow-token-parser';\nimport sspiParser from './sspi-token-parser';\n\nconst tokenParsers = {\n [TYPE.DONE]: doneParser,\n [TYPE.DONEINPROC]: doneInProcParser,\n [TYPE.DONEPROC]: doneProcParser,\n [TYPE.ENVCHANGE]: envChangeParser,\n [TYPE.ERROR]: errorParser,\n [TYPE.FEDAUTHINFO]: fedAuthInfoParser,\n [TYPE.FEATUREEXTACK]: featureExtAckParser,\n [TYPE.INFO]: infoParser,\n [TYPE.LOGINACK]: loginAckParser,\n [TYPE.ORDER]: orderParser,\n [TYPE.RETURNSTATUS]: returnStatusParser,\n [TYPE.RETURNVALUE]: returnValueParser,\n [TYPE.SSPI]: sspiParser\n};\n\nexport type ParserOptions = Pick<InternalConnectionOptions, 'useUTC' | 'lowerCaseGuids' | 'tdsVersion' | 'useColumnNames' | 'columnNameReplacer' | 'camelCaseColumns'>;\n\nclass StreamBuffer {\n declare iterator: AsyncIterator<Buffer, any, undefined> | Iterator<Buffer, any, undefined>;\n declare buffer: Buffer;\n declare position: number;\n\n constructor(iterable: AsyncIterable<Buffer> | Iterable<Buffer>) {\n this.iterator = ((iterable as AsyncIterable<Buffer>)[Symbol.asyncIterator] || (iterable as Iterable<Buffer>)[Symbol.iterator]).call(iterable);\n\n this.buffer = Buffer.alloc(0);\n this.position = 0;\n }\n\n async waitForChunk() {\n const result = await this.iterator.next();\n if (result.done) {\n throw new Error('unexpected end of data');\n }\n\n if (this.position === this.buffer.length) {\n this.buffer = result.value;\n } else {\n this.buffer = Buffer.concat([this.buffer.slice(this.position), result.value]);\n }\n this.position = 0;\n }\n}\n\nclass Parser {\n declare debug: Debug;\n declare colMetadata: ColumnMetadata[];\n declare options: ParserOptions;\n\n declare suspended: boolean;\n declare next: (() => void) | undefined;\n declare streamBuffer: StreamBuffer;\n\n static async *parseTokens(iterable: AsyncIterable<Buffer> | Iterable<Buffer>, debug: Debug, options: ParserOptions, colMetadata: ColumnMetadata[] = []) {\n let token: Token | undefined;\n const onDoneParsing = (t: Token | undefined) => { token = t; };\n\n const streamBuffer = new StreamBuffer(iterable);\n\n const parser = new Parser(streamBuffer, debug, options);\n parser.colMetadata = colMetadata;\n\n while (true) {\n try {\n await streamBuffer.waitForChunk();\n } catch (err: unknown) {\n if (streamBuffer.position === streamBuffer.buffer.length) {\n return;\n }\n\n throw err;\n }\n\n if (parser.suspended) {\n // Unsuspend and continue from where ever we left off.\n parser.suspended = false;\n const next = parser.next!;\n\n next();\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n\n yield token;\n }\n }\n\n while (!parser.suspended && parser.position + 1 <= parser.buffer.length) {\n const type = parser.buffer.readUInt8(parser.position);\n\n parser.position += 1;\n\n if (type === TYPE.COLMETADATA) {\n const token = await colMetadataParser(parser);\n parser.colMetadata = token.columns;\n yield token;\n } else if (type === TYPE.ROW) {\n yield rowParser(parser);\n } else if (type === TYPE.NBCROW) {\n yield nbcRowParser(parser);\n } else if (tokenParsers[type]) {\n tokenParsers[type](parser, parser.options, onDoneParsing);\n\n // Check if a new token was parsed after unsuspension.\n if (!parser.suspended && token) {\n if (token instanceof ColMetadataToken) {\n parser.colMetadata = token.columns;\n }\n yield token;\n }\n } else {\n throw new Error('Unknown type: ' + type);\n }\n }\n }\n }\n\n constructor(streamBuffer: StreamBuffer, debug: Debug, options: ParserOptions) {\n this.debug = debug;\n this.colMetadata = [];\n this.options = options;\n\n this.streamBuffer = streamBuffer;\n this.suspended = false;\n this.next = undefined;\n }\n\n get buffer() {\n return this.streamBuffer.buffer;\n }\n\n get position() {\n return this.streamBuffer.position;\n }\n\n set position(value) {\n this.streamBuffer.position = value;\n }\n\n suspend(next: () => void) {\n this.suspended = true;\n this.next = next;\n }\n\n awaitData(length: number, callback: () => void) {\n if (this.position + length <= this.buffer.length) {\n callback();\n } else {\n this.suspend(() => {\n this.awaitData(length, callback);\n });\n }\n }\n\n readInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readUInt8(callback: (data: number) => void) {\n this.awaitData(1, () => {\n const data = this.buffer.readUInt8(this.position);\n this.position += 1;\n callback(data);\n });\n }\n\n readInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16LE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16LE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readUInt16BE(callback: (data: number) => void) {\n this.awaitData(2, () => {\n const data = this.buffer.readUInt16BE(this.position);\n this.position += 2;\n callback(data);\n });\n }\n\n readInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32LE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32LE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readUInt32BE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readUInt32BE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readBigInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32LE(this.position + 4) + ((this.buffer[this.position + 4] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readInt32BE(this.position) + ((this.buffer[this.position] & 0x80) === 0x80 ? 1 : -1) * this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readBigUInt64LE(callback: (data: bigint) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readBigUInt64LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32LE(this.position + 4) + this.buffer.readUInt32LE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt64BE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = Math.pow(2, 32) * this.buffer.readUInt32BE(this.position) + this.buffer.readUInt32BE(this.position + 4);\n this.position += 8;\n callback(data);\n });\n }\n\n readFloatLE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatLE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readFloatBE(callback: (data: number) => void) {\n this.awaitData(4, () => {\n const data = this.buffer.readFloatBE(this.position);\n this.position += 4;\n callback(data);\n });\n }\n\n readDoubleLE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleLE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readDoubleBE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const data = this.buffer.readDoubleBE(this.position);\n this.position += 8;\n callback(data);\n });\n }\n\n readUInt24LE(callback: (data: number) => void) {\n this.awaitData(3, () => {\n const low = this.buffer.readUInt16LE(this.position);\n const high = this.buffer.readUInt8(this.position + 2);\n\n this.position += 3;\n\n callback(low | (high << 16));\n });\n }\n\n readUInt40LE(callback: (data: number) => void) {\n this.awaitData(5, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt8(this.position + 4);\n\n this.position += 5;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric64LE(callback: (data: number) => void) {\n this.awaitData(8, () => {\n const low = this.buffer.readUInt32LE(this.position);\n const high = this.buffer.readUInt32LE(this.position + 4);\n\n this.position += 8;\n\n callback((0x100000000 * high) + low);\n });\n }\n\n readUNumeric96LE(callback: (data: number) => void) {\n this.awaitData(12, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n\n this.position += 12;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3));\n });\n }\n\n readUNumeric128LE(callback: (data: number) => void) {\n this.awaitData(16, () => {\n const dword1 = this.buffer.readUInt32LE(this.position);\n const dword2 = this.buffer.readUInt32LE(this.position + 4);\n const dword3 = this.buffer.readUInt32LE(this.position + 8);\n const dword4 = this.buffer.readUInt32LE(this.position + 12);\n\n this.position += 16;\n\n callback(dword1 + (0x100000000 * dword2) + (0x100000000 * 0x100000000 * dword3) + (0x100000000 * 0x100000000 * 0x100000000 * dword4));\n });\n }\n\n // Variable length data\n\n readBuffer(length: number, callback: (data: Buffer) => void) {\n this.awaitData(length, () => {\n const data = this.buffer.slice(this.position, this.position + length);\n this.position += length;\n callback(data);\n });\n }\n\n // Read a Unicode String (BVARCHAR)\n readBVarChar(callback: (data: string) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read a Unicode String (USVARCHAR)\n readUsVarChar(callback: (data: string) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length * 2, (data) => {\n callback(data.toString('ucs2'));\n });\n });\n }\n\n // Read binary data (BVARBYTE)\n readBVarByte(callback: (data: Buffer) => void) {\n this.readUInt8((length) => {\n this.readBuffer(length, callback);\n });\n }\n\n // Read binary data (USVARBYTE)\n readUsVarByte(callback: (data: Buffer) => void) {\n this.readUInt16LE((length) => {\n this.readBuffer(length, callback);\n });\n }\n}\n\nexport default Parser;\nmodule.exports = Parser;\n"],"mappings":"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"}
|
|
@@ -9,9 +9,6 @@ var _streamParser = _interopRequireDefault(require("./stream-parser"));
|
|
|
9
9
|
var _stream = require("stream");
|
|
10
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
11
11
|
class Parser extends _events.EventEmitter {
|
|
12
|
-
debug;
|
|
13
|
-
options;
|
|
14
|
-
parser;
|
|
15
12
|
constructor(message, debug, handler, options) {
|
|
16
13
|
super();
|
|
17
14
|
this.debug = debug;
|
|
@@ -35,4 +32,4 @@ class Parser extends _events.EventEmitter {
|
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
34
|
exports.Parser = Parser;
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsIl9zdHJlYW1QYXJzZXIiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3N0cmVhbSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiUGFyc2VyIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJtZXNzYWdlIiwiZGVidWciLCJoYW5kbGVyIiwib3B0aW9ucyIsInBhcnNlciIsIlJlYWRhYmxlIiwiZnJvbSIsIlN0cmVhbVBhcnNlciIsInBhcnNlVG9rZW5zIiwib24iLCJ0b2tlbiIsImhhbmRsZXJOYW1lIiwiZW1pdCIsInBhdXNlIiwicmVzdW1lIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b2tlbi90b2tlbi1zdHJlYW0tcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5pbXBvcnQgU3RyZWFtUGFyc2VyLCB7IHR5cGUgUGFyc2VyT3B0aW9ucyB9IGZyb20gJy4vc3RyZWFtLXBhcnNlcic7XG5pbXBvcnQgRGVidWcgZnJvbSAnLi4vZGVidWcnO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcbmltcG9ydCBNZXNzYWdlIGZyb20gJy4uL21lc3NhZ2UnO1xuaW1wb3J0IHsgVG9rZW5IYW5kbGVyIH0gZnJvbSAnLi9oYW5kbGVyJztcblxuZXhwb3J0IGNsYXNzIFBhcnNlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGRlY2xhcmUgZGVidWc6IERlYnVnO1xuICBkZWNsYXJlIG9wdGlvbnM6IFBhcnNlck9wdGlvbnM7XG4gIGRlY2xhcmUgcGFyc2VyOiBSZWFkYWJsZTtcblxuICBjb25zdHJ1Y3RvcihtZXNzYWdlOiBNZXNzYWdlLCBkZWJ1ZzogRGVidWcsIGhhbmRsZXI6IFRva2VuSGFuZGxlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmRlYnVnID0gZGVidWc7XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIHRoaXMucGFyc2VyID0gUmVhZGFibGUuZnJvbShTdHJlYW1QYXJzZXIucGFyc2VUb2tlbnMobWVzc2FnZSwgdGhpcy5kZWJ1ZywgdGhpcy5vcHRpb25zKSk7XG4gICAgdGhpcy5wYXJzZXIub24oJ2RhdGEnLCAodG9rZW46IFRva2VuKSA9PiB7XG4gICAgICBoYW5kbGVyW3Rva2VuLmhhbmRsZXJOYW1lIGFzIGtleW9mIFRva2VuSGFuZGxlcl0odG9rZW4gYXMgYW55KTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdkcmFpbicsICgpID0+IHtcbiAgICAgIHRoaXMuZW1pdCgnZHJhaW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMucGFyc2VyLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICB0aGlzLmVtaXQoJ2VuZCcpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVjbGFyZSBvbjogKFxuICAgICgoZXZlbnQ6ICdlbmQnLCBsaXN0ZW5lcjogKCkgPT4gdm9pZCkgPT4gdGhpcykgJlxuICAgICgoZXZlbnQ6IHN0cmluZyB8IHN5bWJvbCwgbGlzdGVuZXI6ICguLi5hcmdzOiBhbnlbXSkgPT4gdm9pZCkgPT4gdGhpcylcbiAgKTtcblxuICBwYXVzZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucGF1c2UoKTtcbiAgfVxuXG4gIHJlc3VtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5wYXJzZXIucmVzdW1lKCk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsYUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBR0EsSUFBQUcsT0FBQSxHQUFBSCxPQUFBO0FBQWtDLFNBQUFFLHVCQUFBRSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBSTNCLE1BQU1HLE1BQU0sU0FBU0Msb0JBQVksQ0FBQztFQUt2Q0MsV0FBV0EsQ0FBQ0MsT0FBZ0IsRUFBRUMsS0FBWSxFQUFFQyxPQUFxQixFQUFFQyxPQUFzQixFQUFFO0lBQ3pGLEtBQUssQ0FBQyxDQUFDO0lBRVAsSUFBSSxDQUFDRixLQUFLLEdBQUdBLEtBQUs7SUFDbEIsSUFBSSxDQUFDRSxPQUFPLEdBQUdBLE9BQU87SUFFdEIsSUFBSSxDQUFDQyxNQUFNLEdBQUdDLGdCQUFRLENBQUNDLElBQUksQ0FBQ0MscUJBQVksQ0FBQ0MsV0FBVyxDQUFDUixPQUFPLEVBQUUsSUFBSSxDQUFDQyxLQUFLLEVBQUUsSUFBSSxDQUFDRSxPQUFPLENBQUMsQ0FBQztJQUN4RixJQUFJLENBQUNDLE1BQU0sQ0FBQ0ssRUFBRSxDQUFDLE1BQU0sRUFBR0MsS0FBWSxJQUFLO01BQ3ZDUixPQUFPLENBQUNRLEtBQUssQ0FBQ0MsV0FBVyxDQUF1QixDQUFDRCxLQUFZLENBQUM7SUFDaEUsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDTixNQUFNLENBQUNLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUM1QixJQUFJLENBQUNHLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDcEIsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDUixNQUFNLENBQUNLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTTtNQUMxQixJQUFJLENBQUNHLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0VBQ0o7RUFPQUMsS0FBS0EsQ0FBQSxFQUFHO0lBQ04sT0FBTyxJQUFJLENBQUNULE1BQU0sQ0FBQ1MsS0FBSyxDQUFDLENBQUM7RUFDNUI7RUFFQUMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsT0FBTyxJQUFJLENBQUNWLE1BQU0sQ0FBQ1UsTUFBTSxDQUFDLENBQUM7RUFDN0I7QUFDRjtBQUFDQyxPQUFBLENBQUFsQixNQUFBLEdBQUFBLE1BQUEifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token-stream-parser.js","names":["_events","require","_streamParser","_interopRequireDefault","_stream","obj","__esModule","default","Parser","EventEmitter","
|
|
1
|
+
{"version":3,"file":"token-stream-parser.js","names":["_events","require","_streamParser","_interopRequireDefault","_stream","obj","__esModule","default","Parser","EventEmitter","constructor","message","debug","handler","options","parser","Readable","from","StreamParser","parseTokens","on","token","handlerName","emit","pause","resume","exports"],"sources":["../../src/token/token-stream-parser.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport StreamParser, { type ParserOptions } from './stream-parser';\nimport Debug from '../debug';\nimport { Token } from './token';\nimport { Readable } from 'stream';\nimport Message from '../message';\nimport { TokenHandler } from './handler';\n\nexport class Parser extends EventEmitter {\n declare debug: Debug;\n declare options: ParserOptions;\n declare parser: Readable;\n\n constructor(message: Message, debug: Debug, handler: TokenHandler, options: ParserOptions) {\n super();\n\n this.debug = debug;\n this.options = options;\n\n this.parser = Readable.from(StreamParser.parseTokens(message, this.debug, this.options));\n this.parser.on('data', (token: Token) => {\n handler[token.handlerName as keyof TokenHandler](token as any);\n });\n\n this.parser.on('drain', () => {\n this.emit('drain');\n });\n\n this.parser.on('end', () => {\n this.emit('end');\n });\n }\n\n declare on: (\n ((event: 'end', listener: () => void) => this) &\n ((event: string | symbol, listener: (...args: any[]) => void) => this)\n );\n\n pause() {\n return this.parser.pause();\n }\n\n resume() {\n return this.parser.resume();\n }\n}\n"],"mappings":";;;;;;AAAA,IAAAA,OAAA,GAAAC,OAAA;AACA,IAAAC,aAAA,GAAAC,sBAAA,CAAAF,OAAA;AAGA,IAAAG,OAAA,GAAAH,OAAA;AAAkC,SAAAE,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAI3B,MAAMG,MAAM,SAASC,oBAAY,CAAC;EAKvCC,WAAWA,CAACC,OAAgB,EAAEC,KAAY,EAAEC,OAAqB,EAAEC,OAAsB,EAAE;IACzF,KAAK,CAAC,CAAC;IAEP,IAAI,CAACF,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACE,OAAO,GAAGA,OAAO;IAEtB,IAAI,CAACC,MAAM,GAAGC,gBAAQ,CAACC,IAAI,CAACC,qBAAY,CAACC,WAAW,CAACR,OAAO,EAAE,IAAI,CAACC,KAAK,EAAE,IAAI,CAACE,OAAO,CAAC,CAAC;IACxF,IAAI,CAACC,MAAM,CAACK,EAAE,CAAC,MAAM,EAAGC,KAAY,IAAK;MACvCR,OAAO,CAACQ,KAAK,CAACC,WAAW,CAAuB,CAACD,KAAY,CAAC;IAChE,CAAC,CAAC;IAEF,IAAI,CAACN,MAAM,CAACK,EAAE,CAAC,OAAO,EAAE,MAAM;MAC5B,IAAI,CAACG,IAAI,CAAC,OAAO,CAAC;IACpB,CAAC,CAAC;IAEF,IAAI,CAACR,MAAM,CAACK,EAAE,CAAC,KAAK,EAAE,MAAM;MAC1B,IAAI,CAACG,IAAI,CAAC,KAAK,CAAC;IAClB,CAAC,CAAC;EACJ;EAOAC,KAAKA,CAAA,EAAG;IACN,OAAO,IAAI,CAACT,MAAM,CAACS,KAAK,CAAC,CAAC;EAC5B;EAEAC,MAAMA,CAAA,EAAG;IACP,OAAO,IAAI,CAACV,MAAM,CAACU,MAAM,CAAC,CAAC;EAC7B;AACF;AAACC,OAAA,CAAAlB,MAAA,GAAAA,MAAA"}
|