@cichol/logger 6.1.4 → 6.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.
- package/dists/index.js +24 -38
- package/package.json +6 -6
package/dists/index.js
CHANGED
|
@@ -1,27 +1,14 @@
|
|
|
1
|
-
import _Object$fromEntries from 'core-js-pure/features/object/from-entries.js';
|
|
2
|
-
import _filterInstanceProperty from 'core-js-pure/features/instance/filter.js';
|
|
3
|
-
import _mapInstanceProperty from 'core-js-pure/features/instance/map.js';
|
|
4
|
-
import _trimInstanceProperty from 'core-js-pure/features/instance/trim.js';
|
|
5
|
-
import _Reflect$construct from 'core-js-pure/features/reflect/construct.js';
|
|
6
1
|
import { STATUS_CODES, IncomingMessage, ServerResponse } from 'http';
|
|
7
2
|
import { PassThrough } from 'stream';
|
|
8
3
|
import { promisify } from 'util';
|
|
9
4
|
import morgan from 'morgan';
|
|
10
5
|
import * as winston from 'winston';
|
|
11
6
|
import { format } from 'winston';
|
|
12
|
-
import _findInstanceProperty from 'core-js-pure/features/instance/find.js';
|
|
13
|
-
import _Reflect$apply from 'core-js-pure/features/reflect/apply.js';
|
|
14
7
|
import { bgRgb24, rgb24, bold, blue, gray, underline, red, magenta, green } from '@std/fmt/colors';
|
|
15
8
|
import rTracer from 'cls-rtracer';
|
|
16
9
|
import { DateTime } from 'luxon';
|
|
17
|
-
import _Map from 'core-js-pure/features/map/index.js';
|
|
18
10
|
import process, { version, env } from 'process';
|
|
19
|
-
import _Symbol$for from 'core-js-pure/features/symbol/for.js';
|
|
20
|
-
import _indexOfInstanceProperty from 'core-js-pure/features/instance/index-of.js';
|
|
21
|
-
import _sliceInstanceProperty from 'core-js-pure/features/instance/slice.js';
|
|
22
|
-
import _startsWithInstanceProperty from 'core-js-pure/features/instance/starts-with.js';
|
|
23
11
|
import _includesInstanceProperty from 'core-js-pure/features/instance/includes.js';
|
|
24
|
-
import _lastIndexOfInstanceProperty from 'core-js-pure/features/instance/last-index-of.js';
|
|
25
12
|
import path from 'path';
|
|
26
13
|
import { highlight } from 'cli-highlight';
|
|
27
14
|
import { format as format$1 } from '@std/fmt/bytes';
|
|
@@ -46,10 +33,12 @@ const LoggingLevel = {
|
|
|
46
33
|
Debug: 5
|
|
47
34
|
};
|
|
48
35
|
|
|
36
|
+
// Third-party modules.
|
|
37
|
+
|
|
49
38
|
// Type definitions.
|
|
50
39
|
|
|
51
40
|
// Constants.
|
|
52
|
-
const colorizerMap = new
|
|
41
|
+
const colorizerMap = new Map();
|
|
53
42
|
|
|
54
43
|
// Helpers.
|
|
55
44
|
function createScheme(options) {
|
|
@@ -121,7 +110,7 @@ function decorateLabel(label, scheme) {
|
|
|
121
110
|
// Constants.
|
|
122
111
|
const rootPath = process.cwd();
|
|
123
112
|
const conjunction = ` ${blue('──')} `;
|
|
124
|
-
const splat =
|
|
113
|
+
const splat = Symbol.for('splat');
|
|
125
114
|
|
|
126
115
|
// Handler metadata.
|
|
127
116
|
const name$8 = 'error';
|
|
@@ -129,14 +118,14 @@ const level$8 = LoggingLevel.Error;
|
|
|
129
118
|
const label$8 = decorateLabel('ERROR', ColorScheme.Critical);
|
|
130
119
|
function simplifyDataURI(dataURI) {
|
|
131
120
|
const [, actualContent] = dataURI.split(':');
|
|
132
|
-
const pivot =
|
|
133
|
-
const mimeIndicator =
|
|
134
|
-
const contentPrefix =
|
|
135
|
-
const contentSuffix =
|
|
121
|
+
const pivot = actualContent.indexOf(',') + 1;
|
|
122
|
+
const mimeIndicator = actualContent.slice(0, pivot);
|
|
123
|
+
const contentPrefix = actualContent.slice(pivot, pivot + 4);
|
|
124
|
+
const contentSuffix = actualContent.slice(-4);
|
|
136
125
|
return `data:${mimeIndicator + contentPrefix}...${contentSuffix}`;
|
|
137
126
|
}
|
|
138
127
|
function isDataURI(filename) {
|
|
139
|
-
return
|
|
128
|
+
return filename.startsWith('data:');
|
|
140
129
|
}
|
|
141
130
|
function isAbsoluteOrDataURI(filename) {
|
|
142
131
|
return path.isAbsolute(filename) || isDataURI(filename);
|
|
@@ -146,14 +135,13 @@ function mapLocationOfErrorThrown(filename) {
|
|
|
146
135
|
if (isDataURI(filename)) {
|
|
147
136
|
target = gray(simplifyDataURI(filename));
|
|
148
137
|
} else if (_includesInstanceProperty(target).call(target, 'node_modules')) {
|
|
149
|
-
target = gray(
|
|
138
|
+
target = gray(target.slice(target.lastIndexOf('node_modules'))).replace(/node_modules[\\/]((?:@[^\\/]+[\\/])?[^\\/]+)(.*)/, (_, moduleName, trailing) => `node_modules${path.sep}${bold(underline(moduleName))}${gray(trailing)}`);
|
|
150
139
|
} else {
|
|
151
140
|
target = `${gray(path.dirname(target) + path.sep)}${bold(underline(path.basename(target)))}`;
|
|
152
141
|
}
|
|
153
142
|
return target;
|
|
154
143
|
}
|
|
155
144
|
function handle$2(data) {
|
|
156
|
-
var _context, _context2, _context3;
|
|
157
145
|
const {
|
|
158
146
|
[splat]: [error] = []
|
|
159
147
|
} = data;
|
|
@@ -165,7 +153,7 @@ function handle$2(data) {
|
|
|
165
153
|
message,
|
|
166
154
|
stack: rawStack = ''
|
|
167
155
|
} = error;
|
|
168
|
-
const stack =
|
|
156
|
+
const stack = rawStack.slice(errorName.length + message.length + 3).split('\n').map(line => line.replace(/^\s+at /g, '')).map(line => isAbsoluteOrDataURI(line) ? `<anonymous>${conjunction}${mapLocationOfErrorThrown(line)}` : line).map(line => line.replace(/^(.+) \((.+)\)$/, (_, contextName, rawLocation) => {
|
|
169
157
|
let location = '';
|
|
170
158
|
switch (true) {
|
|
171
159
|
case rawLocation === '<anonymous>':
|
|
@@ -178,9 +166,9 @@ function handle$2(data) {
|
|
|
178
166
|
location = gray(simplifyDataURI(rawLocation));
|
|
179
167
|
break;
|
|
180
168
|
}
|
|
181
|
-
case
|
|
169
|
+
case rawLocation.startsWith('node:'):
|
|
182
170
|
{
|
|
183
|
-
const [filename, occurredLine] =
|
|
171
|
+
const [filename, occurredLine] = rawLocation.slice(5).split(':');
|
|
184
172
|
location = gray(`https://github.com/${bold(underline('nodejs'))}/node/blob/${version}/lib/${filename}.js#L${occurredLine}`);
|
|
185
173
|
break;
|
|
186
174
|
}
|
|
@@ -358,11 +346,12 @@ var DebugHandler = /*#__PURE__*/Object.freeze({
|
|
|
358
346
|
// Handler implementations.
|
|
359
347
|
const handlers = [FatalHandler, ErrorHandler, WarningHandler, NoticeHandler, InfoHandler, HttpHandler, QueryHandler, VerboseHandler, DebugHandler];
|
|
360
348
|
|
|
349
|
+
// Third-party modules.
|
|
361
350
|
var formatForCLI = format.printf(data => {
|
|
362
351
|
const timestamp = gray(DateTime.now().toISO({
|
|
363
352
|
includeOffset: true
|
|
364
353
|
}));
|
|
365
|
-
const handler =
|
|
354
|
+
const handler = handlers.find(({
|
|
366
355
|
name
|
|
367
356
|
}) => name === data.level);
|
|
368
357
|
const fallback = {
|
|
@@ -375,12 +364,9 @@ var formatForCLI = format.printf(data => {
|
|
|
375
364
|
const {
|
|
376
365
|
label,
|
|
377
366
|
payload
|
|
378
|
-
} =
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
extraFingerprint = data.transactionId ? `(Transaction-ID = ${data.transactionId})` : `(Request-ID = ${rTracer.id()})`;
|
|
382
|
-
}
|
|
383
|
-
return `${label} ${timestamp}${extraFingerprint ? ` ${extraFingerprint}` : ''}\n${payload}`;
|
|
367
|
+
} = Reflect.apply(performHandle, undefined, [data]) ?? fallback;
|
|
368
|
+
const extraFingerprint = [['Request-ID', rTracer.id()], ['Transaction-ID', data.transactionId]].filter(([, idValue]) => idValue).map(([kind, idValue]) => `${kind} = ${idValue}`).join(' | ');
|
|
369
|
+
return `${label} ${timestamp}${extraFingerprint ? ` (${extraFingerprint})` : ''}\n${payload}`;
|
|
384
370
|
});
|
|
385
371
|
|
|
386
372
|
// Node.js built-in APIs.
|
|
@@ -455,7 +441,7 @@ function formatForMorgan(tokens, request, response) {
|
|
|
455
441
|
}
|
|
456
442
|
var formatForMorgan$1 = executionMode === ExecutionMode.DevelopmentMode ? formatForMorgan : morgan.combined;
|
|
457
443
|
|
|
458
|
-
|
|
444
|
+
// Node.js built-in APIs.
|
|
459
445
|
|
|
460
446
|
// Type definitions.
|
|
461
447
|
|
|
@@ -466,10 +452,10 @@ const {
|
|
|
466
452
|
class Logger {
|
|
467
453
|
static #instance;
|
|
468
454
|
#logger = winston.createLogger({
|
|
469
|
-
levels:
|
|
455
|
+
levels: Object.fromEntries(handlers.map(({
|
|
470
456
|
name,
|
|
471
457
|
level
|
|
472
|
-
}) => [name, level])
|
|
458
|
+
}) => [name, level]).filter(([, level]) => typeof level === 'number')),
|
|
473
459
|
level: executionMode === ExecutionMode.ProductionMode ? 'http' : 'verbose',
|
|
474
460
|
transports: [new ConsoleTransport({
|
|
475
461
|
format: formatForCLI
|
|
@@ -480,7 +466,7 @@ class Logger {
|
|
|
480
466
|
stream: new PassThrough({
|
|
481
467
|
objectMode: true
|
|
482
468
|
}).on('data', data => {
|
|
483
|
-
this.log('http',
|
|
469
|
+
this.log('http', data.trim());
|
|
484
470
|
})
|
|
485
471
|
});
|
|
486
472
|
constructor() {
|
|
@@ -538,7 +524,7 @@ class Logger {
|
|
|
538
524
|
}
|
|
539
525
|
}
|
|
540
526
|
}
|
|
541
|
-
var logger =
|
|
527
|
+
var logger = Reflect.construct(Logger, [], Logger);
|
|
542
528
|
|
|
543
529
|
export { logger as default };
|
|
544
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvaGVscGVycy9sb2dnaW5nLWxldmVsLnRzIiwiLi4vc291cmNlcy9oZWxwZXJzL2NvbG9yLXNjaGVtZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9sYWJlbC1kZWNvcmF0b3IudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2Vycm9yLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9mYXRhbC50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvd2FybmluZy50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvbm90aWNlLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9pbmZvLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9odHRwLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9xdWVyeS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvdmVyYm9zZS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvZGVidWcudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2luZGV4LnRzIiwiLi4vc291cmNlcy9mb3JtYXR0ZXJzL2NvbW1hbmQtbGluZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9jb25zdGFudHMudHMiLCIuLi9zb3VyY2VzL2Zvcm1hdHRlcnMvbW9yZ2FuLnRzIiwiLi4vc291cmNlcy9jbGFzc2VzL2xvZ2dlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBMb2dnaW5nTGV2ZWwgPSB7XG5cdC8vIENyaXRpY2FsIGxldmVscy4gKEl0IHdpbGwgY3Jhc2ggdGhlIHByb2Nlc3MpXG5cdEZhdGFsOiAwLFxuXHRFcnJvcjogMSxcblxuXHQvLyBXYXJuaW5nIGxldmVscy4gKEl0IGp1c3QgcmVwb3J0IHdhcm5pbmcgaW5mb3JtYXRpb24sIG5vdCBjcmFzaCB0aGUgcHJvY2Vzcylcblx0V2FybmluZzogMixcblxuXHQvLyBSZWd1bGFyIGxldmVsIGFuZCBhbGlhc2VzLlxuXHROb3RpY2U6IDMsXG5cdEluZm86IDMsXG5cblx0Ly8gTWF5YmUgc2Vuc2l0aXZlIGxldmVscy4gKEluIGdlbmVyYWwsIGRvZXMgbm90IHVzZWZ1bClcblx0SHR0cDogNCxcblx0UXVlcnk6IDQsXG5cblx0Ly8gTG91ZCBsZXZlbHMuXG5cdFZlcmJvc2U6IDUsXG5cdERlYnVnOiA1LFxufSBhcyBjb25zdFxuXG50eXBlIExvZ2dpbmdMZXZlbCA9IHR5cGVvZiBMb2dnaW5nTGV2ZWxba2V5b2YgdHlwZW9mIExvZ2dpbmdMZXZlbF1cblxuZXhwb3J0IGRlZmF1bHQgTG9nZ2luZ0xldmVsXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmdSZ2IyNCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG50eXBlIENvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gc3RyaW5nXG5cbi8vIENvbnN0YW50cy5cbmNvbnN0IGNvbG9yaXplck1hcCA9IG5ldyBNYXA8bnVtYmVyLCBDb2xvcml6ZXI+KClcblxuLy8gSGVscGVycy5cbmZ1bmN0aW9uIGNyZWF0ZVNjaGVtZShvcHRpb25zOiB7IGJhY2tncm91bmQ6IENvbG9yVmFsdWUsIGZvcmVncm91bmQ6IENvbG9yVmFsdWUgfSk6IG51bWJlciB7XG5cdGNvbnN0IG5leHRJbmRleCA9IGNvbG9yaXplck1hcC5zaXplXG5cdGNvbnN0IGNvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gYmdSZ2IyNChyZ2IyNChzdHJpbmcsIG9wdGlvbnMuZm9yZWdyb3VuZCksIG9wdGlvbnMuYmFja2dyb3VuZClcblxuXHRjb2xvcml6ZXJNYXAuc2V0KG5leHRJbmRleCwgY29sb3JpemVyKVxuXG5cdHJldHVybiBuZXh0SW5kZXhcbn1cblxuLy8gQ29sb3IgZGVmaW5pdGlvbnMuXG5jb25zdCBDb2xvclZhbHVlID0ge1xuXHQvLyBCYXNpYyBjb2xvcnMuXG5cdFdoaXRlOiAweEZGRkZGRixcblx0R3JheTogMHg4MDgwODAsXG5cdEJsYWNrOiAweDAwMDAwMCxcblxuXHQvLyBTcGVjaWFsaXplZCBjb2xvcnMuXG5cdENyaXRpY2FsOiAweEQ2MzAzMSxcblx0V2FybmluZzogMHhGRENCNkUsXG5cdFJlZ3VsYXI6IDB4MDk4NEUzLFxuXHRIdHRwOiAweDZBQjA0Qyxcblx0UXVlcnk6IDB4Mzk5QUYzLFxufSBhcyBjb25zdFxuXG50eXBlIENvbG9yVmFsdWUgPSB0eXBlb2YgQ29sb3JWYWx1ZVtrZXlvZiB0eXBlb2YgQ29sb3JWYWx1ZV1cblxuY29uc3QgQ29sb3JTY2hlbWUgPSB7XG5cdENyaXRpY2FsOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQ3JpdGljYWwsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0V2FybmluZzogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLldhcm5pbmcsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UmVndWxhcjogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLlJlZ3VsYXIsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5XaGl0ZSxcblx0fSksXG5cblx0SHR0cDogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLkh0dHAsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UXVlcnk6IGNyZWF0ZVNjaGVtZSh7XG5cdFx0YmFja2dyb3VuZDogQ29sb3JWYWx1ZS5RdWVyeSxcblx0XHRmb3JlZ3JvdW5kOiBDb2xvclZhbHVlLkJsYWNrLFxuXHR9KSxcblxuXHRMb3VkOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQmxhY2ssXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5HcmF5LFxuXHR9KSxcbn0gYXMgY29uc3RcblxudHlwZSBDb2xvclNjaGVtZSA9IHR5cGVvZiBDb2xvclNjaGVtZVtrZXlvZiB0eXBlb2YgQ29sb3JTY2hlbWVdXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFsa09mKGNvbG9yU2V0OiBDb2xvclNjaGVtZSk6IENvbG9yaXplciB7XG5cdHJldHVybiBjb2xvcml6ZXJNYXAuZ2V0KGNvbG9yU2V0KSA/PyAoKHN0cmluZzogc3RyaW5nKSA9PiBzdHJpbmcpXG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU2NoZW1lXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYm9sZCB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBDb2xvclNjaGVtZSwgeyBnZXRDaGFsa09mIH0gZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuXG4vLyBDb25zdGFudHMuXG5jb25zdCB7IGlzVFRZIH0gPSBwcm9jZXNzLnN0ZG91dFxuY29uc3QgaXNOb3RPbkNMSSA9ICFpc1RUWVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWNvcmF0ZUxhYmVsPFQgZXh0ZW5kcyBzdHJpbmc+KGxhYmVsOiBULCBzY2hlbWU6IENvbG9yU2NoZW1lKTogVCB7XG5cdGlmIChpc05vdE9uQ0xJKSByZXR1cm4gbGFiZWxcblxuXHRjb25zdCBjb2xvcml6ZSA9IGdldENoYWxrT2Yoc2NoZW1lKVxuXHRjb25zdCBkZWNvcmF0ZWRMYWJlbCA9IGJvbGQoY29sb3JpemUoYCAke2xhYmVsfSBgKSlcblxuXHRyZXR1cm4gZGVjb3JhdGVkTGFiZWwgYXMgVFxufVxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBwcm9jZXNzLCB7IHZlcnNpb24gfSBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmx1ZSwgZ3JheSwgYm9sZCwgdW5kZXJsaW5lIH0gZnJvbSAnQHN0ZC9mbXQvY29sb3JzJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTG9nZ2luZ0RhdGEgPSB7IGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9ICYgUmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+XG50eXBlIEhhbmRsZWREYXRhID0geyBsYWJlbDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcgfVxuXG4vLyBDb25zdGFudHMuXG5jb25zdCByb290UGF0aCA9IHByb2Nlc3MuY3dkKClcbmNvbnN0IGNvbmp1bmN0aW9uID0gYCAke2JsdWUoJ+KUgOKUgCcpfSBgXG5jb25zdCBzcGxhdDogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbC5mb3IoJ3NwbGF0JylcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2Vycm9yJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkVycm9yXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdFUlJPUicsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5mdW5jdGlvbiBzaW1wbGlmeURhdGFVUkkoZGF0YVVSSTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgWyAsIGFjdHVhbENvbnRlbnQgXSA9IGRhdGFVUkkuc3BsaXQoJzonKVxuXHRjb25zdCBwaXZvdCA9IGFjdHVhbENvbnRlbnQuaW5kZXhPZignLCcpICsgMVxuXHRjb25zdCBtaW1lSW5kaWNhdG9yID0gYWN0dWFsQ29udGVudC5zbGljZSgwLCBwaXZvdClcblx0Y29uc3QgY29udGVudFByZWZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UocGl2b3QsIHBpdm90ICsgNClcblx0Y29uc3QgY29udGVudFN1ZmZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UoLTQpXG5cblx0cmV0dXJuIGBkYXRhOiR7bWltZUluZGljYXRvciArIGNvbnRlbnRQcmVmaXh9Li4uJHtjb250ZW50U3VmZml4fWBcbn1cblxuZnVuY3Rpb24gaXNEYXRhVVJJKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoJ2RhdGE6Jylcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZU9yRGF0YVVSSShmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBwYXRoLmlzQWJzb2x1dGUoZmlsZW5hbWUpIHx8IGlzRGF0YVVSSShmaWxlbmFtZSlcbn1cblxuZnVuY3Rpb24gbWFwTG9jYXRpb25PZkVycm9yVGhyb3duKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0ID0gcGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpXG5cblx0aWYgKGlzRGF0YVVSSShmaWxlbmFtZSkpIHtcblx0XHR0YXJnZXQgPSBncmF5KHNpbXBsaWZ5RGF0YVVSSShmaWxlbmFtZSkpXG5cdH0gZWxzZSBpZiAodGFyZ2V0LmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSkge1xuXHRcdHRhcmdldCA9IGdyYXkoXG5cdFx0XHR0YXJnZXQuc2xpY2UodGFyZ2V0Lmxhc3RJbmRleE9mKCdub2RlX21vZHVsZXMnKSksXG5cdFx0KS5yZXBsYWNlKFxuXHRcdFx0L25vZGVfbW9kdWxlc1tcXFxcL10oKD86QFteXFxcXC9dK1tcXFxcL10pP1teXFxcXC9dKykoLiopLyxcblx0XHRcdChfLCBtb2R1bGVOYW1lOiBzdHJpbmcsIHRyYWlsaW5nOiBzdHJpbmcpID0+IChcblx0XHRcdFx0YG5vZGVfbW9kdWxlcyR7cGF0aC5zZXB9JHtib2xkKHVuZGVybGluZShtb2R1bGVOYW1lKSl9JHtncmF5KHRyYWlsaW5nKX1gXG5cdFx0XHQpLFxuXHRcdClcblx0fSBlbHNlIHtcblx0XHR0YXJnZXQgPSBgJHtncmF5KHBhdGguZGlybmFtZSh0YXJnZXQpICsgcGF0aC5zZXApfSR7Ym9sZCh1bmRlcmxpbmUocGF0aC5iYXNlbmFtZSh0YXJnZXQpKSl9YFxuXHR9XG5cblx0cmV0dXJuIHRhcmdldFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHsgW3NwbGF0XTogWyBlcnJvciBdID0gW10gfSA9IGRhdGEgYXMgYW55XG5cblx0aWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdH1cblxuXHRjb25zdCB7IG5hbWU6IGVycm9yTmFtZSwgbWVzc2FnZSwgc3RhY2s6IHJhd1N0YWNrID0gJycgfSA9IGVycm9yXG5cblx0Y29uc3Qgc3RhY2sgPSByYXdTdGFja1xuXHRcdC5zbGljZShlcnJvck5hbWUubGVuZ3RoICsgbWVzc2FnZS5sZW5ndGggKyAzKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9eXFxzK2F0IC9nLCAnJykpXG5cdFx0Lm1hcChsaW5lID0+IChpc0Fic29sdXRlT3JEYXRhVVJJKGxpbmUpID8gYDxhbm9ueW1vdXM+JHtjb25qdW5jdGlvbn0ke21hcExvY2F0aW9uT2ZFcnJvclRocm93bihsaW5lKX1gIDogbGluZSkpXG5cdFx0Lm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXiguKykgXFwoKC4rKVxcKSQvLCAoXywgY29udGV4dE5hbWU6IHN0cmluZywgcmF3TG9jYXRpb246IHN0cmluZykgPT4ge1xuXHRcdFx0bGV0IGxvY2F0aW9uID0gJydcblxuXHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRjYXNlIChyYXdMb2NhdGlvbiA9PT0gJzxhbm9ueW1vdXM+Jyk6IHtcblx0XHRcdFx0bG9jYXRpb24gPSBncmF5KHJhd0xvY2F0aW9uKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKGlzRGF0YVVSSShyYXdMb2NhdGlvbikpOiB7XG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShzaW1wbGlmeURhdGFVUkkocmF3TG9jYXRpb24pKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKHJhd0xvY2F0aW9uLnN0YXJ0c1dpdGgoJ25vZGU6JykpOiB7XG5cdFx0XHRcdGNvbnN0IFsgZmlsZW5hbWUsIG9jY3VycmVkTGluZSBdID0gcmF3TG9jYXRpb24uc2xpY2UoNSkuc3BsaXQoJzonKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShgaHR0cHM6Ly9naXRodWIuY29tLyR7Ym9sZCh1bmRlcmxpbmUoJ25vZGVqcycpKX0vbm9kZS9ibG9iLyR7dmVyc2lvbn0vbGliLyR7ZmlsZW5hbWV9LmpzI0wke29jY3VycmVkTGluZX1gKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0Y29uc3QgWyBmaWxlbmFtZSwgb2NjdXJyZWRMaW5lLCBvY2N1cnJlZENvbHVtbiBdID0gcmF3TG9jYXRpb24uc3BsaXQoJzonKVxuXG5cdFx0XHRcdGlmICghcGF0aC5pc0Fic29sdXRlKGZpbGVuYW1lKSkgYnJlYWtcblxuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSBtYXBMb2NhdGlvbk9mRXJyb3JUaHJvd24ocGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpKVxuXHRcdFx0XHRjb25zdCB0cmFpbGluZyA9IGdyYXkoYDoke29jY3VycmVkTGluZX06JHtvY2N1cnJlZENvbHVtbn1gKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gdGFyZ2V0ICsgdHJhaWxpbmdcblx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGAke2NvbnRleHROYW1lfSR7Y29uanVuY3Rpb259JHtsb2NhdGlvbn1gXG5cdFx0fSkpXG5cdFx0LmpvaW4oJ1xcbicpXG5cblx0Y29uc3QgZGVjb3JhdGVkTGFiZWwgPSBkZWNvcmF0ZUxhYmVsKGVycm9yTmFtZSwgQ29sb3JTY2hlbWUuQ3JpdGljYWwpXG5cdGNvbnN0IHBheWxvYWQgPSBgJHttZXNzYWdlfVxcblxcbiR7c3RhY2t9XFxuYFxuXG5cdHJldHVybiB7IGxhYmVsOiBkZWNvcmF0ZWRMYWJlbCwgcGF5bG9hZCB9XG59XG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2ZhdGFsJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkZhdGFsXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdGQVRBTCcsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5leHBvcnQgeyBkZWZhdWx0IH0gZnJvbSAnI2hhbmRsZXJzL2Vycm9yJyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtZXhwb3J0c1xuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd3YXJuaW5nJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLldhcm5pbmdcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1dBUk5JTkcnLCBDb2xvclNjaGVtZS5XYXJuaW5nKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ25vdGljZSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5Ob3RpY2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ05PVElDRScsIENvbG9yU2NoZW1lLlJlZ3VsYXIpXG5cbmV4cG9ydCBkZWZhdWx0IG51bGxcbiIsIi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBIYW5kbGVyIG1ldGFkYXRhLlxuZXhwb3J0IGNvbnN0IG5hbWUgPSAnaW5mbydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5JbmZvXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdJTkZPJywgQ29sb3JTY2hlbWUuUmVndWxhcilcblxuZXhwb3J0IGRlZmF1bHQgbnVsbFxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdodHRwJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkh0dHBcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ0hUVFAnLCBDb2xvclNjaGVtZS5IdHRwKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIaWdobGlnaHQuanNcbmltcG9ydCB7IGhpZ2hsaWdodCB9IGZyb20gJ2NsaS1oaWdobGlnaHQnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdxdWVyeSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5RdWVyeVxuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnUVVFUlknLCBDb2xvclNjaGVtZS5RdWVyeSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGFuZGxlKGRhdGE6IExvZ2dpbmdEYXRhKTogSGFuZGxlZERhdGEgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4geyBsYWJlbCwgcGF5bG9hZDogaGlnaGxpZ2h0KGRhdGEubWVzc2FnZSwgeyBsYW5ndWFnZTogJ3NxbCcgfSkgfVxufVxuIiwiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB7IGdyYXkgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd2ZXJib3NlJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLlZlcmJvc2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1ZFUkJPU0UnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiB7IGxhYmVsLCBwYXlsb2FkOiBncmF5KGRhdGEubWVzc2FnZSkgfVxufVxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdkZWJ1ZydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5EZWJ1Z1xuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnREVCVUcnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIYW5kbGVyIGltcGxlbWVudGF0aW9ucy5cbmltcG9ydCAqIGFzIEZhdGFsSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvZmF0YWwnXG5pbXBvcnQgKiBhcyBFcnJvckhhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL2Vycm9yJ1xuaW1wb3J0ICogYXMgV2FybmluZ0hhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL3dhcm5pbmcnXG5pbXBvcnQgKiBhcyBOb3RpY2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9ub3RpY2UnXG5pbXBvcnQgKiBhcyBJbmZvSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvaW5mbydcbmltcG9ydCAqIGFzIEh0dHBIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9odHRwJ1xuaW1wb3J0ICogYXMgUXVlcnlIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9xdWVyeSdcbmltcG9ydCAqIGFzIFZlcmJvc2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy92ZXJib3NlJ1xuaW1wb3J0ICogYXMgRGVidWdIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9kZWJ1ZydcblxuY29uc3QgaGFuZGxlcnMgPSBbXG5cdEZhdGFsSGFuZGxlcixcblx0RXJyb3JIYW5kbGVyLFxuXHRXYXJuaW5nSGFuZGxlcixcblx0Tm90aWNlSGFuZGxlcixcblx0SW5mb0hhbmRsZXIsXG5cdEh0dHBIYW5kbGVyLFxuXHRRdWVyeUhhbmRsZXIsXG5cdFZlcmJvc2VIYW5kbGVyLFxuXHREZWJ1Z0hhbmRsZXIsXG5dXG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbE5hbWUgPSAodHlwZW9mIGhhbmRsZXJzIGV4dGVuZHMgKGluZmVyIFQpW10gPyBUIDogbmV2ZXIpWyduYW1lJ11cbmV4cG9ydCBkZWZhdWx0IGhhbmRsZXJzXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgZ3JheSB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcbmltcG9ydCByVHJhY2VyIGZyb20gJ2Nscy1ydHJhY2VyJ1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbidcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3dpbnN0b24nXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0LnByaW50ZihkYXRhID0+IHtcblx0Y29uc3QgdGltZXN0YW1wID0gZ3JheShEYXRlVGltZS5ub3coKS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IHRydWUgfSkpXG5cdGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gZGF0YS5sZXZlbClcblx0Y29uc3QgZmFsbGJhY2sgPSB7IGxhYmVsOiBoYW5kbGVyPy5sYWJlbCwgcGF5bG9hZDogZGF0YS5tZXNzYWdlIH1cblx0Y29uc3QgcGVyZm9ybUhhbmRsZSA9IGhhbmRsZXI/LmRlZmF1bHQgPz8gKCgpOiB0eXBlb2YgZmFsbGJhY2sgPT4gZmFsbGJhY2spXG5cblx0Ly8gRXhlY3V0ZSBoYW5kbGVyIGFuZCB0aGVuLCBnZXQgZGVjb3JhdGVkIHBheWxvYWQuXG5cdGNvbnN0IHsgbGFiZWwsIHBheWxvYWQgfSA9IFJlZmxlY3QuYXBwbHkocGVyZm9ybUhhbmRsZSwgdW5kZWZpbmVkLCBbIGRhdGEgXSkgPz8gZmFsbGJhY2tcblxuXHRsZXQgZXh0cmFGaW5nZXJwcmludDogc3RyaW5nIHwgdW5kZWZpbmVkXG5cblx0aWYgKGhhbmRsZXI/LmxldmVsID09PSBMb2dnaW5nTGV2ZWwuSHR0cCkge1xuXHRcdGV4dHJhRmluZ2VycHJpbnQgPSBkYXRhLnRyYW5zYWN0aW9uSWRcblx0XHRcdD8gYChUcmFuc2FjdGlvbi1JRCA9ICR7ZGF0YS50cmFuc2FjdGlvbklkIGFzIHN0cmluZ30pYFxuXHRcdFx0OiBgKFJlcXVlc3QtSUQgPSAke3JUcmFjZXIuaWQoKSBhcyBzdHJpbmd9KWBcblx0fVxuXG5cdHJldHVybiBgJHtsYWJlbCBhcyBzdHJpbmd9ICR7dGltZXN0YW1wfSR7ZXh0cmFGaW5nZXJwcmludCA/IGAgJHtleHRyYUZpbmdlcnByaW50fWAgOiAnJ31cXG4ke3BheWxvYWQgYXMgc3RyaW5nfWBcbn0pXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgY2x1c3RlciBmcm9tICdjbHVzdGVyJ1xuaW1wb3J0IHsgZW52IGFzIGVudmlyb25tZW50cyB9IGZyb20gJ3Byb2Nlc3MnXG5pbXBvcnQgeyBpc01haW5UaHJlYWQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBjb25zdCBFeGVjdXRpb25Nb2RlID0ge1xuXHREZXZlbG9wbWVudE1vZGU6ICdkZXZlbG9wbWVudCcsXG5cdFByb2R1Y3Rpb25Nb2RlOiAncHJvZHVjdGlvbicsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBDbHVzdGVyaW5nTW9kZSA9IHtcblx0TWFzdGVyUHJvY2VzczogMCxcblx0V29ya2VyUHJvY2VzczogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFRocmVhZGluZ01vZGUgPSB7XG5cdE1haW5UaHJlYWQ6IDAsXG5cdFdvcmtlclRocmVhZDogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgRXhlY3V0aW9uTW9kZSA9IHR5cGVvZiBFeGVjdXRpb25Nb2RlW2tleW9mIHR5cGVvZiBFeGVjdXRpb25Nb2RlXVxuZXhwb3J0IHR5cGUgQ2x1c3RlcmluZ01vZGUgPSB0eXBlb2YgQ2x1c3RlcmluZ01vZGVba2V5b2YgdHlwZW9mIENsdXN0ZXJpbmdNb2RlXVxuZXhwb3J0IHR5cGUgVGhyZWFkaW5nTW9kZSA9IHR5cGVvZiBUaHJlYWRpbmdNb2RlW2tleW9mIHR5cGVvZiBUaHJlYWRpbmdNb2RlXVxuXG4vLyBFeHBvcnRpbmdzLlxuZXhwb3J0IGNvbnN0IGV4ZWN1dGlvbk1vZGUgPSBlbnZpcm9ubWVudHMuTk9ERV9FTlYgYXMgRXhlY3V0aW9uTW9kZSA/PyBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZVxuXG5leHBvcnQgY29uc3QgY2x1c3RlcmluZ01vZGU6IENsdXN0ZXJpbmdNb2RlID0gY2x1c3Rlci5pc1ByaW1hcnkgPz8gY2x1c3Rlci5pc01hc3RlclxuXHQ/IENsdXN0ZXJpbmdNb2RlLk1hc3RlclByb2Nlc3Ncblx0OiBDbHVzdGVyaW5nTW9kZS5Xb3JrZXJQcm9jZXNzXG5cbmV4cG9ydCBjb25zdCB0aHJlYWRpbmdNb2RlOiBUaHJlYWRpbmdNb2RlID0gaXNNYWluVGhyZWFkXG5cdD8gVGhyZWFkaW5nTW9kZS5NYWluVGhyZWFkXG5cdDogVGhyZWFkaW5nTW9kZS5Xb3JrZXJUaHJlYWRcbiIsIi8vIE5vZGUuanMgYnVpbHQtaW4gQVBJcy5cbmltcG9ydCB7XG5cdFNUQVRVU19DT0RFUyxcblx0SW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LFxuXHRTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ2h0dHAnXG5cbi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgbW9yZ2FuLCB7IHR5cGUgVG9rZW5JbmRleGVyIH0gZnJvbSAnbW9yZ2FuJ1xuaW1wb3J0IHsgZ3JlZW4sIG1hZ2VudGEsIHJlZCwgZ3JheSwgYm9sZCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5pbXBvcnQgeyBmb3JtYXQgYXMgcHJldHR5Qnl0ZXMgfSBmcm9tICdAc3RkL2ZtdC9ieXRlcydcbmltcG9ydCB7IGZvcm1hdCBhcyBwcmV0dHlNcyB9IGZyb20gJ0BzdGQvZm10L2R1cmF0aW9uJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IHsgRXhlY3V0aW9uTW9kZSwgZXhlY3V0aW9uTW9kZSB9IGZyb20gJyNoZWxwZXJzL2NvbnN0YW50cydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmRlY2xhcmUgbW9kdWxlICdtb3JnYW4nIHtcblx0Y29uc3QgY29tYmluZWQ6IG1vcmdhbi5Gb3JtYXRGblxufVxuXG4vLyBIZWxwZXJzLlxuZnVuY3Rpb24gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGU6IGtleW9mIHR5cGVvZiBTVEFUVVNfQ09ERVMpOiBzdHJpbmcge1xuXHRjb25zdCBncm91cE9mQ29kZSA9IE1hdGguZmxvb3IoTnVtYmVyKHN0YXR1c0NvZGUpIC8gMTAwKSAqIDEwMFxuXHRjb25zdCBiYXNlTWVzc2FnZSA9IGAke3N0YXR1c0NvZGV9ICR7U1RBVFVTX0NPREVTW3N0YXR1c0NvZGVdIGFzIHN0cmluZ31gXG5cblx0c3dpdGNoIChncm91cE9mQ29kZSkge1xuXHRjYXNlIDIwMDoge1xuXHRcdHJldHVybiBncmVlbihiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGNhc2UgMzAwOiB7XG5cdFx0cmV0dXJuIG1hZ2VudGEoYmFzZU1lc3NhZ2UpXG5cdH1cblx0Y2FzZSA0MDA6XG5cdGNhc2UgNTAwOiB7XG5cdFx0cmV0dXJuIHJlZChiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGRlZmF1bHQ6IHtcblx0XHRyZXR1cm4gZ3JheShiYXNlTWVzc2FnZSlcblx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEZvck1vcmdhbih0b2tlbnM6IFRva2VuSW5kZXhlciwgcmVxdWVzdDogSHR0cFJlcXVlc3QsIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpOiBzdHJpbmcge1xuXHRmdW5jdGlvbiBfKHRva2VuOiBzdHJpbmcsIC4uLnN1YkFyZ3M6IGFueVtdKTogc3RyaW5nIHwgdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcblx0XHRyZXR1cm4gdG9rZW5zW3Rva2VuXShyZXF1ZXN0LCByZXNwb25zZSwgLi4uc3ViQXJncylcblx0fVxuXG5cdC8vIFJhdyB2YWx1ZXMuXG5cdGNvbnN0IG1ldGhvZCA9IF8oJ21ldGhvZCcpXG5cdGNvbnN0IFVSTCA9IF8oJ3VybCcpXG5cdGNvbnN0IGh0dHBWZXJzaW9uID0gYEhUVFAvJHtfKCdodHRwLXZlcnNpb24nKSBhcyBzdHJpbmd9YFxuXHRjb25zdCBzdGF0dXNDb2RlID0gTnVtYmVyKF8oJ3N0YXR1cycpKVxuXHRjb25zdCBjb250ZW50TGVuZ3RoID0gTnVtYmVyKF8oJ3JlcycsICdjb250ZW50LWxlbmd0aCcpID8/IC0xKVxuXHRjb25zdCByZXNwb25zZVRpbWUgPSBOdW1iZXIoXygncmVzcG9uc2UtdGltZScpID8/IC0xKVxuXG5cdC8vIERlY29yYXRlZCB2YWx1ZXMuXG5cdGNvbnN0ICRtZXRob2QgPSBib2xkKG1ldGhvZCA/PyAnJylcblx0Y29uc3QgJHZlcnNpb24gPSByZ2IyNChodHRwVmVyc2lvbiwgMHg2MkIxRkYpXG5cdGNvbnN0ICRzdGF0dXNDb2RlID0gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGUpXG5cdGNvbnN0ICRjb250ZW50TGVuZ3RoID0gY29udGVudExlbmd0aCA+PSAwID8gcHJldHR5Qnl0ZXMoY29udGVudExlbmd0aCkgOiAnPyBCJ1xuXHRjb25zdCAkcmVzcG9uc2VUaW1lID0gcmVzcG9uc2VUaW1lID49IDAgPyBwcmV0dHlNcyhyZXNwb25zZVRpbWUsIHsgaWdub3JlWmVybzogdHJ1ZSB9KSA6ICcnXG5cblx0Ly8gQWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cblx0Y29uc3QgbWV0YWRhdGEgPSBgKCR7JGNvbnRlbnRMZW5ndGh9LCAkeyRyZXNwb25zZVRpbWV9KWBcblxuXHRyZXR1cm4gW1xuXHRcdGDihpIgJHskbWV0aG9kfSAke1VSTCBhcyBzdHJpbmd9ICR7JHZlcnNpb259YCxcblx0XHRg4oaQICR7JHZlcnNpb259ICR7JHN0YXR1c0NvZGV9ICR7bWV0YWRhdGF9YCxcblx0XS5qb2luKCdcXG4nKVxufVxuXG5leHBvcnQgZGVmYXVsdCBleGVjdXRpb25Nb2RlID09PSBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZSA/IGZvcm1hdEZvck1vcmdhbiA6IG1vcmdhbi5jb21iaW5lZFxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHsgSW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LCBTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHsgUGFzc1Rocm91Z2ggfSBmcm9tICdzdHJlYW0nXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nXG5pbXBvcnQgKiBhcyB3aW5zdG9uIGZyb20gJ3dpbnN0b24nXG5pbXBvcnQgdHlwZSB7IGxldmVsIGFzIExvZ2dpbmdMZXZlbCwgTG9nZ2VyIGFzIEJhc2VMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuXG4vLyBGb3JtYXR0ZXJzLlxuaW1wb3J0IGZvcm1hdEZvckNMSSBmcm9tICcjZm9ybWF0dGVycy9jb21tYW5kLWxpbmUnXG5pbXBvcnQgZm9ybWF0Rm9yTW9yZ2FuIGZyb20gJyNmb3JtYXR0ZXJzL21vcmdhbidcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB7IEV4ZWN1dGlvbk1vZGUsIGV4ZWN1dGlvbk1vZGUgfSBmcm9tICcjaGVscGVycy9jb25zdGFudHMnXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IHR5cGUgeyBMb2dnaW5nTGV2ZWxOYW1lIH0gZnJvbSAnI2hhbmRsZXJzL2luZGV4J1xuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTW9yZ2FuID0gKHJlcTogSHR0cFJlcXVlc3QsIHJlczogSHR0cFJlc3BvbnNlLCBuZXh0OiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZFxuXG4vLyBUcmFuc3BvcnRzLlxuY29uc3QgeyBDb25zb2xlOiBDb25zb2xlVHJhbnNwb3J0IH0gPSB3aW5zdG9uLnRyYW5zcG9ydHNcblxuY2xhc3MgTG9nZ2VyIHtcblx0c3RhdGljICNpbnN0YW5jZT86IExvZ2dlclxuXG5cdCNsb2dnZXI6IEJhc2VMb2dnZXIgPSB3aW5zdG9uLmNyZWF0ZUxvZ2dlcih7XG5cdFx0bGV2ZWxzOiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRoYW5kbGVyc1xuXHRcdFx0XHQubWFwKCh7IG5hbWUsIGxldmVsIH0pID0+IFsgbmFtZSwgbGV2ZWwgXSBhcyBjb25zdClcblx0XHRcdFx0LmZpbHRlcigoWyAsIGxldmVsIF0pID0+IHR5cGVvZiBsZXZlbCA9PT0gJ251bWJlcicpLFxuXHRcdCksXG5cblx0XHRsZXZlbDogKGV4ZWN1dGlvbk1vZGUgPT09IEV4ZWN1dGlvbk1vZGUuUHJvZHVjdGlvbk1vZGUgPyAnaHR0cCcgOiAndmVyYm9zZScpLFxuXG5cdFx0dHJhbnNwb3J0czogW1xuXHRcdFx0bmV3IENvbnNvbGVUcmFuc3BvcnQoeyBmb3JtYXQ6IGZvcm1hdEZvckNMSSB9KSxcblx0XHRdLFxuXG5cdFx0ZXhpdE9uRXJyb3I6IGZhbHNlLFxuXHR9KVxuXG5cdCNtb3JnYW46IE1vcmdhbiA9IG1vcmdhbihmb3JtYXRGb3JNb3JnYW4sIHtcblx0XHRzdHJlYW06IG5ldyBQYXNzVGhyb3VnaCh7IG9iamVjdE1vZGU6IHRydWUgfSkub24oJ2RhdGEnLCAoZGF0YTogc3RyaW5nKSA9PiB7XG5cdFx0XHR0aGlzLmxvZygnaHR0cCcsIGRhdGEudHJpbSgpKVxuXHRcdH0pLFxuXHR9KVxuXG5cdHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKG5ldy50YXJnZXQgIT09IExvZ2dlcikge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgaXMgbm90IGluaGVyaXRhYmxlJylcblx0XHR9XG5cblx0XHRpZiAoTG9nZ2VyLiNpbnN0YW5jZSkge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgY2Fubm90IGJlIGNvbnN0cnVjdGVkIGluIGRpcmVjdGx5Jylcblx0XHR9XG5cblx0XHRMb2dnZXIuI2luc3RhbmNlID0gdGhpc1xuXHR9XG5cblx0LyoqXG5cdCAqIExvZ2dpbmcgbWVzc2FnZSB3aXRoIHNwZWNpZmljIGxldmVsLlxuXHQgKlxuXHQgKiBAcGFyYW0gbGV2ZWxcblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBtZXRhZGF0YS5cblx0ICovXG5cdHB1YmxpYyBsb2cobGV2ZWw6IExvZ2dpbmdMZXZlbE5hbWUsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZFxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIEhUVFAgSS9PLlxuXHQgKlxuXHQgKiBAcGFyYW0gcmVxdWVzdCBOb2RlLmpzIGJ1aWx0LWluIGBJbmNvbWluZ01lc3NhZ2VgIGluc3RhbmNlIGZyb20gYGh0dHBgIG1vZHVsZS5cblx0ICogQHBhcmFtIHJlc3BvbnNlIE5vZGUuanMgYnVpbHQtaW4gYFNlcnZlclJlc3BvbnNlYCBpbnN0YW5jZSBmcm9tIGBodHRwYCBtb2R1bGUuXG5cdCAqL1xuXHRwdWJsaWMgbG9nKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LCByZXNwb25zZTogSHR0cFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPlxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIGVycm9ycyBpbiBkZXRhaWwuXG5cdCAqXG5cdCAqIEBwYXJhbSBlcnJvclxuXHQgKi9cblx0cHVibGljIGxvZyhlcnJvcjogRXJyb3IpOiB2b2lkXG5cblx0cHVibGljIGxvZyguLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbG9nZ2VyID0gdGhpcy4jbG9nZ2VyXG5cdFx0Y29uc3QgZm9ybWF0ID0gdGhpcy4jbW9yZ2FuXG5cblx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRjYXNlIChhcmdzLmxlbmd0aCA+PSAyICYmIGFyZ3NbMF0gaW5zdGFuY2VvZiBIdHRwUmVxdWVzdCAmJiBhcmdzWzFdIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKToge1xuXHRcdFx0Y29uc3QgWyByZXF1ZXN0LCByZXNwb25zZSBdID0gYXJncyBhcyBbIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgXVxuXG5cdFx0XHRyZXR1cm4gcHJvbWlzaWZ5KGZvcm1hdCkocmVxdWVzdCwgcmVzcG9uc2UpXG5cdFx0fVxuXG5cdFx0Y2FzZSAoYXJncy5sZW5ndGggPj0gMSAmJiBhcmdzWzBdIGluc3RhbmNlb2YgRXJyb3IpOiB7XG5cdFx0XHRjb25zdCBbIGVycm9yLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgRXJyb3IsIC4uLnVua25vd25bXSBdXG5cblx0XHRcdGxvZ2dlci5sb2coJ2Vycm9yJywgZXJyb3IubWVzc2FnZSwgZXJyb3IsIC4uLmRhdGEpXG5cblx0XHRcdHJldHVybiB1bmRlZmluZWRcblx0XHR9XG5cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRjb25zdCBbIGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgdHlwZW9mIExvZ2dpbmdMZXZlbCwgc3RyaW5nLCAuLi51bmtub3duW10gXVxuXG5cdFx0XHRsb2dnZXIubG9nKGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhKVxuXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWZsZWN0LmNvbnN0cnVjdChMb2dnZXIsIFtdLCBMb2dnZXIpIGFzIExvZ2dlclxuIl0sIm5hbWVzIjpbIkxvZ2dpbmdMZXZlbCIsIkZhdGFsIiwiRXJyb3IiLCJXYXJuaW5nIiwiTm90aWNlIiwiSW5mbyIsIkh0dHAiLCJRdWVyeSIsIlZlcmJvc2UiLCJEZWJ1ZyIsImNvbG9yaXplck1hcCIsIl9NYXAiLCJjcmVhdGVTY2hlbWUiLCJvcHRpb25zIiwibmV4dEluZGV4Iiwic2l6ZSIsImNvbG9yaXplciIsInN0cmluZyIsImJnUmdiMjQiLCJyZ2IyNCIsImZvcmVncm91bmQiLCJiYWNrZ3JvdW5kIiwic2V0IiwiQ29sb3JWYWx1ZSIsIldoaXRlIiwiR3JheSIsIkJsYWNrIiwiQ3JpdGljYWwiLCJSZWd1bGFyIiwiQ29sb3JTY2hlbWUiLCJMb3VkIiwiZ2V0Q2hhbGtPZiIsImNvbG9yU2V0IiwiZ2V0IiwiaXNUVFkiLCJwcm9jZXNzIiwic3Rkb3V0IiwiaXNOb3RPbkNMSSIsImRlY29yYXRlTGFiZWwiLCJsYWJlbCIsInNjaGVtZSIsImNvbG9yaXplIiwiZGVjb3JhdGVkTGFiZWwiLCJib2xkIiwicm9vdFBhdGgiLCJjd2QiLCJjb25qdW5jdGlvbiIsImJsdWUiLCJzcGxhdCIsIl9TeW1ib2wkZm9yIiwibmFtZSIsImxldmVsIiwic2ltcGxpZnlEYXRhVVJJIiwiZGF0YVVSSSIsImFjdHVhbENvbnRlbnQiLCJzcGxpdCIsInBpdm90IiwiX2luZGV4T2ZJbnN0YW5jZVByb3BlcnR5IiwiY2FsbCIsIm1pbWVJbmRpY2F0b3IiLCJfc2xpY2VJbnN0YW5jZVByb3BlcnR5IiwiY29udGVudFByZWZpeCIsImNvbnRlbnRTdWZmaXgiLCJpc0RhdGFVUkkiLCJmaWxlbmFtZSIsIl9zdGFydHNXaXRoSW5zdGFuY2VQcm9wZXJ0eSIsImlzQWJzb2x1dGVPckRhdGFVUkkiLCJwYXRoIiwiaXNBYnNvbHV0ZSIsIm1hcExvY2F0aW9uT2ZFcnJvclRocm93biIsInRhcmdldCIsInJlbGF0aXZlIiwiZ3JheSIsIl9pbmNsdWRlc0luc3RhbmNlUHJvcGVydHkiLCJfbGFzdEluZGV4T2ZJbnN0YW5jZVByb3BlcnR5IiwicmVwbGFjZSIsIl8iLCJtb2R1bGVOYW1lIiwidHJhaWxpbmciLCJzZXAiLCJ1bmRlcmxpbmUiLCJkaXJuYW1lIiwiYmFzZW5hbWUiLCJoYW5kbGUiLCJkYXRhIiwiX2NvbnRleHQiLCJfY29udGV4dDIiLCJfY29udGV4dDMiLCJlcnJvciIsInVuZGVmaW5lZCIsImVycm9yTmFtZSIsIm1lc3NhZ2UiLCJzdGFjayIsInJhd1N0YWNrIiwiX21hcEluc3RhbmNlUHJvcGVydHkiLCJsZW5ndGgiLCJsaW5lIiwiY29udGV4dE5hbWUiLCJyYXdMb2NhdGlvbiIsImxvY2F0aW9uIiwib2NjdXJyZWRMaW5lIiwidmVyc2lvbiIsIm9jY3VycmVkQ29sdW1uIiwiam9pbiIsInBheWxvYWQiLCJoaWdobGlnaHQiLCJsYW5ndWFnZSIsImhhbmRsZXJzIiwiRmF0YWxIYW5kbGVyIiwiRXJyb3JIYW5kbGVyIiwiV2FybmluZ0hhbmRsZXIiLCJOb3RpY2VIYW5kbGVyIiwiSW5mb0hhbmRsZXIiLCJIdHRwSGFuZGxlciIsIlF1ZXJ5SGFuZGxlciIsIlZlcmJvc2VIYW5kbGVyIiwiRGVidWdIYW5kbGVyIiwiZm9ybWF0IiwicHJpbnRmIiwidGltZXN0YW1wIiwiRGF0ZVRpbWUiLCJub3ciLCJ0b0lTTyIsImluY2x1ZGVPZmZzZXQiLCJoYW5kbGVyIiwiX2ZpbmRJbnN0YW5jZVByb3BlcnR5IiwiZmFsbGJhY2siLCJwZXJmb3JtSGFuZGxlIiwiZGVmYXVsdCIsIl9SZWZsZWN0JGFwcGx5IiwiZXh0cmFGaW5nZXJwcmludCIsInRyYW5zYWN0aW9uSWQiLCJyVHJhY2VyIiwiaWQiLCJFeGVjdXRpb25Nb2RlIiwiRGV2ZWxvcG1lbnRNb2RlIiwiUHJvZHVjdGlvbk1vZGUiLCJDbHVzdGVyaW5nTW9kZSIsIk1hc3RlclByb2Nlc3MiLCJXb3JrZXJQcm9jZXNzIiwiZXhlY3V0aW9uTW9kZSIsImVudmlyb25tZW50cyIsIk5PREVfRU5WIiwiY2x1c3RlciIsImlzUHJpbWFyeSIsImlzTWFzdGVyIiwiZGVjb3JhdGVTdGF0dXNDb2RlIiwic3RhdHVzQ29kZSIsImdyb3VwT2ZDb2RlIiwiTWF0aCIsImZsb29yIiwiTnVtYmVyIiwiYmFzZU1lc3NhZ2UiLCJTVEFUVVNfQ09ERVMiLCJncmVlbiIsIm1hZ2VudGEiLCJyZWQiLCJmb3JtYXRGb3JNb3JnYW4iLCJ0b2tlbnMiLCJyZXF1ZXN0IiwicmVzcG9uc2UiLCJ0b2tlbiIsInN1YkFyZ3MiLCJtZXRob2QiLCJVUkwiLCJodHRwVmVyc2lvbiIsImNvbnRlbnRMZW5ndGgiLCJyZXNwb25zZVRpbWUiLCIkbWV0aG9kIiwiJHZlcnNpb24iLCIkc3RhdHVzQ29kZSIsIiRjb250ZW50TGVuZ3RoIiwicHJldHR5Qnl0ZXMiLCIkcmVzcG9uc2VUaW1lIiwicHJldHR5TXMiLCJpZ25vcmVaZXJvIiwibWV0YWRhdGEiLCJtb3JnYW4iLCJjb21iaW5lZCIsIkNvbnNvbGUiLCJDb25zb2xlVHJhbnNwb3J0Iiwid2luc3RvbiIsInRyYW5zcG9ydHMiLCJMb2dnZXIiLCJjcmVhdGVMb2dnZXIiLCJsZXZlbHMiLCJfT2JqZWN0JGZyb21FbnRyaWVzIiwiX2ZpbHRlckluc3RhbmNlUHJvcGVydHkiLCJmb3JtYXRGb3JDTEkiLCJleGl0T25FcnJvciIsInN0cmVhbSIsIlBhc3NUaHJvdWdoIiwib2JqZWN0TW9kZSIsIm9uIiwibG9nIiwiX3RyaW1JbnN0YW5jZVByb3BlcnR5IiwiY29uc3RydWN0b3IiLCJuZXciLCJSZWZlcmVuY2VFcnJvciIsImFyZ3MiLCJsb2dnZXIiLCJIdHRwUmVxdWVzdCIsIkh0dHBSZXNwb25zZSIsInByb21pc2lmeSIsIl9SZWZsZWN0JGNvbnN0cnVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE1BQU1BLFlBQVksR0FBRztBQUNwQjtBQUNBQyxFQUFBQSxLQUFLLEVBQUUsQ0FBQztBQUNSQyxFQUFBQSxLQUFLLEVBQUUsQ0FBQztBQUVSO0FBQ0FDLEVBQUFBLE9BQU8sRUFBRSxDQUFDO0FBRVY7QUFDQUMsRUFB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
|
|
530
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvaGVscGVycy9sb2dnaW5nLWxldmVsLnRzIiwiLi4vc291cmNlcy9oZWxwZXJzL2NvbG9yLXNjaGVtZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9sYWJlbC1kZWNvcmF0b3IudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2Vycm9yLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9mYXRhbC50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvd2FybmluZy50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvbm90aWNlLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9pbmZvLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9odHRwLnRzIiwiLi4vc291cmNlcy9oYW5kbGVycy9xdWVyeS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvdmVyYm9zZS50cyIsIi4uL3NvdXJjZXMvaGFuZGxlcnMvZGVidWcudHMiLCIuLi9zb3VyY2VzL2hhbmRsZXJzL2luZGV4LnRzIiwiLi4vc291cmNlcy9mb3JtYXR0ZXJzL2NvbW1hbmQtbGluZS50cyIsIi4uL3NvdXJjZXMvaGVscGVycy9jb25zdGFudHMudHMiLCIuLi9zb3VyY2VzL2Zvcm1hdHRlcnMvbW9yZ2FuLnRzIiwiLi4vc291cmNlcy9jbGFzc2VzL2xvZ2dlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBMb2dnaW5nTGV2ZWwgPSB7XG5cdC8vIENyaXRpY2FsIGxldmVscy4gKEl0IHdpbGwgY3Jhc2ggdGhlIHByb2Nlc3MpXG5cdEZhdGFsOiAwLFxuXHRFcnJvcjogMSxcblxuXHQvLyBXYXJuaW5nIGxldmVscy4gKEl0IGp1c3QgcmVwb3J0IHdhcm5pbmcgaW5mb3JtYXRpb24sIG5vdCBjcmFzaCB0aGUgcHJvY2Vzcylcblx0V2FybmluZzogMixcblxuXHQvLyBSZWd1bGFyIGxldmVsIGFuZCBhbGlhc2VzLlxuXHROb3RpY2U6IDMsXG5cdEluZm86IDMsXG5cblx0Ly8gTWF5YmUgc2Vuc2l0aXZlIGxldmVscy4gKEluIGdlbmVyYWwsIGRvZXMgbm90IHVzZWZ1bClcblx0SHR0cDogNCxcblx0UXVlcnk6IDQsXG5cblx0Ly8gTG91ZCBsZXZlbHMuXG5cdFZlcmJvc2U6IDUsXG5cdERlYnVnOiA1LFxufSBhcyBjb25zdFxuXG50eXBlIExvZ2dpbmdMZXZlbCA9IHR5cGVvZiBMb2dnaW5nTGV2ZWxba2V5b2YgdHlwZW9mIExvZ2dpbmdMZXZlbF1cblxuZXhwb3J0IGRlZmF1bHQgTG9nZ2luZ0xldmVsXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmdSZ2IyNCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIFR5cGUgZGVmaW5pdGlvbnMuXG50eXBlIENvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gc3RyaW5nXG5cbi8vIENvbnN0YW50cy5cbmNvbnN0IGNvbG9yaXplck1hcCA9IG5ldyBNYXA8bnVtYmVyLCBDb2xvcml6ZXI+KClcblxuLy8gSGVscGVycy5cbmZ1bmN0aW9uIGNyZWF0ZVNjaGVtZShvcHRpb25zOiB7IGJhY2tncm91bmQ6IENvbG9yVmFsdWUsIGZvcmVncm91bmQ6IENvbG9yVmFsdWUgfSk6IG51bWJlciB7XG5cdGNvbnN0IG5leHRJbmRleCA9IGNvbG9yaXplck1hcC5zaXplXG5cdGNvbnN0IGNvbG9yaXplciA9IChzdHJpbmc6IHN0cmluZykgPT4gYmdSZ2IyNChyZ2IyNChzdHJpbmcsIG9wdGlvbnMuZm9yZWdyb3VuZCksIG9wdGlvbnMuYmFja2dyb3VuZClcblxuXHRjb2xvcml6ZXJNYXAuc2V0KG5leHRJbmRleCwgY29sb3JpemVyKVxuXG5cdHJldHVybiBuZXh0SW5kZXhcbn1cblxuLy8gQ29sb3IgZGVmaW5pdGlvbnMuXG5jb25zdCBDb2xvclZhbHVlID0ge1xuXHQvLyBCYXNpYyBjb2xvcnMuXG5cdFdoaXRlOiAweEZGRkZGRixcblx0R3JheTogMHg4MDgwODAsXG5cdEJsYWNrOiAweDAwMDAwMCxcblxuXHQvLyBTcGVjaWFsaXplZCBjb2xvcnMuXG5cdENyaXRpY2FsOiAweEQ2MzAzMSxcblx0V2FybmluZzogMHhGRENCNkUsXG5cdFJlZ3VsYXI6IDB4MDk4NEUzLFxuXHRIdHRwOiAweDZBQjA0Qyxcblx0UXVlcnk6IDB4Mzk5QUYzLFxufSBhcyBjb25zdFxuXG50eXBlIENvbG9yVmFsdWUgPSB0eXBlb2YgQ29sb3JWYWx1ZVtrZXlvZiB0eXBlb2YgQ29sb3JWYWx1ZV1cblxuY29uc3QgQ29sb3JTY2hlbWUgPSB7XG5cdENyaXRpY2FsOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQ3JpdGljYWwsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0V2FybmluZzogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLldhcm5pbmcsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UmVndWxhcjogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLlJlZ3VsYXIsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5XaGl0ZSxcblx0fSksXG5cblx0SHR0cDogY3JlYXRlU2NoZW1lKHtcblx0XHRiYWNrZ3JvdW5kOiBDb2xvclZhbHVlLkh0dHAsXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5CbGFjayxcblx0fSksXG5cblx0UXVlcnk6IGNyZWF0ZVNjaGVtZSh7XG5cdFx0YmFja2dyb3VuZDogQ29sb3JWYWx1ZS5RdWVyeSxcblx0XHRmb3JlZ3JvdW5kOiBDb2xvclZhbHVlLkJsYWNrLFxuXHR9KSxcblxuXHRMb3VkOiBjcmVhdGVTY2hlbWUoe1xuXHRcdGJhY2tncm91bmQ6IENvbG9yVmFsdWUuQmxhY2ssXG5cdFx0Zm9yZWdyb3VuZDogQ29sb3JWYWx1ZS5HcmF5LFxuXHR9KSxcbn0gYXMgY29uc3RcblxudHlwZSBDb2xvclNjaGVtZSA9IHR5cGVvZiBDb2xvclNjaGVtZVtrZXlvZiB0eXBlb2YgQ29sb3JTY2hlbWVdXG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDaGFsa09mKGNvbG9yU2V0OiBDb2xvclNjaGVtZSk6IENvbG9yaXplciB7XG5cdHJldHVybiBjb2xvcml6ZXJNYXAuZ2V0KGNvbG9yU2V0KSA/PyAoKHN0cmluZzogc3RyaW5nKSA9PiBzdHJpbmcpXG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbG9yU2NoZW1lXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgcHJvY2VzcyBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYm9sZCB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBDb2xvclNjaGVtZSwgeyBnZXRDaGFsa09mIH0gZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuXG4vLyBDb25zdGFudHMuXG5jb25zdCB7IGlzVFRZIH0gPSBwcm9jZXNzLnN0ZG91dFxuY29uc3QgaXNOb3RPbkNMSSA9ICFpc1RUWVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkZWNvcmF0ZUxhYmVsPFQgZXh0ZW5kcyBzdHJpbmc+KGxhYmVsOiBULCBzY2hlbWU6IENvbG9yU2NoZW1lKTogVCB7XG5cdGlmIChpc05vdE9uQ0xJKSByZXR1cm4gbGFiZWxcblxuXHRjb25zdCBjb2xvcml6ZSA9IGdldENoYWxrT2Yoc2NoZW1lKVxuXHRjb25zdCBkZWNvcmF0ZWRMYWJlbCA9IGJvbGQoY29sb3JpemUoYCAke2xhYmVsfSBgKSlcblxuXHRyZXR1cm4gZGVjb3JhdGVkTGFiZWwgYXMgVFxufVxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBwcm9jZXNzLCB7IHZlcnNpb24gfSBmcm9tICdwcm9jZXNzJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgYmx1ZSwgZ3JheSwgYm9sZCwgdW5kZXJsaW5lIH0gZnJvbSAnQHN0ZC9mbXQvY29sb3JzJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTG9nZ2luZ0RhdGEgPSB7IGxldmVsOiBzdHJpbmcsIG1lc3NhZ2U6IHN0cmluZyB9ICYgUmVjb3JkPFByb3BlcnR5S2V5LCBhbnk+XG50eXBlIEhhbmRsZWREYXRhID0geyBsYWJlbDogc3RyaW5nLCBwYXlsb2FkOiBzdHJpbmcgfVxuXG4vLyBDb25zdGFudHMuXG5jb25zdCByb290UGF0aCA9IHByb2Nlc3MuY3dkKClcbmNvbnN0IGNvbmp1bmN0aW9uID0gYCAke2JsdWUoJ+KUgOKUgCcpfSBgXG5jb25zdCBzcGxhdDogdW5pcXVlIHN5bWJvbCA9IFN5bWJvbC5mb3IoJ3NwbGF0JylcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2Vycm9yJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkVycm9yXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdFUlJPUicsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5mdW5jdGlvbiBzaW1wbGlmeURhdGFVUkkoZGF0YVVSSTogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3QgWyAsIGFjdHVhbENvbnRlbnQgXSA9IGRhdGFVUkkuc3BsaXQoJzonKVxuXHRjb25zdCBwaXZvdCA9IGFjdHVhbENvbnRlbnQuaW5kZXhPZignLCcpICsgMVxuXHRjb25zdCBtaW1lSW5kaWNhdG9yID0gYWN0dWFsQ29udGVudC5zbGljZSgwLCBwaXZvdClcblx0Y29uc3QgY29udGVudFByZWZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UocGl2b3QsIHBpdm90ICsgNClcblx0Y29uc3QgY29udGVudFN1ZmZpeCA9IGFjdHVhbENvbnRlbnQuc2xpY2UoLTQpXG5cblx0cmV0dXJuIGBkYXRhOiR7bWltZUluZGljYXRvciArIGNvbnRlbnRQcmVmaXh9Li4uJHtjb250ZW50U3VmZml4fWBcbn1cblxuZnVuY3Rpb24gaXNEYXRhVVJJKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcblx0cmV0dXJuIGZpbGVuYW1lLnN0YXJ0c1dpdGgoJ2RhdGE6Jylcbn1cblxuZnVuY3Rpb24gaXNBYnNvbHV0ZU9yRGF0YVVSSShmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG5cdHJldHVybiBwYXRoLmlzQWJzb2x1dGUoZmlsZW5hbWUpIHx8IGlzRGF0YVVSSShmaWxlbmFtZSlcbn1cblxuZnVuY3Rpb24gbWFwTG9jYXRpb25PZkVycm9yVGhyb3duKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRsZXQgdGFyZ2V0ID0gcGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpXG5cblx0aWYgKGlzRGF0YVVSSShmaWxlbmFtZSkpIHtcblx0XHR0YXJnZXQgPSBncmF5KHNpbXBsaWZ5RGF0YVVSSShmaWxlbmFtZSkpXG5cdH0gZWxzZSBpZiAodGFyZ2V0LmluY2x1ZGVzKCdub2RlX21vZHVsZXMnKSkge1xuXHRcdHRhcmdldCA9IGdyYXkoXG5cdFx0XHR0YXJnZXQuc2xpY2UodGFyZ2V0Lmxhc3RJbmRleE9mKCdub2RlX21vZHVsZXMnKSksXG5cdFx0KS5yZXBsYWNlKFxuXHRcdFx0L25vZGVfbW9kdWxlc1tcXFxcL10oKD86QFteXFxcXC9dK1tcXFxcL10pP1teXFxcXC9dKykoLiopLyxcblx0XHRcdChfLCBtb2R1bGVOYW1lOiBzdHJpbmcsIHRyYWlsaW5nOiBzdHJpbmcpID0+IChcblx0XHRcdFx0YG5vZGVfbW9kdWxlcyR7cGF0aC5zZXB9JHtib2xkKHVuZGVybGluZShtb2R1bGVOYW1lKSl9JHtncmF5KHRyYWlsaW5nKX1gXG5cdFx0XHQpLFxuXHRcdClcblx0fSBlbHNlIHtcblx0XHR0YXJnZXQgPSBgJHtncmF5KHBhdGguZGlybmFtZSh0YXJnZXQpICsgcGF0aC5zZXApfSR7Ym9sZCh1bmRlcmxpbmUocGF0aC5iYXNlbmFtZSh0YXJnZXQpKSl9YFxuXHR9XG5cblx0cmV0dXJuIHRhcmdldFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdGNvbnN0IHsgW3NwbGF0XTogWyBlcnJvciBdID0gW10gfSA9IGRhdGEgYXMgYW55XG5cblx0aWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikpIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdH1cblxuXHRjb25zdCB7IG5hbWU6IGVycm9yTmFtZSwgbWVzc2FnZSwgc3RhY2s6IHJhd1N0YWNrID0gJycgfSA9IGVycm9yXG5cblx0Y29uc3Qgc3RhY2sgPSByYXdTdGFja1xuXHRcdC5zbGljZShlcnJvck5hbWUubGVuZ3RoICsgbWVzc2FnZS5sZW5ndGggKyAzKVxuXHRcdC5zcGxpdCgnXFxuJylcblx0XHQubWFwKGxpbmUgPT4gbGluZS5yZXBsYWNlKC9eXFxzK2F0IC9nLCAnJykpXG5cdFx0Lm1hcChsaW5lID0+IChpc0Fic29sdXRlT3JEYXRhVVJJKGxpbmUpID8gYDxhbm9ueW1vdXM+JHtjb25qdW5jdGlvbn0ke21hcExvY2F0aW9uT2ZFcnJvclRocm93bihsaW5lKX1gIDogbGluZSkpXG5cdFx0Lm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXiguKykgXFwoKC4rKVxcKSQvLCAoXywgY29udGV4dE5hbWU6IHN0cmluZywgcmF3TG9jYXRpb246IHN0cmluZykgPT4ge1xuXHRcdFx0bGV0IGxvY2F0aW9uID0gJydcblxuXHRcdFx0c3dpdGNoICh0cnVlKSB7XG5cdFx0XHRjYXNlIChyYXdMb2NhdGlvbiA9PT0gJzxhbm9ueW1vdXM+Jyk6IHtcblx0XHRcdFx0bG9jYXRpb24gPSBncmF5KHJhd0xvY2F0aW9uKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKGlzRGF0YVVSSShyYXdMb2NhdGlvbikpOiB7XG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShzaW1wbGlmeURhdGFVUkkocmF3TG9jYXRpb24pKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGNhc2UgKHJhd0xvY2F0aW9uLnN0YXJ0c1dpdGgoJ25vZGU6JykpOiB7XG5cdFx0XHRcdGNvbnN0IFsgZmlsZW5hbWUsIG9jY3VycmVkTGluZSBdID0gcmF3TG9jYXRpb24uc2xpY2UoNSkuc3BsaXQoJzonKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gZ3JheShgaHR0cHM6Ly9naXRodWIuY29tLyR7Ym9sZCh1bmRlcmxpbmUoJ25vZGVqcycpKX0vbm9kZS9ibG9iLyR7dmVyc2lvbn0vbGliLyR7ZmlsZW5hbWV9LmpzI0wke29jY3VycmVkTGluZX1gKVxuXG5cdFx0XHRcdGJyZWFrXG5cdFx0XHR9XG5cblx0XHRcdGRlZmF1bHQ6IHtcblx0XHRcdFx0Y29uc3QgWyBmaWxlbmFtZSwgb2NjdXJyZWRMaW5lLCBvY2N1cnJlZENvbHVtbiBdID0gcmF3TG9jYXRpb24uc3BsaXQoJzonKVxuXG5cdFx0XHRcdGlmICghcGF0aC5pc0Fic29sdXRlKGZpbGVuYW1lKSkgYnJlYWtcblxuXHRcdFx0XHRjb25zdCB0YXJnZXQgPSBtYXBMb2NhdGlvbk9mRXJyb3JUaHJvd24ocGF0aC5yZWxhdGl2ZShyb290UGF0aCwgZmlsZW5hbWUpKVxuXHRcdFx0XHRjb25zdCB0cmFpbGluZyA9IGdyYXkoYDoke29jY3VycmVkTGluZX06JHtvY2N1cnJlZENvbHVtbn1gKVxuXG5cdFx0XHRcdGxvY2F0aW9uID0gdGFyZ2V0ICsgdHJhaWxpbmdcblx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0cmV0dXJuIGAke2NvbnRleHROYW1lfSR7Y29uanVuY3Rpb259JHtsb2NhdGlvbn1gXG5cdFx0fSkpXG5cdFx0LmpvaW4oJ1xcbicpXG5cblx0Y29uc3QgZGVjb3JhdGVkTGFiZWwgPSBkZWNvcmF0ZUxhYmVsKGVycm9yTmFtZSwgQ29sb3JTY2hlbWUuQ3JpdGljYWwpXG5cdGNvbnN0IHBheWxvYWQgPSBgJHttZXNzYWdlfVxcblxcbiR7c3RhY2t9XFxuYFxuXG5cdHJldHVybiB7IGxhYmVsOiBkZWNvcmF0ZWRMYWJlbCwgcGF5bG9hZCB9XG59XG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ2ZhdGFsJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkZhdGFsXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdGQVRBTCcsIENvbG9yU2NoZW1lLkNyaXRpY2FsKVxuXG5leHBvcnQgeyBkZWZhdWx0IH0gZnJvbSAnI2hhbmRsZXJzL2Vycm9yJyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXJlc3RyaWN0ZWQtZXhwb3J0c1xuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd3YXJuaW5nJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLldhcm5pbmdcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1dBUk5JTkcnLCBDb2xvclNjaGVtZS5XYXJuaW5nKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IExvZ2dpbmdMZXZlbCBmcm9tICcjaGVscGVycy9sb2dnaW5nLWxldmVsJ1xuaW1wb3J0IENvbG9yU2NoZW1lIGZyb20gJyNoZWxwZXJzL2NvbG9yLXNjaGVtZSdcbmltcG9ydCBkZWNvcmF0ZUxhYmVsIGZyb20gJyNoZWxwZXJzL2xhYmVsLWRlY29yYXRvcidcblxuLy8gSGFuZGxlciBtZXRhZGF0YS5cbmV4cG9ydCBjb25zdCBuYW1lID0gJ25vdGljZSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5Ob3RpY2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ05PVElDRScsIENvbG9yU2NoZW1lLlJlZ3VsYXIpXG5cbmV4cG9ydCBkZWZhdWx0IG51bGxcbiIsIi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBIYW5kbGVyIG1ldGFkYXRhLlxuZXhwb3J0IGNvbnN0IG5hbWUgPSAnaW5mbydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5JbmZvXG5leHBvcnQgY29uc3QgbGFiZWwgPSBkZWNvcmF0ZUxhYmVsKCdJTkZPJywgQ29sb3JTY2hlbWUuUmVndWxhcilcblxuZXhwb3J0IGRlZmF1bHQgbnVsbFxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdodHRwJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLkh0dHBcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ0hUVFAnLCBDb2xvclNjaGVtZS5IdHRwKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIaWdobGlnaHQuanNcbmltcG9ydCB7IGhpZ2hsaWdodCB9IGZyb20gJ2NsaS1oaWdobGlnaHQnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdxdWVyeSdcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5RdWVyeVxuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnUVVFUlknLCBDb2xvclNjaGVtZS5RdWVyeSlcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaGFuZGxlKGRhdGE6IExvZ2dpbmdEYXRhKTogSGFuZGxlZERhdGEgfCB1bmRlZmluZWQge1xuXHRyZXR1cm4geyBsYWJlbCwgcGF5bG9hZDogaGlnaGxpZ2h0KGRhdGEubWVzc2FnZSwgeyBsYW5ndWFnZTogJ3NxbCcgfSkgfVxufVxuIiwiLy8gVGhpcmQtcGFydHkgbW9kdWxlcy5cbmltcG9ydCB7IGdyYXkgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5cbi8vIExvY2FsIGhlbHBlcnMuXG5pbXBvcnQgTG9nZ2luZ0xldmVsIGZyb20gJyNoZWxwZXJzL2xvZ2dpbmctbGV2ZWwnXG5pbXBvcnQgQ29sb3JTY2hlbWUgZnJvbSAnI2hlbHBlcnMvY29sb3Itc2NoZW1lJ1xuaW1wb3J0IGRlY29yYXRlTGFiZWwgZnJvbSAnI2hlbHBlcnMvbGFiZWwtZGVjb3JhdG9yJ1xuXG4vLyBUeXBlIGRlZmluaXRpb25zLlxudHlwZSBMb2dnaW5nRGF0YSA9IHsgbGV2ZWw6IHN0cmluZywgbWVzc2FnZTogc3RyaW5nIH0gJiBSZWNvcmQ8UHJvcGVydHlLZXksIGFueT5cbnR5cGUgSGFuZGxlZERhdGEgPSB7IGxhYmVsOiBzdHJpbmcsIHBheWxvYWQ6IHN0cmluZyB9XG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICd2ZXJib3NlJ1xuZXhwb3J0IGNvbnN0IGxldmVsID0gTG9nZ2luZ0xldmVsLlZlcmJvc2VcbmV4cG9ydCBjb25zdCBsYWJlbCA9IGRlY29yYXRlTGFiZWwoJ1ZFUkJPU0UnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBoYW5kbGUoZGF0YTogTG9nZ2luZ0RhdGEpOiBIYW5kbGVkRGF0YSB8IHVuZGVmaW5lZCB7XG5cdHJldHVybiB7IGxhYmVsLCBwYXlsb2FkOiBncmF5KGRhdGEubWVzc2FnZSkgfVxufVxuIiwiLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCBMb2dnaW5nTGV2ZWwgZnJvbSAnI2hlbHBlcnMvbG9nZ2luZy1sZXZlbCdcbmltcG9ydCBDb2xvclNjaGVtZSBmcm9tICcjaGVscGVycy9jb2xvci1zY2hlbWUnXG5pbXBvcnQgZGVjb3JhdGVMYWJlbCBmcm9tICcjaGVscGVycy9sYWJlbC1kZWNvcmF0b3InXG5cbi8vIEhhbmRsZXIgbWV0YWRhdGEuXG5leHBvcnQgY29uc3QgbmFtZSA9ICdkZWJ1ZydcbmV4cG9ydCBjb25zdCBsZXZlbCA9IExvZ2dpbmdMZXZlbC5EZWJ1Z1xuZXhwb3J0IGNvbnN0IGxhYmVsID0gZGVjb3JhdGVMYWJlbCgnREVCVUcnLCBDb2xvclNjaGVtZS5Mb3VkKVxuXG5leHBvcnQgZGVmYXVsdCBudWxsXG4iLCIvLyBIYW5kbGVyIGltcGxlbWVudGF0aW9ucy5cbmltcG9ydCAqIGFzIEZhdGFsSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvZmF0YWwnXG5pbXBvcnQgKiBhcyBFcnJvckhhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL2Vycm9yJ1xuaW1wb3J0ICogYXMgV2FybmluZ0hhbmRsZXIgZnJvbSAnI2hhbmRsZXJzL3dhcm5pbmcnXG5pbXBvcnQgKiBhcyBOb3RpY2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9ub3RpY2UnXG5pbXBvcnQgKiBhcyBJbmZvSGFuZGxlciBmcm9tICcjaGFuZGxlcnMvaW5mbydcbmltcG9ydCAqIGFzIEh0dHBIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9odHRwJ1xuaW1wb3J0ICogYXMgUXVlcnlIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9xdWVyeSdcbmltcG9ydCAqIGFzIFZlcmJvc2VIYW5kbGVyIGZyb20gJyNoYW5kbGVycy92ZXJib3NlJ1xuaW1wb3J0ICogYXMgRGVidWdIYW5kbGVyIGZyb20gJyNoYW5kbGVycy9kZWJ1ZydcblxuY29uc3QgaGFuZGxlcnMgPSBbXG5cdEZhdGFsSGFuZGxlcixcblx0RXJyb3JIYW5kbGVyLFxuXHRXYXJuaW5nSGFuZGxlcixcblx0Tm90aWNlSGFuZGxlcixcblx0SW5mb0hhbmRsZXIsXG5cdEh0dHBIYW5kbGVyLFxuXHRRdWVyeUhhbmRsZXIsXG5cdFZlcmJvc2VIYW5kbGVyLFxuXHREZWJ1Z0hhbmRsZXIsXG5dXG5cbmV4cG9ydCB0eXBlIExvZ2dpbmdMZXZlbE5hbWUgPSAodHlwZW9mIGhhbmRsZXJzIGV4dGVuZHMgKGluZmVyIFQpW10gPyBUIDogbmV2ZXIpWyduYW1lJ11cbmV4cG9ydCBkZWZhdWx0IGhhbmRsZXJzXG4iLCIvLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IHsgZ3JheSB9IGZyb20gJ0BzdGQvZm10L2NvbG9ycydcbmltcG9ydCByVHJhY2VyIGZyb20gJ2Nscy1ydHJhY2VyJ1xuaW1wb3J0IHsgRGF0ZVRpbWUgfSBmcm9tICdsdXhvbidcbmltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3dpbnN0b24nXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuZXhwb3J0IGRlZmF1bHQgZm9ybWF0LnByaW50ZihkYXRhID0+IHtcblx0Y29uc3QgdGltZXN0YW1wID0gZ3JheShEYXRlVGltZS5ub3coKS50b0lTTyh7IGluY2x1ZGVPZmZzZXQ6IHRydWUgfSkpXG5cdGNvbnN0IGhhbmRsZXIgPSBoYW5kbGVycy5maW5kKCh7IG5hbWUgfSkgPT4gbmFtZSA9PT0gZGF0YS5sZXZlbClcblx0Y29uc3QgZmFsbGJhY2sgPSB7IGxhYmVsOiBoYW5kbGVyPy5sYWJlbCwgcGF5bG9hZDogZGF0YS5tZXNzYWdlIH1cblx0Y29uc3QgcGVyZm9ybUhhbmRsZSA9IGhhbmRsZXI/LmRlZmF1bHQgPz8gKCgpOiB0eXBlb2YgZmFsbGJhY2sgPT4gZmFsbGJhY2spXG5cblx0Ly8gRXhlY3V0ZSBoYW5kbGVyIGFuZCB0aGVuLCBnZXQgZGVjb3JhdGVkIHBheWxvYWQuXG5cdGNvbnN0IHsgbGFiZWwsIHBheWxvYWQgfSA9IFJlZmxlY3QuYXBwbHkocGVyZm9ybUhhbmRsZSwgdW5kZWZpbmVkLCBbIGRhdGEgXSkgPz8gZmFsbGJhY2tcblxuXHRjb25zdCBleHRyYUZpbmdlcnByaW50ID0gW1xuXHRcdFsgJ1JlcXVlc3QtSUQnLCByVHJhY2VyLmlkKCkgXSxcblx0XHRbICdUcmFuc2FjdGlvbi1JRCcsIGRhdGEudHJhbnNhY3Rpb25JZCBdLFxuXHRdXG5cdFx0LmZpbHRlcigoWyAsIGlkVmFsdWUgXSkgPT4gaWRWYWx1ZSlcblx0XHQubWFwKChbIGtpbmQsIGlkVmFsdWUgXSkgPT4gYCR7a2luZH0gPSAke2lkVmFsdWV9YClcblx0XHQuam9pbignIHwgJylcblxuXHRyZXR1cm4gYCR7bGFiZWwgYXMgc3RyaW5nfSAke3RpbWVzdGFtcH0ke2V4dHJhRmluZ2VycHJpbnQgPyBgICgke2V4dHJhRmluZ2VycHJpbnR9KWAgOiAnJ31cXG4ke3BheWxvYWQgYXMgc3RyaW5nfWBcbn0pXG4iLCIvLyBOb2RlLmpzIGJ1aWx0LWluIEFQSXMuXG5pbXBvcnQgY2x1c3RlciBmcm9tICdjbHVzdGVyJ1xuaW1wb3J0IHsgZW52IGFzIGVudmlyb25tZW50cyB9IGZyb20gJ3Byb2Nlc3MnXG5pbXBvcnQgeyBpc01haW5UaHJlYWQgfSBmcm9tICd3b3JrZXJfdGhyZWFkcydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmV4cG9ydCBjb25zdCBFeGVjdXRpb25Nb2RlID0ge1xuXHREZXZlbG9wbWVudE1vZGU6ICdkZXZlbG9wbWVudCcsXG5cdFByb2R1Y3Rpb25Nb2RlOiAncHJvZHVjdGlvbicsXG59IGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBDbHVzdGVyaW5nTW9kZSA9IHtcblx0TWFzdGVyUHJvY2VzczogMCxcblx0V29ya2VyUHJvY2VzczogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFRocmVhZGluZ01vZGUgPSB7XG5cdE1haW5UaHJlYWQ6IDAsXG5cdFdvcmtlclRocmVhZDogMSxcbn0gYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgRXhlY3V0aW9uTW9kZSA9IHR5cGVvZiBFeGVjdXRpb25Nb2RlW2tleW9mIHR5cGVvZiBFeGVjdXRpb25Nb2RlXVxuZXhwb3J0IHR5cGUgQ2x1c3RlcmluZ01vZGUgPSB0eXBlb2YgQ2x1c3RlcmluZ01vZGVba2V5b2YgdHlwZW9mIENsdXN0ZXJpbmdNb2RlXVxuZXhwb3J0IHR5cGUgVGhyZWFkaW5nTW9kZSA9IHR5cGVvZiBUaHJlYWRpbmdNb2RlW2tleW9mIHR5cGVvZiBUaHJlYWRpbmdNb2RlXVxuXG4vLyBFeHBvcnRpbmdzLlxuZXhwb3J0IGNvbnN0IGV4ZWN1dGlvbk1vZGUgPSBlbnZpcm9ubWVudHMuTk9ERV9FTlYgYXMgRXhlY3V0aW9uTW9kZSA/PyBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZVxuXG5leHBvcnQgY29uc3QgY2x1c3RlcmluZ01vZGU6IENsdXN0ZXJpbmdNb2RlID0gY2x1c3Rlci5pc1ByaW1hcnkgPz8gY2x1c3Rlci5pc01hc3RlclxuXHQ/IENsdXN0ZXJpbmdNb2RlLk1hc3RlclByb2Nlc3Ncblx0OiBDbHVzdGVyaW5nTW9kZS5Xb3JrZXJQcm9jZXNzXG5cbmV4cG9ydCBjb25zdCB0aHJlYWRpbmdNb2RlOiBUaHJlYWRpbmdNb2RlID0gaXNNYWluVGhyZWFkXG5cdD8gVGhyZWFkaW5nTW9kZS5NYWluVGhyZWFkXG5cdDogVGhyZWFkaW5nTW9kZS5Xb3JrZXJUaHJlYWRcbiIsIi8vIE5vZGUuanMgYnVpbHQtaW4gQVBJcy5cbmltcG9ydCB7XG5cdFNUQVRVU19DT0RFUyxcblx0SW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LFxuXHRTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UsXG59IGZyb20gJ2h0dHAnXG5cbi8vIFRoaXJkLXBhcnR5IG1vZHVsZXMuXG5pbXBvcnQgbW9yZ2FuLCB7IHR5cGUgVG9rZW5JbmRleGVyIH0gZnJvbSAnbW9yZ2FuJ1xuaW1wb3J0IHsgZ3JlZW4sIG1hZ2VudGEsIHJlZCwgZ3JheSwgYm9sZCwgcmdiMjQgfSBmcm9tICdAc3RkL2ZtdC9jb2xvcnMnXG5pbXBvcnQgeyBmb3JtYXQgYXMgcHJldHR5Qnl0ZXMgfSBmcm9tICdAc3RkL2ZtdC9ieXRlcydcbmltcG9ydCB7IGZvcm1hdCBhcyBwcmV0dHlNcyB9IGZyb20gJ0BzdGQvZm10L2R1cmF0aW9uJ1xuXG4vLyBMb2NhbCBoZWxwZXJzLlxuaW1wb3J0IHsgRXhlY3V0aW9uTW9kZSwgZXhlY3V0aW9uTW9kZSB9IGZyb20gJyNoZWxwZXJzL2NvbnN0YW50cydcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbmRlY2xhcmUgbW9kdWxlICdtb3JnYW4nIHtcblx0Y29uc3QgY29tYmluZWQ6IG1vcmdhbi5Gb3JtYXRGblxufVxuXG4vLyBIZWxwZXJzLlxuZnVuY3Rpb24gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGU6IGtleW9mIHR5cGVvZiBTVEFUVVNfQ09ERVMpOiBzdHJpbmcge1xuXHRjb25zdCBncm91cE9mQ29kZSA9IE1hdGguZmxvb3IoTnVtYmVyKHN0YXR1c0NvZGUpIC8gMTAwKSAqIDEwMFxuXHRjb25zdCBiYXNlTWVzc2FnZSA9IGAke3N0YXR1c0NvZGV9ICR7U1RBVFVTX0NPREVTW3N0YXR1c0NvZGVdIGFzIHN0cmluZ31gXG5cblx0c3dpdGNoIChncm91cE9mQ29kZSkge1xuXHRjYXNlIDIwMDoge1xuXHRcdHJldHVybiBncmVlbihiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGNhc2UgMzAwOiB7XG5cdFx0cmV0dXJuIG1hZ2VudGEoYmFzZU1lc3NhZ2UpXG5cdH1cblx0Y2FzZSA0MDA6XG5cdGNhc2UgNTAwOiB7XG5cdFx0cmV0dXJuIHJlZChiYXNlTWVzc2FnZSlcblx0fVxuXG5cdGRlZmF1bHQ6IHtcblx0XHRyZXR1cm4gZ3JheShiYXNlTWVzc2FnZSlcblx0fVxuXHR9XG59XG5cbmZ1bmN0aW9uIGZvcm1hdEZvck1vcmdhbih0b2tlbnM6IFRva2VuSW5kZXhlciwgcmVxdWVzdDogSHR0cFJlcXVlc3QsIHJlc3BvbnNlOiBIdHRwUmVzcG9uc2UpOiBzdHJpbmcge1xuXHRmdW5jdGlvbiBfKHRva2VuOiBzdHJpbmcsIC4uLnN1YkFyZ3M6IGFueVtdKTogc3RyaW5nIHwgdm9pZCB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtYXJndW1lbnRcblx0XHRyZXR1cm4gdG9rZW5zW3Rva2VuXShyZXF1ZXN0LCByZXNwb25zZSwgLi4uc3ViQXJncylcblx0fVxuXG5cdC8vIFJhdyB2YWx1ZXMuXG5cdGNvbnN0IG1ldGhvZCA9IF8oJ21ldGhvZCcpXG5cdGNvbnN0IFVSTCA9IF8oJ3VybCcpXG5cdGNvbnN0IGh0dHBWZXJzaW9uID0gYEhUVFAvJHtfKCdodHRwLXZlcnNpb24nKSBhcyBzdHJpbmd9YFxuXHRjb25zdCBzdGF0dXNDb2RlID0gTnVtYmVyKF8oJ3N0YXR1cycpKVxuXHRjb25zdCBjb250ZW50TGVuZ3RoID0gTnVtYmVyKF8oJ3JlcycsICdjb250ZW50LWxlbmd0aCcpID8/IC0xKVxuXHRjb25zdCByZXNwb25zZVRpbWUgPSBOdW1iZXIoXygncmVzcG9uc2UtdGltZScpID8/IC0xKVxuXG5cdC8vIERlY29yYXRlZCB2YWx1ZXMuXG5cdGNvbnN0ICRtZXRob2QgPSBib2xkKG1ldGhvZCA/PyAnJylcblx0Y29uc3QgJHZlcnNpb24gPSByZ2IyNChodHRwVmVyc2lvbiwgMHg2MkIxRkYpXG5cdGNvbnN0ICRzdGF0dXNDb2RlID0gZGVjb3JhdGVTdGF0dXNDb2RlKHN0YXR1c0NvZGUpXG5cdGNvbnN0ICRjb250ZW50TGVuZ3RoID0gY29udGVudExlbmd0aCA+PSAwID8gcHJldHR5Qnl0ZXMoY29udGVudExlbmd0aCkgOiAnPyBCJ1xuXHRjb25zdCAkcmVzcG9uc2VUaW1lID0gcmVzcG9uc2VUaW1lID49IDAgPyBwcmV0dHlNcyhyZXNwb25zZVRpbWUsIHsgaWdub3JlWmVybzogdHJ1ZSB9KSA6ICcnXG5cblx0Ly8gQWRkaXRpb25hbCBpbmZvcm1hdGlvbi5cblx0Y29uc3QgbWV0YWRhdGEgPSBgKCR7JGNvbnRlbnRMZW5ndGh9LCAkeyRyZXNwb25zZVRpbWV9KWBcblxuXHRyZXR1cm4gW1xuXHRcdGDihpIgJHskbWV0aG9kfSAke1VSTCBhcyBzdHJpbmd9ICR7JHZlcnNpb259YCxcblx0XHRg4oaQICR7JHZlcnNpb259ICR7JHN0YXR1c0NvZGV9ICR7bWV0YWRhdGF9YCxcblx0XS5qb2luKCdcXG4nKVxufVxuXG5leHBvcnQgZGVmYXVsdCBleGVjdXRpb25Nb2RlID09PSBFeGVjdXRpb25Nb2RlLkRldmVsb3BtZW50TW9kZSA/IGZvcm1hdEZvck1vcmdhbiA6IG1vcmdhbi5jb21iaW5lZFxuIiwiLy8gTm9kZS5qcyBidWlsdC1pbiBBUElzLlxuaW1wb3J0IHsgSW5jb21pbmdNZXNzYWdlIGFzIEh0dHBSZXF1ZXN0LCBTZXJ2ZXJSZXNwb25zZSBhcyBIdHRwUmVzcG9uc2UgfSBmcm9tICdodHRwJ1xuaW1wb3J0IHsgUGFzc1Rocm91Z2ggfSBmcm9tICdzdHJlYW0nXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJ1xuXG4vLyBUaGlyZC1wYXJ0eSBtb2R1bGVzLlxuaW1wb3J0IG1vcmdhbiBmcm9tICdtb3JnYW4nXG5pbXBvcnQgKiBhcyB3aW5zdG9uIGZyb20gJ3dpbnN0b24nXG5pbXBvcnQgdHlwZSB7IGxldmVsIGFzIExvZ2dpbmdMZXZlbCwgTG9nZ2VyIGFzIEJhc2VMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuXG4vLyBGb3JtYXR0ZXJzLlxuaW1wb3J0IGZvcm1hdEZvckNMSSBmcm9tICcjZm9ybWF0dGVycy9jb21tYW5kLWxpbmUnXG5pbXBvcnQgZm9ybWF0Rm9yTW9yZ2FuIGZyb20gJyNmb3JtYXR0ZXJzL21vcmdhbidcblxuLy8gTG9jYWwgaGVscGVycy5cbmltcG9ydCB7IEV4ZWN1dGlvbk1vZGUsIGV4ZWN1dGlvbk1vZGUgfSBmcm9tICcjaGVscGVycy9jb25zdGFudHMnXG5cbi8vIEhhbmRsZXIgaW1wbGVtZW50YXRpb25zLlxuaW1wb3J0IHR5cGUgeyBMb2dnaW5nTGV2ZWxOYW1lIH0gZnJvbSAnI2hhbmRsZXJzL2luZGV4J1xuaW1wb3J0IGhhbmRsZXJzIGZyb20gJyNoYW5kbGVycy9pbmRleCdcblxuLy8gVHlwZSBkZWZpbml0aW9ucy5cbnR5cGUgTW9yZ2FuID0gKHJlcTogSHR0cFJlcXVlc3QsIHJlczogSHR0cFJlc3BvbnNlLCBuZXh0OiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZFxuXG4vLyBUcmFuc3BvcnRzLlxuY29uc3QgeyBDb25zb2xlOiBDb25zb2xlVHJhbnNwb3J0IH0gPSB3aW5zdG9uLnRyYW5zcG9ydHNcblxuY2xhc3MgTG9nZ2VyIHtcblx0c3RhdGljICNpbnN0YW5jZT86IExvZ2dlclxuXG5cdCNsb2dnZXI6IEJhc2VMb2dnZXIgPSB3aW5zdG9uLmNyZWF0ZUxvZ2dlcih7XG5cdFx0bGV2ZWxzOiBPYmplY3QuZnJvbUVudHJpZXMoXG5cdFx0XHRoYW5kbGVyc1xuXHRcdFx0XHQubWFwKCh7IG5hbWUsIGxldmVsIH0pID0+IFsgbmFtZSwgbGV2ZWwgXSBhcyBjb25zdClcblx0XHRcdFx0LmZpbHRlcigoWyAsIGxldmVsIF0pID0+IHR5cGVvZiBsZXZlbCA9PT0gJ251bWJlcicpLFxuXHRcdCksXG5cblx0XHRsZXZlbDogKGV4ZWN1dGlvbk1vZGUgPT09IEV4ZWN1dGlvbk1vZGUuUHJvZHVjdGlvbk1vZGUgPyAnaHR0cCcgOiAndmVyYm9zZScpLFxuXG5cdFx0dHJhbnNwb3J0czogW1xuXHRcdFx0bmV3IENvbnNvbGVUcmFuc3BvcnQoeyBmb3JtYXQ6IGZvcm1hdEZvckNMSSB9KSxcblx0XHRdLFxuXG5cdFx0ZXhpdE9uRXJyb3I6IGZhbHNlLFxuXHR9KVxuXG5cdCNtb3JnYW46IE1vcmdhbiA9IG1vcmdhbihmb3JtYXRGb3JNb3JnYW4sIHtcblx0XHRzdHJlYW06IG5ldyBQYXNzVGhyb3VnaCh7IG9iamVjdE1vZGU6IHRydWUgfSkub24oJ2RhdGEnLCAoZGF0YTogc3RyaW5nKSA9PiB7XG5cdFx0XHR0aGlzLmxvZygnaHR0cCcsIGRhdGEudHJpbSgpKVxuXHRcdH0pLFxuXHR9KVxuXG5cdHByaXZhdGUgY29uc3RydWN0b3IoKSB7XG5cdFx0aWYgKG5ldy50YXJnZXQgIT09IExvZ2dlcikge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgaXMgbm90IGluaGVyaXRhYmxlJylcblx0XHR9XG5cblx0XHRpZiAoTG9nZ2VyLiNpbnN0YW5jZSkge1xuXHRcdFx0dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCdMb2dnZXIgY2xhc3MgY2Fubm90IGJlIGNvbnN0cnVjdGVkIGluIGRpcmVjdGx5Jylcblx0XHR9XG5cblx0XHRMb2dnZXIuI2luc3RhbmNlID0gdGhpc1xuXHR9XG5cblx0LyoqXG5cdCAqIExvZ2dpbmcgbWVzc2FnZSB3aXRoIHNwZWNpZmljIGxldmVsLlxuXHQgKlxuXHQgKiBAcGFyYW0gbGV2ZWxcblx0ICogQHBhcmFtIG1lc3NhZ2Vcblx0ICogQHBhcmFtIGFyZ3MgQWRkaXRpb25hbCBtZXRhZGF0YS5cblx0ICovXG5cdHB1YmxpYyBsb2cobGV2ZWw6IExvZ2dpbmdMZXZlbE5hbWUsIG1lc3NhZ2U6IHN0cmluZywgLi4uYXJnczogdW5rbm93bltdKTogdm9pZFxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIEhUVFAgSS9PLlxuXHQgKlxuXHQgKiBAcGFyYW0gcmVxdWVzdCBOb2RlLmpzIGJ1aWx0LWluIGBJbmNvbWluZ01lc3NhZ2VgIGluc3RhbmNlIGZyb20gYGh0dHBgIG1vZHVsZS5cblx0ICogQHBhcmFtIHJlc3BvbnNlIE5vZGUuanMgYnVpbHQtaW4gYFNlcnZlclJlc3BvbnNlYCBpbnN0YW5jZSBmcm9tIGBodHRwYCBtb2R1bGUuXG5cdCAqL1xuXHRwdWJsaWMgbG9nKHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LCByZXNwb25zZTogSHR0cFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPlxuXG5cdC8qKlxuXHQgKiBMb2dnaW5nIGVycm9ycyBpbiBkZXRhaWwuXG5cdCAqXG5cdCAqIEBwYXJhbSBlcnJvclxuXHQgKi9cblx0cHVibGljIGxvZyhlcnJvcjogRXJyb3IpOiB2b2lkXG5cblx0cHVibGljIGxvZyguLi5hcmdzOiB1bmtub3duW10pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3QgbG9nZ2VyID0gdGhpcy4jbG9nZ2VyXG5cdFx0Y29uc3QgZm9ybWF0ID0gdGhpcy4jbW9yZ2FuXG5cblx0XHRzd2l0Y2ggKHRydWUpIHtcblx0XHRjYXNlIChhcmdzLmxlbmd0aCA+PSAyICYmIGFyZ3NbMF0gaW5zdGFuY2VvZiBIdHRwUmVxdWVzdCAmJiBhcmdzWzFdIGluc3RhbmNlb2YgSHR0cFJlc3BvbnNlKToge1xuXHRcdFx0Y29uc3QgWyByZXF1ZXN0LCByZXNwb25zZSBdID0gYXJncyBhcyBbIEh0dHBSZXF1ZXN0LCBIdHRwUmVzcG9uc2UgXVxuXG5cdFx0XHRyZXR1cm4gcHJvbWlzaWZ5KGZvcm1hdCkocmVxdWVzdCwgcmVzcG9uc2UpXG5cdFx0fVxuXG5cdFx0Y2FzZSAoYXJncy5sZW5ndGggPj0gMSAmJiBhcmdzWzBdIGluc3RhbmNlb2YgRXJyb3IpOiB7XG5cdFx0XHRjb25zdCBbIGVycm9yLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgRXJyb3IsIC4uLnVua25vd25bXSBdXG5cblx0XHRcdGxvZ2dlci5sb2coJ2Vycm9yJywgZXJyb3IubWVzc2FnZSwgZXJyb3IsIC4uLmRhdGEpXG5cblx0XHRcdHJldHVybiB1bmRlZmluZWRcblx0XHR9XG5cblx0XHRkZWZhdWx0OiB7XG5cdFx0XHRjb25zdCBbIGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhIF0gPSBhcmdzIGFzIFsgdHlwZW9mIExvZ2dpbmdMZXZlbCwgc3RyaW5nLCAuLi51bmtub3duW10gXVxuXG5cdFx0XHRsb2dnZXIubG9nKGxldmVsLCBtZXNzYWdlLCAuLi5kYXRhKVxuXG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkXG5cdFx0fVxuXHRcdH1cblx0fVxufVxuXG5leHBvcnQgZGVmYXVsdCBSZWZsZWN0LmNvbnN0cnVjdChMb2dnZXIsIFtdLCBMb2dnZXIpIGFzIExvZ2dlclxuIl0sIm5hbWVzIjpbIm5hbWUiLCJsZXZlbCIsImxhYmVsIiwiaGFuZGxlIiwiZW52aXJvbm1lbnRzIiwicHJldHR5Qnl0ZXMiLCJwcmV0dHlNcyIs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
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cichol/logger",
|
|
3
|
-
"version": "6.
|
|
3
|
+
"version": "6.3.0",
|
|
4
4
|
"description": "A logger based on `winston` for personal projects.",
|
|
5
5
|
"homepage": "https://github.com/morrighan/packages",
|
|
6
6
|
"bugs": {
|
|
@@ -29,18 +29,18 @@
|
|
|
29
29
|
"directory": "packages/logger"
|
|
30
30
|
},
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"@babel/runtime-corejs3": "^
|
|
32
|
+
"@babel/runtime-corejs3": "^8.0.0",
|
|
33
33
|
"@std/fmt": "npm:@jsr/std__fmt@^1.0.10",
|
|
34
34
|
"cli-highlight": "^2.1.11",
|
|
35
|
-
"cls-rtracer": "^2.6.
|
|
35
|
+
"cls-rtracer": "^2.6.4",
|
|
36
36
|
"core-js-pure": "^3.49.0",
|
|
37
37
|
"luxon": "^3.7.2",
|
|
38
|
-
"morgan": "^1.
|
|
38
|
+
"morgan": "^1.11.0",
|
|
39
39
|
"winston": "^3.19.0"
|
|
40
40
|
},
|
|
41
41
|
"engines": {
|
|
42
|
-
"node": "^24.
|
|
43
|
-
"npm": "^
|
|
42
|
+
"node": "^24.18.0",
|
|
43
|
+
"npm": "^12.0.0"
|
|
44
44
|
},
|
|
45
45
|
"publishConfig": {
|
|
46
46
|
"registry": "https://registry.npmjs.org/",
|