tedious 16.5.0 → 16.6.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/lib/metadata-parser.js +361 -241
- package/lib/metadata-parser.js.map +1 -1
- package/lib/token/colmetadata-token-parser.js +103 -74
- package/lib/token/colmetadata-token-parser.js.map +1 -1
- package/lib/token/done-token-parser.js +52 -40
- package/lib/token/done-token-parser.js.map +1 -1
- package/lib/token/env-change-token-parser.js +110 -81
- package/lib/token/env-change-token-parser.js.map +1 -1
- package/lib/token/feature-ext-ack-parser.js +30 -22
- package/lib/token/feature-ext-ack-parser.js.map +1 -1
- package/lib/token/fedauth-info-parser.js +47 -30
- package/lib/token/fedauth-info-parser.js.map +1 -1
- package/lib/token/helpers.js +205 -0
- package/lib/token/helpers.js.map +1 -0
- package/lib/token/infoerror-token-parser.js +69 -36
- package/lib/token/infoerror-token-parser.js.map +1 -1
- package/lib/token/loginack-token-parser.js +59 -31
- package/lib/token/loginack-token-parser.js.map +1 -1
- package/lib/token/nbcrow-token-parser.js +60 -23
- package/lib/token/nbcrow-token-parser.js.map +1 -1
- package/lib/token/order-token-parser.js +22 -20
- package/lib/token/order-token-parser.js.map +1 -1
- package/lib/token/returnstatus-token-parser.js +9 -5
- package/lib/token/returnstatus-token-parser.js.map +1 -1
- package/lib/token/returnvalue-token-parser.js +79 -22
- package/lib/token/returnvalue-token-parser.js.map +1 -1
- package/lib/token/row-token-parser.js +50 -20
- package/lib/token/row-token-parser.js.map +1 -1
- package/lib/token/sspi-token-parser.js +14 -5
- package/lib/token/sspi-token-parser.js.map +1 -1
- package/lib/token/stream-parser.js +292 -324
- package/lib/token/stream-parser.js.map +1 -1
- package/lib/token/token.js +1 -1
- package/lib/token/token.js.map +1 -1
- package/lib/value-parser.js +655 -438
- package/lib/value-parser.js.map +1 -1
- package/package.json +1 -1
package/lib/metadata-parser.js
CHANGED
|
@@ -5,257 +5,377 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
exports.readCollation = readCollation;
|
|
8
|
+
exports.readMetadata = readMetadata;
|
|
8
9
|
var _collation = require("./collation");
|
|
9
10
|
var _dataType = require("./data-type");
|
|
10
11
|
var _sprintfJs = require("sprintf-js");
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
var _helpers = require("./token/helpers");
|
|
13
|
+
function readCollation(buf, offset) {
|
|
14
|
+
offset = +offset;
|
|
15
|
+
if (buf.length < offset + 5) {
|
|
16
|
+
throw new _helpers.NotEnoughDataError(offset + 5);
|
|
17
|
+
}
|
|
18
|
+
const collation = _collation.Collation.fromBuffer(buf.slice(offset, offset + 5));
|
|
19
|
+
return new _helpers.Result(collation, offset + 5);
|
|
16
20
|
}
|
|
17
|
-
function readSchema(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
21
|
+
function readSchema(buf, offset) {
|
|
22
|
+
offset = +offset;
|
|
23
|
+
let schemaPresent;
|
|
24
|
+
({
|
|
25
|
+
offset,
|
|
26
|
+
value: schemaPresent
|
|
27
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
28
|
+
if (schemaPresent !== 0x01) {
|
|
29
|
+
return new _helpers.Result(undefined, offset);
|
|
30
|
+
}
|
|
31
|
+
let dbname;
|
|
32
|
+
({
|
|
33
|
+
offset,
|
|
34
|
+
value: dbname
|
|
35
|
+
} = (0, _helpers.readBVarChar)(buf, offset));
|
|
36
|
+
let owningSchema;
|
|
37
|
+
({
|
|
38
|
+
offset,
|
|
39
|
+
value: owningSchema
|
|
40
|
+
} = (0, _helpers.readBVarChar)(buf, offset));
|
|
41
|
+
let xmlSchemaCollection;
|
|
42
|
+
({
|
|
43
|
+
offset,
|
|
44
|
+
value: xmlSchemaCollection
|
|
45
|
+
} = (0, _helpers.readUsVarChar)(buf, offset));
|
|
46
|
+
return new _helpers.Result({
|
|
47
|
+
dbname,
|
|
48
|
+
owningSchema,
|
|
49
|
+
xmlSchemaCollection
|
|
50
|
+
}, offset);
|
|
51
|
+
}
|
|
52
|
+
function readUDTInfo(buf, offset) {
|
|
53
|
+
let maxByteSize;
|
|
54
|
+
({
|
|
55
|
+
offset,
|
|
56
|
+
value: maxByteSize
|
|
57
|
+
} = (0, _helpers.readUInt16LE)(buf, offset));
|
|
58
|
+
let dbname;
|
|
59
|
+
({
|
|
60
|
+
offset,
|
|
61
|
+
value: dbname
|
|
62
|
+
} = (0, _helpers.readBVarChar)(buf, offset));
|
|
63
|
+
let owningSchema;
|
|
64
|
+
({
|
|
65
|
+
offset,
|
|
66
|
+
value: owningSchema
|
|
67
|
+
} = (0, _helpers.readBVarChar)(buf, offset));
|
|
68
|
+
let typeName;
|
|
69
|
+
({
|
|
70
|
+
offset,
|
|
71
|
+
value: typeName
|
|
72
|
+
} = (0, _helpers.readBVarChar)(buf, offset));
|
|
73
|
+
let assemblyName;
|
|
74
|
+
({
|
|
75
|
+
offset,
|
|
76
|
+
value: assemblyName
|
|
77
|
+
} = (0, _helpers.readUsVarChar)(buf, offset));
|
|
78
|
+
return new _helpers.Result({
|
|
79
|
+
maxByteSize: maxByteSize,
|
|
80
|
+
dbname: dbname,
|
|
81
|
+
owningSchema: owningSchema,
|
|
82
|
+
typeName: typeName,
|
|
83
|
+
assemblyName: assemblyName
|
|
84
|
+
}, offset);
|
|
36
85
|
}
|
|
37
|
-
function
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
86
|
+
function readMetadata(buf, offset, options) {
|
|
87
|
+
let userType;
|
|
88
|
+
({
|
|
89
|
+
offset,
|
|
90
|
+
value: userType
|
|
91
|
+
} = (options.tdsVersion < '7_2' ? _helpers.readUInt16LE : _helpers.readUInt32LE)(buf, offset));
|
|
92
|
+
let flags;
|
|
93
|
+
({
|
|
94
|
+
offset,
|
|
95
|
+
value: flags
|
|
96
|
+
} = (0, _helpers.readUInt16LE)(buf, offset));
|
|
97
|
+
let typeNumber;
|
|
98
|
+
({
|
|
99
|
+
offset,
|
|
100
|
+
value: typeNumber
|
|
101
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
102
|
+
const type = _dataType.TYPE[typeNumber];
|
|
103
|
+
if (!type) {
|
|
104
|
+
throw new Error((0, _sprintfJs.sprintf)('Unrecognised data type 0x%02X', typeNumber));
|
|
105
|
+
}
|
|
106
|
+
switch (type.name) {
|
|
107
|
+
case 'Null':
|
|
108
|
+
case 'TinyInt':
|
|
109
|
+
case 'SmallInt':
|
|
110
|
+
case 'Int':
|
|
111
|
+
case 'BigInt':
|
|
112
|
+
case 'Real':
|
|
113
|
+
case 'Float':
|
|
114
|
+
case 'SmallMoney':
|
|
115
|
+
case 'Money':
|
|
116
|
+
case 'Bit':
|
|
117
|
+
case 'SmallDateTime':
|
|
118
|
+
case 'DateTime':
|
|
119
|
+
case 'Date':
|
|
120
|
+
return new _helpers.Result({
|
|
121
|
+
userType: userType,
|
|
122
|
+
flags: flags,
|
|
123
|
+
type: type,
|
|
124
|
+
collation: undefined,
|
|
125
|
+
precision: undefined,
|
|
126
|
+
scale: undefined,
|
|
127
|
+
dataLength: undefined,
|
|
128
|
+
schema: undefined,
|
|
129
|
+
udtInfo: undefined
|
|
130
|
+
}, offset);
|
|
131
|
+
case 'IntN':
|
|
132
|
+
case 'FloatN':
|
|
133
|
+
case 'MoneyN':
|
|
134
|
+
case 'BitN':
|
|
135
|
+
case 'UniqueIdentifier':
|
|
136
|
+
case 'DateTimeN':
|
|
137
|
+
{
|
|
138
|
+
let dataLength;
|
|
139
|
+
({
|
|
140
|
+
offset,
|
|
141
|
+
value: dataLength
|
|
142
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
143
|
+
return new _helpers.Result({
|
|
144
|
+
userType: userType,
|
|
145
|
+
flags: flags,
|
|
146
|
+
type: type,
|
|
147
|
+
collation: undefined,
|
|
148
|
+
precision: undefined,
|
|
149
|
+
scale: undefined,
|
|
150
|
+
dataLength: dataLength,
|
|
151
|
+
schema: undefined,
|
|
152
|
+
udtInfo: undefined
|
|
153
|
+
}, offset);
|
|
154
|
+
}
|
|
155
|
+
case 'Variant':
|
|
156
|
+
{
|
|
157
|
+
let dataLength;
|
|
158
|
+
({
|
|
159
|
+
offset,
|
|
160
|
+
value: dataLength
|
|
161
|
+
} = (0, _helpers.readUInt32LE)(buf, offset));
|
|
162
|
+
return new _helpers.Result({
|
|
163
|
+
userType: userType,
|
|
164
|
+
flags: flags,
|
|
165
|
+
type: type,
|
|
166
|
+
collation: undefined,
|
|
167
|
+
precision: undefined,
|
|
168
|
+
scale: undefined,
|
|
169
|
+
dataLength: dataLength,
|
|
170
|
+
schema: undefined,
|
|
171
|
+
udtInfo: undefined
|
|
172
|
+
}, offset);
|
|
173
|
+
}
|
|
174
|
+
case 'VarChar':
|
|
175
|
+
case 'Char':
|
|
176
|
+
case 'NVarChar':
|
|
177
|
+
case 'NChar':
|
|
178
|
+
{
|
|
179
|
+
let dataLength;
|
|
180
|
+
({
|
|
181
|
+
offset,
|
|
182
|
+
value: dataLength
|
|
183
|
+
} = (0, _helpers.readUInt16LE)(buf, offset));
|
|
184
|
+
let collation;
|
|
185
|
+
({
|
|
186
|
+
offset,
|
|
187
|
+
value: collation
|
|
188
|
+
} = readCollation(buf, offset));
|
|
189
|
+
return new _helpers.Result({
|
|
190
|
+
userType: userType,
|
|
191
|
+
flags: flags,
|
|
192
|
+
type: type,
|
|
193
|
+
collation: collation,
|
|
194
|
+
precision: undefined,
|
|
195
|
+
scale: undefined,
|
|
196
|
+
dataLength: dataLength,
|
|
197
|
+
schema: undefined,
|
|
198
|
+
udtInfo: undefined
|
|
199
|
+
}, offset);
|
|
200
|
+
}
|
|
201
|
+
case 'Text':
|
|
202
|
+
case 'NText':
|
|
203
|
+
{
|
|
204
|
+
let dataLength;
|
|
205
|
+
({
|
|
206
|
+
offset,
|
|
207
|
+
value: dataLength
|
|
208
|
+
} = (0, _helpers.readUInt32LE)(buf, offset));
|
|
209
|
+
let collation;
|
|
210
|
+
({
|
|
211
|
+
offset,
|
|
212
|
+
value: collation
|
|
213
|
+
} = readCollation(buf, offset));
|
|
214
|
+
return new _helpers.Result({
|
|
215
|
+
userType: userType,
|
|
216
|
+
flags: flags,
|
|
217
|
+
type: type,
|
|
218
|
+
collation: collation,
|
|
219
|
+
precision: undefined,
|
|
220
|
+
scale: undefined,
|
|
221
|
+
dataLength: dataLength,
|
|
222
|
+
schema: undefined,
|
|
223
|
+
udtInfo: undefined
|
|
224
|
+
}, offset);
|
|
225
|
+
}
|
|
226
|
+
case 'VarBinary':
|
|
227
|
+
case 'Binary':
|
|
228
|
+
{
|
|
229
|
+
let dataLength;
|
|
230
|
+
({
|
|
231
|
+
offset,
|
|
232
|
+
value: dataLength
|
|
233
|
+
} = (0, _helpers.readUInt16LE)(buf, offset));
|
|
234
|
+
return new _helpers.Result({
|
|
235
|
+
userType: userType,
|
|
236
|
+
flags: flags,
|
|
237
|
+
type: type,
|
|
238
|
+
collation: undefined,
|
|
239
|
+
precision: undefined,
|
|
240
|
+
scale: undefined,
|
|
241
|
+
dataLength: dataLength,
|
|
242
|
+
schema: undefined,
|
|
243
|
+
udtInfo: undefined
|
|
244
|
+
}, offset);
|
|
245
|
+
}
|
|
246
|
+
case 'Image':
|
|
247
|
+
{
|
|
248
|
+
let dataLength;
|
|
249
|
+
({
|
|
250
|
+
offset,
|
|
251
|
+
value: dataLength
|
|
252
|
+
} = (0, _helpers.readUInt32LE)(buf, offset));
|
|
253
|
+
return new _helpers.Result({
|
|
254
|
+
userType: userType,
|
|
255
|
+
flags: flags,
|
|
256
|
+
type: type,
|
|
257
|
+
collation: undefined,
|
|
258
|
+
precision: undefined,
|
|
259
|
+
scale: undefined,
|
|
260
|
+
dataLength: dataLength,
|
|
261
|
+
schema: undefined,
|
|
262
|
+
udtInfo: undefined
|
|
263
|
+
}, offset);
|
|
264
|
+
}
|
|
265
|
+
case 'Xml':
|
|
266
|
+
{
|
|
267
|
+
let schema;
|
|
268
|
+
({
|
|
269
|
+
offset,
|
|
270
|
+
value: schema
|
|
271
|
+
} = readSchema(buf, offset));
|
|
272
|
+
return new _helpers.Result({
|
|
273
|
+
userType: userType,
|
|
274
|
+
flags: flags,
|
|
275
|
+
type: type,
|
|
276
|
+
collation: undefined,
|
|
277
|
+
precision: undefined,
|
|
278
|
+
scale: undefined,
|
|
279
|
+
dataLength: undefined,
|
|
280
|
+
schema: schema,
|
|
281
|
+
udtInfo: undefined
|
|
282
|
+
}, offset);
|
|
283
|
+
}
|
|
284
|
+
case 'Time':
|
|
285
|
+
case 'DateTime2':
|
|
286
|
+
case 'DateTimeOffset':
|
|
287
|
+
{
|
|
288
|
+
let scale;
|
|
289
|
+
({
|
|
290
|
+
offset,
|
|
291
|
+
value: scale
|
|
292
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
293
|
+
return new _helpers.Result({
|
|
294
|
+
userType: userType,
|
|
295
|
+
flags: flags,
|
|
296
|
+
type: type,
|
|
297
|
+
collation: undefined,
|
|
298
|
+
precision: undefined,
|
|
299
|
+
scale: scale,
|
|
300
|
+
dataLength: undefined,
|
|
301
|
+
schema: undefined,
|
|
302
|
+
udtInfo: undefined
|
|
303
|
+
}, offset);
|
|
304
|
+
}
|
|
305
|
+
case 'NumericN':
|
|
306
|
+
case 'DecimalN':
|
|
307
|
+
{
|
|
308
|
+
let dataLength;
|
|
309
|
+
({
|
|
310
|
+
offset,
|
|
311
|
+
value: dataLength
|
|
312
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
313
|
+
let precision;
|
|
314
|
+
({
|
|
315
|
+
offset,
|
|
316
|
+
value: precision
|
|
317
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
318
|
+
let scale;
|
|
319
|
+
({
|
|
320
|
+
offset,
|
|
321
|
+
value: scale
|
|
322
|
+
} = (0, _helpers.readUInt8)(buf, offset));
|
|
323
|
+
return new _helpers.Result({
|
|
324
|
+
userType: userType,
|
|
325
|
+
flags: flags,
|
|
326
|
+
type: type,
|
|
327
|
+
collation: undefined,
|
|
328
|
+
precision: precision,
|
|
329
|
+
scale: scale,
|
|
330
|
+
dataLength: dataLength,
|
|
331
|
+
schema: undefined,
|
|
332
|
+
udtInfo: undefined
|
|
333
|
+
}, offset);
|
|
334
|
+
}
|
|
335
|
+
case 'UDT':
|
|
336
|
+
{
|
|
337
|
+
let udtInfo;
|
|
338
|
+
({
|
|
339
|
+
offset,
|
|
340
|
+
value: udtInfo
|
|
341
|
+
} = readUDTInfo(buf, offset));
|
|
342
|
+
return new _helpers.Result({
|
|
343
|
+
userType: userType,
|
|
344
|
+
flags: flags,
|
|
345
|
+
type: type,
|
|
346
|
+
collation: undefined,
|
|
347
|
+
precision: undefined,
|
|
348
|
+
scale: undefined,
|
|
349
|
+
dataLength: undefined,
|
|
350
|
+
schema: undefined,
|
|
351
|
+
udtInfo: udtInfo
|
|
352
|
+
}, offset);
|
|
353
|
+
}
|
|
354
|
+
default:
|
|
355
|
+
throw new Error((0, _sprintfJs.sprintf)('Unrecognised type %s', type.name));
|
|
356
|
+
}
|
|
55
357
|
}
|
|
56
358
|
function metadataParse(parser, options, callback) {
|
|
57
|
-
(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
359
|
+
(async () => {
|
|
360
|
+
while (true) {
|
|
361
|
+
let result;
|
|
362
|
+
try {
|
|
363
|
+
result = readMetadata(parser.buffer, parser.position, options);
|
|
364
|
+
} catch (err) {
|
|
365
|
+
if (err instanceof _helpers.NotEnoughDataError) {
|
|
366
|
+
await parser.waitForChunk();
|
|
367
|
+
continue;
|
|
63
368
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
case 'Real':
|
|
71
|
-
case 'Float':
|
|
72
|
-
case 'SmallMoney':
|
|
73
|
-
case 'Money':
|
|
74
|
-
case 'Bit':
|
|
75
|
-
case 'SmallDateTime':
|
|
76
|
-
case 'DateTime':
|
|
77
|
-
case 'Date':
|
|
78
|
-
return callback({
|
|
79
|
-
userType: userType,
|
|
80
|
-
flags: flags,
|
|
81
|
-
type: type,
|
|
82
|
-
collation: undefined,
|
|
83
|
-
precision: undefined,
|
|
84
|
-
scale: undefined,
|
|
85
|
-
dataLength: undefined,
|
|
86
|
-
schema: undefined,
|
|
87
|
-
udtInfo: undefined
|
|
88
|
-
});
|
|
89
|
-
case 'IntN':
|
|
90
|
-
case 'FloatN':
|
|
91
|
-
case 'MoneyN':
|
|
92
|
-
case 'BitN':
|
|
93
|
-
case 'UniqueIdentifier':
|
|
94
|
-
case 'DateTimeN':
|
|
95
|
-
return parser.readUInt8(dataLength => {
|
|
96
|
-
callback({
|
|
97
|
-
userType: userType,
|
|
98
|
-
flags: flags,
|
|
99
|
-
type: type,
|
|
100
|
-
collation: undefined,
|
|
101
|
-
precision: undefined,
|
|
102
|
-
scale: undefined,
|
|
103
|
-
dataLength: dataLength,
|
|
104
|
-
schema: undefined,
|
|
105
|
-
udtInfo: undefined
|
|
106
|
-
});
|
|
107
|
-
});
|
|
108
|
-
case 'Variant':
|
|
109
|
-
return parser.readUInt32LE(dataLength => {
|
|
110
|
-
callback({
|
|
111
|
-
userType: userType,
|
|
112
|
-
flags: flags,
|
|
113
|
-
type: type,
|
|
114
|
-
collation: undefined,
|
|
115
|
-
precision: undefined,
|
|
116
|
-
scale: undefined,
|
|
117
|
-
dataLength: dataLength,
|
|
118
|
-
schema: undefined,
|
|
119
|
-
udtInfo: undefined
|
|
120
|
-
});
|
|
121
|
-
});
|
|
122
|
-
case 'VarChar':
|
|
123
|
-
case 'Char':
|
|
124
|
-
case 'NVarChar':
|
|
125
|
-
case 'NChar':
|
|
126
|
-
return parser.readUInt16LE(dataLength => {
|
|
127
|
-
readCollation(parser, collation => {
|
|
128
|
-
callback({
|
|
129
|
-
userType: userType,
|
|
130
|
-
flags: flags,
|
|
131
|
-
type: type,
|
|
132
|
-
collation: collation,
|
|
133
|
-
precision: undefined,
|
|
134
|
-
scale: undefined,
|
|
135
|
-
dataLength: dataLength,
|
|
136
|
-
schema: undefined,
|
|
137
|
-
udtInfo: undefined
|
|
138
|
-
});
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
case 'Text':
|
|
142
|
-
case 'NText':
|
|
143
|
-
return parser.readUInt32LE(dataLength => {
|
|
144
|
-
readCollation(parser, collation => {
|
|
145
|
-
callback({
|
|
146
|
-
userType: userType,
|
|
147
|
-
flags: flags,
|
|
148
|
-
type: type,
|
|
149
|
-
collation: collation,
|
|
150
|
-
precision: undefined,
|
|
151
|
-
scale: undefined,
|
|
152
|
-
dataLength: dataLength,
|
|
153
|
-
schema: undefined,
|
|
154
|
-
udtInfo: undefined
|
|
155
|
-
});
|
|
156
|
-
});
|
|
157
|
-
});
|
|
158
|
-
case 'VarBinary':
|
|
159
|
-
case 'Binary':
|
|
160
|
-
return parser.readUInt16LE(dataLength => {
|
|
161
|
-
callback({
|
|
162
|
-
userType: userType,
|
|
163
|
-
flags: flags,
|
|
164
|
-
type: type,
|
|
165
|
-
collation: undefined,
|
|
166
|
-
precision: undefined,
|
|
167
|
-
scale: undefined,
|
|
168
|
-
dataLength: dataLength,
|
|
169
|
-
schema: undefined,
|
|
170
|
-
udtInfo: undefined
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
case 'Image':
|
|
174
|
-
return parser.readUInt32LE(dataLength => {
|
|
175
|
-
callback({
|
|
176
|
-
userType: userType,
|
|
177
|
-
flags: flags,
|
|
178
|
-
type: type,
|
|
179
|
-
collation: undefined,
|
|
180
|
-
precision: undefined,
|
|
181
|
-
scale: undefined,
|
|
182
|
-
dataLength: dataLength,
|
|
183
|
-
schema: undefined,
|
|
184
|
-
udtInfo: undefined
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
case 'Xml':
|
|
188
|
-
return readSchema(parser, schema => {
|
|
189
|
-
callback({
|
|
190
|
-
userType: userType,
|
|
191
|
-
flags: flags,
|
|
192
|
-
type: type,
|
|
193
|
-
collation: undefined,
|
|
194
|
-
precision: undefined,
|
|
195
|
-
scale: undefined,
|
|
196
|
-
dataLength: undefined,
|
|
197
|
-
schema: schema,
|
|
198
|
-
udtInfo: undefined
|
|
199
|
-
});
|
|
200
|
-
});
|
|
201
|
-
case 'Time':
|
|
202
|
-
case 'DateTime2':
|
|
203
|
-
case 'DateTimeOffset':
|
|
204
|
-
return parser.readUInt8(scale => {
|
|
205
|
-
callback({
|
|
206
|
-
userType: userType,
|
|
207
|
-
flags: flags,
|
|
208
|
-
type: type,
|
|
209
|
-
collation: undefined,
|
|
210
|
-
precision: undefined,
|
|
211
|
-
scale: scale,
|
|
212
|
-
dataLength: undefined,
|
|
213
|
-
schema: undefined,
|
|
214
|
-
udtInfo: undefined
|
|
215
|
-
});
|
|
216
|
-
});
|
|
217
|
-
case 'NumericN':
|
|
218
|
-
case 'DecimalN':
|
|
219
|
-
return parser.readUInt8(dataLength => {
|
|
220
|
-
parser.readUInt8(precision => {
|
|
221
|
-
parser.readUInt8(scale => {
|
|
222
|
-
callback({
|
|
223
|
-
userType: userType,
|
|
224
|
-
flags: flags,
|
|
225
|
-
type: type,
|
|
226
|
-
collation: undefined,
|
|
227
|
-
precision: precision,
|
|
228
|
-
scale: scale,
|
|
229
|
-
dataLength: dataLength,
|
|
230
|
-
schema: undefined,
|
|
231
|
-
udtInfo: undefined
|
|
232
|
-
});
|
|
233
|
-
});
|
|
234
|
-
});
|
|
235
|
-
});
|
|
236
|
-
case 'UDT':
|
|
237
|
-
return readUDTInfo(parser, udtInfo => {
|
|
238
|
-
callback({
|
|
239
|
-
userType: userType,
|
|
240
|
-
flags: flags,
|
|
241
|
-
type: type,
|
|
242
|
-
collation: undefined,
|
|
243
|
-
precision: undefined,
|
|
244
|
-
scale: undefined,
|
|
245
|
-
dataLength: undefined,
|
|
246
|
-
schema: undefined,
|
|
247
|
-
udtInfo: udtInfo
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
default:
|
|
251
|
-
throw new Error((0, _sprintfJs.sprintf)('Unrecognised type %s', type.name));
|
|
252
|
-
}
|
|
253
|
-
});
|
|
254
|
-
});
|
|
255
|
-
});
|
|
369
|
+
throw err;
|
|
370
|
+
}
|
|
371
|
+
parser.position = result.offset;
|
|
372
|
+
return callback(result.value);
|
|
373
|
+
}
|
|
374
|
+
})();
|
|
256
375
|
}
|
|
257
376
|
var _default = metadataParse;
|
|
258
377
|
exports.default = _default;
|
|
259
378
|
module.exports = metadataParse;
|
|
260
379
|
module.exports.readCollation = readCollation;
|
|
261
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl9kYXRhVHlwZSIsIl9zcHJpbnRmSnMiLCJyZWFkQ29sbGF0aW9uIiwicGFyc2VyIiwiY2FsbGJhY2siLCJyZWFkQnVmZmVyIiwiY29sbGF0aW9uRGF0YSIsIkNvbGxhdGlvbiIsImZyb21CdWZmZXIiLCJyZWFkU2NoZW1hIiwicmVhZFVJbnQ4Iiwic2NoZW1hUHJlc2VudCIsInJlYWRCVmFyQ2hhciIsImRibmFtZSIsIm93bmluZ1NjaGVtYSIsInJlYWRVc1ZhckNoYXIiLCJ4bWxTY2hlbWFDb2xsZWN0aW9uIiwidW5kZWZpbmVkIiwicmVhZFVEVEluZm8iLCJyZWFkVUludDE2TEUiLCJtYXhCeXRlU2l6ZSIsInR5cGVOYW1lIiwiYXNzZW1ibHlOYW1lIiwibWV0YWRhdGFQYXJzZSIsIm9wdGlvbnMiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiY2FsbCIsInVzZXJUeXBlIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsInNwcmludGYiLCJuYW1lIiwiY29sbGF0aW9uIiwicHJlY2lzaW9uIiwic2NhbGUiLCJkYXRhTGVuZ3RoIiwic2NoZW1hIiwidWR0SW5mbyIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiLCJtb2R1bGUiXSwic291cmNlcyI6WyIuLi9zcmMvbWV0YWRhdGEtcGFyc2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbGxhdGlvbiB9IGZyb20gJy4vY29sbGF0aW9uJztcbmltcG9ydCBQYXJzZXIsIHsgdHlwZSBQYXJzZXJPcHRpb25zIH0gZnJvbSAnLi90b2tlbi9zdHJlYW0tcGFyc2VyJztcbmltcG9ydCB7IFRZUEUsIHR5cGUgRGF0YVR5cGUgfSBmcm9tICcuL2RhdGEtdHlwZSc7XG5pbXBvcnQgeyB0eXBlIENyeXB0b01ldGFkYXRhIH0gZnJvbSAnLi9hbHdheXMtZW5jcnlwdGVkL3R5cGVzJztcblxuaW1wb3J0IHsgc3ByaW50ZiB9IGZyb20gJ3NwcmludGYtanMnO1xuXG5pbnRlcmZhY2UgWG1sU2NoZW1hIHtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB4bWxTY2hlbWFDb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVZHRJbmZvIHtcbiAgbWF4Qnl0ZVNpemU6IG51bWJlcjtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBhc3NlbWJseU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQmFzZU1ldGFkYXRhID0ge1xuICB1c2VyVHlwZTogbnVtYmVyO1xuXG4gIGZsYWdzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29sdW1uJ3MgdHlwZSwgc3VjaCBhcyBWYXJDaGFyLCBJbnQgb3IgQmluYXJ5LlxuICAgKi9cbiAgdHlwZTogRGF0YVR5cGU7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgcHJlY2lzaW9uLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtZXJpYyBhbmQgZGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NhbGUuIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljLCBkZWNpbWFsLCB0aW1lLCBkYXRldGltZTIgYW5kIGRhdGV0aW1lb2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCwgZm9yIGNoYXIsIHZhcmNoYXIsIG52YXJjaGFyIGFuZCB2YXJiaW5hcnkuXG4gICAqL1xuICBkYXRhTGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQ7XG5cbiAgdWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGE7XG59ICYgQmFzZU1ldGFkYXRhO1xuXG5cbmZ1bmN0aW9uIHJlYWRDb2xsYXRpb24ocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAoY29sbGF0aW9uOiBDb2xsYXRpb24pID0+IHZvaWQpIHtcbiAgLy8gczIuMi41LjEuMlxuICBwYXJzZXIucmVhZEJ1ZmZlcig1LCAoY29sbGF0aW9uRGF0YSkgPT4ge1xuICAgIGNhbGxiYWNrKENvbGxhdGlvbi5mcm9tQnVmZmVyKGNvbGxhdGlvbkRhdGEpKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRTY2hlbWEocGFyc2VyOiBQYXJzZXIsIGNhbGxiYWNrOiAoc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQpID0+IHZvaWQpIHtcbiAgLy8gczIuMi41LjUuM1xuICBwYXJzZXIucmVhZFVJbnQ4KChzY2hlbWFQcmVzZW50KSA9PiB7XG4gICAgaWYgKHNjaGVtYVByZXNlbnQgPT09IDB4MDEpIHtcbiAgICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKGRibmFtZSkgPT4ge1xuICAgICAgICBwYXJzZXIucmVhZEJWYXJDaGFyKChvd25pbmdTY2hlbWEpID0+IHtcbiAgICAgICAgICBwYXJzZXIucmVhZFVzVmFyQ2hhcigoeG1sU2NoZW1hQ29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICBkYm5hbWU6IGRibmFtZSxcbiAgICAgICAgICAgICAgb3duaW5nU2NoZW1hOiBvd25pbmdTY2hlbWEsXG4gICAgICAgICAgICAgIHhtbFNjaGVtYUNvbGxlY3Rpb246IHhtbFNjaGVtYUNvbGxlY3Rpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlYWRVRFRJbmZvKHBhcnNlcjogUGFyc2VyLCBjYWxsYmFjazogKHVkdEluZm86IFVkdEluZm8gfCB1bmRlZmluZWQpID0+IHZvaWQpIHtcbiAgcGFyc2VyLnJlYWRVSW50MTZMRSgobWF4Qnl0ZVNpemUpID0+IHtcbiAgICBwYXJzZXIucmVhZEJWYXJDaGFyKChkYm5hbWUpID0+IHtcbiAgICAgIHBhcnNlci5yZWFkQlZhckNoYXIoKG93bmluZ1NjaGVtYSkgPT4ge1xuICAgICAgICBwYXJzZXIucmVhZEJWYXJDaGFyKCh0eXBlTmFtZSkgPT4ge1xuICAgICAgICAgIHBhcnNlci5yZWFkVXNWYXJDaGFyKChhc3NlbWJseU5hbWUpID0+IHtcbiAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgbWF4Qnl0ZVNpemU6IG1heEJ5dGVTaXplLFxuICAgICAgICAgICAgICBkYm5hbWU6IGRibmFtZSxcbiAgICAgICAgICAgICAgb3duaW5nU2NoZW1hOiBvd25pbmdTY2hlbWEsXG4gICAgICAgICAgICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICAgICAgICAgICAgYXNzZW1ibHlOYW1lOiBhc3NlbWJseU5hbWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gbWV0YWRhdGFQYXJzZShwYXJzZXI6IFBhcnNlciwgb3B0aW9uczogUGFyc2VyT3B0aW9ucywgY2FsbGJhY2s6IChtZXRhZGF0YTogTWV0YWRhdGEpID0+IHZvaWQpIHtcbiAgKG9wdGlvbnMudGRzVmVyc2lvbiA8ICc3XzInID8gcGFyc2VyLnJlYWRVSW50MTZMRSA6IHBhcnNlci5yZWFkVUludDMyTEUpLmNhbGwocGFyc2VyLCAodXNlclR5cGUpID0+IHtcbiAgICBwYXJzZXIucmVhZFVJbnQxNkxFKChmbGFncykgPT4ge1xuICAgICAgcGFyc2VyLnJlYWRVSW50OCgodHlwZU51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCB0eXBlOiBEYXRhVHlwZSA9IFRZUEVbdHlwZU51bWJlcl07XG5cbiAgICAgICAgaWYgKCF0eXBlKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHNwcmludGYoJ1VucmVjb2duaXNlZCBkYXRhIHR5cGUgMHglMDJYJywgdHlwZU51bWJlcikpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3dpdGNoICh0eXBlLm5hbWUpIHtcbiAgICAgICAgICBjYXNlICdOdWxsJzpcbiAgICAgICAgICBjYXNlICdUaW55SW50JzpcbiAgICAgICAgICBjYXNlICdTbWFsbEludCc6XG4gICAgICAgICAgY2FzZSAnSW50JzpcbiAgICAgICAgICBjYXNlICdCaWdJbnQnOlxuICAgICAgICAgIGNhc2UgJ1JlYWwnOlxuICAgICAgICAgIGNhc2UgJ0Zsb2F0JzpcbiAgICAgICAgICBjYXNlICdTbWFsbE1vbmV5JzpcbiAgICAgICAgICBjYXNlICdNb25leSc6XG4gICAgICAgICAgY2FzZSAnQml0JzpcbiAgICAgICAgICBjYXNlICdTbWFsbERhdGVUaW1lJzpcbiAgICAgICAgICBjYXNlICdEYXRlVGltZSc6XG4gICAgICAgICAgY2FzZSAnRGF0ZSc6XG4gICAgICAgICAgICByZXR1cm4gY2FsbGJhY2soe1xuICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnSW50Tic6XG4gICAgICAgICAgY2FzZSAnRmxvYXROJzpcbiAgICAgICAgICBjYXNlICdNb25leU4nOlxuICAgICAgICAgIGNhc2UgJ0JpdE4nOlxuICAgICAgICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgICAgICAgIGNhc2UgJ0RhdGVUaW1lTic6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ1ZhcmlhbnQnOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDMyTEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdWYXJDaGFyJzpcbiAgICAgICAgICBjYXNlICdDaGFyJzpcbiAgICAgICAgICBjYXNlICdOVmFyQ2hhcic6XG4gICAgICAgICAgY2FzZSAnTkNoYXInOlxuICAgICAgICAgICAgcmV0dXJuIHBhcnNlci5yZWFkVUludDE2TEUoKGRhdGFMZW5ndGgpID0+IHtcbiAgICAgICAgICAgICAgcmVhZENvbGxhdGlvbihwYXJzZXIsIChjb2xsYXRpb24pID0+IHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ1RleHQnOlxuICAgICAgICAgIGNhc2UgJ05UZXh0JzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQzMkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIHJlYWRDb2xsYXRpb24ocGFyc2VyLCAoY29sbGF0aW9uKSA9PiB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogY29sbGF0aW9uLFxuICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdWYXJCaW5hcnknOlxuICAgICAgICAgIGNhc2UgJ0JpbmFyeSc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50MTZMRSgoZGF0YUxlbmd0aCkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgIGNhc2UgJ0ltYWdlJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQzMkxFKChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIGNhbGxiYWNrKHtcbiAgICAgICAgICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgICAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnWG1sJzpcbiAgICAgICAgICAgIHJldHVybiByZWFkU2NoZW1hKHBhcnNlciwgKHNjaGVtYSkgPT4ge1xuICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogc2NoZW1hLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnVGltZSc6XG4gICAgICAgICAgY2FzZSAnRGF0ZVRpbWUyJzpcbiAgICAgICAgICBjYXNlICdEYXRlVGltZU9mZnNldCc6XG4gICAgICAgICAgICByZXR1cm4gcGFyc2VyLnJlYWRVSW50OCgoc2NhbGUpID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2FsZTogc2NhbGUsXG4gICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY2FzZSAnTnVtZXJpY04nOlxuICAgICAgICAgIGNhc2UgJ0RlY2ltYWxOJzpcbiAgICAgICAgICAgIHJldHVybiBwYXJzZXIucmVhZFVJbnQ4KChkYXRhTGVuZ3RoKSA9PiB7XG4gICAgICAgICAgICAgIHBhcnNlci5yZWFkVUludDgoKHByZWNpc2lvbikgPT4ge1xuICAgICAgICAgICAgICAgIHBhcnNlci5yZWFkVUludDgoKHNjYWxlKSA9PiB7XG4gICAgICAgICAgICAgICAgICBjYWxsYmFjayh7XG4gICAgICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uOiBwcmVjaXNpb24sXG4gICAgICAgICAgICAgICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgICAgICAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjYXNlICdVRFQnOlxuICAgICAgICAgICAgcmV0dXJuIHJlYWRVRFRJbmZvKHBhcnNlciwgKHVkdEluZm8pID0+IHtcbiAgICAgICAgICAgICAgY2FsbGJhY2soe1xuICAgICAgICAgICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgICAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB1ZHRJbmZvOiB1ZHRJbmZvXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHNwcmludGYoJ1VucmVjb2duaXNlZCB0eXBlICVzJywgdHlwZS5uYW1lKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWV0YWRhdGFQYXJzZTtcbmV4cG9ydCB7IHJlYWRDb2xsYXRpb24gfTtcblxubW9kdWxlLmV4cG9ydHMgPSBtZXRhZGF0YVBhcnNlO1xubW9kdWxlLmV4cG9ydHMucmVhZENvbGxhdGlvbiA9IHJlYWRDb2xsYXRpb247XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxVQUFBLEdBQUFDLE9BQUE7QUFFQSxJQUFBQyxTQUFBLEdBQUFELE9BQUE7QUFHQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFtREEsU0FBU0csYUFBYUEsQ0FBQ0MsTUFBYyxFQUFFQyxRQUF3QyxFQUFFO0VBQy9FO0VBQ0FELE1BQU0sQ0FBQ0UsVUFBVSxDQUFDLENBQUMsRUFBR0MsYUFBYSxJQUFLO0lBQ3RDRixRQUFRLENBQUNHLG9CQUFTLENBQUNDLFVBQVUsQ0FBQ0YsYUFBYSxDQUFDLENBQUM7RUFDL0MsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxTQUFTRyxVQUFVQSxDQUFDTixNQUFjLEVBQUVDLFFBQWlELEVBQUU7RUFDckY7RUFDQUQsTUFBTSxDQUFDTyxTQUFTLENBQUVDLGFBQWEsSUFBSztJQUNsQyxJQUFJQSxhQUFhLEtBQUssSUFBSSxFQUFFO01BQzFCUixNQUFNLENBQUNTLFlBQVksQ0FBRUMsTUFBTSxJQUFLO1FBQzlCVixNQUFNLENBQUNTLFlBQVksQ0FBRUUsWUFBWSxJQUFLO1VBQ3BDWCxNQUFNLENBQUNZLGFBQWEsQ0FBRUMsbUJBQW1CLElBQUs7WUFDNUNaLFFBQVEsQ0FBQztjQUNQUyxNQUFNLEVBQUVBLE1BQU07Y0FDZEMsWUFBWSxFQUFFQSxZQUFZO2NBQzFCRSxtQkFBbUIsRUFBRUE7WUFDdkIsQ0FBQyxDQUFDO1VBQ0osQ0FBQyxDQUFDO1FB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
|
|
380
|
+
module.exports.readMetadata = readMetadata;
|
|
381
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29sbGF0aW9uIiwicmVxdWlyZSIsIl9kYXRhVHlwZSIsIl9zcHJpbnRmSnMiLCJfaGVscGVycyIsInJlYWRDb2xsYXRpb24iLCJidWYiLCJvZmZzZXQiLCJsZW5ndGgiLCJOb3RFbm91Z2hEYXRhRXJyb3IiLCJjb2xsYXRpb24iLCJDb2xsYXRpb24iLCJmcm9tQnVmZmVyIiwic2xpY2UiLCJSZXN1bHQiLCJyZWFkU2NoZW1hIiwic2NoZW1hUHJlc2VudCIsInZhbHVlIiwicmVhZFVJbnQ4IiwidW5kZWZpbmVkIiwiZGJuYW1lIiwicmVhZEJWYXJDaGFyIiwib3duaW5nU2NoZW1hIiwieG1sU2NoZW1hQ29sbGVjdGlvbiIsInJlYWRVc1ZhckNoYXIiLCJyZWFkVURUSW5mbyIsIm1heEJ5dGVTaXplIiwicmVhZFVJbnQxNkxFIiwidHlwZU5hbWUiLCJhc3NlbWJseU5hbWUiLCJyZWFkTWV0YWRhdGEiLCJvcHRpb25zIiwidXNlclR5cGUiLCJ0ZHNWZXJzaW9uIiwicmVhZFVJbnQzMkxFIiwiZmxhZ3MiLCJ0eXBlTnVtYmVyIiwidHlwZSIsIlRZUEUiLCJFcnJvciIsInNwcmludGYiLCJuYW1lIiwicHJlY2lzaW9uIiwic2NhbGUiLCJkYXRhTGVuZ3RoIiwic2NoZW1hIiwidWR0SW5mbyIsIm1ldGFkYXRhUGFyc2UiLCJwYXJzZXIiLCJjYWxsYmFjayIsInJlc3VsdCIsImJ1ZmZlciIsInBvc2l0aW9uIiwiZXJyIiwid2FpdEZvckNodW5rIiwiX2RlZmF1bHQiLCJleHBvcnRzIiwiZGVmYXVsdCIsIm1vZHVsZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9tZXRhZGF0YS1wYXJzZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29sbGF0aW9uIH0gZnJvbSAnLi9jb2xsYXRpb24nO1xuaW1wb3J0IFBhcnNlciwgeyB0eXBlIFBhcnNlck9wdGlvbnMgfSBmcm9tICcuL3Rva2VuL3N0cmVhbS1wYXJzZXInO1xuaW1wb3J0IHsgVFlQRSwgdHlwZSBEYXRhVHlwZSB9IGZyb20gJy4vZGF0YS10eXBlJztcbmltcG9ydCB7IHR5cGUgQ3J5cHRvTWV0YWRhdGEgfSBmcm9tICcuL2Fsd2F5cy1lbmNyeXB0ZWQvdHlwZXMnO1xuXG5pbXBvcnQgeyBzcHJpbnRmIH0gZnJvbSAnc3ByaW50Zi1qcyc7XG5cbmltcG9ydCB7IFJlc3VsdCwgTm90RW5vdWdoRGF0YUVycm9yLCByZWFkVUludDgsIHJlYWRCVmFyQ2hhciwgcmVhZFVzVmFyQ2hhciwgcmVhZFVJbnQxNkxFLCByZWFkVUludDMyTEUgfSBmcm9tICcuL3Rva2VuL2hlbHBlcnMnO1xuXG5pbnRlcmZhY2UgWG1sU2NoZW1hIHtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB4bWxTY2hlbWFDb2xsZWN0aW9uOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBVZHRJbmZvIHtcbiAgbWF4Qnl0ZVNpemU6IG51bWJlcjtcbiAgZGJuYW1lOiBzdHJpbmc7XG4gIG93bmluZ1NjaGVtYTogc3RyaW5nO1xuICB0eXBlTmFtZTogc3RyaW5nO1xuICBhc3NlbWJseU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQmFzZU1ldGFkYXRhID0ge1xuICB1c2VyVHlwZTogbnVtYmVyO1xuXG4gIGZsYWdzOiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgY29sdW1uJ3MgdHlwZSwgc3VjaCBhcyBWYXJDaGFyLCBJbnQgb3IgQmluYXJ5LlxuICAgKi9cbiAgdHlwZTogRGF0YVR5cGU7XG5cbiAgY29sbGF0aW9uOiBDb2xsYXRpb24gfCB1bmRlZmluZWQ7XG4gIC8qKlxuICAgKiBUaGUgcHJlY2lzaW9uLiBPbmx5IGFwcGxpY2FibGUgdG8gbnVtZXJpYyBhbmQgZGVjaW1hbC5cbiAgICovXG4gIHByZWNpc2lvbjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NhbGUuIE9ubHkgYXBwbGljYWJsZSB0byBudW1lcmljLCBkZWNpbWFsLCB0aW1lLCBkYXRldGltZTIgYW5kIGRhdGV0aW1lb2Zmc2V0LlxuICAgKi9cbiAgc2NhbGU6IG51bWJlciB8IHVuZGVmaW5lZDtcblxuICAvKipcbiAgICogVGhlIGxlbmd0aCwgZm9yIGNoYXIsIHZhcmNoYXIsIG52YXJjaGFyIGFuZCB2YXJiaW5hcnkuXG4gICAqL1xuICBkYXRhTGVuZ3RoOiBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgc2NoZW1hOiBYbWxTY2hlbWEgfCB1bmRlZmluZWQ7XG5cbiAgdWR0SW5mbzogVWR0SW5mbyB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IHR5cGUgTWV0YWRhdGEgPSB7XG4gIGNyeXB0b01ldGFkYXRhPzogQ3J5cHRvTWV0YWRhdGE7XG59ICYgQmFzZU1ldGFkYXRhO1xuXG5mdW5jdGlvbiByZWFkQ29sbGF0aW9uKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxDb2xsYXRpb24+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBpZiAoYnVmLmxlbmd0aCA8IG9mZnNldCArIDUpIHtcbiAgICB0aHJvdyBuZXcgTm90RW5vdWdoRGF0YUVycm9yKG9mZnNldCArIDUpO1xuICB9XG5cbiAgY29uc3QgY29sbGF0aW9uID0gQ29sbGF0aW9uLmZyb21CdWZmZXIoYnVmLnNsaWNlKG9mZnNldCwgb2Zmc2V0ICsgNSkpO1xuICByZXR1cm4gbmV3IFJlc3VsdChjb2xsYXRpb24sIG9mZnNldCArIDUpO1xufVxuXG5mdW5jdGlvbiByZWFkU2NoZW1hKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxYbWxTY2hlbWEgfCB1bmRlZmluZWQ+IHtcbiAgb2Zmc2V0ID0gK29mZnNldDtcblxuICBsZXQgc2NoZW1hUHJlc2VudDtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NoZW1hUHJlc2VudCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgaWYgKHNjaGVtYVByZXNlbnQgIT09IDB4MDEpIHtcbiAgICByZXR1cm4gbmV3IFJlc3VsdCh1bmRlZmluZWQsIG9mZnNldCk7XG4gIH1cblxuICBsZXQgZGJuYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBkYm5hbWUgfSA9IHJlYWRCVmFyQ2hhcihidWYsIG9mZnNldCkpO1xuXG4gIGxldCBvd25pbmdTY2hlbWE7XG4gICh7IG9mZnNldCwgdmFsdWU6IG93bmluZ1NjaGVtYSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IHhtbFNjaGVtYUNvbGxlY3Rpb247XG4gICh7IG9mZnNldCwgdmFsdWU6IHhtbFNjaGVtYUNvbGxlY3Rpb24gfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7IGRibmFtZSwgb3duaW5nU2NoZW1hLCB4bWxTY2hlbWFDb2xsZWN0aW9uIH0sIG9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIHJlYWRVRFRJbmZvKGJ1ZjogQnVmZmVyLCBvZmZzZXQ6IG51bWJlcik6IFJlc3VsdDxVZHRJbmZvPiB7XG4gIGxldCBtYXhCeXRlU2l6ZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogbWF4Qnl0ZVNpemUgfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gIGxldCBkYm5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IGRibmFtZSB9ID0gcmVhZEJWYXJDaGFyKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgbGV0IG93bmluZ1NjaGVtYTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogb3duaW5nU2NoZW1hIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU5hbWU7XG4gICh7IG9mZnNldCwgdmFsdWU6IHR5cGVOYW1lIH0gPSByZWFkQlZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgYXNzZW1ibHlOYW1lO1xuICAoeyBvZmZzZXQsIHZhbHVlOiBhc3NlbWJseU5hbWUgfSA9IHJlYWRVc1ZhckNoYXIoYnVmLCBvZmZzZXQpKTtcblxuICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgbWF4Qnl0ZVNpemU6IG1heEJ5dGVTaXplLFxuICAgIGRibmFtZTogZGJuYW1lLFxuICAgIG93bmluZ1NjaGVtYTogb3duaW5nU2NoZW1hLFxuICAgIHR5cGVOYW1lOiB0eXBlTmFtZSxcbiAgICBhc3NlbWJseU5hbWU6IGFzc2VtYmx5TmFtZVxuICB9LCBvZmZzZXQpO1xufVxuXG5mdW5jdGlvbiByZWFkTWV0YWRhdGEoYnVmOiBCdWZmZXIsIG9mZnNldDogbnVtYmVyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zKTogUmVzdWx0PE1ldGFkYXRhPiB7XG4gIGxldCB1c2VyVHlwZTtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdXNlclR5cGUgfSA9IChvcHRpb25zLnRkc1ZlcnNpb24gPCAnN18yJyA/IHJlYWRVSW50MTZMRSA6IHJlYWRVSW50MzJMRSkoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgZmxhZ3M7XG4gICh7IG9mZnNldCwgdmFsdWU6IGZsYWdzIH0gPSByZWFkVUludDE2TEUoYnVmLCBvZmZzZXQpKTtcblxuICBsZXQgdHlwZU51bWJlcjtcbiAgKHsgb2Zmc2V0LCB2YWx1ZTogdHlwZU51bWJlciB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgY29uc3QgdHlwZTogRGF0YVR5cGUgPSBUWVBFW3R5cGVOdW1iZXJdO1xuICBpZiAoIXR5cGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIGRhdGEgdHlwZSAweCUwMlgnLCB0eXBlTnVtYmVyKSk7XG4gIH1cblxuICBzd2l0Y2ggKHR5cGUubmFtZSkge1xuICAgIGNhc2UgJ051bGwnOlxuICAgIGNhc2UgJ1RpbnlJbnQnOlxuICAgIGNhc2UgJ1NtYWxsSW50JzpcbiAgICBjYXNlICdJbnQnOlxuICAgIGNhc2UgJ0JpZ0ludCc6XG4gICAgY2FzZSAnUmVhbCc6XG4gICAgY2FzZSAnRmxvYXQnOlxuICAgIGNhc2UgJ1NtYWxsTW9uZXknOlxuICAgIGNhc2UgJ01vbmV5JzpcbiAgICBjYXNlICdCaXQnOlxuICAgIGNhc2UgJ1NtYWxsRGF0ZVRpbWUnOlxuICAgIGNhc2UgJ0RhdGVUaW1lJzpcbiAgICBjYXNlICdEYXRlJzpcbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuXG4gICAgY2FzZSAnSW50Tic6XG4gICAgY2FzZSAnRmxvYXROJzpcbiAgICBjYXNlICdNb25leU4nOlxuICAgIGNhc2UgJ0JpdE4nOlxuICAgIGNhc2UgJ1VuaXF1ZUlkZW50aWZpZXInOlxuICAgIGNhc2UgJ0RhdGVUaW1lTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHVuZGVmaW5lZCxcbiAgICAgICAgc2NhbGU6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF0YUxlbmd0aDogZGF0YUxlbmd0aCxcbiAgICAgICAgc2NoZW1hOiB1bmRlZmluZWQsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdWYXJpYW50Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1ZhckNoYXInOlxuICAgIGNhc2UgJ0NoYXInOlxuICAgIGNhc2UgJ05WYXJDaGFyJzpcbiAgICBjYXNlICdOQ2hhcic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQxNkxFKGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBjb2xsYXRpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBjb2xsYXRpb24gfSA9IHJlYWRDb2xsYXRpb24oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiBjb2xsYXRpb24sXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1RleHQnOlxuICAgIGNhc2UgJ05UZXh0Jzoge1xuICAgICAgbGV0IGRhdGFMZW5ndGg7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBkYXRhTGVuZ3RoIH0gPSByZWFkVUludDMyTEUoYnVmLCBvZmZzZXQpKTtcblxuICAgICAgbGV0IGNvbGxhdGlvbjtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGNvbGxhdGlvbiB9ID0gcmVhZENvbGxhdGlvbihidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IGNvbGxhdGlvbixcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnVmFyQmluYXJ5JzpcbiAgICBjYXNlICdCaW5hcnknOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MTZMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnSW1hZ2UnOiB7XG4gICAgICBsZXQgZGF0YUxlbmd0aDtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IGRhdGFMZW5ndGggfSA9IHJlYWRVSW50MzJMRShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IGRhdGFMZW5ndGgsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1bmRlZmluZWRcbiAgICAgIH0sIG9mZnNldCk7XG4gICAgfVxuXG4gICAgY2FzZSAnWG1sJzoge1xuICAgICAgbGV0IHNjaGVtYTtcbiAgICAgICh7IG9mZnNldCwgdmFsdWU6IHNjaGVtYSB9ID0gcmVhZFNjaGVtYShidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGFMZW5ndGg6IHVuZGVmaW5lZCxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWEsXG4gICAgICAgIHVkdEluZm86IHVuZGVmaW5lZFxuICAgICAgfSwgb2Zmc2V0KTtcbiAgICB9XG5cbiAgICBjYXNlICdUaW1lJzpcbiAgICBjYXNlICdEYXRlVGltZTInOlxuICAgIGNhc2UgJ0RhdGVUaW1lT2Zmc2V0Jzoge1xuICAgICAgbGV0IHNjYWxlO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogc2NhbGUgfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICByZXR1cm4gbmV3IFJlc3VsdCh7XG4gICAgICAgIHVzZXJUeXBlOiB1c2VyVHlwZSxcbiAgICAgICAgZmxhZ3M6IGZsYWdzLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBjb2xsYXRpb246IHVuZGVmaW5lZCxcbiAgICAgICAgcHJlY2lzaW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHNjYWxlOiBzY2FsZSxcbiAgICAgICAgZGF0YUxlbmd0aDogdW5kZWZpbmVkLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ051bWVyaWNOJzpcbiAgICBjYXNlICdEZWNpbWFsTic6IHtcbiAgICAgIGxldCBkYXRhTGVuZ3RoO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogZGF0YUxlbmd0aCB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIGxldCBwcmVjaXNpb247XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBwcmVjaXNpb24gfSA9IHJlYWRVSW50OChidWYsIG9mZnNldCkpO1xuXG4gICAgICBsZXQgc2NhbGU7XG4gICAgICAoeyBvZmZzZXQsIHZhbHVlOiBzY2FsZSB9ID0gcmVhZFVJbnQ4KGJ1Ziwgb2Zmc2V0KSk7XG5cbiAgICAgIHJldHVybiBuZXcgUmVzdWx0KHtcbiAgICAgICAgdXNlclR5cGU6IHVzZXJUeXBlLFxuICAgICAgICBmbGFnczogZmxhZ3MsXG4gICAgICAgIHR5cGU6IHR5cGUsXG4gICAgICAgIGNvbGxhdGlvbjogdW5kZWZpbmVkLFxuICAgICAgICBwcmVjaXNpb246IHByZWNpc2lvbixcbiAgICAgICAgc2NhbGU6IHNjYWxlLFxuICAgICAgICBkYXRhTGVuZ3RoOiBkYXRhTGVuZ3RoLFxuICAgICAgICBzY2hlbWE6IHVuZGVmaW5lZCxcbiAgICAgICAgdWR0SW5mbzogdW5kZWZpbmVkXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGNhc2UgJ1VEVCc6IHtcbiAgICAgIGxldCB1ZHRJbmZvO1xuICAgICAgKHsgb2Zmc2V0LCB2YWx1ZTogdWR0SW5mbyB9ID0gcmVhZFVEVEluZm8oYnVmLCBvZmZzZXQpKTtcblxuICAgICAgcmV0dXJuIG5ldyBSZXN1bHQoe1xuICAgICAgICB1c2VyVHlwZTogdXNlclR5cGUsXG4gICAgICAgIGZsYWdzOiBmbGFncyxcbiAgICAgICAgdHlwZTogdHlwZSxcbiAgICAgICAgY29sbGF0aW9uOiB1bmRlZmluZWQsXG4gICAgICAgIHByZWNpc2lvbjogdW5kZWZpbmVkLFxuICAgICAgICBzY2FsZTogdW5kZWZpbmVkLFxuICAgICAgICBkYXRhTGVuZ3RoOiB1bmRlZmluZWQsXG4gICAgICAgIHNjaGVtYTogdW5kZWZpbmVkLFxuICAgICAgICB1ZHRJbmZvOiB1ZHRJbmZvXG4gICAgICB9LCBvZmZzZXQpO1xuICAgIH1cblxuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3Ioc3ByaW50ZignVW5yZWNvZ25pc2VkIHR5cGUgJXMnLCB0eXBlLm5hbWUpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZXRhZGF0YVBhcnNlKHBhcnNlcjogUGFyc2VyLCBvcHRpb25zOiBQYXJzZXJPcHRpb25zLCBjYWxsYmFjazogKG1ldGFkYXRhOiBNZXRhZGF0YSkgPT4gdm9pZCkge1xuICAoYXN5bmMgKCkgPT4ge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBsZXQgcmVzdWx0O1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzdWx0ID0gcmVhZE1ldGFkYXRhKHBhcnNlci5idWZmZXIsIHBhcnNlci5wb3NpdGlvbiwgb3B0aW9ucyk7XG4gICAgICB9IGNhdGNoIChlcnI6IGFueSkge1xuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgTm90RW5vdWdoRGF0YUVycm9yKSB7XG4gICAgICAgICAgYXdhaXQgcGFyc2VyLndhaXRGb3JDaHVuaygpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBwYXJzZXIucG9zaXRpb24gPSByZXN1bHQub2Zmc2V0O1xuICAgICAgcmV0dXJuIGNhbGxiYWNrKHJlc3VsdC52YWx1ZSk7XG4gICAgfVxuICB9KSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBtZXRhZGF0YVBhcnNlO1xuZXhwb3J0IHsgcmVhZENvbGxhdGlvbiwgcmVhZE1ldGFkYXRhIH07XG5cbm1vZHVsZS5leHBvcnRzID0gbWV0YWRhdGFQYXJzZTtcbm1vZHVsZS5leHBvcnRzLnJlYWRDb2xsYXRpb24gPSByZWFkQ29sbGF0aW9uO1xubW9kdWxlLmV4cG9ydHMucmVhZE1ldGFkYXRhID0gcmVhZE1ldGFkYXRhO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsT0FBQTtBQUVBLElBQUFDLFNBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUVBLElBQUFHLFFBQUEsR0FBQUgsT0FBQTtBQWtEQSxTQUFTSSxhQUFhQSxDQUFDQyxHQUFXLEVBQUVDLE1BQWMsRUFBcUI7RUFDckVBLE1BQU0sR0FBRyxDQUFDQSxNQUFNO0VBRWhCLElBQUlELEdBQUcsQ0FBQ0UsTUFBTSxHQUFHRCxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQzNCLE1BQU0sSUFBSUUsMkJBQWtCLENBQUNGLE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDMUM7RUFFQSxNQUFNRyxTQUFTLEdBQUdDLG9C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
|