tedious 16.2.0 → 16.3.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.
Files changed (205) hide show
  1. package/lib/all-headers.js +1 -2
  2. package/lib/all-headers.js.map +1 -0
  3. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js +9 -31
  4. package/lib/always-encrypted/aead-aes-256-cbc-hmac-algorithm.js.map +1 -0
  5. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js +9 -24
  6. package/lib/always-encrypted/aead-aes-256-cbc-hmac-encryption-key.js.map +1 -0
  7. package/lib/always-encrypted/cek-entry.js +8 -12
  8. package/lib/always-encrypted/cek-entry.js.map +1 -0
  9. package/lib/always-encrypted/get-parameter-encryption-metadata.js +2 -24
  10. package/lib/always-encrypted/get-parameter-encryption-metadata.js.map +1 -0
  11. package/lib/always-encrypted/key-crypto.js +5 -30
  12. package/lib/always-encrypted/key-crypto.js.map +1 -0
  13. package/lib/always-encrypted/keystore-provider-azure-key-vault.js +11 -72
  14. package/lib/always-encrypted/keystore-provider-azure-key-vault.js.map +1 -0
  15. package/lib/always-encrypted/symmetric-key-cache.js +2 -13
  16. package/lib/always-encrypted/symmetric-key-cache.js.map +1 -0
  17. package/lib/always-encrypted/symmetric-key.js +3 -8
  18. package/lib/always-encrypted/symmetric-key.js.map +1 -0
  19. package/lib/always-encrypted/types.js +19 -27
  20. package/lib/always-encrypted/types.js.map +1 -0
  21. package/lib/always-encrypted/utils.js +2 -6
  22. package/lib/always-encrypted/utils.js.map +1 -0
  23. package/lib/bulk-load-payload.js +7 -15
  24. package/lib/bulk-load-payload.js.map +1 -0
  25. package/lib/bulk-load.js +58 -131
  26. package/lib/bulk-load.js.map +1 -0
  27. package/lib/collation.js +7 -15
  28. package/lib/collation.js.map +1 -0
  29. package/lib/connection.js +290 -531
  30. package/lib/connection.js.map +1 -0
  31. package/lib/connector.js +6 -37
  32. package/lib/connector.js.map +1 -0
  33. package/lib/data-type.js +2 -43
  34. package/lib/data-type.js.map +1 -0
  35. package/lib/data-types/bigint.js +1 -15
  36. package/lib/data-types/bigint.js.map +1 -0
  37. package/lib/data-types/binary.js +1 -12
  38. package/lib/data-types/binary.js.map +1 -0
  39. package/lib/data-types/bit.js +1 -11
  40. package/lib/data-types/bit.js.map +1 -0
  41. package/lib/data-types/bitn.js +1 -7
  42. package/lib/data-types/bitn.js.map +1 -0
  43. package/lib/data-types/char.js +1 -20
  44. package/lib/data-types/char.js.map +1 -0
  45. package/lib/data-types/date.js +1 -15
  46. package/lib/data-types/date.js.map +1 -0
  47. package/lib/data-types/datetime.js +3 -20
  48. package/lib/data-types/datetime.js.map +1 -0
  49. package/lib/data-types/datetime2.js +1 -26
  50. package/lib/data-types/datetime2.js.map +1 -0
  51. package/lib/data-types/datetimen.js +1 -7
  52. package/lib/data-types/datetimen.js.map +1 -0
  53. package/lib/data-types/datetimeoffset.js +1 -23
  54. package/lib/data-types/datetimeoffset.js.map +1 -0
  55. package/lib/data-types/decimal.js +1 -18
  56. package/lib/data-types/decimal.js.map +1 -0
  57. package/lib/data-types/decimaln.js +1 -7
  58. package/lib/data-types/decimaln.js.map +1 -0
  59. package/lib/data-types/float.js +1 -13
  60. package/lib/data-types/float.js.map +1 -0
  61. package/lib/data-types/floatn.js +1 -7
  62. package/lib/data-types/floatn.js.map +1 -0
  63. package/lib/data-types/image.js +1 -10
  64. package/lib/data-types/image.js.map +1 -0
  65. package/lib/data-types/int.js +1 -14
  66. package/lib/data-types/int.js.map +1 -0
  67. package/lib/data-types/intn.js +1 -7
  68. package/lib/data-types/intn.js.map +1 -0
  69. package/lib/data-types/money.js +1 -12
  70. package/lib/data-types/money.js.map +1 -0
  71. package/lib/data-types/moneyn.js +1 -7
  72. package/lib/data-types/moneyn.js.map +1 -0
  73. package/lib/data-types/nchar.js +1 -14
  74. package/lib/data-types/nchar.js.map +1 -0
  75. package/lib/data-types/ntext.js +1 -10
  76. package/lib/data-types/ntext.js.map +1 -0
  77. package/lib/data-types/null.js +1 -7
  78. package/lib/data-types/null.js.map +1 -0
  79. package/lib/data-types/numeric.js +1 -18
  80. package/lib/data-types/numeric.js.map +1 -0
  81. package/lib/data-types/numericn.js +1 -7
  82. package/lib/data-types/numericn.js.map +1 -0
  83. package/lib/data-types/nvarchar.js +1 -22
  84. package/lib/data-types/nvarchar.js.map +1 -0
  85. package/lib/data-types/real.js +1 -13
  86. package/lib/data-types/real.js.map +1 -0
  87. package/lib/data-types/smalldatetime.js +1 -14
  88. package/lib/data-types/smalldatetime.js.map +1 -0
  89. package/lib/data-types/smallint.js +1 -14
  90. package/lib/data-types/smallint.js.map +1 -0
  91. package/lib/data-types/smallmoney.js +1 -13
  92. package/lib/data-types/smallmoney.js.map +1 -0
  93. package/lib/data-types/sql-variant.js +1 -6
  94. package/lib/data-types/sql-variant.js.map +1 -0
  95. package/lib/data-types/text.js +1 -18
  96. package/lib/data-types/text.js.map +1 -0
  97. package/lib/data-types/time.js +1 -22
  98. package/lib/data-types/time.js.map +1 -0
  99. package/lib/data-types/tinyint.js +1 -14
  100. package/lib/data-types/tinyint.js.map +1 -0
  101. package/lib/data-types/tvp.js +11 -27
  102. package/lib/data-types/tvp.js.map +1 -0
  103. package/lib/data-types/udt.js +1 -7
  104. package/lib/data-types/udt.js.map +1 -0
  105. package/lib/data-types/uniqueidentifier.js +1 -11
  106. package/lib/data-types/uniqueidentifier.js.map +1 -0
  107. package/lib/data-types/varbinary.js +1 -22
  108. package/lib/data-types/varbinary.js.map +1 -0
  109. package/lib/data-types/varchar.js +1 -23
  110. package/lib/data-types/varchar.js.map +1 -0
  111. package/lib/data-types/xml.js +1 -7
  112. package/lib/data-types/xml.js.map +1 -0
  113. package/lib/debug.js +4 -16
  114. package/lib/debug.js.map +1 -0
  115. package/lib/errors/abort-error.js +2 -5
  116. package/lib/errors/abort-error.js.map +1 -0
  117. package/lib/errors/timeout-error.js +2 -5
  118. package/lib/errors/timeout-error.js.map +1 -0
  119. package/lib/errors.js +10 -16
  120. package/lib/errors.js.map +1 -0
  121. package/lib/guid-parser.js +1 -7
  122. package/lib/guid-parser.js.map +1 -0
  123. package/lib/incoming-message-stream.js +9 -29
  124. package/lib/incoming-message-stream.js.map +1 -0
  125. package/lib/instance-lookup.js +3 -34
  126. package/lib/instance-lookup.js.map +1 -0
  127. package/lib/library.js +1 -1
  128. package/lib/library.js.map +1 -0
  129. package/lib/login7-payload.js +99 -100
  130. package/lib/login7-payload.js.map +1 -0
  131. package/lib/message-io.js +17 -45
  132. package/lib/message-io.js.map +1 -0
  133. package/lib/message.js +4 -8
  134. package/lib/message.js.map +1 -0
  135. package/lib/metadata-parser.js +1 -22
  136. package/lib/metadata-parser.js.map +1 -0
  137. package/lib/ntlm-payload.js +2 -22
  138. package/lib/ntlm-payload.js.map +1 -0
  139. package/lib/ntlm.js +1 -4
  140. package/lib/ntlm.js.map +1 -0
  141. package/lib/outgoing-message-stream.js +12 -21
  142. package/lib/outgoing-message-stream.js.map +1 -0
  143. package/lib/packet.js +2 -47
  144. package/lib/packet.js.map +1 -0
  145. package/lib/prelogin-payload.js +11 -54
  146. package/lib/prelogin-payload.js.map +1 -0
  147. package/lib/request.js +88 -66
  148. package/lib/request.js.map +1 -0
  149. package/lib/rpcrequest-payload.js +8 -35
  150. package/lib/rpcrequest-payload.js.map +1 -0
  151. package/lib/sender.js +1 -24
  152. package/lib/sender.js.map +1 -0
  153. package/lib/special-stored-procedure.js +1 -1
  154. package/lib/special-stored-procedure.js.map +1 -0
  155. package/lib/sqlbatch-payload.js +5 -18
  156. package/lib/sqlbatch-payload.js.map +1 -0
  157. package/lib/tds-versions.js +3 -3
  158. package/lib/tds-versions.js.map +1 -0
  159. package/lib/tedious.js +1 -12
  160. package/lib/tedious.js.map +1 -0
  161. package/lib/token/colmetadata-token-parser.js +1 -17
  162. package/lib/token/colmetadata-token-parser.js.map +1 -0
  163. package/lib/token/done-token-parser.js +2 -8
  164. package/lib/token/done-token-parser.js.map +1 -0
  165. package/lib/token/env-change-token-parser.js +7 -28
  166. package/lib/token/env-change-token-parser.js.map +1 -0
  167. package/lib/token/feature-ext-ack-parser.js +1 -10
  168. package/lib/token/feature-ext-ack-parser.js.map +1 -0
  169. package/lib/token/fedauth-info-parser.js +2 -10
  170. package/lib/token/fedauth-info-parser.js.map +1 -0
  171. package/lib/token/handler.js +39 -149
  172. package/lib/token/handler.js.map +1 -0
  173. package/lib/token/infoerror-token-parser.js +1 -5
  174. package/lib/token/infoerror-token-parser.js.map +1 -0
  175. package/lib/token/loginack-token-parser.js +1 -6
  176. package/lib/token/loginack-token-parser.js.map +1 -0
  177. package/lib/token/nbcrow-token-parser.js +2 -15
  178. package/lib/token/nbcrow-token-parser.js.map +1 -0
  179. package/lib/token/order-token-parser.js +2 -7
  180. package/lib/token/order-token-parser.js.map +1 -0
  181. package/lib/token/returnstatus-token-parser.js +2 -4
  182. package/lib/token/returnstatus-token-parser.js.map +1 -0
  183. package/lib/token/returnvalue-token-parser.js +4 -9
  184. package/lib/token/returnvalue-token-parser.js.map +1 -0
  185. package/lib/token/row-token-parser.js +2 -11
  186. package/lib/token/row-token-parser.js.map +1 -0
  187. package/lib/token/sspi-token-parser.js +1 -5
  188. package/lib/token/sspi-token-parser.js.map +1 -0
  189. package/lib/token/stream-parser.js +24 -86
  190. package/lib/token/stream-parser.js.map +1 -0
  191. package/lib/token/token-stream-parser.js +4 -13
  192. package/lib/token/token-stream-parser.js.map +1 -0
  193. package/lib/token/token.js +88 -168
  194. package/lib/token/token.js.map +1 -0
  195. package/lib/tracking-buffer/writable-tracking-buffer.js +20 -60
  196. package/lib/tracking-buffer/writable-tracking-buffer.js.map +1 -0
  197. package/lib/transaction.js +9 -33
  198. package/lib/transaction.js.map +1 -0
  199. package/lib/transient-error-lookup.js +1 -4
  200. package/lib/transient-error-lookup.js.map +1 -0
  201. package/lib/utils/with-timeout.js +1 -9
  202. package/lib/utils/with-timeout.js.map +1 -0
  203. package/lib/value-parser.js +1 -143
  204. package/lib/value-parser.js.map +1 -0
  205. package/package.json +27 -71
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-load.js","names":["_events","require","_writableTrackingBuffer","_interopRequireDefault","_stream","_token","obj","__esModule","default","FLAGS","nullable","caseSen","updateableReadWrite","updateableUnknown","identity","computed","fixedLenCLRType","sparseColumnSet","hidden","key","nullableUnknown","DONE_STATUS","FINAL","MORE","ERROR","INXACT","COUNT","ATTN","SRVERROR","rowTokenBuffer","Buffer","from","TOKEN_TYPE","ROW","textPointerAndTimestampBuffer","textPointerNullBuffer","RowTransform","Transform","columnMetadataWritten","bulkLoad","mainOptions","columns","constructor","writableObjectMode","options","_transform","row","_encoding","callback","push","getColMetaData","i","length","c","value","Array","isArray","objName","firstRowWritten","type","validate","collation","error","parameter","scale","precision","name","generateParameterLength","chunk","generateParameterData","process","nextTick","_flush","createDoneToken","BulkLoad","EventEmitter","canceled","executionStarted","streamingMode","table","timeout","columnsByName","rowToPacketTransform","bulkOptions","connection","rows","rst","rowCount","connectionOptions","checkConstraints","fireTriggers","keepNulls","lockTable","order","TypeError","column","direction","Object","entries","undefined","addColumn","output","Error","id","resolveLength","resolvePrecision","resolveScale","getOptionsSql","addOptions","orderColumns","join","getBulkInsertSql","sql","len","declaration","getTableCreationSql","tBuf","WritableTrackingBuffer","writeUInt8","COLMETADATA","writeUInt16LE","j","tdsVersion","writeUInt32LE","flags","writeBuffer","generateTypeInfo","hasTableName","writeUsVarchar","writeBVarchar","data","setTimeout","DONE","status","cancel","emit","_default","exports","module"],"sources":["../src/bulk-load.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport WritableTrackingBuffer from './tracking-buffer/writable-tracking-buffer';\nimport Connection, { InternalConnectionOptions } from './connection';\n\nimport { Transform } from 'stream';\nimport { TYPE as TOKEN_TYPE } from './token/token';\n\nimport { DataType, Parameter } from './data-type';\nimport { Collation } from './collation';\n\n/**\n * @private\n */\nconst FLAGS = {\n nullable: 1 << 0,\n caseSen: 1 << 1,\n updateableReadWrite: 1 << 2,\n updateableUnknown: 1 << 3,\n identity: 1 << 4,\n computed: 1 << 5, // introduced in TDS 7.2\n fixedLenCLRType: 1 << 8, // introduced in TDS 7.2\n sparseColumnSet: 1 << 10, // introduced in TDS 7.3.B\n hidden: 1 << 13, // introduced in TDS 7.2\n key: 1 << 14, // introduced in TDS 7.2\n nullableUnknown: 1 << 15 // introduced in TDS 7.2\n};\n\n/**\n * @private\n */\nconst DONE_STATUS = {\n FINAL: 0x00,\n MORE: 0x1,\n ERROR: 0x2,\n INXACT: 0x4,\n COUNT: 0x10,\n ATTN: 0x20,\n SRVERROR: 0x100\n};\n\n/**\n * @private\n */\ninterface InternalOptions {\n checkConstraints: boolean;\n fireTriggers: boolean;\n keepNulls: boolean;\n lockTable: boolean;\n order: { [columnName: string]: 'ASC' | 'DESC' };\n}\n\nexport interface Options {\n /**\n * Honors constraints during bulk load, using T-SQL\n * [CHECK_CONSTRAINTS](https://technet.microsoft.com/en-us/library/ms186247(v=sql.105).aspx).\n * (default: `false`)\n */\n checkConstraints?: InternalOptions['checkConstraints'] | undefined;\n\n /**\n * Honors insert triggers during bulk load, using the T-SQL [FIRE_TRIGGERS](https://technet.microsoft.com/en-us/library/ms187640(v=sql.105).aspx). (default: `false`)\n */\n fireTriggers?: InternalOptions['fireTriggers'] | undefined;\n\n /**\n * Honors null value passed, ignores the default values set on table, using T-SQL [KEEP_NULLS](https://msdn.microsoft.com/en-us/library/ms187887(v=sql.120).aspx). (default: `false`)\n */\n keepNulls?: InternalOptions['keepNulls'] | undefined;\n\n /**\n * Places a bulk update(BU) lock on table while performing bulk load, using T-SQL [TABLOCK](https://technet.microsoft.com/en-us/library/ms180876(v=sql.105).aspx). (default: `false`)\n */\n lockTable?: InternalOptions['lockTable'] | undefined;\n\n /**\n * Specifies the ordering of the data to possibly increase bulk insert performance, using T-SQL [ORDER](https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008-r2/ms177468(v=sql.105)). (default: `{}`)\n */\n order?: InternalOptions['order'] | undefined;\n}\n\n\nexport type Callback =\n /**\n * A function which will be called after the [[BulkLoad]] finishes executing.\n *\n * @param rowCount the number of rows inserted\n */\n (err: Error | undefined | null, rowCount?: number) => void;\n\ninterface Column extends Parameter {\n objName: string;\n collation: Collation | undefined;\n}\n\ninterface ColumnOptions {\n output?: boolean;\n\n /**\n * For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n */\n length?: number;\n\n /**\n * For Numeric, Decimal.\n */\n precision?: number;\n\n /**\n * For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n scale?: number;\n\n /**\n * If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]], then you can use this option to specify the property name.\n */\n objName?: string;\n\n /**\n * Indicates whether the column accepts NULL values.\n */\n nullable?: boolean;\n}\n\nconst rowTokenBuffer = Buffer.from([ TOKEN_TYPE.ROW ]);\nconst textPointerAndTimestampBuffer = Buffer.from([\n // TextPointer length\n 0x10,\n\n // TextPointer\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n\n // Timestamp\n 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00\n]);\nconst textPointerNullBuffer = Buffer.from([0x00]);\n\n// A transform that converts rows to packets.\nclass RowTransform extends Transform {\n /**\n * @private\n */\n columnMetadataWritten: boolean;\n /**\n * @private\n */\n bulkLoad: BulkLoad;\n /**\n * @private\n */\n mainOptions: BulkLoad['options'];\n /**\n * @private\n */\n columns: BulkLoad['columns'];\n\n /**\n * @private\n */\n constructor(bulkLoad: BulkLoad) {\n super({ writableObjectMode: true });\n\n this.bulkLoad = bulkLoad;\n this.mainOptions = bulkLoad.options;\n this.columns = bulkLoad.columns;\n\n this.columnMetadataWritten = false;\n }\n\n /**\n * @private\n */\n _transform(row: Array<unknown> | { [colName: string]: unknown }, _encoding: string, callback: (error?: Error) => void) {\n if (!this.columnMetadataWritten) {\n this.push(this.bulkLoad.getColMetaData());\n this.columnMetadataWritten = true;\n }\n\n this.push(rowTokenBuffer);\n\n for (let i = 0; i < this.columns.length; i++) {\n const c = this.columns[i];\n let value = Array.isArray(row) ? row[i] : row[c.objName];\n\n if (!this.bulkLoad.firstRowWritten) {\n try {\n value = c.type.validate(value, c.collation);\n } catch (error: any) {\n return callback(error);\n }\n }\n\n const parameter = {\n length: c.length,\n scale: c.scale,\n precision: c.precision,\n value: value\n };\n\n if (c.type.name === 'Text' || c.type.name === 'Image' || c.type.name === 'NText') {\n if (value == null) {\n this.push(textPointerNullBuffer);\n continue;\n }\n\n this.push(textPointerAndTimestampBuffer);\n }\n\n this.push(c.type.generateParameterLength(parameter, this.mainOptions));\n for (const chunk of c.type.generateParameterData(parameter, this.mainOptions)) {\n this.push(chunk);\n }\n }\n\n process.nextTick(callback);\n }\n\n /**\n * @private\n */\n _flush(callback: () => void) {\n this.push(this.bulkLoad.createDoneToken());\n\n process.nextTick(callback);\n }\n}\n\n/**\n * A BulkLoad instance is used to perform a bulk insert.\n *\n * Use [[Connection.newBulkLoad]] to create a new instance, and [[Connection.execBulkLoad]] to execute it.\n *\n * Example of BulkLoad Usages:\n *\n * ```js\n * // optional BulkLoad options\n * const options = { keepNulls: true };\n *\n * // instantiate - provide the table where you'll be inserting to, options and a callback\n * const bulkLoad = connection.newBulkLoad('MyTable', options, (error, rowCount) => {\n * console.log('inserted %d rows', rowCount);\n * });\n *\n * // setup your columns - always indicate whether the column is nullable\n * bulkLoad.addColumn('myInt', TYPES.Int, { nullable: false });\n * bulkLoad.addColumn('myString', TYPES.NVarChar, { length: 50, nullable: true });\n *\n * // execute\n * connection.execBulkLoad(bulkLoad, [\n * { myInt: 7, myString: 'hello' },\n * { myInt: 23, myString: 'world' }\n * ]);\n * ```\n */\nclass BulkLoad extends EventEmitter {\n /**\n * @private\n */\n error: Error | undefined;\n /**\n * @private\n */\n canceled: boolean;\n /**\n * @private\n */\n executionStarted: boolean;\n /**\n * @private\n */\n streamingMode: boolean;\n /**\n * @private\n */\n table: string;\n /**\n * @private\n */\n timeout: number | undefined;\n\n /**\n * @private\n */\n options: InternalConnectionOptions;\n /**\n * @private\n */\n callback: Callback;\n\n /**\n * @private\n */\n columns: Array<Column>;\n /**\n * @private\n */\n columnsByName: { [name: string]: Column };\n\n /**\n * @private\n */\n firstRowWritten: boolean;\n /**\n * @private\n */\n rowToPacketTransform: RowTransform;\n\n /**\n * @private\n */\n bulkOptions: InternalOptions;\n\n /**\n * @private\n */\n connection: Connection | undefined;\n /**\n * @private\n */\n rows: Array<any> | undefined;\n /**\n * @private\n */\n rst: Array<any> | undefined;\n /**\n * @private\n */\n rowCount: number | undefined;\n\n collation: Collation | undefined;\n\n /**\n * @private\n */\n constructor(table: string, collation: Collation | undefined, connectionOptions: InternalConnectionOptions, {\n checkConstraints = false,\n fireTriggers = false,\n keepNulls = false,\n lockTable = false,\n order = {},\n }: Options, callback: Callback) {\n if (typeof checkConstraints !== 'boolean') {\n throw new TypeError('The \"options.checkConstraints\" property must be of type boolean.');\n }\n\n if (typeof fireTriggers !== 'boolean') {\n throw new TypeError('The \"options.fireTriggers\" property must be of type boolean.');\n }\n\n if (typeof keepNulls !== 'boolean') {\n throw new TypeError('The \"options.keepNulls\" property must be of type boolean.');\n }\n\n if (typeof lockTable !== 'boolean') {\n throw new TypeError('The \"options.lockTable\" property must be of type boolean.');\n }\n\n if (typeof order !== 'object' || order === null) {\n throw new TypeError('The \"options.order\" property must be of type object.');\n }\n\n for (const [column, direction] of Object.entries(order)) {\n if (direction !== 'ASC' && direction !== 'DESC') {\n throw new TypeError('The value of the \"' + column + '\" key in the \"options.order\" object must be either \"ASC\" or \"DESC\".');\n }\n }\n\n super();\n\n this.error = undefined;\n this.canceled = false;\n this.executionStarted = false;\n\n this.collation = collation;\n\n this.table = table;\n this.options = connectionOptions;\n this.callback = callback;\n this.columns = [];\n this.columnsByName = {};\n this.firstRowWritten = false;\n this.streamingMode = false;\n\n this.rowToPacketTransform = new RowTransform(this); // eslint-disable-line no-use-before-define\n\n this.bulkOptions = { checkConstraints, fireTriggers, keepNulls, lockTable, order };\n }\n\n /**\n * Adds a column to the bulk load.\n *\n * The column definitions should match the table you are trying to insert into.\n * Attempting to call addColumn after the first row has been added will throw an exception.\n *\n * ```js\n * bulkLoad.addColumn('MyIntColumn', TYPES.Int, { nullable: false });\n * ```\n *\n * @param name The name of the column.\n * @param type One of the supported `data types`.\n * @param __namedParameters Additional column type information. At a minimum, `nullable` must be set to true or false.\n * @param length For VarChar, NVarChar, VarBinary. Use length as `Infinity` for VarChar(max), NVarChar(max) and VarBinary(max).\n * @param nullable Indicates whether the column accepts NULL values.\n * @param objName If the name of the column is different from the name of the property found on `rowObj` arguments passed to [[addRow]] or [[Connection.execBulkLoad]], then you can use this option to specify the property name.\n * @param precision For Numeric, Decimal.\n * @param scale For Numeric, Decimal, Time, DateTime2, DateTimeOffset.\n */\n addColumn(name: string, type: DataType, { output = false, length, precision, scale, objName = name, nullable = true }: ColumnOptions) {\n if (this.firstRowWritten) {\n throw new Error('Columns cannot be added to bulk insert after the first row has been written.');\n }\n if (this.executionStarted) {\n throw new Error('Columns cannot be added to bulk insert after execution has started.');\n }\n\n const column: Column = {\n type: type,\n name: name,\n value: null,\n output: output,\n length: length,\n precision: precision,\n scale: scale,\n objName: objName,\n nullable: nullable,\n collation: this.collation\n };\n\n if ((type.id & 0x30) === 0x20) {\n if (column.length == null && type.resolveLength) {\n column.length = type.resolveLength(column);\n }\n }\n\n if (type.resolvePrecision && column.precision == null) {\n column.precision = type.resolvePrecision(column);\n }\n\n if (type.resolveScale && column.scale == null) {\n column.scale = type.resolveScale(column);\n }\n\n this.columns.push(column);\n\n this.columnsByName[name] = column;\n }\n\n /**\n * @private\n */\n getOptionsSql() {\n const addOptions = [];\n\n if (this.bulkOptions.checkConstraints) {\n addOptions.push('CHECK_CONSTRAINTS');\n }\n\n if (this.bulkOptions.fireTriggers) {\n addOptions.push('FIRE_TRIGGERS');\n }\n\n if (this.bulkOptions.keepNulls) {\n addOptions.push('KEEP_NULLS');\n }\n\n if (this.bulkOptions.lockTable) {\n addOptions.push('TABLOCK');\n }\n\n if (this.bulkOptions.order) {\n const orderColumns = [];\n\n for (const [column, direction] of Object.entries(this.bulkOptions.order)) {\n orderColumns.push(`${column} ${direction}`);\n }\n\n if (orderColumns.length) {\n addOptions.push(`ORDER (${orderColumns.join(', ')})`);\n }\n }\n\n if (addOptions.length > 0) {\n return ` WITH (${addOptions.join(',')})`;\n } else {\n return '';\n }\n }\n\n /**\n * @private\n */\n getBulkInsertSql() {\n let sql = 'insert bulk ' + this.table + '(';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ', ';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n }\n sql += ')';\n\n sql += this.getOptionsSql();\n return sql;\n }\n\n /**\n * This is simply a helper utility function which returns a `CREATE TABLE SQL` statement based on the columns added to the bulkLoad object.\n * This may be particularly handy when you want to insert into a temporary table (a table which starts with `#`).\n *\n * ```js\n * var sql = bulkLoad.getTableCreationSql();\n * ```\n *\n * A side note on bulk inserting into temporary tables: if you want to access a local temporary table after executing the bulk load,\n * you'll need to use the same connection and execute your requests using [[Connection.execSqlBatch]] instead of [[Connection.execSql]]\n */\n getTableCreationSql() {\n let sql = 'CREATE TABLE ' + this.table + '(\\n';\n for (let i = 0, len = this.columns.length; i < len; i++) {\n const c = this.columns[i];\n if (i !== 0) {\n sql += ',\\n';\n }\n sql += '[' + c.name + '] ' + (c.type.declaration(c));\n if (c.nullable !== undefined) {\n sql += ' ' + (c.nullable ? 'NULL' : 'NOT NULL');\n }\n }\n sql += '\\n)';\n return sql;\n }\n\n /**\n * @private\n */\n getColMetaData() {\n const tBuf = new WritableTrackingBuffer(100, null, true);\n // TokenType\n tBuf.writeUInt8(TOKEN_TYPE.COLMETADATA);\n // Count\n tBuf.writeUInt16LE(this.columns.length);\n\n for (let j = 0, len = this.columns.length; j < len; j++) {\n const c = this.columns[j];\n // UserType\n if (this.options.tdsVersion < '7_2') {\n tBuf.writeUInt16LE(0);\n } else {\n tBuf.writeUInt32LE(0);\n }\n\n // Flags\n let flags = FLAGS.updateableReadWrite;\n if (c.nullable) {\n flags |= FLAGS.nullable;\n } else if (c.nullable === undefined && this.options.tdsVersion >= '7_2') {\n flags |= FLAGS.nullableUnknown;\n }\n tBuf.writeUInt16LE(flags);\n\n // TYPE_INFO\n tBuf.writeBuffer(c.type.generateTypeInfo(c, this.options));\n\n // TableName\n if (c.type.hasTableName) {\n tBuf.writeUsVarchar(this.table, 'ucs2');\n }\n\n // ColName\n tBuf.writeBVarchar(c.name, 'ucs2');\n }\n return tBuf.data;\n }\n\n /**\n * Sets a timeout for this bulk load.\n *\n * ```js\n * bulkLoad.setTimeout(timeout);\n * ```\n *\n * @param timeout The number of milliseconds before the bulk load is considered failed, or 0 for no timeout.\n * When no timeout is set for the bulk load, the [[ConnectionOptions.requestTimeout]] of the Connection is used.\n */\n setTimeout(timeout?: number) {\n this.timeout = timeout;\n }\n\n /**\n * @private\n */\n createDoneToken() {\n // It might be nice to make DoneToken a class if anything needs to create them, but for now, just do it here\n const tBuf = new WritableTrackingBuffer(this.options.tdsVersion < '7_2' ? 9 : 13);\n tBuf.writeUInt8(TOKEN_TYPE.DONE);\n const status = DONE_STATUS.FINAL;\n tBuf.writeUInt16LE(status);\n tBuf.writeUInt16LE(0); // CurCmd (TDS ignores this)\n tBuf.writeUInt32LE(0); // row count - doesn't really matter\n if (this.options.tdsVersion >= '7_2') {\n tBuf.writeUInt32LE(0); // row count is 64 bits in >= TDS 7.2\n }\n return tBuf.data;\n }\n\n /**\n * @private\n */\n cancel() {\n if (this.canceled) {\n return;\n }\n\n this.canceled = true;\n this.emit('cancel');\n }\n}\n\nexport default BulkLoad;\nmodule.exports = BulkLoad;\n"],"mappings":"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"}
package/lib/collation.js CHANGED
@@ -294,7 +294,6 @@ const codepageBySortId = {
294
294
  [185]: 'CP1252',
295
295
  // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI
296
296
  [186]: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI
297
-
298
297
  };
299
298
  exports.codepageBySortId = codepageBySortId;
300
299
  const Flags = {
@@ -307,8 +306,13 @@ const Flags = {
307
306
  UTF8: 1 << 6
308
307
  };
309
308
  exports.Flags = Flags;
310
-
311
309
  class Collation {
310
+ lcid;
311
+ flags;
312
+ version;
313
+ sortId;
314
+ codepage;
315
+ buffer;
312
316
  static fromBuffer(buffer, offset = 0) {
313
317
  let lcid = (buffer[offset + 2] & 0x0F) << 16;
314
318
  lcid |= buffer[offset + 1] << 8;
@@ -319,20 +323,12 @@ class Collation {
319
323
  const sortId = buffer[offset + 4];
320
324
  return new this(lcid, flags, version, sortId);
321
325
  }
322
-
323
326
  constructor(lcid, flags, version, sortId) {
324
- this.lcid = void 0;
325
- this.flags = void 0;
326
- this.version = void 0;
327
- this.sortId = void 0;
328
- this.codepage = void 0;
329
- this.buffer = void 0;
330
327
  this.buffer = undefined;
331
328
  this.lcid = lcid;
332
329
  this.flags = flags;
333
330
  this.version = version;
334
331
  this.sortId = sortId;
335
-
336
332
  if (this.flags & Flags.UTF8) {
337
333
  this.codepage = 'utf-8';
338
334
  } else if (this.sortId) {
@@ -344,12 +340,10 @@ class Collation {
344
340
  this.codepage = codepageByLanguageId[languageId];
345
341
  }
346
342
  }
347
-
348
343
  toBuffer() {
349
344
  if (this.buffer) {
350
345
  return this.buffer;
351
346
  }
352
-
353
347
  this.buffer = Buffer.alloc(5);
354
348
  this.buffer[0] = this.lcid & 0xFF;
355
349
  this.buffer[1] = this.lcid >>> 8 & 0xFF;
@@ -358,8 +352,6 @@ class Collation {
358
352
  this.buffer[4] = this.sortId & 0xFF;
359
353
  return this.buffer;
360
354
  }
361
-
362
355
  }
363
-
364
356
  exports.Collation = Collation;
365
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcGFnZUJ5TGFuZ3VhZ2VJZCIsImNvZGVwYWdlQnlTb3J0SWQiLCJGbGFncyIsIklHTk9SRV9DQVNFIiwiSUdOT1JFX0FDQ0VOVCIsIklHTk9SRV9LQU5BIiwiSUdOT1JFX1dJRFRIIiwiQklOQVJZIiwiQklOQVJZMiIsIlVURjgiLCJDb2xsYXRpb24iLCJmcm9tQnVmZmVyIiwiYnVmZmVyIiwib2Zmc2V0IiwibGNpZCIsImZsYWdzIiwidmVyc2lvbiIsInNvcnRJZCIsImNvbnN0cnVjdG9yIiwiY29kZXBhZ2UiLCJ1bmRlZmluZWQiLCJsYW5ndWFnZUlkIiwidG9CdWZmZXIiLCJCdWZmZXIiLCJhbGxvYyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb2xsYXRpb24udHMiXSwic291cmNlc0NvbnRlbnQiOlsidHlwZSBFbmNvZGluZyA9ICd1dGYtOCcgfCAnQ1A0MzcnIHwgJ0NQODUwJyB8ICdDUDg3NCcgfCAnQ1A5MzInIHwgJ0NQOTM2JyB8ICdDUDk0OScgfCAnQ1A5NTAnIHwgJ0NQMTI1MCcgfCAnQ1AxMjUxJyB8ICdDUDEyNTInIHwgJ0NQMTI1MycgfCAnQ1AxMjU0JyB8ICdDUDEyNTUnIHwgJ0NQMTI1NicgfCAnQ1AxMjU3JyB8ICdDUDEyNTgnO1xuXG4vLyBodHRwOi8vdGVjaG5ldC5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvYWExNzY1NTModj1zcWwuODApLmFzcHhcbmV4cG9ydCBjb25zdCBjb2RlcGFnZUJ5TGFuZ3VhZ2VJZDogeyBba2V5OiBudW1iZXJdOiBFbmNvZGluZyB9ID0ge1xuICAvLyBBcmFiaWNfKlxuICBbMHgwNDAxXTogJ0NQMTI1NicsXG5cbiAgLy8gQ2hpbmVzZV9UYWl3YW5fU3Ryb2tlXypcbiAgLy8gQ2hpbmVzZV9UcmFkaXRpb25hbF9TdHJva2VfQ291bnRfKlxuICAvLyBDaGluZXNlX1RhaXdhbl9Cb3BvbW9mb18qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfQm9wb21vZm9fKlxuICBbMHgwNDA0XTogJ0NQOTUwJyxcblxuICAvLyBDemVjaF8qXG4gIFsweDA0MDVdOiAnQ1AxMjUwJyxcblxuICAvLyBEYW5pc2hfR3JlZW5sYW5kaWNfKlxuICAvLyBEYW5pc2hfTm9yd2VnaWFuXypcbiAgWzB4MDQwNl06ICdDUDEyNTInLFxuXG4gIC8vIEdyZWVrXypcbiAgWzB4MDQwOF06ICdDUDEyNTMnLFxuXG4gIC8vIExhdGluMV9HZW5lcmFsXypcbiAgWzB4MDQwOV06ICdDUDEyNTInLFxuXG4gIC8vIFRyYWRpdGlvbmFsX1NwYW5pc2hfKlxuICBbMHgwNDBBXTogJ0NQMTI1MicsXG5cbiAgLy8gRmlubmlzaF9Td2VkaXNoXypcbiAgWzB4MDQwQl06ICdDUDEyNTInLFxuXG4gIC8vIEZyZW5jaF8qXG4gIFsweDA0MENdOiAnQ1AxMjUyJyxcblxuICAvLyBIZWJyZXdfKlxuICBbMHgwNDBEXTogJ0NQMTI1NScsXG5cbiAgLy8gSHVuZ2FyaWFuXypcbiAgLy8gSHVuZ2FyaWFuX1RlY2huaWNhbF8qXG4gIFsweDA0MEVdOiAnQ1AxMjUwJyxcblxuICAvLyBJY2VsYW5kaWNfKlxuICBbMHgwNDBGXTogJ0NQMTI1MicsXG5cbiAgLy8gSmFwYW5lc2VfKlxuICAvLyBKYXBhbmVzZV9YSklTXypcbiAgLy8gSmFwYW5lc2VfVW5pY29kZV8qXG4gIC8vIEphcGFuZXNlX0J1c2h1X0tha3VzdV8qXG4gIFsweDA0MTFdOiAnQ1A5MzInLFxuXG4gIC8vIEtvcmVhbl8qXG4gIC8vIEtvcmVhbl9XYW5zdW5nXypcbiAgWzB4MDQxMl06ICdDUDk0OScsXG5cbiAgLy8gTm9yd2VnaWFuXypcbiAgWzB4MDQxNF06ICdDUDEyNTInLFxuXG4gIC8vIFBvbGlzaF8qXG4gIFsweDA0MTVdOiAnQ1AxMjUwJyxcblxuICAvLyBSb21hbnNoXypcbiAgWzB4MDQxN106ICdDUDEyNTInLFxuXG4gIC8vIFJvbWFuaWFuXypcbiAgWzB4MDQxOF06ICdDUDEyNTAnLFxuXG4gIC8vIEN5cmlsbGljXypcbiAgWzB4MDQxOV06ICdDUDEyNTEnLFxuXG4gIC8vIENyb2F0aWFuXypcbiAgWzB4MDQxQV06ICdDUDEyNTAnLFxuXG4gIC8vIFNsb3Zha18qXG4gIFsweDA0MUJdOiAnQ1AxMjUwJyxcblxuICAvLyBBbGJhbmlhbl8qXG4gIFsweDA0MUNdOiAnQ1AxMjUwJyxcblxuICAvLyBUaGFpXypcbiAgWzB4MDQxRV06ICdDUDg3NCcsXG5cbiAgLy8gVHVya2lzaF8qXG4gIFsweDA0MUZdOiAnQ1AxMjU0JyxcblxuICAvLyBVcmR1XypcbiAgWzB4MDQyMF06ICdDUDEyNTYnLFxuXG4gIC8vIFVrcmFpbmlhbl8qXG4gIFsweDA0MjJdOiAnQ1AxMjUxJyxcblxuICAvLyBTbG92ZW5pYW5fKlxuICBbMHgwNDI0XTogJ0NQMTI1MCcsXG5cbiAgLy8gRXN0b25pYW5fKlxuICBbMHgwNDI1XTogJ0NQMTI1NycsXG5cbiAgLy8gTGF0dmlhbl8qXG4gIFsweDA0MjZdOiAnQ1AxMjU3JyxcblxuICAvLyBMaXRodWFuaWFuXypcbiAgWzB4MDQyN106ICdDUDEyNTcnLFxuXG4gIC8vIFBlcnNpYW5fKlxuICBbMHgwNDI5XTogJ0NQMTI1NicsXG5cbiAgLy8gVmlldG5hbWVzZV8qXG4gIFsweDA0MkFdOiAnQ1AxMjU4JyxcblxuICAvLyBBemVyaV9MYXRpbl8qXG4gIFsweDA0MkNdOiAnQ1AxMjU0JyxcblxuICAvLyBVcHBlcl9Tb3JiaWFuXypcbiAgWzB4MDQyRV06ICdDUDEyNTInLFxuXG4gIC8vIE1hY2Vkb25pYW5fRllST01fKlxuICBbMHgwNDJGXTogJ0NQMTI1MScsXG5cbiAgLy8gU2FtaV9Ob3J3YXlfKlxuICBbMHgwNDNCXTogJ0NQMTI1MicsXG5cbiAgLy8gS2F6YWtoXypcbiAgWzB4MDQzRl06ICdDUDEyNTEnLFxuXG4gIC8vIFR1cmttZW5fKlxuICBbMHgwNDQyXTogJ0NQMTI1MCcsXG5cbiAgLy8gVXpiZWtfTGF0aW5fKlxuICBbMHgwNDQzXTogJ0NQMTI1NCcsXG5cbiAgLy8gVGF0YXJfKlxuICBbMHgwNDQ0XTogJ0NQMTI1MScsXG5cbiAgLy8gV2Vsc2hfKlxuICBbMHgwNDUyXTogJ0NQMTI1MicsXG5cbiAgLy8gRnJpc2lhbl8qXG4gIFsweDA0NjJdOiAnQ1AxMjUyJyxcblxuICAvLyBCYXNoa2lyXypcbiAgWzB4MDQ2RF06ICdDUDEyNTEnLFxuXG4gIC8vIE1hcHVkdW5nYW5fKlxuICBbMHgwNDdBXTogJ0NQMTI1MicsXG5cbiAgLy8gTW9oYXdrXypcbiAgWzB4MDQ3Q106ICdDUDEyNTInLFxuXG4gIC8vIEJyZXRvbl8qXG4gIFsweDA0N0VdOiAnQ1AxMjUyJyxcblxuICAvLyBVaWdodXJfKlxuICBbMHgwNDgwXTogJ0NQMTI1NicsXG5cbiAgLy8gQ29yc2ljYW5fKlxuICBbMHgwNDgzXTogJ0NQMTI1MicsXG5cbiAgLy8gWWFrdXRfKlxuICBbMHgwNDg1XTogJ0NQMTI1MScsXG5cbiAgLy8gRGFyaV8qXG4gIFsweDA0OENdOiAnQ1AxMjU2JyxcblxuICAvLyBDaGluZXNlX1BSQ18qXG4gIC8vIENoaW5lc2VfU2ltcGxpZmllZF9QaW55aW5fKlxuICAvLyBDaGluZXNlX1BSQ19TdHJva2VfKlxuICAvLyBDaGluZXNlX1NpbXBsaWZpZWRfU3Ryb2tlX09yZGVyXypcbiAgWzB4MDgwNF06ICdDUDkzNicsXG5cbiAgLy8gU2VyYmlhbl9MYXRpbl8qXG4gIFsweDA4MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBBemVyaV9DeXJpbGxpY18qXG4gIFsweDA4MkNdOiAnQ1AxMjUxJyxcblxuICAvLyBTYW1pX1N3ZWRlbl9GaW5sYW5kXypcbiAgWzB4MDgzQl06ICdDUDEyNTInLFxuXG4gIC8vIFRhbWF6aWdodF8qXG4gIFsweDA4NUZdOiAnQ1AxMjUyJyxcblxuICAvLyBDaGluZXNlX0hvbmdfS29uZ19TdHJva2VfKlxuICBbMHgwQzA0XTogJ0NQOTUwJyxcblxuICAvLyBNb2Rlcm5fU3BhbmlzaF8qXG4gIFsweDBDMEFdOiAnQ1AxMjUyJyxcblxuICAvLyBTZXJiaWFuX0N5cmlsbGljXypcbiAgWzB4MEMxQV06ICdDUDEyNTEnLFxuXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfUGlueWluXypcbiAgLy8gQ2hpbmVzZV9UcmFkaXRpb25hbF9TdHJva2VfT3JkZXJfKlxuICBbMHgxNDA0XTogJ0NQOTUwJyxcblxuICAvLyBCb3NuaWFuX0xhdGluXypcbiAgWzB4MTQxQV06ICdDUDEyNTAnLFxuXG4gIC8vIEJvc25pYW5fQ3lyaWxsaWNfKlxuICBbMHgyMDFBXTogJ0NQMTI1MScsXG5cbiAgLy8gR2VybWFuXG4gIC8vIEdlcm1hbl9QaG9uZUJvb2tfKlxuICBbMHgwNDA3XTogJ0NQMTI1MicsXG5cbiAgLy8gR2VvcmdpYW5fTW9kZXJuX1NvcnRfKlxuICBbMHgwNDM3XTogJ0NQMTI1Midcbn07XG5cbmV4cG9ydCBjb25zdCBjb2RlcGFnZUJ5U29ydElkOiB7IFtrZXk6IG51bWJlcl06IEVuY29kaW5nIH0gPSB7XG4gIFszMF06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19CSU5cbiAgWzMxXTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQNDM3X0NTX0FTXG4gIFszMl06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19DSV9BU1xuICBbMzNdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DUDQzN19DSV9BU1xuICBbMzRdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQ0lfQUlcbiAgWzQwXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0JJTlxuICBbNDFdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A4NTBfQ1NfQVNcbiAgWzQyXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0NJX0FTXG4gIFs0M106ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9QcmVmX0NQODUwX0NJX0FTXG4gIFs0NF06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9DSV9BSVxuICBbNDldOiAnQ1A4NTAnLCAvLyBTUUxfMXhDb21wYXRfQ1A4NTBfQ0lfQVNcbiAgWzUxXTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ1NfQVNfS0lfV0lcbiAgWzUyXTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ0lfQVNfS0lfV0lcbiAgWzUzXTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbNTRdOiAnQ1AxMjUyJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMV9DSV9BSV9LSV9XSVxuICBbNTVdOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDg1MF9DU19BU1xuICBbNTZdOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9QcmVmX0NQODUwX0NJX0FTXG4gIFs1N106ICdDUDg1MCcsIC8vIFNRTF9BbHREaWN0aW9uX0NQODUwX0NJX0FJXG4gIFs1OF06ICdDUDg1MCcsIC8vIFNRTF9TY2FuZGluYXZpYW5fUHJlZl9DUDg1MF9DSV9BU1xuICBbNTldOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX0NQODUwX0NTX0FTXG4gIFs2MF06ICdDUDg1MCcsIC8vIFNRTF9TY2FuZGluYXZpYW5fQ1A4NTBfQ0lfQVNcbiAgWzYxXTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fQ1A4NTBfQ0lfQVNcbiAgWzgwXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUwX0JJTlxuICBbODFdOiAnQ1AxMjUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1MF9DU19BU1xuICBbODJdOiAnQ1AxMjUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODNdOiAnQ1AxMjUwJywgLy8gU1FMX0N6ZWNoX0NwMTI1MF9DU19BU19LSV9XSVxuICBbODRdOiAnQ1AxMjUwJywgLy8gU1FMX0N6ZWNoX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODVdOiAnQ1AxMjUwJywgLy8gU1FMX0h1bmdhcmlhbl9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg2XTogJ0NQMTI1MCcsIC8vIFNRTF9IdW5nYXJpYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs4N106ICdDUDEyNTAnLCAvLyBTUUxfUG9saXNoX0NwMTI1MF9DU19BU19LSV9XSVxuICBbODhdOiAnQ1AxMjUwJywgLy8gU1FMX1BvbGlzaF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzg5XTogJ0NQMTI1MCcsIC8vIFNRTF9Sb21hbmlhbl9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzkwXTogJ0NQMTI1MCcsIC8vIFNRTF9Sb21hbmlhbl9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzkxXTogJ0NQMTI1MCcsIC8vIFNRTF9Dcm9hdGlhbl9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzkyXTogJ0NQMTI1MCcsIC8vIFNRTF9Dcm9hdGlhbl9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzkzXTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92YWtfQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5NF06ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmFrX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbOTVdOiAnQ1AxMjUwJywgLy8gU1FMX1Nsb3Zlbmlhbl9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzk2XTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92ZW5pYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFsxMDRdOiAnQ1AxMjUxJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTFfQklOXG4gIFsxMDVdOiAnQ1AxMjUxJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1MV9DU19BU1xuICBbMTA2XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTFfQ0lfQVNcbiAgWzEwN106ICdDUDEyNTEnLCAvLyBTUUxfVWtyYWluaWFuX0NwMTI1MV9DU19BU19LSV9XSVxuICBbMTA4XTogJ0NQMTI1MScsIC8vIFNRTF9Va3JhaW5pYW5fQ3AxMjUxX0NJX0FTX0tJX1dJXG4gIFsxMTJdOiAnQ1AxMjUzJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTNfQklOXG4gIFsxMTNdOiAnQ1AxMjUzJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1M19DU19BU1xuICBbMTE0XTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ0lfQVNcbiAgWzEyMF06ICdDUDEyNTMnLCAvLyBTUUxfTWl4RGljdGlvbl9DUDEyNTNfQ1NfQVNcbiAgWzEyMV06ICdDUDEyNTMnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDEyNTNfQ1NfQVNcbiAgWzEyMl06ICdDUDEyNTMnLCAvLyBTUUxfQWx0RGljdGlvbjJfQ1AxMjUzX0NTX0FTXG4gIFsxMjRdOiAnQ1AxMjUzJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1M19DSV9BSVxuICBbMTI4XTogJ0NQMTI1NCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU0X0JJTlxuICBbMTI5XTogJ0NQMTI1NCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDEyNTRfQ1NfQVNfS0lfV0lcbiAgWzEzMF06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxMjU0X0NJX0FTX0tJX1dJXG4gIFsxMzZdOiAnQ1AxMjU1JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTVfQklOXG4gIFsxMzddOiAnQ1AxMjU1JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1NV9DU19BU1xuICBbMTM4XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTVfQ0lfQVNcbiAgWzE0NF06ICdDUDEyNTYnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1Nl9CSU5cbiAgWzE0NV06ICdDUDEyNTYnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU2X0NTX0FTXG4gIFsxNDZdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1Nl9DSV9BU1xuICBbMTUyXTogJ0NQMTI1NycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU3X0JJTlxuICBbMTUzXTogJ0NQMTI1NycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTdfQ1NfQVNcbiAgWzE1NF06ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU3X0NJX0FTXG4gIFsxNTVdOiAnQ1AxMjU3JywgLy8gU1FMX0VzdG9uaWFuX0NwMTI1N19DU19BU19LSV9XSVxuICBbMTU2XTogJ0NQMTI1NycsIC8vIFNRTF9Fc3Rvbmlhbl9DcDEyNTdfQ0lfQVNfS0lfV0lcbiAgWzE1N106ICdDUDEyNTcnLCAvLyBTUUxfTGF0dmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE1OF06ICdDUDEyNTcnLCAvLyBTUUxfTGF0dmlhbl9DcDEyNTdfQ0lfQVNfS0lfV0lcbiAgWzE1OV06ICdDUDEyNTcnLCAvLyBTUUxfTGl0aHVhbmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE2MF06ICdDUDEyNTcnLCAvLyBTUUxfTGl0aHVhbmlhbl9DcDEyNTdfQ0lfQVNfS0lfV0lcbiAgWzE4M106ICdDUDEyNTInLCAvLyBTUUxfRGFuaXNoX1ByZWZfQ3AxX0NJX0FTX0tJX1dJXG4gIFsxODRdOiAnQ1AxMjUyJywgLy8gU1FMX1N3ZWRpc2hQaG9uZV9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg1XTogJ0NQMTI1MicsIC8vIFNRTF9Td2VkaXNoU3RkX1ByZWZfQ3AxX0NJX0FTX0tJX1dJXG4gIFsxODZdOiAnQ1AxMjUyJyAvLyBTUUxfSWNlbGFuZGljX1ByZWZfQ3AxX0NJX0FTX0tJX1dJXG59O1xuXG5leHBvcnQgY29uc3QgRmxhZ3MgPSB7XG4gIElHTk9SRV9DQVNFOiAxIDw8IDAsXG4gIElHTk9SRV9BQ0NFTlQ6IDEgPDwgMSxcbiAgSUdOT1JFX0tBTkE6IDEgPDwgMixcbiAgSUdOT1JFX1dJRFRIOiAxIDw8IDMsXG4gIEJJTkFSWTogMSA8PCA0LFxuICBCSU5BUlkyOiAxIDw8IDUsXG4gIFVURjg6IDEgPDwgNixcbn07XG5cbmV4cG9ydCBjbGFzcyBDb2xsYXRpb24ge1xuICByZWFkb25seSBsY2lkOiBudW1iZXI7XG4gIHJlYWRvbmx5IGZsYWdzOiBudW1iZXI7XG4gIHJlYWRvbmx5IHZlcnNpb246IG51bWJlcjtcbiAgcmVhZG9ubHkgc29ydElkOiBudW1iZXI7XG4gIHJlYWRvbmx5IGNvZGVwYWdlOiBFbmNvZGluZyB8IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGJ1ZmZlcjogQnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIHN0YXRpYyBmcm9tQnVmZmVyKGJ1ZmZlcjogQnVmZmVyLCBvZmZzZXQgPSAwKSB7XG4gICAgbGV0IGxjaWQgPSAoYnVmZmVyW29mZnNldCArIDJdICYgMHgwRikgPDwgMTY7XG4gICAgbGNpZCB8PSBidWZmZXJbb2Zmc2V0ICsgMV0gPDwgODtcbiAgICBsY2lkIHw9IGJ1ZmZlcltvZmZzZXQgKyAwXTtcblxuICAgIGxldCBmbGFncyA9IChidWZmZXJbb2Zmc2V0ICsgM10gJiAweDBGKSA8PCA0O1xuICAgIGZsYWdzIHw9IChidWZmZXJbb2Zmc2V0ICsgMl0gJiAweEYwKSA+Pj4gNDtcblxuICAgIGNvbnN0IHZlcnNpb24gPSAoYnVmZmVyW29mZnNldCArIDNdICYgMHhGMCkgPj4+IDQ7XG5cbiAgICBjb25zdCBzb3J0SWQgPSBidWZmZXJbb2Zmc2V0ICsgNF07XG5cbiAgICByZXR1cm4gbmV3IHRoaXMobGNpZCwgZmxhZ3MsIHZlcnNpb24sIHNvcnRJZCk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihsY2lkOiBudW1iZXIsIGZsYWdzOiBudW1iZXIsIHZlcnNpb246IG51bWJlciwgc29ydElkOiBudW1iZXIpIHtcbiAgICB0aGlzLmJ1ZmZlciA9IHVuZGVmaW5lZDtcblxuICAgIHRoaXMubGNpZCA9IGxjaWQ7XG4gICAgdGhpcy5mbGFncyA9IGZsYWdzO1xuICAgIHRoaXMudmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5zb3J0SWQgPSBzb3J0SWQ7XG5cbiAgICBpZiAodGhpcy5mbGFncyAmIEZsYWdzLlVURjgpIHtcbiAgICAgIHRoaXMuY29kZXBhZ2UgPSAndXRmLTgnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zb3J0SWQpIHtcbiAgICAgIHRoaXMuY29kZXBhZ2UgPSBjb2RlcGFnZUJ5U29ydElkW3RoaXMuc29ydElkXTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGhlIGxhc3QgMTYgYml0cyBvZiB0aGUgTENJRCBhcmUgdGhlIGxhbmd1YWdlIGlkLlxuICAgICAgLy8gVGhlIGZpcnN0IDQgYml0cyBkZWZpbmUgYWRkaXRpb25hbCBzb3J0IG9yZGVycy5cbiAgICAgIGNvbnN0IGxhbmd1YWdlSWQgPSB0aGlzLmxjaWQgJiAweEZGRkY7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gY29kZXBhZ2VCeUxhbmd1YWdlSWRbbGFuZ3VhZ2VJZF07XG4gICAgfVxuICB9XG5cbiAgdG9CdWZmZXIoKTogQnVmZmVyIHtcbiAgICBpZiAodGhpcy5idWZmZXIpIHtcbiAgICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgICB9XG5cbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvYyg1KTtcblxuICAgIHRoaXMuYnVmZmVyWzBdID0gdGhpcy5sY2lkICYgMHhGRjtcbiAgICB0aGlzLmJ1ZmZlclsxXSA9ICh0aGlzLmxjaWQgPj4+IDgpICYgMHhGRjtcbiAgICB0aGlzLmJ1ZmZlclsyXSA9ICgodGhpcy5sY2lkID4+PiAxNikgJiAweDBGKSB8ICgodGhpcy5mbGFncyAmIDB4MEYpIDw8IDQpO1xuICAgIHRoaXMuYnVmZmVyWzNdID0gKCh0aGlzLmZsYWdzICYgMHhGMCkgPj4+IDQpIHwgKCh0aGlzLnZlcnNpb24gJiAweDBGKSA8PCA0KTtcbiAgICB0aGlzLmJ1ZmZlcls0XSA9IHRoaXMuc29ydElkICYgMHhGRjtcblxuICAgIHJldHVybiB0aGlzLmJ1ZmZlcjtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQTtBQUNPLE1BQU1BLG9CQUFpRCxHQUFHO0VBQy9EO0VBQ0EsQ0FBQyxNQUFELEdBQVUsUUFGcUQ7RUFJL0Q7RUFDQTtF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
357
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2RlcGFnZUJ5TGFuZ3VhZ2VJZCIsImV4cG9ydHMiLCJjb2RlcGFnZUJ5U29ydElkIiwiRmxhZ3MiLCJJR05PUkVfQ0FTRSIsIklHTk9SRV9BQ0NFTlQiLCJJR05PUkVfS0FOQSIsIklHTk9SRV9XSURUSCIsIkJJTkFSWSIsIkJJTkFSWTIiLCJVVEY4IiwiQ29sbGF0aW9uIiwibGNpZCIsImZsYWdzIiwidmVyc2lvbiIsInNvcnRJZCIsImNvZGVwYWdlIiwiYnVmZmVyIiwiZnJvbUJ1ZmZlciIsIm9mZnNldCIsImNvbnN0cnVjdG9yIiwidW5kZWZpbmVkIiwibGFuZ3VhZ2VJZCIsInRvQnVmZmVyIiwiQnVmZmVyIiwiYWxsb2MiXSwic291cmNlcyI6WyIuLi9zcmMvY29sbGF0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgRW5jb2RpbmcgPSAndXRmLTgnIHwgJ0NQNDM3JyB8ICdDUDg1MCcgfCAnQ1A4NzQnIHwgJ0NQOTMyJyB8ICdDUDkzNicgfCAnQ1A5NDknIHwgJ0NQOTUwJyB8ICdDUDEyNTAnIHwgJ0NQMTI1MScgfCAnQ1AxMjUyJyB8ICdDUDEyNTMnIHwgJ0NQMTI1NCcgfCAnQ1AxMjU1JyB8ICdDUDEyNTYnIHwgJ0NQMTI1NycgfCAnQ1AxMjU4JztcblxuLy8gaHR0cDovL3RlY2huZXQubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2FhMTc2NTUzKHY9c3FsLjgwKS5hc3B4XG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeUxhbmd1YWdlSWQ6IHsgW2tleTogbnVtYmVyXTogRW5jb2RpbmcgfSA9IHtcbiAgLy8gQXJhYmljXypcbiAgWzB4MDQwMV06ICdDUDEyNTYnLFxuXG4gIC8vIENoaW5lc2VfVGFpd2FuX1N0cm9rZV8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX0NvdW50XypcbiAgLy8gQ2hpbmVzZV9UYWl3YW5fQm9wb21vZm9fKlxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX0JvcG9tb2ZvXypcbiAgWzB4MDQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQ3plY2hfKlxuICBbMHgwNDA1XTogJ0NQMTI1MCcsXG5cbiAgLy8gRGFuaXNoX0dyZWVubGFuZGljXypcbiAgLy8gRGFuaXNoX05vcndlZ2lhbl8qXG4gIFsweDA0MDZdOiAnQ1AxMjUyJyxcblxuICAvLyBHcmVla18qXG4gIFsweDA0MDhdOiAnQ1AxMjUzJyxcblxuICAvLyBMYXRpbjFfR2VuZXJhbF8qXG4gIFsweDA0MDldOiAnQ1AxMjUyJyxcblxuICAvLyBUcmFkaXRpb25hbF9TcGFuaXNoXypcbiAgWzB4MDQwQV06ICdDUDEyNTInLFxuXG4gIC8vIEZpbm5pc2hfU3dlZGlzaF8qXG4gIFsweDA0MEJdOiAnQ1AxMjUyJyxcblxuICAvLyBGcmVuY2hfKlxuICBbMHgwNDBDXTogJ0NQMTI1MicsXG5cbiAgLy8gSGVicmV3XypcbiAgWzB4MDQwRF06ICdDUDEyNTUnLFxuXG4gIC8vIEh1bmdhcmlhbl8qXG4gIC8vIEh1bmdhcmlhbl9UZWNobmljYWxfKlxuICBbMHgwNDBFXTogJ0NQMTI1MCcsXG5cbiAgLy8gSWNlbGFuZGljXypcbiAgWzB4MDQwRl06ICdDUDEyNTInLFxuXG4gIC8vIEphcGFuZXNlXypcbiAgLy8gSmFwYW5lc2VfWEpJU18qXG4gIC8vIEphcGFuZXNlX1VuaWNvZGVfKlxuICAvLyBKYXBhbmVzZV9CdXNodV9LYWt1c3VfKlxuICBbMHgwNDExXTogJ0NQOTMyJyxcblxuICAvLyBLb3JlYW5fKlxuICAvLyBLb3JlYW5fV2Fuc3VuZ18qXG4gIFsweDA0MTJdOiAnQ1A5NDknLFxuXG4gIC8vIE5vcndlZ2lhbl8qXG4gIFsweDA0MTRdOiAnQ1AxMjUyJyxcblxuICAvLyBQb2xpc2hfKlxuICBbMHgwNDE1XTogJ0NQMTI1MCcsXG5cbiAgLy8gUm9tYW5zaF8qXG4gIFsweDA0MTddOiAnQ1AxMjUyJyxcblxuICAvLyBSb21hbmlhbl8qXG4gIFsweDA0MThdOiAnQ1AxMjUwJyxcblxuICAvLyBDeXJpbGxpY18qXG4gIFsweDA0MTldOiAnQ1AxMjUxJyxcblxuICAvLyBDcm9hdGlhbl8qXG4gIFsweDA0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBTbG92YWtfKlxuICBbMHgwNDFCXTogJ0NQMTI1MCcsXG5cbiAgLy8gQWxiYW5pYW5fKlxuICBbMHgwNDFDXTogJ0NQMTI1MCcsXG5cbiAgLy8gVGhhaV8qXG4gIFsweDA0MUVdOiAnQ1A4NzQnLFxuXG4gIC8vIFR1cmtpc2hfKlxuICBbMHgwNDFGXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXJkdV8qXG4gIFsweDA0MjBdOiAnQ1AxMjU2JyxcblxuICAvLyBVa3JhaW5pYW5fKlxuICBbMHgwNDIyXTogJ0NQMTI1MScsXG5cbiAgLy8gU2xvdmVuaWFuXypcbiAgWzB4MDQyNF06ICdDUDEyNTAnLFxuXG4gIC8vIEVzdG9uaWFuXypcbiAgWzB4MDQyNV06ICdDUDEyNTcnLFxuXG4gIC8vIExhdHZpYW5fKlxuICBbMHgwNDI2XTogJ0NQMTI1NycsXG5cbiAgLy8gTGl0aHVhbmlhbl8qXG4gIFsweDA0MjddOiAnQ1AxMjU3JyxcblxuICAvLyBQZXJzaWFuXypcbiAgWzB4MDQyOV06ICdDUDEyNTYnLFxuXG4gIC8vIFZpZXRuYW1lc2VfKlxuICBbMHgwNDJBXTogJ0NQMTI1OCcsXG5cbiAgLy8gQXplcmlfTGF0aW5fKlxuICBbMHgwNDJDXTogJ0NQMTI1NCcsXG5cbiAgLy8gVXBwZXJfU29yYmlhbl8qXG4gIFsweDA0MkVdOiAnQ1AxMjUyJyxcblxuICAvLyBNYWNlZG9uaWFuX0ZZUk9NXypcbiAgWzB4MDQyRl06ICdDUDEyNTEnLFxuXG4gIC8vIFNhbWlfTm9yd2F5XypcbiAgWzB4MDQzQl06ICdDUDEyNTInLFxuXG4gIC8vIEthemFraF8qXG4gIFsweDA0M0ZdOiAnQ1AxMjUxJyxcblxuICAvLyBUdXJrbWVuXypcbiAgWzB4MDQ0Ml06ICdDUDEyNTAnLFxuXG4gIC8vIFV6YmVrX0xhdGluXypcbiAgWzB4MDQ0M106ICdDUDEyNTQnLFxuXG4gIC8vIFRhdGFyXypcbiAgWzB4MDQ0NF06ICdDUDEyNTEnLFxuXG4gIC8vIFdlbHNoXypcbiAgWzB4MDQ1Ml06ICdDUDEyNTInLFxuXG4gIC8vIEZyaXNpYW5fKlxuICBbMHgwNDYyXTogJ0NQMTI1MicsXG5cbiAgLy8gQmFzaGtpcl8qXG4gIFsweDA0NkRdOiAnQ1AxMjUxJyxcblxuICAvLyBNYXB1ZHVuZ2FuXypcbiAgWzB4MDQ3QV06ICdDUDEyNTInLFxuXG4gIC8vIE1vaGF3a18qXG4gIFsweDA0N0NdOiAnQ1AxMjUyJyxcblxuICAvLyBCcmV0b25fKlxuICBbMHgwNDdFXTogJ0NQMTI1MicsXG5cbiAgLy8gVWlnaHVyXypcbiAgWzB4MDQ4MF06ICdDUDEyNTYnLFxuXG4gIC8vIENvcnNpY2FuXypcbiAgWzB4MDQ4M106ICdDUDEyNTInLFxuXG4gIC8vIFlha3V0XypcbiAgWzB4MDQ4NV06ICdDUDEyNTEnLFxuXG4gIC8vIERhcmlfKlxuICBbMHgwNDhDXTogJ0NQMTI1NicsXG5cbiAgLy8gQ2hpbmVzZV9QUkNfKlxuICAvLyBDaGluZXNlX1NpbXBsaWZpZWRfUGlueWluXypcbiAgLy8gQ2hpbmVzZV9QUkNfU3Ryb2tlXypcbiAgLy8gQ2hpbmVzZV9TaW1wbGlmaWVkX1N0cm9rZV9PcmRlcl8qXG4gIFsweDA4MDRdOiAnQ1A5MzYnLFxuXG4gIC8vIFNlcmJpYW5fTGF0aW5fKlxuICBbMHgwODFBXTogJ0NQMTI1MCcsXG5cbiAgLy8gQXplcmlfQ3lyaWxsaWNfKlxuICBbMHgwODJDXTogJ0NQMTI1MScsXG5cbiAgLy8gU2FtaV9Td2VkZW5fRmlubGFuZF8qXG4gIFsweDA4M0JdOiAnQ1AxMjUyJyxcblxuICAvLyBUYW1hemlnaHRfKlxuICBbMHgwODVGXTogJ0NQMTI1MicsXG5cbiAgLy8gQ2hpbmVzZV9Ib25nX0tvbmdfU3Ryb2tlXypcbiAgWzB4MEMwNF06ICdDUDk1MCcsXG5cbiAgLy8gTW9kZXJuX1NwYW5pc2hfKlxuICBbMHgwQzBBXTogJ0NQMTI1MicsXG5cbiAgLy8gU2VyYmlhbl9DeXJpbGxpY18qXG4gIFsweDBDMUFdOiAnQ1AxMjUxJyxcblxuICAvLyBDaGluZXNlX1RyYWRpdGlvbmFsX1Bpbnlpbl8qXG4gIC8vIENoaW5lc2VfVHJhZGl0aW9uYWxfU3Ryb2tlX09yZGVyXypcbiAgWzB4MTQwNF06ICdDUDk1MCcsXG5cbiAgLy8gQm9zbmlhbl9MYXRpbl8qXG4gIFsweDE0MUFdOiAnQ1AxMjUwJyxcblxuICAvLyBCb3NuaWFuX0N5cmlsbGljXypcbiAgWzB4MjAxQV06ICdDUDEyNTEnLFxuXG4gIC8vIEdlcm1hblxuICAvLyBHZXJtYW5fUGhvbmVCb29rXypcbiAgWzB4MDQwN106ICdDUDEyNTInLFxuXG4gIC8vIEdlb3JnaWFuX01vZGVybl9Tb3J0XypcbiAgWzB4MDQzN106ICdDUDEyNTInXG59O1xuXG5leHBvcnQgY29uc3QgY29kZXBhZ2VCeVNvcnRJZDogeyBba2V5OiBudW1iZXJdOiBFbmNvZGluZyB9ID0ge1xuICBbMzBdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQklOXG4gIFszMV06ICdDUDQzNycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDQzN19DU19BU1xuICBbMzJdOiAnQ1A0MzcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A0MzdfQ0lfQVNcbiAgWzMzXTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX1ByZWZfQ1A0MzdfQ0lfQVNcbiAgWzM0XTogJ0NQNDM3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQNDM3X0NJX0FJXG4gIFs0MF06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9CSU5cbiAgWzQxXTogJ0NQODUwJywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQODUwX0NTX0FTXG4gIFs0Ml06ICdDUDg1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDg1MF9DSV9BU1xuICBbNDNdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DUDg1MF9DSV9BU1xuICBbNDRdOiAnQ1A4NTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1A4NTBfQ0lfQUlcbiAgWzQ5XTogJ0NQODUwJywgLy8gU1FMXzF4Q29tcGF0X0NQODUwX0NJX0FTXG4gIFs1MV06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NTX0FTX0tJX1dJXG4gIFs1Ml06ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxX0NJX0FTX0tJX1dJXG4gIFs1M106ICdDUDEyNTInLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzU0XTogJ0NQMTI1MicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDFfQ0lfQUlfS0lfV0lcbiAgWzU1XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fQ1A4NTBfQ1NfQVNcbiAgWzU2XTogJ0NQODUwJywgLy8gU1FMX0FsdERpY3Rpb25fUHJlZl9DUDg1MF9DSV9BU1xuICBbNTddOiAnQ1A4NTAnLCAvLyBTUUxfQWx0RGljdGlvbl9DUDg1MF9DSV9BSVxuICBbNThdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX1ByZWZfQ1A4NTBfQ0lfQVNcbiAgWzU5XTogJ0NQODUwJywgLy8gU1FMX1NjYW5kaW5hdmlhbl9DUDg1MF9DU19BU1xuICBbNjBdOiAnQ1A4NTAnLCAvLyBTUUxfU2NhbmRpbmF2aWFuX0NQODUwX0NJX0FTXG4gIFs2MV06ICdDUDg1MCcsIC8vIFNRTF9BbHREaWN0aW9uX0NQODUwX0NJX0FTXG4gIFs4MF06ICdDUDEyNTAnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1MF9CSU5cbiAgWzgxXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTBfQ1NfQVNcbiAgWzgyXTogJ0NQMTI1MCcsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzgzXTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg0XTogJ0NQMTI1MCcsIC8vIFNRTF9DemVjaF9DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzg1XTogJ0NQMTI1MCcsIC8vIFNRTF9IdW5nYXJpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs4Nl06ICdDUDEyNTAnLCAvLyBTUUxfSHVuZ2FyaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbODddOiAnQ1AxMjUwJywgLy8gU1FMX1BvbGlzaF9DcDEyNTBfQ1NfQVNfS0lfV0lcbiAgWzg4XTogJ0NQMTI1MCcsIC8vIFNRTF9Qb2xpc2hfQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs4OV06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5MF06ICdDUDEyNTAnLCAvLyBTUUxfUm9tYW5pYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5MV06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Ml06ICdDUDEyNTAnLCAvLyBTUUxfQ3JvYXRpYW5fQ3AxMjUwX0NJX0FTX0tJX1dJXG4gIFs5M106ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmFrX0NwMTI1MF9DU19BU19LSV9XSVxuICBbOTRdOiAnQ1AxMjUwJywgLy8gU1FMX1Nsb3Zha19DcDEyNTBfQ0lfQVNfS0lfV0lcbiAgWzk1XTogJ0NQMTI1MCcsIC8vIFNRTF9TbG92ZW5pYW5fQ3AxMjUwX0NTX0FTX0tJX1dJXG4gIFs5Nl06ICdDUDEyNTAnLCAvLyBTUUxfU2xvdmVuaWFuX0NwMTI1MF9DSV9BU19LSV9XSVxuICBbMTA0XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUxX0JJTlxuICBbMTA1XTogJ0NQMTI1MScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTFfQ1NfQVNcbiAgWzEwNl06ICdDUDEyNTEnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUxX0NJX0FTXG4gIFsxMDddOiAnQ1AxMjUxJywgLy8gU1FMX1VrcmFpbmlhbl9DcDEyNTFfQ1NfQVNfS0lfV0lcbiAgWzEwOF06ICdDUDEyNTEnLCAvLyBTUUxfVWtyYWluaWFuX0NwMTI1MV9DSV9BU19LSV9XSVxuICBbMTEyXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjUzX0JJTlxuICBbMTEzXTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ1NfQVNcbiAgWzExNF06ICdDUDEyNTMnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjUzX0NJX0FTXG4gIFsxMjBdOiAnQ1AxMjUzJywgLy8gU1FMX01peERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjFdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb25fQ1AxMjUzX0NTX0FTXG4gIFsxMjJdOiAnQ1AxMjUzJywgLy8gU1FMX0FsdERpY3Rpb24yX0NQMTI1M19DU19BU1xuICBbMTI0XTogJ0NQMTI1MycsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTNfQ0lfQUlcbiAgWzEyOF06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1NF9CSU5cbiAgWzEyOV06ICdDUDEyNTQnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ3AxMjU0X0NTX0FTX0tJX1dJXG4gIFsxMzBdOiAnQ1AxMjU0JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NwMTI1NF9DSV9BU19LSV9XSVxuICBbMTM2XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF8xMjU1X0JJTlxuICBbMTM3XTogJ0NQMTI1NScsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTVfQ1NfQVNcbiAgWzEzOF06ICdDUDEyNTUnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU1X0NJX0FTXG4gIFsxNDRdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsXzEyNTZfQklOXG4gIFsxNDVdOiAnQ1AxMjU2JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1Nl9DU19BU1xuICBbMTQ2XTogJ0NQMTI1NicsIC8vIFNRTF9MYXRpbjFfR2VuZXJhbF9DUDEyNTZfQ0lfQVNcbiAgWzE1Ml06ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfMTI1N19CSU5cbiAgWzE1M106ICdDUDEyNTcnLCAvLyBTUUxfTGF0aW4xX0dlbmVyYWxfQ1AxMjU3X0NTX0FTXG4gIFsxNTRdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdGluMV9HZW5lcmFsX0NQMTI1N19DSV9BU1xuICBbMTU1XTogJ0NQMTI1NycsIC8vIFNRTF9Fc3Rvbmlhbl9DcDEyNTdfQ1NfQVNfS0lfV0lcbiAgWzE1Nl06ICdDUDEyNTcnLCAvLyBTUUxfRXN0b25pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTddOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNThdOiAnQ1AxMjU3JywgLy8gU1FMX0xhdHZpYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxNTldOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NTX0FTX0tJX1dJXG4gIFsxNjBdOiAnQ1AxMjU3JywgLy8gU1FMX0xpdGh1YW5pYW5fQ3AxMjU3X0NJX0FTX0tJX1dJXG4gIFsxODNdOiAnQ1AxMjUyJywgLy8gU1FMX0RhbmlzaF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg0XTogJ0NQMTI1MicsIC8vIFNRTF9Td2VkaXNoUGhvbmVfUHJlZl9DcDFfQ0lfQVNfS0lfV0lcbiAgWzE4NV06ICdDUDEyNTInLCAvLyBTUUxfU3dlZGlzaFN0ZF9QcmVmX0NwMV9DSV9BU19LSV9XSVxuICBbMTg2XTogJ0NQMTI1MicgLy8gU1FMX0ljZWxhbmRpY19QcmVmX0NwMV9DSV9BU19LSV9XSVxufTtcblxuZXhwb3J0IGNvbnN0IEZsYWdzID0ge1xuICBJR05PUkVfQ0FTRTogMSA8PCAwLFxuICBJR05PUkVfQUNDRU5UOiAxIDw8IDEsXG4gIElHTk9SRV9LQU5BOiAxIDw8IDIsXG4gIElHTk9SRV9XSURUSDogMSA8PCAzLFxuICBCSU5BUlk6IDEgPDwgNCxcbiAgQklOQVJZMjogMSA8PCA1LFxuICBVVEY4OiAxIDw8IDYsXG59O1xuXG5leHBvcnQgY2xhc3MgQ29sbGF0aW9uIHtcbiAgcmVhZG9ubHkgbGNpZDogbnVtYmVyO1xuICByZWFkb25seSBmbGFnczogbnVtYmVyO1xuICByZWFkb25seSB2ZXJzaW9uOiBudW1iZXI7XG4gIHJlYWRvbmx5IHNvcnRJZDogbnVtYmVyO1xuICByZWFkb25seSBjb2RlcGFnZTogRW5jb2RpbmcgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBidWZmZXI6IEJ1ZmZlciB8IHVuZGVmaW5lZDtcblxuICBzdGF0aWMgZnJvbUJ1ZmZlcihidWZmZXI6IEJ1ZmZlciwgb2Zmc2V0ID0gMCkge1xuICAgIGxldCBsY2lkID0gKGJ1ZmZlcltvZmZzZXQgKyAyXSAmIDB4MEYpIDw8IDE2O1xuICAgIGxjaWQgfD0gYnVmZmVyW29mZnNldCArIDFdIDw8IDg7XG4gICAgbGNpZCB8PSBidWZmZXJbb2Zmc2V0ICsgMF07XG5cbiAgICBsZXQgZmxhZ3MgPSAoYnVmZmVyW29mZnNldCArIDNdICYgMHgwRikgPDwgNDtcbiAgICBmbGFncyB8PSAoYnVmZmVyW29mZnNldCArIDJdICYgMHhGMCkgPj4+IDQ7XG5cbiAgICBjb25zdCB2ZXJzaW9uID0gKGJ1ZmZlcltvZmZzZXQgKyAzXSAmIDB4RjApID4+PiA0O1xuXG4gICAgY29uc3Qgc29ydElkID0gYnVmZmVyW29mZnNldCArIDRdO1xuXG4gICAgcmV0dXJuIG5ldyB0aGlzKGxjaWQsIGZsYWdzLCB2ZXJzaW9uLCBzb3J0SWQpO1xuICB9XG5cbiAgY29uc3RydWN0b3IobGNpZDogbnVtYmVyLCBmbGFnczogbnVtYmVyLCB2ZXJzaW9uOiBudW1iZXIsIHNvcnRJZDogbnVtYmVyKSB7XG4gICAgdGhpcy5idWZmZXIgPSB1bmRlZmluZWQ7XG5cbiAgICB0aGlzLmxjaWQgPSBsY2lkO1xuICAgIHRoaXMuZmxhZ3MgPSBmbGFncztcbiAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMuc29ydElkID0gc29ydElkO1xuXG4gICAgaWYgKHRoaXMuZmxhZ3MgJiBGbGFncy5VVEY4KSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gJ3V0Zi04JztcbiAgICB9IGVsc2UgaWYgKHRoaXMuc29ydElkKSB7XG4gICAgICB0aGlzLmNvZGVwYWdlID0gY29kZXBhZ2VCeVNvcnRJZFt0aGlzLnNvcnRJZF07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFRoZSBsYXN0IDE2IGJpdHMgb2YgdGhlIExDSUQgYXJlIHRoZSBsYW5ndWFnZSBpZC5cbiAgICAgIC8vIFRoZSBmaXJzdCA0IGJpdHMgZGVmaW5lIGFkZGl0aW9uYWwgc29ydCBvcmRlcnMuXG4gICAgICBjb25zdCBsYW5ndWFnZUlkID0gdGhpcy5sY2lkICYgMHhGRkZGO1xuICAgICAgdGhpcy5jb2RlcGFnZSA9IGNvZGVwYWdlQnlMYW5ndWFnZUlkW2xhbmd1YWdlSWRdO1xuICAgIH1cbiAgfVxuXG4gIHRvQnVmZmVyKCk6IEJ1ZmZlciB7XG4gICAgaWYgKHRoaXMuYnVmZmVyKSB7XG4gICAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gICAgfVxuXG4gICAgdGhpcy5idWZmZXIgPSBCdWZmZXIuYWxsb2MoNSk7XG5cbiAgICB0aGlzLmJ1ZmZlclswXSA9IHRoaXMubGNpZCAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMV0gPSAodGhpcy5sY2lkID4+PiA4KSAmIDB4RkY7XG4gICAgdGhpcy5idWZmZXJbMl0gPSAoKHRoaXMubGNpZCA+Pj4gMTYpICYgMHgwRikgfCAoKHRoaXMuZmxhZ3MgJiAweDBGKSA8PCA0KTtcbiAgICB0aGlzLmJ1ZmZlclszXSA9ICgodGhpcy5mbGFncyAmIDB4RjApID4+PiA0KSB8ICgodGhpcy52ZXJzaW9uICYgMHgwRikgPDwgNCk7XG4gICAgdGhpcy5idWZmZXJbNF0gPSB0aGlzLnNvcnRJZCAmIDB4RkY7XG5cbiAgICByZXR1cm4gdGhpcy5idWZmZXI7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUE7QUFDTyxNQUFNQSxvQkFBaUQsR0FBRztFQUMvRDtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0E7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsT0FBTztFQUVqQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQSxDQUFDLE1BQU0sR0FBRyxPQUFPO0VBRWpCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHLFFBQVE7RUFFbEI7RUFDQTtFQUNBLENBQUMsTUFBTSxHQUFHLE9BQU87RUFFakI7RUFDQSxDQUFDLE1BQU0sR0FBRyxRQUFRO0VBRWxCO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBO0VBQ0EsQ0FBQyxNQUFNLEdBQUcsUUFBUTtFQUVsQjtFQUNBLENBQUMsTUFBTSxHQUFHO0FBQ1osQ0FBQztBQUFDQyxPQUFBLENBQUFELG9CQUFBLEdBQUFBLG9CQUFBO0FBRUssTUFBTUUsZ0JBQTZDLEdBQUc7RUFDM0QsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsT0FBTztFQUFFO0VBQ2YsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLE9BQU87RUFBRTtFQUNmLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxFQUFFLEdBQUcsUUFBUTtFQUFFO0VBQ2hCLENBQUMsRUFBRSxHQUFHLFFBQVE7RUFBRTtFQUNoQixDQUFDLEVBQUUsR0FBRyxRQUFRO0VBQUU7RUFDaEIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcsR0FBRyxRQUFRO0VBQUU7RUFDakIsQ0FBQyxHQUFHLEdBQUcsUUFBUTtFQUFFO0VBQ2pCLENBQUMsR0FBRyxHQUFHLFFBQVE7RUFBRTtFQUNqQixDQUFDLEdBQUcs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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collation.js","names":["codepageByLanguageId","exports","codepageBySortId","Flags","IGNORE_CASE","IGNORE_ACCENT","IGNORE_KANA","IGNORE_WIDTH","BINARY","BINARY2","UTF8","Collation","lcid","flags","version","sortId","codepage","buffer","fromBuffer","offset","constructor","undefined","languageId","toBuffer","Buffer","alloc"],"sources":["../src/collation.ts"],"sourcesContent":["type Encoding = 'utf-8' | 'CP437' | 'CP850' | 'CP874' | 'CP932' | 'CP936' | 'CP949' | 'CP950' | 'CP1250' | 'CP1251' | 'CP1252' | 'CP1253' | 'CP1254' | 'CP1255' | 'CP1256' | 'CP1257' | 'CP1258';\n\n// http://technet.microsoft.com/en-us/library/aa176553(v=sql.80).aspx\nexport const codepageByLanguageId: { [key: number]: Encoding } = {\n // Arabic_*\n [0x0401]: 'CP1256',\n\n // Chinese_Taiwan_Stroke_*\n // Chinese_Traditional_Stroke_Count_*\n // Chinese_Taiwan_Bopomofo_*\n // Chinese_Traditional_Bopomofo_*\n [0x0404]: 'CP950',\n\n // Czech_*\n [0x0405]: 'CP1250',\n\n // Danish_Greenlandic_*\n // Danish_Norwegian_*\n [0x0406]: 'CP1252',\n\n // Greek_*\n [0x0408]: 'CP1253',\n\n // Latin1_General_*\n [0x0409]: 'CP1252',\n\n // Traditional_Spanish_*\n [0x040A]: 'CP1252',\n\n // Finnish_Swedish_*\n [0x040B]: 'CP1252',\n\n // French_*\n [0x040C]: 'CP1252',\n\n // Hebrew_*\n [0x040D]: 'CP1255',\n\n // Hungarian_*\n // Hungarian_Technical_*\n [0x040E]: 'CP1250',\n\n // Icelandic_*\n [0x040F]: 'CP1252',\n\n // Japanese_*\n // Japanese_XJIS_*\n // Japanese_Unicode_*\n // Japanese_Bushu_Kakusu_*\n [0x0411]: 'CP932',\n\n // Korean_*\n // Korean_Wansung_*\n [0x0412]: 'CP949',\n\n // Norwegian_*\n [0x0414]: 'CP1252',\n\n // Polish_*\n [0x0415]: 'CP1250',\n\n // Romansh_*\n [0x0417]: 'CP1252',\n\n // Romanian_*\n [0x0418]: 'CP1250',\n\n // Cyrillic_*\n [0x0419]: 'CP1251',\n\n // Croatian_*\n [0x041A]: 'CP1250',\n\n // Slovak_*\n [0x041B]: 'CP1250',\n\n // Albanian_*\n [0x041C]: 'CP1250',\n\n // Thai_*\n [0x041E]: 'CP874',\n\n // Turkish_*\n [0x041F]: 'CP1254',\n\n // Urdu_*\n [0x0420]: 'CP1256',\n\n // Ukrainian_*\n [0x0422]: 'CP1251',\n\n // Slovenian_*\n [0x0424]: 'CP1250',\n\n // Estonian_*\n [0x0425]: 'CP1257',\n\n // Latvian_*\n [0x0426]: 'CP1257',\n\n // Lithuanian_*\n [0x0427]: 'CP1257',\n\n // Persian_*\n [0x0429]: 'CP1256',\n\n // Vietnamese_*\n [0x042A]: 'CP1258',\n\n // Azeri_Latin_*\n [0x042C]: 'CP1254',\n\n // Upper_Sorbian_*\n [0x042E]: 'CP1252',\n\n // Macedonian_FYROM_*\n [0x042F]: 'CP1251',\n\n // Sami_Norway_*\n [0x043B]: 'CP1252',\n\n // Kazakh_*\n [0x043F]: 'CP1251',\n\n // Turkmen_*\n [0x0442]: 'CP1250',\n\n // Uzbek_Latin_*\n [0x0443]: 'CP1254',\n\n // Tatar_*\n [0x0444]: 'CP1251',\n\n // Welsh_*\n [0x0452]: 'CP1252',\n\n // Frisian_*\n [0x0462]: 'CP1252',\n\n // Bashkir_*\n [0x046D]: 'CP1251',\n\n // Mapudungan_*\n [0x047A]: 'CP1252',\n\n // Mohawk_*\n [0x047C]: 'CP1252',\n\n // Breton_*\n [0x047E]: 'CP1252',\n\n // Uighur_*\n [0x0480]: 'CP1256',\n\n // Corsican_*\n [0x0483]: 'CP1252',\n\n // Yakut_*\n [0x0485]: 'CP1251',\n\n // Dari_*\n [0x048C]: 'CP1256',\n\n // Chinese_PRC_*\n // Chinese_Simplified_Pinyin_*\n // Chinese_PRC_Stroke_*\n // Chinese_Simplified_Stroke_Order_*\n [0x0804]: 'CP936',\n\n // Serbian_Latin_*\n [0x081A]: 'CP1250',\n\n // Azeri_Cyrillic_*\n [0x082C]: 'CP1251',\n\n // Sami_Sweden_Finland_*\n [0x083B]: 'CP1252',\n\n // Tamazight_*\n [0x085F]: 'CP1252',\n\n // Chinese_Hong_Kong_Stroke_*\n [0x0C04]: 'CP950',\n\n // Modern_Spanish_*\n [0x0C0A]: 'CP1252',\n\n // Serbian_Cyrillic_*\n [0x0C1A]: 'CP1251',\n\n // Chinese_Traditional_Pinyin_*\n // Chinese_Traditional_Stroke_Order_*\n [0x1404]: 'CP950',\n\n // Bosnian_Latin_*\n [0x141A]: 'CP1250',\n\n // Bosnian_Cyrillic_*\n [0x201A]: 'CP1251',\n\n // German\n // German_PhoneBook_*\n [0x0407]: 'CP1252',\n\n // Georgian_Modern_Sort_*\n [0x0437]: 'CP1252'\n};\n\nexport const codepageBySortId: { [key: number]: Encoding } = {\n [30]: 'CP437', // SQL_Latin1_General_CP437_BIN\n [31]: 'CP437', // SQL_Latin1_General_CP437_CS_AS\n [32]: 'CP437', // SQL_Latin1_General_CP437_CI_AS\n [33]: 'CP437', // SQL_Latin1_General_Pref_CP437_CI_AS\n [34]: 'CP437', // SQL_Latin1_General_CP437_CI_AI\n [40]: 'CP850', // SQL_Latin1_General_CP850_BIN\n [41]: 'CP850', // SQL_Latin1_General_CP850_CS_AS\n [42]: 'CP850', // SQL_Latin1_General_CP850_CI_AS\n [43]: 'CP850', // SQL_Latin1_General_Pref_CP850_CI_AS\n [44]: 'CP850', // SQL_Latin1_General_CP850_CI_AI\n [49]: 'CP850', // SQL_1xCompat_CP850_CI_AS\n [51]: 'CP1252', // SQL_Latin1_General_Cp1_CS_AS_KI_WI\n [52]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AS_KI_WI\n [53]: 'CP1252', // SQL_Latin1_General_Pref_Cp1_CI_AS_KI_WI\n [54]: 'CP1252', // SQL_Latin1_General_Cp1_CI_AI_KI_WI\n [55]: 'CP850', // SQL_AltDiction_CP850_CS_AS\n [56]: 'CP850', // SQL_AltDiction_Pref_CP850_CI_AS\n [57]: 'CP850', // SQL_AltDiction_CP850_CI_AI\n [58]: 'CP850', // SQL_Scandinavian_Pref_CP850_CI_AS\n [59]: 'CP850', // SQL_Scandinavian_CP850_CS_AS\n [60]: 'CP850', // SQL_Scandinavian_CP850_CI_AS\n [61]: 'CP850', // SQL_AltDiction_CP850_CI_AS\n [80]: 'CP1250', // SQL_Latin1_General_1250_BIN\n [81]: 'CP1250', // SQL_Latin1_General_CP1250_CS_AS\n [82]: 'CP1250', // SQL_Latin1_General_Cp1250_CI_AS_KI_WI\n [83]: 'CP1250', // SQL_Czech_Cp1250_CS_AS_KI_WI\n [84]: 'CP1250', // SQL_Czech_Cp1250_CI_AS_KI_WI\n [85]: 'CP1250', // SQL_Hungarian_Cp1250_CS_AS_KI_WI\n [86]: 'CP1250', // SQL_Hungarian_Cp1250_CI_AS_KI_WI\n [87]: 'CP1250', // SQL_Polish_Cp1250_CS_AS_KI_WI\n [88]: 'CP1250', // SQL_Polish_Cp1250_CI_AS_KI_WI\n [89]: 'CP1250', // SQL_Romanian_Cp1250_CS_AS_KI_WI\n [90]: 'CP1250', // SQL_Romanian_Cp1250_CI_AS_KI_WI\n [91]: 'CP1250', // SQL_Croatian_Cp1250_CS_AS_KI_WI\n [92]: 'CP1250', // SQL_Croatian_Cp1250_CI_AS_KI_WI\n [93]: 'CP1250', // SQL_Slovak_Cp1250_CS_AS_KI_WI\n [94]: 'CP1250', // SQL_Slovak_Cp1250_CI_AS_KI_WI\n [95]: 'CP1250', // SQL_Slovenian_Cp1250_CS_AS_KI_WI\n [96]: 'CP1250', // SQL_Slovenian_Cp1250_CI_AS_KI_WI\n [104]: 'CP1251', // SQL_Latin1_General_1251_BIN\n [105]: 'CP1251', // SQL_Latin1_General_CP1251_CS_AS\n [106]: 'CP1251', // SQL_Latin1_General_CP1251_CI_AS\n [107]: 'CP1251', // SQL_Ukrainian_Cp1251_CS_AS_KI_WI\n [108]: 'CP1251', // SQL_Ukrainian_Cp1251_CI_AS_KI_WI\n [112]: 'CP1253', // SQL_Latin1_General_1253_BIN\n [113]: 'CP1253', // SQL_Latin1_General_CP1253_CS_AS\n [114]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AS\n [120]: 'CP1253', // SQL_MixDiction_CP1253_CS_AS\n [121]: 'CP1253', // SQL_AltDiction_CP1253_CS_AS\n [122]: 'CP1253', // SQL_AltDiction2_CP1253_CS_AS\n [124]: 'CP1253', // SQL_Latin1_General_CP1253_CI_AI\n [128]: 'CP1254', // SQL_Latin1_General_1254_BIN\n [129]: 'CP1254', // SQL_Latin1_General_Cp1254_CS_AS_KI_WI\n [130]: 'CP1254', // SQL_Latin1_General_Cp1254_CI_AS_KI_WI\n [136]: 'CP1255', // SQL_Latin1_General_1255_BIN\n [137]: 'CP1255', // SQL_Latin1_General_CP1255_CS_AS\n [138]: 'CP1255', // SQL_Latin1_General_CP1255_CI_AS\n [144]: 'CP1256', // SQL_Latin1_General_1256_BIN\n [145]: 'CP1256', // SQL_Latin1_General_CP1256_CS_AS\n [146]: 'CP1256', // SQL_Latin1_General_CP1256_CI_AS\n [152]: 'CP1257', // SQL_Latin1_General_1257_BIN\n [153]: 'CP1257', // SQL_Latin1_General_CP1257_CS_AS\n [154]: 'CP1257', // SQL_Latin1_General_CP1257_CI_AS\n [155]: 'CP1257', // SQL_Estonian_Cp1257_CS_AS_KI_WI\n [156]: 'CP1257', // SQL_Estonian_Cp1257_CI_AS_KI_WI\n [157]: 'CP1257', // SQL_Latvian_Cp1257_CS_AS_KI_WI\n [158]: 'CP1257', // SQL_Latvian_Cp1257_CI_AS_KI_WI\n [159]: 'CP1257', // SQL_Lithuanian_Cp1257_CS_AS_KI_WI\n [160]: 'CP1257', // SQL_Lithuanian_Cp1257_CI_AS_KI_WI\n [183]: 'CP1252', // SQL_Danish_Pref_Cp1_CI_AS_KI_WI\n [184]: 'CP1252', // SQL_SwedishPhone_Pref_Cp1_CI_AS_KI_WI\n [185]: 'CP1252', // SQL_SwedishStd_Pref_Cp1_CI_AS_KI_WI\n [186]: 'CP1252' // SQL_Icelandic_Pref_Cp1_CI_AS_KI_WI\n};\n\nexport const Flags = {\n IGNORE_CASE: 1 << 0,\n IGNORE_ACCENT: 1 << 1,\n IGNORE_KANA: 1 << 2,\n IGNORE_WIDTH: 1 << 3,\n BINARY: 1 << 4,\n BINARY2: 1 << 5,\n UTF8: 1 << 6,\n};\n\nexport class Collation {\n readonly lcid: number;\n readonly flags: number;\n readonly version: number;\n readonly sortId: number;\n readonly codepage: Encoding | undefined;\n\n private buffer: Buffer | undefined;\n\n static fromBuffer(buffer: Buffer, offset = 0) {\n let lcid = (buffer[offset + 2] & 0x0F) << 16;\n lcid |= buffer[offset + 1] << 8;\n lcid |= buffer[offset + 0];\n\n let flags = (buffer[offset + 3] & 0x0F) << 4;\n flags |= (buffer[offset + 2] & 0xF0) >>> 4;\n\n const version = (buffer[offset + 3] & 0xF0) >>> 4;\n\n const sortId = buffer[offset + 4];\n\n return new this(lcid, flags, version, sortId);\n }\n\n constructor(lcid: number, flags: number, version: number, sortId: number) {\n this.buffer = undefined;\n\n this.lcid = lcid;\n this.flags = flags;\n this.version = version;\n this.sortId = sortId;\n\n if (this.flags & Flags.UTF8) {\n this.codepage = 'utf-8';\n } else if (this.sortId) {\n this.codepage = codepageBySortId[this.sortId];\n } else {\n // The last 16 bits of the LCID are the language id.\n // The first 4 bits define additional sort orders.\n const languageId = this.lcid & 0xFFFF;\n this.codepage = codepageByLanguageId[languageId];\n }\n }\n\n toBuffer(): Buffer {\n if (this.buffer) {\n return this.buffer;\n }\n\n this.buffer = Buffer.alloc(5);\n\n this.buffer[0] = this.lcid & 0xFF;\n this.buffer[1] = (this.lcid >>> 8) & 0xFF;\n this.buffer[2] = ((this.lcid >>> 16) & 0x0F) | ((this.flags & 0x0F) << 4);\n this.buffer[3] = ((this.flags & 0xF0) >>> 4) | ((this.version & 0x0F) << 4);\n this.buffer[4] = this.sortId & 0xFF;\n\n return this.buffer;\n }\n}\n"],"mappings":"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,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,OAAO;EAAE;EACf,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,EAAE,GAAG,QAAQ;EAAE;EAChB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ;EAAE;EACjB,CAAC,GAAG,GAAG,QAAQ,CAAC;AAClB,CAAC;AAACD,OAAA,CAAAC,gBAAA,GAAAA,gBAAA;AAEK,MAAMC,KAAK,GAAG;EACnBC,WAAW,EAAE,CAAC,IAAI,CAAC;EACnBC,aAAa,EAAE,CAAC,IAAI,CAAC;EACrBC,WAAW,EAAE,CAAC,IAAI,CAAC;EACnBC,YAAY,EAAE,CAAC,IAAI,CAAC;EACpBC,MAAM,EAAE,CAAC,IAAI,CAAC;EACdC,OAAO,EAAE,CAAC,IAAI,CAAC;EACfC,IAAI,EAAE,CAAC,IAAI;AACb,CAAC;AAACT,OAAA,CAAAE,KAAA,GAAAA,KAAA;AAEK,MAAMQ,SAAS,CAAC;EACZC,IAAI;EACJC,KAAK;EACLC,OAAO;EACPC,MAAM;EACNC,QAAQ;EAETC,MAAM;EAEd,OAAOC,UAAUA,CAACD,MAAc,EAAEE,MAAM,GAAG,CAAC,EAAE;IAC5C,IAAIP,IAAI,GAAG,CAACK,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,EAAE;IAC5CP,IAAI,IAAIK,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC;IAC/BP,IAAI,IAAIK,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC;IAE1B,IAAIN,KAAK,GAAG,CAACI,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC;IAC5CN,KAAK,IAAI,CAACI,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;IAE1C,MAAML,OAAO,GAAG,CAACG,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC;IAEjD,MAAMJ,MAAM,GAAGE,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,IAAI,CAACP,IAAI,EAAEC,KAAK,EAAEC,OAAO,EAAEC,MAAM,CAAC;EAC/C;EAEAK,WAAWA,CAACR,IAAY,EAAEC,KAAa,EAAEC,OAAe,EAAEC,MAAc,EAAE;IACxE,IAAI,CAACE,MAAM,GAAGI,SAAS;IAEvB,IAAI,CAACT,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACC,KAAK,GAAGA,KAAK;IAClB,IAAI,CAACC,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,MAAM,GAAGA,MAAM;IAEpB,IAAI,IAAI,CAACF,KAAK,GAAGV,KAAK,CAACO,IAAI,EAAE;MAC3B,IAAI,CAACM,QAAQ,GAAG,OAAO;IACzB,CAAC,MAAM,IAAI,IAAI,CAACD,MAAM,EAAE;MACtB,IAAI,CAACC,QAAQ,GAAGd,gBAAgB,CAAC,IAAI,CAACa,MAAM,CAAC;IAC/C,CAAC,MAAM;MACL;MACA;MACA,MAAMO,UAAU,GAAG,IAAI,CAACV,IAAI,GAAG,MAAM;MACrC,IAAI,CAACI,QAAQ,GAAGhB,oBAAoB,CAACsB,UAAU,CAAC;IAClD;EACF;EAEAC,QAAQA,CAAA,EAAW;IACjB,IAAI,IAAI,CAACN,MAAM,EAAE;MACf,OAAO,IAAI,CAACA,MAAM;IACpB;IAEA,IAAI,CAACA,MAAM,GAAGO,MAAM,CAACC,KAAK,CAAC,CAAC,CAAC;IAE7B,IAAI,CAACR,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAACL,IAAI,GAAG,IAAI;IACjC,IAAI,CAACK,MAAM,CAAC,CAAC,CAAC,GAAI,IAAI,CAACL,IAAI,KAAK,CAAC,GAAI,IAAI;IACzC,IAAI,CAACK,MAAM,CAAC,CAAC,CAAC,GAAK,IAAI,CAACL,IAAI,KAAK,EAAE,GAAI,IAAI,GAAK,CAAC,IAAI,CAACC,KAAK,GAAG,IAAI,KAAK,CAAE;IACzE,IAAI,CAACI,MAAM,CAAC,CAAC,CAAC,GAAI,CAAC,IAAI,CAACJ,KAAK,GAAG,IAAI,MAAM,CAAC,GAAK,CAAC,IAAI,CAACC,OAAO,GAAG,IAAI,KAAK,CAAE;IAC3E,IAAI,CAACG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAACF,MAAM,GAAG,IAAI;IAEnC,OAAO,IAAI,CAACE,MAAM;EACpB;AACF;AAAChB,OAAA,CAAAU,SAAA,GAAAA,SAAA"}