@hestia-earth/ui-components 0.11.0 → 0.11.2
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/common/link-key-value/link-key-value.component.d.ts +8 -6
- package/common/precision.pipe.d.ts +1 -1
- package/esm2020/common/compound.mjs +3 -2
- package/esm2020/common/data-table/data-table.component.mjs +2 -2
- package/esm2020/common/link-key-value/link-key-value.component.mjs +5 -3
- package/esm2020/common/precision.pipe.mjs +7 -7
- package/esm2020/cycles/cycles-activity/cycles-activity.component.mjs +3 -3
- package/esm2020/cycles/cycles-activity-logs/cycles-activity-logs.component.mjs +3 -3
- package/esm2020/cycles/cycles-emissions/cycles-emissions.component.mjs +3 -3
- package/esm2020/cycles/cycles-emissions-logs/cycles-emissions-logs.component.mjs +3 -3
- package/esm2020/cycles/cycles-practices/cycles-practices.component.mjs +3 -3
- package/esm2020/cycles/cycles-practices-logs/cycles-practices-logs.component.mjs +3 -3
- package/esm2020/files/files-form/files-form.component.mjs +7 -6
- package/esm2020/files/files-form.model.mjs +14 -7
- package/esm2020/impact-assessments/impact-assessments-products/impact-assessments-products.component.mjs +3 -3
- package/esm2020/node/node-logs-models/node-logs-models.component.mjs +53 -22
- package/esm2020/node/node-logs-models/node-logs-models.model.mjs +22 -7
- package/esm2020/node/node-value-details/node-value-details.component.mjs +5 -3
- package/esm2020/search/search.model.mjs +1 -95
- package/esm2020/search/search.service.mjs +6 -3
- package/esm2020/sites/sites-measurements/sites-measurements.component.mjs +3 -3
- package/esm2020/sites/sites-measurements-logs/sites-measurements-logs.component.mjs +3 -3
- package/esm2020/terms/terms.model.mjs +8 -2
- package/fesm2015/hestia-earth-ui-components.mjs +136 -159
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +135 -161
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/files/files-form/files-form.component.d.ts +2 -2
- package/files/files-form.model.d.ts +3 -1
- package/node/node-logs-models/node-logs-models.component.d.ts +10 -7
- package/node/node-logs-models/node-logs-models.model.d.ts +7 -5
- package/node/node-value-details/node-value-details.component.d.ts +6 -4
- package/package.json +2 -2
- package/search/search.model.d.ts +0 -14
- package/styles.scss +25 -5
- package/terms/terms.model.d.ts +1 -1
|
@@ -40,7 +40,7 @@ const parseMessage = (message) => {
|
|
|
40
40
|
return {};
|
|
41
41
|
}
|
|
42
42
|
};
|
|
43
|
-
const omitLogKeys = (log) => Object.fromEntries(Object.entries(log).filter(([key]) => !schemaTypesLowerCase.includes(key)));
|
|
43
|
+
const omitLogKeys = (log, ...keys) => Object.fromEntries(Object.entries(log).filter(([key]) => !schemaTypesLowerCase.includes(key) && !keys.includes(key)));
|
|
44
44
|
const includeBlankNodes = (logs, log) => Object
|
|
45
45
|
.keys(log)
|
|
46
46
|
.filter(key => blankNodeTypesLowerCase.includes(key))
|
|
@@ -51,7 +51,7 @@ const includeBlankNodes = (logs, log) => Object
|
|
|
51
51
|
log[key]
|
|
52
52
|
])
|
|
53
53
|
}), logs);
|
|
54
|
-
const groupLog = (group, { logger, term, model, key, should_run, run_required, property, ...log }) => {
|
|
54
|
+
const groupLog = (group, { logger, term, model, key, should_run, should_merge, run_required, property, ...log }) => {
|
|
55
55
|
const isOrchestrator = logger.includes('orchestrator');
|
|
56
56
|
const isKey = !isOrchestrator && !!key;
|
|
57
57
|
const isProperty = !isOrchestrator && !!property;
|
|
@@ -70,6 +70,7 @@ const groupLog = (group, { logger, term, model, key, should_run, run_required, p
|
|
|
70
70
|
data = isOrchestrator ?
|
|
71
71
|
{
|
|
72
72
|
...data,
|
|
73
|
+
...omitLogKeys(log, 'value'),
|
|
73
74
|
shouldRunOrchestrator: shouldRun
|
|
74
75
|
} :
|
|
75
76
|
{
|
|
@@ -105,6 +106,9 @@ const groupLog = (group, { logger, term, model, key, should_run, run_required, p
|
|
|
105
106
|
...omitLogKeys(log)
|
|
106
107
|
};
|
|
107
108
|
}
|
|
109
|
+
if (typeof should_merge !== 'undefined') {
|
|
110
|
+
data.shouldMerge = should_merge;
|
|
111
|
+
}
|
|
108
112
|
set(group, logModelKey, data);
|
|
109
113
|
return group;
|
|
110
114
|
};
|
|
@@ -175,7 +179,9 @@ const logStatus = (data, logs, hasPreviousSuccess = false) => {
|
|
|
175
179
|
? logs.shouldRun
|
|
176
180
|
? data.isRecalculated
|
|
177
181
|
? LogStatus.success
|
|
178
|
-
:
|
|
182
|
+
: isEmpty(data.originalValue)
|
|
183
|
+
? LogStatus.error
|
|
184
|
+
: LogStatus.dataProvided
|
|
179
185
|
: hasPreviousSuccess
|
|
180
186
|
? LogStatus.skipHierarchy
|
|
181
187
|
: LogStatus.error
|
|
@@ -234,7 +240,11 @@ const blankNodeValueByKey = {
|
|
|
234
240
|
? isUndefined(value)
|
|
235
241
|
? ''
|
|
236
242
|
: value
|
|
237
|
-
:
|
|
243
|
+
: Array.isArray(value)
|
|
244
|
+
? value.length > 1
|
|
245
|
+
? value.join(';')
|
|
246
|
+
: value[0]
|
|
247
|
+
: null;
|
|
238
248
|
}
|
|
239
249
|
};
|
|
240
250
|
const blankNodeValue = (blankNodes, key, id) => blankNodeValueByKey[key in blankNodeValueByKey ? key : 'default'](blankNodes, key, id);
|
|
@@ -357,6 +367,8 @@ const isModelLog = (logs, type) => (key) => {
|
|
|
357
367
|
'runRequired' in log
|
|
358
368
|
].some(Boolean);
|
|
359
369
|
};
|
|
370
|
+
const modelConfigMatch = (termId, modelKey, model) => (config) => [termId === config.value, modelKey === config.key, model === config.model].every(Boolean);
|
|
371
|
+
const modelConfig = (models, termId, modelKey, model) => models.flat().find(modelConfigMatch(termId, modelKey, model));
|
|
360
372
|
const modelConfigOrder = (models, termId, modelKey, model) => {
|
|
361
373
|
const indexes = models.map((m, index) => {
|
|
362
374
|
const arrayIndex = Array.isArray(m) ? modelConfigOrder(m, termId, modelKey, model) : '';
|
|
@@ -364,7 +376,7 @@ const modelConfigOrder = (models, termId, modelKey, model) => {
|
|
|
364
376
|
? arrayIndex
|
|
365
377
|
? [index, arrayIndex].join('.')
|
|
366
378
|
: ''
|
|
367
|
-
:
|
|
379
|
+
: modelConfigMatch(termId, modelKey, model)(m)
|
|
368
380
|
? `${index}`
|
|
369
381
|
: '';
|
|
370
382
|
}).filter(Boolean);
|
|
@@ -440,7 +452,10 @@ const dataWithConfigModelLogs = (logs) => (data) => {
|
|
|
440
452
|
*/
|
|
441
453
|
const groupParallelModels = (config, termId, modelKey, models) => {
|
|
442
454
|
const modelsWithOrder = models.map(model => ({
|
|
443
|
-
model
|
|
455
|
+
model: {
|
|
456
|
+
...model,
|
|
457
|
+
config: modelConfig(config.models, termId, modelKey, model.methodId)
|
|
458
|
+
},
|
|
444
459
|
order: modelConfigOrder(config.models, termId, modelKey, model.methodId)
|
|
445
460
|
}));
|
|
446
461
|
return modelsWithOrder
|
|
@@ -533,4 +548,4 @@ export const logValueArray = (value) => [';', ':'].some(v => value.includes(v))
|
|
|
533
548
|
return res.length <= 1 ? res.flat() : Object.fromEntries(res);
|
|
534
549
|
}) :
|
|
535
550
|
null;
|
|
536
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1sb2dzLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUNLLGtCQUFrQixFQUNsQixZQUFZLEVBQVksVUFBVSxFQUFFLFVBQVUsRUFDekQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUMwQyxVQUFVLEVBQVUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFDbEgsTUFBTSw2QkFBNkIsQ0FBQztBQW9DckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFN0UsTUFBTSxvQkFBb0IsR0FB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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMzQixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNKLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCB7IGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0LCB0b0FycmF5LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmaWxlVG9FeHQsIFN1cHBvcnRlZEV4dGVuc2lvbnMgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQge1xuICBFbWlzc2lvbiwgRW1pc3Npb25NZXRob2RUaWVyLCBJVGVybUpTT05MRCwgUHJvZHVjdCwgSW5wdXQgYXMgSGVzdGlhSW5wdXQsXG4gIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUsIFByb3BlcnR5LCBTY2hlbWFUeXBlLCBpc1R5cGVOb2RlLCBJbmRpY2F0b3IsIFByYWN0aWNlXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHVuaXF1ZSwgaXNVbmRlZmluZWQsIGlzRW1wdHksIGlzTnVtYmVyIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoLnNldCc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5cbmltcG9ydCB7XG4gIElPcmNoZXN0cmF0b3JDb25maWcsIElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZywgZmluZE1vZGVscywgSU1vZGVsLCBmaW5kTWF0Y2hpbmdNb2RlbCwgbW9kZWxQYXJhbXMsIG1vZGVsS2V5UGFyYW1zXG59IGZyb20gJy4uLy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVNaXNzaW5nTG9va3VwTG9nIHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgdGVybUlkOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xuICAvLyBhdHRyaWJ1dGVzIGxpbmtlZCB0byB0aGUgbW9kZWxzXG4gIG1vZGVsPzogc3RyaW5nO1xuICB0ZXJtPzogc3RyaW5nO1xuICBrZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVUZXJtTG9nIHtcbiAgcnVuUmVxdWlyZWQ/OiBib29sZWFuO1xuICBzaG91bGRSdW4/OiBib29sZWFuO1xuICBzaG91bGRSdW5PcmNoZXN0cmF0b3I/OiBib29sZWFuO1xuICBtaXNzaW5nTG9va3Vwcz86IElOb2RlTWlzc2luZ0xvb2t1cExvZ1tdO1xuICByZXF1aXJlbWVudHM/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICBsb2dzPzogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbiAgW2tleTogc3RyaW5nXTogYW55O1xuICAvLyBwb3NzaWJsZSBzdWIgdmFsdWVzXG4gIGlucHV0Pzogc3RyaW5nIHwgc3RyaW5nW107XG4gIHByb3BlcnR5Pzogc3RyaW5nIHwgc3RyaW5nW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVUZXJtTG9ncyB7XG4gIFttb2RlbEtleTogc3RyaW5nXTogYW55IHwgSU5vZGVUZXJtTG9nO1xuICBtb2RlbHM6IHN0cmluZ1tdO1xuICBpc0tleT86IGJvb2xlYW47XG4gIGlzUHJvcGVydHk/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlTG9ncyB7XG4gIFt0ZXJtOiBzdHJpbmddOiBJTm9kZVRlcm1Mb2dzO1xufVxuXG5jb25zdCB0ZXJtVHlwZXMgPSBPYmplY3QudmFsdWVzKFRlcm1UZXJtVHlwZSk7XG5cbmNvbnN0IGJsYW5rTm9kZVR5cGVzID0gT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5maWx0ZXIodCA9PiAhaXNUeXBlTm9kZSh0KSk7XG5cbmNvbnN0IHNjaGVtYVR5cGVzTG93ZXJDYXNlID0gT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5tYXAodiA9PiB2LnRvTG93ZXJDYXNlKCkpO1xuXG5jb25zdCBibGFua05vZGVUeXBlc0xvd2VyQ2FzZSA9IGJsYW5rTm9kZVR5cGVzLm1hcCh2ID0+IHYudG9Mb3dlckNhc2UoKSk7XG5cbmNvbnN0IG1pc3NpbmdMb29rdXBQcmVmaXggPSAnTWlzc2luZyBsb29rdXAnO1xuXG5jb25zdCBwYXJzZUZpbGVuYW1lID0gKGZpbGVwYXRoOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgW2ZpbGVuYW1lXSA9IGZpbGVwYXRoLnNwbGl0KCcuJyk7XG4gIGNvbnN0IGV4dCA9IHRlcm1UeXBlcy5pbmNsdWRlcyhmaWxlbmFtZSBhcyBhbnkpID8gU3VwcG9ydGVkRXh0ZW5zaW9ucy54bHN4IDogU3VwcG9ydGVkRXh0ZW5zaW9ucy5jc3Y7XG4gIHJldHVybiBmaWxlVG9FeHQoZmlsZW5hbWUsIGV4dCk7XG59O1xuXG5jb25zdCBwYXJzZUxvb2t1cCA9ICh7IGNvbHVtbiwgdGVybWlkLCBbbWlzc2luZ0xvb2t1cFByZWZpeF06IG1pc3NpbmdMb29rdXAgfSkgPT4gKHtcbiAgZmlsZW5hbWU6IHBhcnNlRmlsZW5hbWUobWlzc2luZ0xvb2t1cCksIHRlcm1JZDogdGVybWlkLCBjb2x1bW5cbn0pO1xuXG5jb25zdCBjc3ZWYWx1ZSA9ICh2YWx1ZTogc3RyaW5nKSA9PiAodmFsdWUgfHwgJycpLnJlcGxhY2UoJ1snLCAnJykucmVwbGFjZSgnXScsICcnKTtcblxuY29uc3QgcGFyc2VNZXNzYWdlID0gKG1lc3NhZ2U6IHN0cmluZykgPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKG1lc3NhZ2UpO1xuICAgIHJldHVybiBkYXRhLm1lc3NhZ2Uuc3BsaXQoJywnKS5yZWR1Y2UoKHByZXYsIHBhcnRzKSA9PiB7XG4gICAgICBjb25zdCBba2V5LCB2YWx1ZV0gPSBwYXJ0cy5zcGxpdCgnPScpO1xuICAgICAgY29uc3QgdmFsID0gY3N2VmFsdWUodmFsdWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgLi4uKGtleSAmJiB2YWwgPyB7IFtrZXkudHJpbSgpXTogdmFsIH0gOiB7fSlcbiAgICAgIH07XG4gICAgfSwgeyBsb2dnZXI6IGRhdGEubG9nZ2VyIH0pO1xuICB9XG4gIGNhdGNoIChlcnIpIHtcbiAgICAvLyBtYWtlIHN1cmUgaXQgd29ya3MgZXZlbiBpZiBvbmUgbG9nIGlzIG1hbGZvcm1lZFxuICAgIHJldHVybiB7fTtcbiAgfVxufTtcblxuY29uc3Qgb21pdExvZ0tleXMgPSAobG9nOiBhbnkpID0+XG4gIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyhsb2cpLmZpbHRlcigoW2tleV0pID0+ICFzY2hlbWFUeXBlc0xvd2VyQ2FzZS5pbmNsdWRlcyhrZXkpKSk7XG5cbmNvbnN0IGluY2x1ZGVCbGFua05vZGVzID0gKGxvZ3MsIGxvZykgPT5cbiAgT2JqZWN0XG4gICAgLmtleXMobG9nKVxuICAgIC5maWx0ZXIoa2V5ID0+IGJsYW5rTm9kZVR5cGVzTG93ZXJDYXNlLmluY2x1ZGVzKGtleSkpXG4gICAgLnJlZHVjZSgocHJldiwga2V5KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtrZXldOiB1bmlxdWUoW1xuICAgICAgICAuLi4oKHR5cGVvZiBwcmV2W2tleV0gPT09ICdzdHJpbmcnID8gW3ByZXZba2V5XV0gOiBwcmV2W2tleV0pIHx8IFtdKSxcbiAgICAgICAgbG9nW2tleV1cbiAgICAgIF0pXG4gICAgfSksIGxvZ3MpO1xuXG5jb25zdCBncm91cExvZyA9IChncm91cCwgeyBsb2dnZXIsIHRlcm0sIG1vZGVsLCBrZXksIHNob3VsZF9ydW4sIHJ1bl9yZXF1aXJlZCwgcHJvcGVydHksIC4uLmxvZyB9OiBhbnkpID0+IHtcbiAgY29uc3QgaXNPcmNoZXN0cmF0b3IgPSBsb2dnZXIuaW5jbHVkZXMoJ29yY2hlc3RyYXRvcicpO1xuICBjb25zdCBpc0tleSA9ICFpc09yY2hlc3RyYXRvciAmJiAhIWtleTtcbiAgY29uc3QgaXNQcm9wZXJ0eSA9ICFpc09yY2hlc3RyYXRvciAmJiAhIXByb3BlcnR5O1xuICBjb25zdCBwYXJlbnRMb2dLZXkgPSBbYFtcIiR7dGVybX1cIl1gLCAhaXNPcmNoZXN0cmF0b3IgJiYga2V5IHx8IHByb3BlcnR5XS5maWx0ZXIoQm9vbGVhbikuam9pbignLicpO1xuICBjb25zdCBsb2dNb2RlbEtleSA9IFtwYXJlbnRMb2dLZXksIG1vZGVsXS5maWx0ZXIoQm9vbGVhbikuam9pbignLicpO1xuXG4gIHNldChncm91cCwgYCR7cGFyZW50TG9nS2V5fS5tb2RlbHNgLCB1bmlxdWUoW1xuICAgIC4uLmdldChncm91cCwgYCR7cGFyZW50TG9nS2V5fS5tb2RlbHNgLCBbXSksXG4gICAgbW9kZWxcbiAgXSkpO1xuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0uaXNLZXlgLCBpc0tleSk7XG4gIHNldChncm91cCwgYCR7cGFyZW50TG9nS2V5fS5pc1Byb3BlcnR5YCwgaXNQcm9wZXJ0eSk7XG5cbiAgbGV0IGRhdGEgPSBnZXQoZ3JvdXAsIGxvZ01vZGVsS2V5LCB7fSk7XG5cbiAgZGF0YSA9IGluY2x1ZGVCbGFua05vZGVzKGRhdGEsIGxvZyk7XG5cbiAgaWYgKHR5cGVvZiBzaG91bGRfcnVuICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHNob3VsZFJ1biA9IHNob3VsZF9ydW4gPT09ICdUcnVlJztcblxuICAgIGRhdGEgPSBpc09yY2hlc3RyYXRvciA/XG4gICAgICB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIHNob3VsZFJ1bk9yY2hlc3RyYXRvcjogc2hvdWxkUnVuXG4gICAgICB9IDpcbiAgICAgIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLi4ub21pdExvZ0tleXMobG9nKSxcbiAgICAgICAgc2hvdWxkUnVuXG4gICAgICB9O1xuICB9XG4gIGVsc2UgaWYgKHR5cGVvZiBydW5fcmVxdWlyZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc3QgcnVuUmVxdWlyZWQgPSBydW5fcmVxdWlyZWQgPT09ICdUcnVlJztcblxuICAgIGRhdGEgPSAge1xuICAgICAgLi4uZGF0YSxcbiAgICAgIC4uLihydW5SZXF1aXJlZCA/IHt9IDogb21pdExvZ0tleXMobG9nKSksIC8vIG5vIG5lZWQgdG8gc2F2ZSBsb2dzIGlmIHdlIG5lZWQgdG8gcnVuIHRoZSBtb2RlbFxuICAgICAgcnVuUmVxdWlyZWRcbiAgICB9O1xuICB9XG4gIGVsc2UgaWYgKCdyZXF1aXJlbWVudHMnIGluIGxvZykge1xuICAgIGNvbnN0IHsgcmVxdWlyZW1lbnRzLCAuLi5sb2dEYXRhIH0gPSBsb2c7XG5cbiAgICBkYXRhLnJlcXVpcmVtZW50cyA9IHtcbiAgICAgIC4uLihkYXRhLnJlcXVpcmVtZW50cyB8fCB7fSksXG4gICAgICAuLi5sb2dEYXRhXG4gICAgfTtcbiAgfVxuICBlbHNlIGlmIChtaXNzaW5nTG9va3VwUHJlZml4IGluIGxvZykge1xuICAgIGRhdGEubWlzc2luZ0xvb2t1cHMgPSB1bmlxdWUoW1xuICAgICAgLi4uKGRhdGEubWlzc2luZ0xvb2t1cHMgfHwgW10pLFxuICAgICAgcGFyc2VMb29rdXAobG9nKVxuICAgIF0pO1xuICB9XG4gIGVsc2UgaWYgKCFpc09yY2hlc3RyYXRvcikge1xuICAgIGRhdGEubG9ncyA9IHtcbiAgICAgIC4uLihkYXRhLmxvZ3MgfHwge30pLFxuICAgICAgLi4ub21pdExvZ0tleXMobG9nKVxuICAgIH07XG4gIH1cblxuICBzZXQoZ3JvdXAsIGxvZ01vZGVsS2V5LCBkYXRhKTtcbiAgcmV0dXJuIGdyb3VwO1xufTtcblxuY29uc3QgZ3JvdXBMb2dTdWJWYWx1ZSA9IChncm91cCwgbG9nLCBrZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBpZCA9IGxvZ1trZXldO1xuICBjb25zdCBkYXRhID0gZ3JvdXBMb2coZ3JvdXBbaWRdIHx8IHt9LCBsb2cpO1xuICBncm91cFtpZF0gPSBkYXRhO1xuXG4gIGlmIChrZXkgPT09ICd0cmFuc2Zvcm1hdGlvbicpIHtcbiAgICAvLyBhZGQgdmFsdWUgdG8gdGhlIHNhbWUgdGVybS9tb2RlbCBvbiBwYXJlbnQgZ3JvdXBcbiAgICBPYmplY3QuZW50cmllcyhncm91cFtpZF0pLm1hcCgoW3Rlcm0sIG1vZGVsc10pID0+XG4gICAgICBPYmplY3Qua2V5cyhtb2RlbHMpLm1hcChtb2RlbCA9PiB7XG4gICAgICAgIGlmIChncm91cD8uW3Rlcm1dPy5bbW9kZWxdKSB7XG4gICAgICAgICAgZ3JvdXBbdGVybV1bbW9kZWxdW2tleV0gPSB1bmlxdWUoW1xuICAgICAgICAgICAgLi4uKGdyb3VwW3Rlcm1dW21vZGVsXVtrZXldIHx8IFtdKSxcbiAgICAgICAgICAgIGlkXG4gICAgICAgICAgXSk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBncm91cDtcbn07XG5cbmNvbnN0IHN1YlZhbHVlS2V5cyA9IFtcbiAgJ3RyYW5zZm9ybWF0aW9uJ1xuXTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwTG9nc0J5TW9kZWwgPSAoZGF0YTogc3RyaW5nKTogSU5vZGVMb2dzID0+XG4gIGRhdGEudHJpbSgpLnNwbGl0KCdcXG4nKVxuICAgIC5tYXAocGFyc2VNZXNzYWdlKVxuICAgIC5maWx0ZXIodiA9PiAhIXY/LnRlcm0gJiYgdj8udGVybSAhPT0gJ05vbmUnICYmICEhdj8ubW9kZWwpXG4gICAgLnJlZHVjZSgoZ3JvdXAsIGxvZykgPT4ge1xuICAgICAgY29uc3Qgc3ViVmFsdWUgPSBzdWJWYWx1ZUtleXMuZmluZCh2ID0+ICEhbG9nW3ZdKTtcbiAgICAgIHJldHVybiBzdWJWYWx1ZSA/XG4gICAgICAgIHN1YlZhbHVlID09PSAndHJhbnNmb3JtYXRpb24nID9cbiAgICAgICAgICAvLyBmb3IgdHJhbnNmb3JtYXRpb24sIGRvIG5vdCBhZGQgdG8gdG9wLWxldmVsIG1vZGVsXG4gICAgICAgICAgZ3JvdXBMb2dTdWJWYWx1ZShncm91cCwgbG9nLCBzdWJWYWx1ZSkgOlxuICAgICAgICAgIGdyb3VwTG9nKGdyb3VwTG9nU3ViVmFsdWUoZ3JvdXAsIGxvZywgc3ViVmFsdWUpLCBsb2cpXG4gICAgICAgIDogZ3JvdXBMb2coZ3JvdXAsIGxvZyk7XG4gICAgfSwge30pO1xuXG5leHBvcnQgY29uc3QgY29tcHV0ZVRlcm1zID0gKFxuICBvcmlnaW5hbFZhbHVlczogYmxhbmtOb2RlW10sIHJlY2FsY3VsYXRlZFZhbHVlczogYmxhbmtOb2RlW10sIHRlcm1zPzogSVRlcm1KU09OTERbXSwgZmlsdGVyVGVybVR5cGVzPzogVGVybVRlcm1UeXBlW11cbikgPT4gZnJvbShcbiAgICB0ZXJtcz8ubGVuZ3RoID9cbiAgICAgIHRlcm1zIDpcbiAgICAgIFtcbiAgICAgICAgLi4uKG9yaWdpbmFsVmFsdWVzIHx8IFtdKS5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtKSxcbiAgICAgICAgLi4uKHJlY2FsY3VsYXRlZFZhbHVlcyB8fCBbXSkubWFwKCh7IHRlcm0gfSkgPT4gdGVybSlcbiAgICAgIF0uZmlsdGVyKG5vZGUgPT4gIWZpbHRlclRlcm1UeXBlcz8ubGVuZ3RoIHx8IGZpbHRlclRlcm1UeXBlcy5pbmNsdWRlcyhub2RlLnRlcm1UeXBlKSlcbiAgKS5waXBlKFxuICAgIGRpc3RpbmN0KHYgPT4gdiFbJ0BpZCddKSxcbiAgICB0b0FycmF5KCksXG4gICAgbWFwKHYgPT4gb3JkZXJCeSh2LCBbJ25hbWUnXSwgWydhc2MnXSkpXG4gICkudG9Qcm9taXNlKCk7XG5cbmV4cG9ydCB0eXBlIGJsYW5rTm9kZSA9IEVtaXNzaW9uIHwgUHJvZHVjdCB8IEhlc3RpYUlucHV0IHwgUHJvcGVydHkgfCBQcmFjdGljZSB8IEluZGljYXRvcjtcblxuZXhwb3J0IGVudW0gTG9nU3RhdHVzIHtcbiAgc3VjY2VzcyA9ICdzdWNjZXNzZnVsJyxcbiAgZXJyb3IgPSAnZmFpbGVkJyxcbiAgc2tpcEhpZXJhcmNoeSA9ICdub3QgcnVuIChtb2RlbCBoaWdoZXIgdXAgaGllcmFyY2h5IHJ1biBpbnN0ZWFkKScsXG4gIGRhdGFQcm92aWRlZCA9ICdub3QgcnVuICh1c2VyIHByb3ZpZGVkIGRhdGEgcmV0YWluZWQpJyxcbiAgbm90UmVxdWlyZWQgPSAnbm90IHJlbGV2YW50J1xufVxuXG5jb25zdCBoYXNMb2dzID0gKGxvZ3M/OiBJTm9kZVRlcm1Mb2cpID0+ICEhbG9ncz8ucmVxdWlyZW1lbnRzIHx8ICEhbG9ncz8ubG9ncyB8fCBsb2dzPy5taXNzaW5nTG9va3Vwcz8ubGVuZ3RoID4gMDtcblxuY29uc3QgaGFzTG9nRGV0YWlscyA9IChzdGF0dXM6IExvZ1N0YXR1cywgbG9ncz86IElOb2RlVGVybUxvZykgPT5cbiAgW1xuICAgIExvZ1N0YXR1cy5zdWNjZXNzLFxuICAgIExvZ1N0YXR1cy5lcnJvclxuICBdLmluY2x1ZGVzKHN0YXR1cykgJiYgaGFzTG9ncyhsb2dzKTtcblxuY29uc3QgbG9nU3RhdHVzID0gKGRhdGE6IElCbGFua05vZGVMb2dTdWJWYWx1ZSB8IElCbGFua05vZGVMb2csIGxvZ3M/OiBJTm9kZVRlcm1Mb2csIGhhc1ByZXZpb3VzU3VjY2VzcyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHdpdGhMb2dzID0gaGFzTG9nKGxvZ3MpO1xuICBjb25zdCBpc0NhbGN1bGF0ZWQgPSBbXG4gICAgdHlwZW9mIGRhdGEub3JpZ2luYWxWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcsIC8vIG5vIG9yaWdpbmFsIHZhbHVlXG4gICAgZGF0YS5pc1JlY2FsY3VsYXRlZCAvLyBpcyByZWNhbGN1bGF0ZWRcbiAgXS5ldmVyeShCb29sZWFuKTtcbiAgLy8gY2FuIGJlIG5vdCByZXF1aXJlZCBmb3IgYSBzcGVjaWZpYyBtb2RlbFxuICBjb25zdCBpc1JlcXVpcmVkID0gISFsb2dzICYmICdydW5SZXF1aXJlZCcgaW4gbG9ncyA/IGxvZ3MucnVuUmVxdWlyZWQgOiBkYXRhLmlzUmVxdWlyZWQ7XG4gIHJldHVybiB3aXRoTG9nc1xuICAgID8gKFxuICAgICAgIWlzUmVxdWlyZWRcbiAgICAgICAgPyBMb2dTdGF0dXMubm90UmVxdWlyZWRcbiAgICAgICAgOiBpc1J1bk9yY2hlc3RyYXRvcihsb2dzKVxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgJ3Nob3VsZFJ1bicgaW4gbG9nc1xuICAgICAgICAgICAgICA/IGxvZ3Muc2hvdWxkUnVuXG4gICAgICAgICAgICAgICAgPyBkYXRhLmlzUmVjYWxjdWxhdGVkXG4gICAgICAgICAgICAgICAgICA/IExvZ1N0YXR1cy5zdWNjZXNzXG4gICAgICAgICAgICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICAgICAgICAgICAgICA6IGhhc1ByZXZpb3VzU3VjY2Vzc1xuICAgICAgICAgICAgICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgICAgICAgICAgICAgOiBMb2dTdGF0dXMuZXJyb3JcbiAgICAgICAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgICAgICAgKVxuICAgICAgICAgIDogZGF0YS5pc1JlY2FsY3VsYXRlZFxuICAgICAgICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgKVxuICAgIDogKFxuICAgICAgaXNDYWxjdWxhdGVkXG4gICAgICAgID8gTG9nU3RhdHVzLnNraXBIaWVyYXJjaHlcbiAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ01vZGVsIHtcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgbG9ncz86IElOb2RlVGVybUxvZztcbiAgc2hvd0xvZ3M/OiBib29sZWFuO1xuICBzdGF0dXM/OiBMb2dTdGF0dXM7XG4gIG1vZGVsPzogSU1vZGVsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCbGFua05vZGVMb2dTdWJWYWx1ZSB7XG4gIGtleTogc3RyaW5nO1xuICBzaG93VW5pdHM6IGJvb2xlYW47XG4gIG9yaWdpbmFsVmFsdWU6IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW47XG4gIHJlY2FsY3VsYXRlZFZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuO1xuICBpc1JlY2FsY3VsYXRlZDogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZD86IGJvb2xlYW47XG4gIGlkPzogYW55O1xuICBjb25maWdNb2RlbHM/OiBJQ29uZmlnTW9kZWxbXTtcbiAgbG9ncz86IElOb2RlVGVybUxvZ3M7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJsYW5rTm9kZUxvZyB7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgY2FuT3BlbjogYm9vbGVhbjtcbiAgdGVybTogSVRlcm1KU09OTEQ7XG4gIHRlcm1JZDogc3RyaW5nO1xuICB0eXBlPzogU2NoZW1hVHlwZTtcbiAgY29uZmlnTW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW107XG4gIG9yaWdpbmFsOiBibGFua05vZGVbXTtcbiAgb3JpZ2luYWxWYWx1ZTogbnVtYmVyO1xuICAvLyB3aGVuIG11bHRpcGxlIG1vZGVscyBhcmUgcnVubmluZyBpbiBwYXJhbGxlbFxuICBvcmlnaW5hbFZhbHVlQnlNZXRob2RJZD86IHtcbiAgICBbbWV0aG9kSWQ6IHN0cmluZ106IG51bWJlcjtcbiAgfTtcbiAgcmVjYWxjdWxhdGVkOiBibGFua05vZGVbXTtcbiAgcmVjYWxjdWxhdGVkVmFsdWU6IG51bWJlcjtcbiAgLy8gd2hlbiBtdWx0aXBsZSBtb2RlbHMgYXJlIHJ1bm5pbmcgaW4gcGFyYWxsZWxcbiAgcmVjYWxjdWxhdGVkVmFsdWVCeU1ldGhvZElkPzoge1xuICAgIFttZXRob2RJZDogc3RyaW5nXTogbnVtYmVyO1xuICB9O1xuICBpc09yaWdpbmFsOiBib29sZWFuO1xuICBpc1JlY2FsY3VsYXRlZDogYm9vbGVhbjtcbiAgaGFzRGF0YTogYm9vbGVhbjtcbiAgaXNSZXF1aXJlZDogYm9vbGVhbjtcbiAgbG9ncz86IElOb2RlVGVybUxvZ3M7XG4gIGtleXM6IElCbGFua05vZGVMb2dTdWJWYWx1ZVtdO1xuICBzdWJWYWx1ZXM6IElCbGFua05vZGVMb2dTdWJWYWx1ZVtdO1xuICAvLyBtb2RlbHMgYXJlIHByZXNlbnQgYXMgd2VsbCBpbiBvbmUgb2YgdGhlIFN1YlZhbHVlcywgZG8gbm90IHNob3cgdHdpY2VcbiAgbW9kZWxzSW5TdWJWYWx1ZXM/OiBib29sZWFuO1xuICAvLyBjb250YWlucyBtdWx0aXBsZSBtb2RlbHMgYWxsIHJ1bm5pbmcgaW4gcGFyYWxsZWxcbiAgYWxsUGFyYWxsZWw/OiBib29sZWFuO1xufVxuXG5jb25zdCByZW1vdmVDb25maWdNb2RlbEJ5U3RhdHVzID0gKC4uLnN0YXR1c2VzOiBMb2dTdGF0dXNbXSkgPT4gKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+XG4gICFzdGF0dXNlcy5pbmNsdWRlcyhtb2RlbD8uc3RhdHVzKTtcblxuY29uc3Qga2VlcENvbmZpZ01vZGVsQnlTdGF0dXMgPSAoLi4uc3RhdHVzZXM6IExvZ1N0YXR1c1tdKSA9PiAobW9kZWw6IElDb25maWdNb2RlbCkgPT5cbiAgc3RhdHVzZXMuaW5jbHVkZXMobW9kZWw/LnN0YXR1cyk7XG5cbmNvbnN0IGZpbHRlckNvbmZpZ01vZGVscyA9IChcbiAgbW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdKSwgZmlsdGVyRnVuYzogKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+IGJvb2xlYW5cbikgPT5cbiAgKEFycmF5LmlzQXJyYXkobW9kZWxzKSA/IG1vZGVscyA6IFttb2RlbHNdKVxuICAgIC5maWx0ZXIodiA9PiBBcnJheS5pc0FycmF5KHYpIHx8IGZpbHRlckZ1bmModikpXG4gICAgLm1hcCh2ID0+IEFycmF5LmlzQXJyYXkodikgPyB2LmZpbHRlcihmaWx0ZXJGdW5jKSA6IHYpXG4gICAgLmZpbHRlcihCb29sZWFuKTtcblxuY29uc3QgbWVyZ2VTdWJWYWx1ZXMgPSAodmFsdWVzOiBhbnlbXSk6IGFueVtdID0+XG4gIE9iamVjdC52YWx1ZXMoXG4gICAgdmFsdWVzLnJlZHVjZSgocHJldiwgeyBpZCwga2V5LCBjb25maWdNb2RlbHMsIC4uLmRhdGEgfSkgPT4ge1xuICAgICAgY29uc3QgdW5pcXVlS2V5ID0gW2tleSwgaWRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gICAgICBwcmV2W3VuaXF1ZUtleV0gPSB7XG4gICAgICAgIC4uLk9iamVjdC5hc3NpZ24oe30sIHByZXZbdW5pcXVlS2V5XSwgZGF0YSksXG4gICAgICAgIGlkLFxuICAgICAgICBrZXksXG4gICAgICAgIGNvbmZpZ01vZGVsczogdW5pcXVlKFsuLi4oKHByZXZbdW5pcXVlS2V5XSB8fCB7fSkuY29uZmlnTW9kZWxzIHx8IFtdKSwgLi4uKGNvbmZpZ01vZGVscyB8fCBbXSldKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KVxuICApO1xuXG5jb25zdCByZWR1Y2VWYWx1ZXMgPSAodmFsdWVzOiBhbnlbXSwgdGVybUlkOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZXMgPSB2YWx1ZXNcbiAgICAubWFwKCh7IHZhbHVlIH0pID0+IHByb3BlcnR5VmFsdWUodmFsdWUsIHRlcm1JZCkpXG4gICAgLy8gcHJvcGVydHlWYWx1ZSBtYXkgcmV0dXJuIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCB0aGVyZWZvcmUgcmVtb3ZlIHRoZW0gZnJvbSB0b3RhbFxuICAgIC5maWx0ZXIodiA9PiB2ICE9PSBudWxsKTtcbiAgcmV0dXJuIHByb3BlcnR5VmFsdWVzLmxlbmd0aCA/IHByb3BlcnR5VmFsdWVzLnJlZHVjZSgocCwgdikgPT4gcCArIHYsIDApIDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgaXNSdW5PcmNoZXN0cmF0b3IgPSAobG9nOiBJTm9kZVRlcm1Mb2cpID0+ICEoJ3Nob3VsZFJ1bk9yY2hlc3RyYXRvcicgaW4gbG9nKSB8fCBsb2cuc2hvdWxkUnVuT3JjaGVzdHJhdG9yO1xuXG5jb25zdCBoYXNMb2cgPSAobG9nOiBJTm9kZVRlcm1Mb2csIHdpdGhPcmNoZXN0cmF0b3IgPSB0cnVlKSA9PlxuICAhIWxvZyAmJiAoXG4gICAgJ3Nob3VsZFJ1bicgaW4gbG9nIHx8XG4gICAgJ3J1blJlcXVpcmVkJyBpbiBsb2cgfHxcbiAgICAod2l0aE9yY2hlc3RyYXRvciAmJiAnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2cpXG4gICk7XG5cbmNvbnN0IGlzUmVjYWxjdWxhdGVkID0gKHZhbHVlczogYmxhbmtOb2RlW10sIGtleSA9ICd2YWx1ZScpID0+IHZhbHVlcy5zb21lKHYgPT4gKFtcbiAgLi4uKHYuYWRkZWQgfHwgW10pLFxuICAuLi4odi51cGRhdGVkIHx8IFtdKVxuXSkuaW5jbHVkZXMoa2V5KSk7XG5cbmNvbnN0IGJsYW5rTm9kZVZhbHVlQnlLZXk6IHtcbiAgW2tleTogc3RyaW5nXTogKHZhbHVlczogYmxhbmtOb2RlW10sIGtleT86IHN0cmluZywgaWQ/OiBzdHJpbmcpID0+IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW47XG59ID0ge1xuICBwcm9wZXJ0eTogKHZhbHVlczogKEVtaXNzaW9uIHwgUHJvZHVjdCB8IEhlc3RpYUlucHV0KVtdLCBfaywgaWQpID0+ICEhaWQgJiYgdmFsdWVzPy5sZW5ndGhcbiAgICA/ICh2YWx1ZXNbMF0ucHJvcGVydGllcyB8fCBbXSkuZmluZChwID0+IHAudGVybVsnQGlkJ10gPT09IGlkKT8udmFsdWUgfHwgJydcbiAgICA6ICcnLFxuICBpbnB1dDogKHZhbHVlczogRW1pc3Npb25bXSwgX2ssIGlkKSA9PiAhIWlkICYmICh2YWx1ZXMgfHwgW10pLmZpbHRlcih2ID0+IHZbJ0B0eXBlJ10gPT09IFNjaGVtYVR5cGUuRW1pc3Npb24pLmxlbmd0aFxuICAgID8gcHJvcGVydHlWYWx1ZSh2YWx1ZXMuZmluZCgoeyBpbnB1dHMgfSkgPT4gKGlucHV0cyB8fCBbXSkuc29tZShpbnB1dCA9PiBpbnB1dFsnQGlkJ10gPT09IGlkKSk/LnZhbHVlLCBpZClcbiAgICA6ICcnLFxuICB0cmFuc2Zvcm1hdGlvbjogKHZhbHVlczogRW1pc3Npb25bXSwgX2ssIGlkKSA9PiB2YWx1ZXMubGVuZ3RoXG4gICAgPyBwcm9wZXJ0eVZhbHVlKHZhbHVlcy5maW5kKCh7IHRyYW5zZm9ybWF0aW9uIH0pID0+IHRyYW5zZm9ybWF0aW9uPy5bJ0BpZCddID09PSBpZCk/LnZhbHVlLCBpZClcbiAgICA6ICcnLFxuICBkZWZhdWx0OiAoYmxhbmtOb2Rlcywga2V5KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBibGFua05vZGVzPy5sZW5ndGggPyBibGFua05vZGVzWzBdW2tleV0gOiBudWxsO1xuICAgIHJldHVybiBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbicsICd1bmRlZmluZWQnXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpXG4gICAgICA/IGlzVW5kZWZpbmVkKHZhbHVlKVxuICAgICAgPyAnJ1xuICAgICAgOiB2YWx1ZVxuICAgICAgOiBudWxsO1xuICB9XG59O1xuXG5jb25zdCBibGFua05vZGVWYWx1ZSA9IChibGFua05vZGVzOiBibGFua05vZGVbXSwga2V5OiBzdHJpbmcsIGlkPzogc3RyaW5nKSA9PlxuICBibGFua05vZGVWYWx1ZUJ5S2V5W2tleSBpbiBibGFua05vZGVWYWx1ZUJ5S2V5ID8ga2V5IDogJ2RlZmF1bHQnXShibGFua05vZGVzLCBrZXksIGlkKTtcblxuY29uc3Qgc3ViVmFsdWVMb2dLZXkgPSAoeyBrZXksIGlkIH06IElCbGFua05vZGVMb2dTdWJWYWx1ZSk6IHN0cmluZyA9PlxuICBrZXkgPT09ICd0cmFuc2Zvcm1hdGlvbicgPyBrZXkgOiAoaWQgfHwga2V5IHx8IG51bGwpO1xuXG5jb25zdCBpbnB1dFZhbHVlID0gKHsgdmFsdWUsIGNvZWZmaWNpZW50IH06IGFueSA9IHt9KSA9PlxuICBbdmFsdWUsIGNvZWZmaWNpZW50XS5ldmVyeShpc051bWJlcikgPyArdmFsdWUgKiArY29lZmZpY2llbnQgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IGxvZ1N1YlZhbHVlID0gKGxvZ3M6IElOb2RlVGVybUxvZ3MsIGtleTogc3RyaW5nLCBwcm9wOiBzdHJpbmcsIHNob3dVbml0cyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGxvZyA9IGxvZ3Nba2V5XT8uW3Byb3BdO1xuICByZXR1cm4gbG9nID8gKFxuICAgIEFycmF5LmlzQXJyYXkobG9nKSA/XG4gICAgICAobG9nIGFzIHN0cmluZ1tdKS5tYXAoaWQgPT4gKHtcbiAgICAgICAga2V5OiBwcm9wLCBpZCwgc2hvd1VuaXRzLFxuICAgICAgICAvLyByZWNhbGN1bGF0ZWRWYWx1ZTogaW5wdXRWYWx1ZShsb2dzW2tleV0/LmxvZ3M/LltpZF0pXG4gICAgICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZSkpIDpcbiAgICAgIHtcbiAgICAgICAga2V5OiBwcm9wLCBpZDogbG9nLCBzaG93VW5pdHMsXG4gICAgICAgIC8vIHJlY2FsY3VsYXRlZFZhbHVlOiBpbnB1dFZhbHVlKGxvZ3Nba2V5XT8ubG9ncz8uW2xvZ10pXG4gICAgICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZVxuICApIDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgbG9nUHJvcGVydGllcyA9IChub2RlczogYmxhbmtOb2RlW10sIG1vZGVsczogSU1vZGVsW10pID0+XG4gIG5vZGVzLmZsYXRNYXAobm9kZSA9PlxuICAgICgobm9kZSBhcyBhbnkpLnByb3BlcnRpZXMgfHwgW10pLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm1bJ0BpZCddKVxuICApLm1hcChpZCA9PiAoeyBrZXk6ICdwcm9wZXJ0eScsIGlkLCBzaG93VW5pdHM6IGZhbHNlLCBjb25maWdNb2RlbHM6IGZpbmRNb2RlbHMobW9kZWxzLCBpZCkubWFwKCh7IG1vZGVsIH0pID0+IG1vZGVsKSB9KSk7XG5cbi8qKlxuICogSW5jbHVkZSB0cmFuc2Zvcm1hdGlvbiBtb2RlbCAoY29weSBFbWlzc2lvbnMgZnJvbSBUcmFuc2Zvcm1hdGlvbiB0byBDeWNsZSkgYXMgc3ViVmFsdWUuXG4gKlxuICogQHBhcmFtIGVtaXNzaW9uc1xuICogQHJldHVybnNcbiAqL1xuY29uc3QgbG9nRW1pc3Npb25UcmFuc2Zvcm1hdGlvbnMgPSAoZW1pc3Npb25zOiBFbWlzc2lvbltdKSA9PlxuICBlbWlzc2lvbnMuZmlsdGVyKCh7IHRyYW5zZm9ybWF0aW9uIH0pID0+ICEhdHJhbnNmb3JtYXRpb24/LlsnQGlkJ10pLm1hcCgoeyB0cmFuc2Zvcm1hdGlvbiB9KSA9PiAoe1xuICAgIGlkOiB0cmFuc2Zvcm1hdGlvbj8uWydAaWQnXSxcbiAgICBrZXk6ICd0cmFuc2Zvcm1hdGlvbicsXG4gICAgc2hvd1VuaXRzOiB0cnVlLFxuICAgIGNvbmZpZ01vZGVsczogWydjeWNsZS90cmFuc2Zvcm1hdGlvbiddXG4gIH0pKTtcblxuY29uc3QgaW5jbHVkZUN5Y2xlU3ViVmFsdWUgPSAoc3ViVmFsdWVzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXSkgPT5cbiAgc3ViVmFsdWVzLnNvbWUodiA9PiB2LmtleSAhPT0gJ3Byb3BlcnR5Jyk7XG5cbmNvbnN0IGN5Y2xlU3ViVmFsdWUgPSAoe1xuICB0ZXJtSWQsIGNvbmZpZ01vZGVscywgaXNSZXF1aXJlZCwgc3ViVmFsdWVzLCBvcmlnaW5hbCwgcmVjYWxjdWxhdGVkXG59OiBJQmxhbmtOb2RlTG9nKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSByZWR1Y2VWYWx1ZXMob3JpZ2luYWwuZmlsdGVyKCh2OiBhbnkpID0+ICF2LmlucHV0cz8ubGVuZ3RoICYmICF2LnRyYW5zZm9ybWF0aW9uKSwgdGVybUlkKTtcbiAgY29uc3QgcmVjYWxjdWxhdGVkVmFsdWVzID0gcmVjYWxjdWxhdGVkLmZpbHRlcigodjogYW55KSA9PiAhdi5pbnB1dHM/Lmxlbmd0aCAmJiAhdi50cmFuc2Zvcm1hdGlvbik7XG4gIGNvbnN0IHJlY2FsY3VsYXRlZFZhbHVlID0gcmVkdWNlVmFsdWVzKHJlY2FsY3VsYXRlZFZhbHVlcywgdGVybUlkKTtcbiAgcmV0dXJuIGluY2x1ZGVDeWNsZVN1YlZhbHVlKHN1YlZhbHVlcykgJiYgIWlzRW1wdHkocmVjYWxjdWxhdGVkVmFsdWUpID8ge1xuICAgIGtleTogJ2N5Y2xlJyxcbiAgICBzaG93VW5pdHM6IHRydWUsXG4gICAgY29uZmlnTW9kZWxzLFxuICAgIGlzUmVxdWlyZWQsXG4gICAgb3JpZ2luYWxWYWx1ZSxcbiAgICByZWNhbGN1bGF0ZWRWYWx1ZSxcbiAgICBpc1JlY2FsY3VsYXRlZDogaXNSZWNhbGN1bGF0ZWQocmVjYWxjdWxhdGVkVmFsdWVzKVxuICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZSA6IG51bGw7XG59O1xuXG5jb25zdCBsb2dTdWJWYWx1ZXMgPSAoXG4gIGFsbExvZ3M6IElOb2RlTG9ncywgbG9nczogSU5vZGVUZXJtTG9ncywgb3JpZ2luYWw6IGJsYW5rTm9kZVtdLCByZWNhbGN1bGF0ZWQ6IGJsYW5rTm9kZVtdLCBtb2RlbHM6IElNb2RlbFtdLFxuICB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfTogSUNvbmZpZ01vZGVsRG9jc0RhdGFcbikgPT5cbiAgbWVyZ2VTdWJWYWx1ZXMoW1xuICAgIC8vIGluY2x1ZGUgcHJvcGVydGllc1xuICAgIC4uLk9iamVjdC5rZXlzKGxvZ3MpXG4gICAgICAuZmlsdGVyKGlkID0+IGxvZ3NbaWRdLmlzUHJvcGVydHkpXG4gICAgICAubWFwKGlkID0+ICh7XG4gICAgICAgIGlkLFxuICAgICAgICBrZXk6ICdwcm9wZXJ0eScsXG4gICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgIGNvbmZpZ01vZGVsczogKGxvZ3NbaWRdLm1vZGVscyB8fCBbXSkuZmlsdGVyKHYgPT4gaGFzTG9nKGxvZ3NbaWRdW3ZdKSlcbiAgICAgIH0pKSxcbiAgICAuLi4odHlwZSA9PT0gU2NoZW1hVHlwZS5FbWlzc2lvbiA/IGxvZ0VtaXNzaW9uVHJhbnNmb3JtYXRpb25zKHJlY2FsY3VsYXRlZCBhcyBFbWlzc2lvbltdKSA6IFtdKSxcbiAgICAuLi5PYmplY3Qua2V5cyhsb2dzKS5mbGF0TWFwKGtleSA9PlxuICAgICAgW1xuICAgICAgICBsb2dTdWJWYWx1ZShsb2dzLCBrZXksICdpbnB1dCcsIHRydWUpLFxuICAgICAgICBsb2dTdWJWYWx1ZShsb2dzLCBrZXksICdwcm9wZXJ0eScpXG4gICAgICBdXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAubWFwKHYgPT4gKHsgLi4udiwgY29uZmlnTW9kZWxzOiAodi5jb25maWdNb2RlbHMgYXMgYW55W10pIHx8IFtrZXldIH0pKVxuICAgICksXG4gICAgLi4ubG9nUHJvcGVydGllcyhvcmlnaW5hbCwgbW9kZWxzKSxcbiAgICAuLi5sb2dQcm9wZXJ0aWVzKHJlY2FsY3VsYXRlZCwgbW9kZWxzKVxuICBdKVxuICAgIC5tYXAoKHsga2V5LCBpZCwgc2hvd1VuaXRzLCBjb25maWdNb2RlbHMsIG9yaWdpbmFsVmFsdWUsIHJlY2FsY3VsYXRlZFZhbHVlIH0pID0+IHtcbiAgICAgIG9yaWdpbmFsVmFsdWUgPSBvcmlnaW5hbFZhbHVlIHx8IGJsYW5rTm9kZVZhbHVlKG9yaWdpbmFsLCBrZXksIGlkKTtcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlID0gcmVjYWxjdWxhdGVkVmFsdWUgfHwgYmxhbmtOb2RlVmFsdWUocmVjYWxjdWxhdGVkLCBrZXksIGlkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleSxcbiAgICAgICAgaWQsXG4gICAgICAgIHNob3dVbml0cyxcbiAgICAgICAgY29uZmlnTW9kZWxzOiBjb25maWdNb2RlbHMubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfSwgeyBrZXksIGlkIH0gYXMgYW55KSksXG4gICAgICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIHJlY2FsY3VsYXRlZFZhbHVlLFxuICAgICAgICBpc1JlY2FsY3VsYXRlZDogIWlzVW5kZWZpbmVkKHJlY2FsY3VsYXRlZFZhbHVlKSAmJiByZWNhbGN1bGF0ZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSxcbiAgICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWU7XG4gICAgfSlcbiAgICAuZmlsdGVyKCh7IGNvbmZpZ01vZGVscywgb3JpZ2luYWxWYWx1ZSwgcmVjYWxjdWxhdGVkVmFsdWUgfSkgPT4gW1xuICAgICAgY29uZmlnTW9kZWxzLmxlbmd0aCA+IDAsXG4gICAgICBvcmlnaW5hbFZhbHVlICE9PSAnJyB8fCByZWNhbGN1bGF0ZWRWYWx1ZSAhPT0gJydcbiAgICBdLmV2ZXJ5KEJvb2xlYW4pKVxuICAgIC5tYXAodiA9PiB2LmtleSA9PT0gJ2lucHV0JyA/IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGFsbExvZ3MpKHYpIDogZGF0YVdpdGhDb25maWdNb2RlbExvZ3MobG9ncykodikpO1xuXG5jb25zdCBsb2dLZXlzID0gKFxuICBsb2dzOiBJTm9kZVRlcm1Mb2dzLCBvcmlnaW5hbDogYmxhbmtOb2RlW10sIHJlY2FsY3VsYXRlZDogYmxhbmtOb2RlW10sIG1vZGVsczogSU1vZGVsW10sIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCB9XG4pID0+XG4gIE9iamVjdC5rZXlzKGxvZ3MpXG4gICAgLmZpbHRlcihrZXkgPT4gbG9nc1trZXldLmlzS2V5ICYmIGtleSAhPT0gJ3RyYW5zZm9ybWF0aW9uJylcbiAgICAubWFwKGtleSA9PiAoe1xuICAgICAga2V5LFxuICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgIGNvbmZpZ01vZGVsczogKGxvZ3Nba2V5XS5tb2RlbHMgfHwgW10pXG4gICAgICAgIC5tYXAoY29uZmlnTW9kZWxXaXRoRG9jcyhtb2RlbHMsIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCB9LCB7IGtleSB9IGFzIGFueSkpXG4gICAgICAgIC8vIG9ubHkgdGFrZSB0aG9zZSB3ZSBmb3VuZCBhIG1hdGNoaW5nIG1vZGVsIChhdm9pZCBtYXRjaGluZyBrZXkgb24gd3Jvbmcgbm9kZSB0eXBlKVxuICAgICAgICAuZmlsdGVyKHYgPT4gISF2Lm1vZGVsKSxcbiAgICAgIG9yaWdpbmFsVmFsdWU6IGJsYW5rTm9kZVZhbHVlKG9yaWdpbmFsLCBrZXkpLFxuICAgICAgcmVjYWxjdWxhdGVkVmFsdWU6IGJsYW5rTm9kZVZhbHVlKHJlY2FsY3VsYXRlZCwga2V5KSxcbiAgICAgIGlzUmVjYWxjdWxhdGVkOiBpc1JlY2FsY3VsYXRlZChyZWNhbGN1bGF0ZWQsIGtleSksXG4gICAgICBpc1JlcXVpcmVkOiB0cnVlXG4gICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpKVxuICAgIC5maWx0ZXIodiA9PiB2LmNvbmZpZ01vZGVscy5sZW5ndGggPiAwKVxuICAgIC5tYXAoZGF0YVdpdGhDb25maWdNb2RlbExvZ3MobG9ncykpO1xuXG5jb25zdCBpc01vZGVsRm9ySW5wdXRQcm9kdWN0ID0gKHR5cGU6IFNjaGVtYVR5cGUsIGtleTogc3RyaW5nKSA9PiBbXG4gIGtleSAhPT0gJ2hlc3RpYUFnZ3JlZ2F0ZWREYXRhJyxcbiAgIWtleS5pbmNsdWRlcygnL2lucHV0LycpIHx8IHR5cGUgPT09IFNjaGVtYVR5cGUuSW5wdXQsXG4gICFrZXkuaW5jbHVkZXMoJy9wcm9kdWN0LycpIHx8IHR5cGUgPT09IFNjaGVtYVR5cGUuUHJvZHVjdCxcbl0uZXZlcnkoQm9vbGVhbik7XG5cbmNvbnN0IGlzQmFja2dyb3VuZElucHV0ID0gKGxvZzogSU5vZGVUZXJtTG9nKSA9PlxuICBsb2cubWV0aG9kVGllciA9PT0gRW1pc3Npb25NZXRob2RUaWVyLmJhY2tncm91bmQgJiYgISFsb2cuaW5wdXQgJiYgbG9nLnNob3VsZFJ1bjtcblxuY29uc3QgaXNNb2RlbExvZyA9IChsb2dzOiBJTm9kZVRlcm1Mb2dzLCB0eXBlOiBTY2hlbWFUeXBlKSA9PiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbG9nID0gbG9nc1trZXldO1xuICByZXR1cm4gW1xuICAgIC8vIGhhbmRsZSBQcm9kdWN0IHNhbWUgYXMgSW5wdXRcbiAgICBpc01vZGVsRm9ySW5wdXRQcm9kdWN0KHR5cGUsIGtleSksXG4gICAgbG9nLm1ldGhvZFRpZXIgIT09IEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kLFxuICAgICFsb2cuaXNLZXksXG4gICAgLy8gIWxvZy5pbnB1dCxcbiAgICAhbG9nLnByb3BlcnR5XG4gIF0uZXZlcnkoQm9vbGVhbikgJiYgW1xuICAgICdzaG91bGRSdW4nIGluIGxvZyxcbiAgICAnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2csXG4gICAgJ3J1blJlcXVpcmVkJyBpbiBsb2dcbiAgXS5zb21lKEJvb2xlYW4pO1xufTtcblxuY29uc3QgbW9kZWxDb25maWdPcmRlciA9IChcbiAgbW9kZWxzOiAoSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnIHwgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW10pW10sIHRlcm1JZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nLCBtb2RlbDogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBpbmRleGVzID0gbW9kZWxzLm1hcCgobSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBhcnJheUluZGV4ID0gQXJyYXkuaXNBcnJheShtKSA/IG1vZGVsQ29uZmlnT3JkZXIobSwgdGVybUlkLCBtb2RlbEtleSwgbW9kZWwpIDogJyc7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobSlcbiAgICAgID8gYXJyYXlJbmRleFxuICAgICAgICA/IFtpbmRleCwgYXJyYXlJbmRleF0uam9pbignLicpXG4gICAgICAgIDogJydcbiAgICAgIDogW3Rlcm1JZCA9PT0gbS52YWx1ZSwgbW9kZWxLZXkgPT09IG0ua2V5LCBtb2RlbCA9PT0gbS5tb2RlbF0uZXZlcnkoQm9vbGVhbilcbiAgICAgICAgPyBgJHtpbmRleH1gXG4gICAgICAgIDogJyc7XG4gIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGluZGV4ZXMubGVuZ3RoID8gaW5kZXhlc1swXSA6ICcnO1xufTtcblxuaW50ZXJmYWNlIElDb25maWdNb2RlbERvY3NEYXRhIHtcbiAgbm9kZVR5cGU6IE5vZGVUeXBlO1xuICB0eXBlOiBTY2hlbWFUeXBlO1xuICB0ZXJtSWQ6IHN0cmluZztcbiAgdGVybVR5cGU/OiBUZXJtVGVybVR5cGU7XG59XG5cbmNvbnN0IGNvbmZpZ01vZGVsV2l0aERvY3MgPSAoXG4gIG1vZGVsczogSU1vZGVsW10sIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCwgdGVybVR5cGUgfTogSUNvbmZpZ01vZGVsRG9jc0RhdGEsIHN1YlZhbHVlPzogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlXG4pID0+IChtZXRob2RJZDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5vZGUgPSB7XG4gICAgJ0B0eXBlJzogbm9kZVR5cGUsXG4gICAgdGVybTogeyAnQGlkJzogc3ViVmFsdWU/LmlkIHx8IHRlcm1JZCB9LFxuICAgIG1ldGhvZE1vZGVsOiB7ICdAaWQnOiBtZXRob2RJZCB9XG4gIH0gYXMgYW55O1xuICByZXR1cm4ge1xuICAgIG1ldGhvZElkLFxuICAgIG1vZGVsOiBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsUGFyYW1zKG5vZGUpKSB8fFxuICAgICAgLy8gaGFuZGxlIFwibGl2ZUFuaW1hbFwiXG4gICAgICAodGVybVR5cGUgJiYgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCB0ZXJtVHlwZSkpKSB8fFxuICAgICAgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBgJHtzdWJWYWx1ZT8ua2V5fS4ke21ldGhvZElkfWApKSB8fFxuICAgICAgLy8gaGFuZGxlIFwiaW5wdXQucHJpY2VcIlxuICAgICAgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBgJHt0eXBlPy50b0xvd2VyQ2FzZSgpfS4ke3N1YlZhbHVlPy5rZXl9YCkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJpbnB1dC5oZXN0aWFBZ2dyZWdhdGVkRGF0YVwiXG4gICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke3R5cGU/LnRvTG93ZXJDYXNlKCl9LiR7bWV0aG9kSWR9YCkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJ0cmFuc2Zvcm1hdGlvblwiXG4gICAgICAoc3ViVmFsdWU/LmtleSA/IGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgc3ViVmFsdWU/LmtleSkpIDogdW5kZWZpbmVkKSB8fFxuICAgICAgLy8gaGFuZGxlIFwidHJhbnNmb3JtYXRpb24vaW5wdXQvZXhjcmV0YVwiIGFuZCBvdGhlciBtb2RlbHMgd2l0aCBcIi9cIlxuICAgICAgKG1ldGhvZElkLmluY2x1ZGVzKCcvJykgPyBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIHtcbiAgICAgICAgbW9kZWw6IG1ldGhvZElkLnNwbGl0KCcvJylbMF0sXG4gICAgICAgIG1vZGVsS2V5OiBtZXRob2RJZC5zcGxpdCgnLycpLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgfSkgOiB1bmRlZmluZWQpXG4gIH07XG59O1xuXG5jb25zdCBjb25maWdNb2RlbFdpdGhMb2dzID0gKFxuICBkYXRhOiBJQmxhbmtOb2RlTG9nIHwgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlLCBsb2dzOiBJTm9kZVRlcm1Mb2dzLCBwcmV2aW91c01vZGVsU3VjY2VzcyA9IGZhbHNlXG4pID0+IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGxvZ1N0YXR1cyhkYXRhLCBsb2dzPy5bbW9kZWwubWV0aG9kSWRdLCBwcmV2aW91c01vZGVsU3VjY2Vzcyk7XG4gIHJldHVybiB7XG4gICAgLi4ubW9kZWwsXG4gICAgbG9nczogbG9ncz8uW21vZGVsLm1ldGhvZElkXSxcbiAgICBzdGF0dXMsXG4gICAgc2hvd0xvZ3M6IGhhc0xvZ0RldGFpbHMoc3RhdHVzLCBsb2dzPy5bbW9kZWwubWV0aG9kSWRdKVxuICB9IGFzIElDb25maWdNb2RlbDtcbn07XG5cbi8qKlxuICogSGFuZGxlIGhpZXJhcmNoeSBza2lwIGlmIGEgbW9kZWwgYmVmb3JlIHN1Y2NlZWRlZC5cbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGluZGV4XG4gKi9cbmNvbnN0IGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzID0gKG1vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdLCBpbmRleCA9IDApID0+XG4gIGZpbHRlckNvbmZpZ01vZGVscyhtb2RlbHNbaW5kZXhdLCBrZWVwQ29uZmlnTW9kZWxCeVN0YXR1cyhMb2dTdGF0dXMuc3VjY2VzcykpLmxlbmd0aCA+IDAgfHxcbiAgaW5kZXggPD0gbW9kZWxzLmxlbmd0aCAmJiBoYXNQcmV2aW91c01vZGVsU3VjY2Vzcyhtb2RlbHMsIGluZGV4ICsgMSk7XG5cbmNvbnN0IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzID0gKFxuICBsb2dzOiBJTm9kZUxvZ3MgfCBJTm9kZVRlcm1Mb2dzXG4pID0+IDxUIGV4dGVuZHMgKElCbGFua05vZGVMb2cgfCBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpPihkYXRhOiBUKSA9PiB7XG4gIGNvbnN0IHN1YkxvZ0tleSA9IHN1YlZhbHVlTG9nS2V5KGRhdGEgYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlKTtcbiAgY29uc3QgbG9nID0gc3ViTG9nS2V5ID8gbG9nc1tzdWJMb2dLZXldIDogbG9ncztcbiAgY29uc3QgY29uZmlnTW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10gPSBbXTtcblxuICAvLyBnbyB0aHJvdWdoIG1vZGVscyBvbmUgYnkgb25lIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBuZXh0IG1vZGVscyBpbiBoaWVyYXJjaHkgaGF2ZSBmYWlsZWRcbiAgZm9yIChjb25zdCBpbmRleCBpbiBkYXRhLmNvbmZpZ01vZGVscykge1xuICAgIGlmIChkYXRhLmNvbmZpZ01vZGVscy5oYXNPd25Qcm9wZXJ0eShpbmRleCkpIHtcbiAgICAgIGNvbnN0IG1vZGVsID0gZGF0YS5jb25maWdNb2RlbHNbaW5kZXhdO1xuICAgICAgY29uc3QgcHJldmlvdXNNb2RlbFN1Y2Nlc3MgPSAraW5kZXggPiAwICYmIGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzKGNvbmZpZ01vZGVscyk7XG4gICAgICBjb25zdCBuZXdNb2RlbCA9IEFycmF5LmlzQXJyYXkobW9kZWwpXG4gICAgICAgID8gbW9kZWwubWFwKGNvbmZpZ01vZGVsV2l0aExvZ3MoZGF0YSwgbG9nLCBwcmV2aW91c01vZGVsU3VjY2VzcykpXG4gICAgICAgIDogY29uZmlnTW9kZWxXaXRoTG9ncyhkYXRhLCBsb2csIHByZXZpb3VzTW9kZWxTdWNjZXNzKShtb2RlbCk7XG4gICAgICBjb25maWdNb2RlbHMucHVzaChuZXdNb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5kYXRhLFxuICAgIGNvbmZpZ01vZGVsczogZmlsdGVyQ29uZmlnTW9kZWxzKGNvbmZpZ01vZGVscywgcmVtb3ZlQ29uZmlnTW9kZWxCeVN0YXR1cyhMb2dTdGF0dXMubm90UmVxdWlyZWQpKVxuICB9IGFzIFQ7XG59O1xuXG4vKipcbiAqIEdyb3VwIG1vZGVscyBydW5uaW5nIGluIHBhcmFsbGVsIHVuZGVyIHRoZSBzYW1lIGFycmF5LCBhcyB0aGV5IHNob3VsZCBhcHBlYXIgdmVydGljYWxseS5cbiAqXG4gKiBAcGFyYW0gY29uZmlnIFRoZSBjb25maWd1cmF0aW9uLlxuICogQHBhcmFtIG1vZGVscyBUaGUgbGlzdCBvZiBtb2RlbHNcbiAqL1xuY29uc3QgZ3JvdXBQYXJhbGxlbE1vZGVscyA9IChjb25maWc6IElPcmNoZXN0cmF0b3JDb25maWcsIHRlcm1JZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nLCBtb2RlbHM6IElDb25maWdNb2RlbFtdKSA9PiB7XG4gIGNvbnN0IG1vZGVsc1dpdGhPcmRlciA9IG1vZGVscy5tYXAobW9kZWwgPT4gKHtcbiAgICBtb2RlbCxcbiAgICBvcmRlcjogbW9kZWxDb25maWdPcmRlcihjb25maWcubW9kZWxzLCB0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbC5tZXRob2RJZClcbiAgfSkpO1xuICByZXR1cm4gbW9kZWxzV2l0aE9yZGVyXG4gICAgLnJlZHVjZSgocHJldiwgeyBtb2RlbCwgb3JkZXIgfSkgPT4ge1xuICAgICAgY29uc3QgaXNBcnJheSA9IG9yZGVyLmluY2x1ZGVzKCcuJyk7XG4gICAgICBjb25zdCBhcnJheUluZGV4ID0gaXNBcnJheSA/IG9yZGVyLnNwbGl0KCcuJylbMF0gOiBwcmV2Lmxlbmd0aDtcbiAgICAgIHByZXZbYXJyYXlJbmRleF0gPSBpc0FycmF5ID8gWy4uLihwcmV2W2FycmF5SW5kZXhdIHx8IFtdKSwgbW9kZWxdIDogbW9kZWw7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSBhcyBJQ29uZmlnTW9kZWxbXVtdKVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAubWFwKHYgPT4gdi5sZW5ndGggPT09IDEgPyB2WzBdIDogdik7XG59O1xuXG5jb25zdCBhbGxQYXJhbGxlbCA9IChtb2RlbHM6IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXSkgPT5cbiAgbW9kZWxzLmxlbmd0aCA9PT0gMSAmJiBBcnJheS5pc0FycmF5KG1vZGVsc1swXSkgJiYgbW9kZWxzWzBdLmxlbmd0aCA+IDE7XG5cbmNvbnN0IHZhbHVlQnlNZXRob2RJZCA9ICh2YWx1ZXM6IGJsYW5rTm9kZVtdLCBtZXRob2RJZDogc3RyaW5nLCB0ZXJtSWQ6IHN0cmluZykgPT5cbiAgcHJvcGVydHlWYWx1ZSh2YWx1ZXMuZmluZCh2ID0+IHYubWV0aG9kTW9kZWw/LlsnQGlkJ10gPT09IG1ldGhvZElkKT8udmFsdWUgYXMgbnVtYmVyW10sIHRlcm1JZCk7XG5cbmNvbnN0IGdyb3VwUGFyYWxsZWxWYWx1ZXMgPSAodmFsdWVzOiBibGFua05vZGVbXSwgbW9kZWxzOiBJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSwgdGVybUlkOiBzdHJpbmcpID0+XG4gIEFycmF5LmlzQXJyYXkobW9kZWxzKVxuICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKG1vZGVscy5tYXAobW9kZWwgPT4gW21vZGVsLm1ldGhvZElkLCB2YWx1ZUJ5TWV0aG9kSWQodmFsdWVzLCBtb2RlbC5tZXRob2RJZCwgdGVybUlkKV0pKVxuICAgIDoge307XG5cbmV4cG9ydCBjb25zdCBncm91cExvZ3NCeVRlcm0gPSAoXG4gIG5vZGVUeXBlOiBOb2RlVHlwZSwgbG9nczogSU5vZGVMb2dzLCBtb2RlbHM6IElNb2RlbFtdLCBjb25maWc6IElPcmNoZXN0cmF0b3JDb25maWcsXG4gIGFsbE9yaWdpbmFsVmFsdWVzOiBibGFua05vZGVbXSwgYWxsUmVjYWxjdWxhdGVkVmFsdWVzOiBibGFua05vZGVbXSxcbiAgbm9kZUtleT86IHN0cmluZ1xuKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsVmFsdWVzID0gKGFsbE9yaWdpbmFsVmFsdWVzIHx8IFtdKS5maWx0ZXIodmFsdWUgPT4gISh2YWx1ZSBhcyBhbnkpLmRlbGV0ZWQpO1xuICBjb25zdCByZWNhbGN1bGF0ZWRWYWx1ZXMgPSAoYWxsUmVjYWxjdWxhdGVkVmFsdWVzIHx8IFtdKS5maWx0ZXIodmFsdWUgPT4gISh2YWx1ZSBhcyBhbnkpLmRlbGV0ZWQpO1xuICBjb25zdCB0eXBlOiBTY2hlbWFUeXBlID0gb3JpZ2luYWxWYWx1ZXMubGVuZ3RoID9cbiAgICBvcmlnaW5hbFZhbHVlc1swXVsnQHR5cGUnXSB8fCBvcmlnaW5hbFZhbHVlc1swXS50eXBlIDpcbiAgICByZWNhbGN1bGF0ZWRWYWx1ZXMubGVuZ3RoID9cbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlc1swXVsnQHR5cGUnXSB8fCByZWNhbGN1bGF0ZWRWYWx1ZXNbMF0udHlwZSA6XG4gICAgICB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuICh0ZXJtOiBJVGVybUpTT05MRCk6IElCbGFua05vZGVMb2cgPT4ge1xuICAgIGNvbnN0IHRlcm1JZCA9IHRlcm1bJ0BpZCddO1xuICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS50ZXJtVHlwZTtcbiAgICBjb25zdCB0ZXJtTG9ncyA9IGdldChsb2dzLCB0ZXJtSWQsIHt9KSBhcyBJTm9kZVRlcm1Mb2dzO1xuICAgIGNvbnN0IG9yaWdpbmFsID0gb3JpZ2luYWxWYWx1ZXMuZmlsdGVyKHYgPT4gdGVybUlkID09PSB2LnRlcm0hWydAaWQnXSk7XG4gICAgY29uc3QgcmVjYWxjdWxhdGVkID0gcmVjYWxjdWxhdGVkVmFsdWVzLmZpbHRlcih2ID0+IHRlcm1JZCA9PT0gdi50ZXJtIVsnQGlkJ10pO1xuICAgIGNvbnN0IGhhc0RhdGEgPSAhIW9yaWdpbmFsLmxlbmd0aCB8fCAhIXJlY2FsY3VsYXRlZC5sZW5ndGggfHwgT2JqZWN0LmtleXModGVybUxvZ3MpLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgY29uZmlnTW9kZWxzRGF0YSA9IHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCwgdGVybVR5cGUgfTtcbiAgICBjb25zdCBjb25maWdNb2RlbHMgPSBncm91cFBhcmFsbGVsTW9kZWxzKFxuICAgICAgY29uZmlnLCB0ZXJtSWQsIG5vZGVLZXkhLFxuICAgICAgdW5pcXVlKFtcbiAgICAgICAgLi4uKHRlcm1Mb2dzLm1vZGVscyB8fCBbXSkuZmlsdGVyKGlzTW9kZWxMb2codGVybUxvZ3MsIHR5cGUpKSxcbiAgICAgICAgLy8gLi4uZmluZENvbmZpZ01vZGVscyhjb25maWcsIHRlcm1JZCwgbm9kZUtleSEsIG1vZGVscykubWFwKCh7IG1vZGVsIH0pID0+IG1vZGVsIGFzIHN0cmluZylcbiAgICAgIF0pLm1hcChjb25maWdNb2RlbFdpdGhEb2NzKG1vZGVscywgY29uZmlnTW9kZWxzRGF0YSkpXG4gICAgKTtcbiAgICBjb25zdCBrZXlzID0gbG9nS2V5cyh0ZXJtTG9ncywgb3JpZ2luYWwsIHJlY2FsY3VsYXRlZCwgbW9kZWxzLCBjb25maWdNb2RlbHNEYXRhKTtcbiAgICBjb25zdCBzdWJWYWx1ZXMgPSBsb2dTdWJWYWx1ZXMobG9ncywgdGVybUxvZ3MsIG9yaWdpbmFsLCByZWNhbGN1bGF0ZWQsIG1vZGVscywgY29uZmlnTW9kZWxzRGF0YSk7XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9ICEoXG4gICAgICBPYmplY3RcbiAgICAgICAgLnZhbHVlcyh0ZXJtTG9ncylcbiAgICAgICAgLmZpbHRlcih2ID0+IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KSAmJiAhdi5pc0tleSlcbiAgICAgICAgLmV2ZXJ5KHYgPT4gdi5ydW5SZXF1aXJlZCA9PT0gZmFsc2UpXG4gICAgKTtcblxuICAgIGNvbnN0IG5vZGVMb2c6IElCbGFua05vZGVMb2cgPSBkYXRhV2l0aENvbmZpZ01vZGVsTG9ncyh0ZXJtTG9ncykoe1xuICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgY2FuT3Blbjoga2V5cy5sZW5ndGggPiAwIHx8IHN1YlZhbHVlcy5sZW5ndGggPiAwLFxuICAgICAgdGVybUlkLFxuICAgICAgdGVybSxcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWdNb2RlbHMsXG4gICAgICBvcmlnaW5hbCxcbiAgICAgIG9yaWdpbmFsVmFsdWU6IHJlZHVjZVZhbHVlcyhvcmlnaW5hbCwgdGVybUlkKSxcbiAgICAgIHJlY2FsY3VsYXRlZCxcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlOiByZWR1Y2VWYWx1ZXMocmVjYWxjdWxhdGVkLCB0ZXJtSWQpLFxuICAgICAgaXNPcmlnaW5hbDogISFvcmlnaW5hbC5sZW5ndGgsXG4gICAgICBpc1JlY2FsY3VsYXRlZDogaXNSZWNhbGN1bGF0ZWQocmVjYWxjdWxhdGVkKSxcbiAgICAgIGhhc0RhdGEsXG4gICAgICBpc1JlcXVpcmVkLFxuICAgICAgbG9nczogdGVybUxvZ3MsXG4gICAgICBrZXlzLFxuICAgICAgc3ViVmFsdWVzLFxuICAgICAgYWxsUGFyYWxsZWw6IGFsbFBhcmFsbGVsKGNvbmZpZ01vZGVscyksXG4gICAgICBvcmlnaW5hbFZhbHVlQnlNZXRob2RJZDogZ3JvdXBQYXJhbGxlbFZhbHVlcyhvcmlnaW5hbCwgY29uZmlnTW9kZWxzWzBdLCB0ZXJtSWQpLFxuICAgICAgcmVjYWxjdWxhdGVkVmFsdWVCeU1ldGhvZElkOiBncm91cFBhcmFsbGVsVmFsdWVzKHJlY2FsY3VsYXRlZCwgY29uZmlnTW9kZWxzWzBdLCB0ZXJtSWQpXG4gICAgfSk7XG4gICAgY29uc3Qgc3ViVmFsdWUgPSBjeWNsZVN1YlZhbHVlKG5vZGVMb2cpO1xuXG4gICAgcmV0dXJuIHN1YlZhbHVlICYmIHN1YlZhbHVlcz8ubGVuZ3RoXG4gICAgICA/IHtcbiAgICAgICAgLi4ubm9kZUxvZyxcbiAgICAgICAgbW9kZWxzSW5TdWJWYWx1ZXM6IHRydWUsXG4gICAgICAgIHN1YlZhbHVlczogW1xuICAgICAgICAgIHN1YlZhbHVlLFxuICAgICAgICAgIC4uLnN1YlZhbHVlc1xuICAgICAgICBdXG4gICAgICB9IC8vIGlmIHdlIGluY2x1ZGUgdGhlIEN5Y2xlIHZhbHVlLCBpdCBiZWNvbWVzIHRoZSBtYWluIHJlZmVyZW5jZSBvZiB0aGUgbW9kZWxzXG4gICAgICA6IG5vZGVMb2c7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbW9kZWxDb3VudCA9IChibGFua05vZGVMb2dzOiBJQmxhbmtOb2RlTG9nW10pID0+IE1hdGgubWF4LmFwcGx5KE1hdGgubWF4LCBbXG4gIDAsXG4gIC4uLmJsYW5rTm9kZUxvZ3MuZmxhdE1hcCh2ID0+IFtcbiAgICB2LmNvbmZpZ01vZGVscy5sZW5ndGgsXG4gICAgLi4uKHYuc3ViVmFsdWVzLm1hcChzID0+IHMuY29uZmlnTW9kZWxzPy5sZW5ndGggfHwgMCkpLFxuICAgIC4uLih2LmtleXMubWFwKHMgPT4gcy5jb25maWdNb2RlbHM/Lmxlbmd0aCB8fCAwKSlcbiAgXSlcbl0pO1xuXG5leHBvcnQgY29uc3QgbG9nVmFsdWVBcnJheSA9ICh2YWx1ZTogc3RyaW5nKTogYW55W10gPT5cbiAgWyc7JywgJzonXS5zb21lKHYgPT4gdmFsdWUuaW5jbHVkZXModikpID9cbiAgICB2YWx1ZS5zcGxpdCgnOycpLmZsYXRNYXAodiA9PiB7XG4gICAgICBjb25zdCByZXMgPSB2LnNwbGl0KCdfJykubWFwKHZ2ID0+IHZ2LnNwbGl0KCc6JykpO1xuICAgICAgcmV0dXJuIHJlcy5sZW5ndGggPD0gMSA/IHJlcy5mbGF0KCkgOiBPYmplY3QuZnJvbUVudHJpZXMocmVzKTtcbiAgICB9KSA6XG4gICAgbnVsbDtcbiJdfQ==
|
|
551
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1sb2dzLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUNLLGtCQUFrQixFQUNsQixZQUFZLEVBQVksVUFBVSxFQUFFLFVBQVUsRUFDekQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUMwQyxVQUFVLEVBQVUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFDbEgsTUFBTSw2QkFBNkIsQ0FBQztBQXFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFN0UsTUFBTSxvQkFBb0IsR0FB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RSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQzNCLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE9BQU8sR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNoRSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ0osSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgY29tcGxleGl0eSAqL1xuaW1wb3J0IHsgZnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZGlzdGluY3QsIHRvQXJyYXksIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IGZpbGVUb0V4dCwgU3VwcG9ydGVkRXh0ZW5zaW9ucyB9IGZyb20gJ0BoZXN0aWEtZWFydGgvYXBpJztcbmltcG9ydCB7XG4gIEVtaXNzaW9uLCBFbWlzc2lvbk1ldGhvZFRpZXIsIElUZXJtSlNPTkxELCBQcm9kdWN0LCBJbnB1dCBhcyBIZXN0aWFJbnB1dCxcbiAgTm9kZVR5cGUsIFRlcm1UZXJtVHlwZSwgUHJvcGVydHksIFNjaGVtYVR5cGUsIGlzVHlwZU5vZGUsIEluZGljYXRvciwgUHJhY3RpY2UsIE1lYXN1cmVtZW50LCBUZXJtXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7IHVuaXF1ZSwgaXNVbmRlZmluZWQsIGlzRW1wdHksIGlzTnVtYmVyIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscyc7XG5pbXBvcnQgeyBwcm9wZXJ0eVZhbHVlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC91dGlscy9kaXN0L3Rlcm0nO1xuaW1wb3J0IGdldCBmcm9tICdsb2Rhc2guZ2V0JztcbmltcG9ydCBzZXQgZnJvbSAnbG9kYXNoLnNldCc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5cbmltcG9ydCB7XG4gIElPcmNoZXN0cmF0b3JDb25maWcsIElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZywgZmluZE1vZGVscywgSU1vZGVsLCBmaW5kTWF0Y2hpbmdNb2RlbCwgbW9kZWxQYXJhbXMsIG1vZGVsS2V5UGFyYW1zXG59IGZyb20gJy4uLy4uL2VuZ2luZS9lbmdpbmUuc2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVNaXNzaW5nTG9va3VwTG9nIHtcbiAgZmlsZW5hbWU6IHN0cmluZztcbiAgdGVybUlkOiBzdHJpbmc7XG4gIGNvbHVtbjogc3RyaW5nO1xuICAvLyBhdHRyaWJ1dGVzIGxpbmtlZCB0byB0aGUgbW9kZWxzXG4gIG1vZGVsPzogc3RyaW5nO1xuICB0ZXJtPzogc3RyaW5nO1xuICBrZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVUZXJtTG9nIHtcbiAgcnVuUmVxdWlyZWQ/OiBib29sZWFuO1xuICBzaG91bGRSdW4/OiBib29sZWFuO1xuICBzaG91bGRSdW5PcmNoZXN0cmF0b3I/OiBib29sZWFuO1xuICBzaG91bGRNZXJnZT86IGJvb2xlYW47XG4gIG1pc3NpbmdMb29rdXBzPzogSU5vZGVNaXNzaW5nTG9va3VwTG9nW107XG4gIHJlcXVpcmVtZW50cz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGxvZ3M/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIC8vIHBvc3NpYmxlIHN1YiB2YWx1ZXNcbiAgaW5wdXQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHJvcGVydHk/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZVRlcm1Mb2dzIHtcbiAgW21vZGVsS2V5OiBzdHJpbmddOiBhbnkgfCBJTm9kZVRlcm1Mb2c7XG4gIG1vZGVsczogc3RyaW5nW107XG4gIGlzS2V5PzogYm9vbGVhbjtcbiAgaXNQcm9wZXJ0eT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVMb2dzIHtcbiAgW3Rlcm06IHN0cmluZ106IElOb2RlVGVybUxvZ3M7XG59XG5cbmNvbnN0IHRlcm1UeXBlcyA9IE9iamVjdC52YWx1ZXMoVGVybVRlcm1UeXBlKTtcblxuY29uc3QgYmxhbmtOb2RlVHlwZXMgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLmZpbHRlcih0ID0+ICFpc1R5cGVOb2RlKHQpKTtcblxuY29uc3Qgc2NoZW1hVHlwZXNMb3dlckNhc2UgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLm1hcCh2ID0+IHYudG9Mb3dlckNhc2UoKSk7XG5cbmNvbnN0IGJsYW5rTm9kZVR5cGVzTG93ZXJDYXNlID0gYmxhbmtOb2RlVHlwZXMubWFwKHYgPT4gdi50b0xvd2VyQ2FzZSgpKTtcblxuY29uc3QgbWlzc2luZ0xvb2t1cFByZWZpeCA9ICdNaXNzaW5nIGxvb2t1cCc7XG5cbmNvbnN0IHBhcnNlRmlsZW5hbWUgPSAoZmlsZXBhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBbZmlsZW5hbWVdID0gZmlsZXBhdGguc3BsaXQoJy4nKTtcbiAgY29uc3QgZXh0ID0gdGVybVR5cGVzLmluY2x1ZGVzKGZpbGVuYW1lIGFzIGFueSkgPyBTdXBwb3J0ZWRFeHRlbnNpb25zLnhsc3ggOiBTdXBwb3J0ZWRFeHRlbnNpb25zLmNzdjtcbiAgcmV0dXJuIGZpbGVUb0V4dChmaWxlbmFtZSwgZXh0KTtcbn07XG5cbmNvbnN0IHBhcnNlTG9va3VwID0gKHsgY29sdW1uLCB0ZXJtaWQsIFttaXNzaW5nTG9va3VwUHJlZml4XTogbWlzc2luZ0xvb2t1cCB9KSA9PiAoe1xuICBmaWxlbmFtZTogcGFyc2VGaWxlbmFtZShtaXNzaW5nTG9va3VwKSwgdGVybUlkOiB0ZXJtaWQsIGNvbHVtblxufSk7XG5cbmNvbnN0IGNzdlZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+ICh2YWx1ZSB8fCAnJykucmVwbGFjZSgnWycsICcnKS5yZXBsYWNlKCddJywgJycpO1xuXG5jb25zdCBwYXJzZU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UobWVzc2FnZSk7XG4gICAgcmV0dXJuIGRhdGEubWVzc2FnZS5zcGxpdCgnLCcpLnJlZHVjZSgocHJldiwgcGFydHMpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhcnRzLnNwbGl0KCc9Jyk7XG4gICAgICBjb25zdCB2YWwgPSBjc3ZWYWx1ZSh2YWx1ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICAuLi4oa2V5ICYmIHZhbCA/IHsgW2tleS50cmltKCldOiB2YWwgfSA6IHt9KVxuICAgICAgfTtcbiAgICB9LCB7IGxvZ2dlcjogZGF0YS5sb2dnZXIgfSk7XG4gIH1cbiAgY2F0Y2ggKGVycikge1xuICAgIC8vIG1ha2Ugc3VyZSBpdCB3b3JrcyBldmVuIGlmIG9uZSBsb2cgaXMgbWFsZm9ybWVkXG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuXG5jb25zdCBvbWl0TG9nS2V5cyA9IChsb2c6IGFueSwgLi4ua2V5czogc3RyaW5nW10pID0+XG4gIE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhsb2cpLmZpbHRlcigoW2tleV0pID0+ICFzY2hlbWFUeXBlc0xvd2VyQ2FzZS5pbmNsdWRlcyhrZXkpICYmICFrZXlzLmluY2x1ZGVzKGtleSkpXG4gICk7XG5cbmNvbnN0IGluY2x1ZGVCbGFua05vZGVzID0gKGxvZ3MsIGxvZykgPT5cbiAgT2JqZWN0XG4gICAgLmtleXMobG9nKVxuICAgIC5maWx0ZXIoa2V5ID0+IGJsYW5rTm9kZVR5cGVzTG93ZXJDYXNlLmluY2x1ZGVzKGtleSkpXG4gICAgLnJlZHVjZSgocHJldiwga2V5KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIFtrZXldOiB1bmlxdWUoW1xuICAgICAgICAuLi4oKHR5cGVvZiBwcmV2W2tleV0gPT09ICdzdHJpbmcnID8gW3ByZXZba2V5XV0gOiBwcmV2W2tleV0pIHx8IFtdKSxcbiAgICAgICAgbG9nW2tleV1cbiAgICAgIF0pXG4gICAgfSksIGxvZ3MpO1xuXG5jb25zdCBncm91cExvZyA9IChncm91cCwgeyBsb2dnZXIsIHRlcm0sIG1vZGVsLCBrZXksIHNob3VsZF9ydW4sIHNob3VsZF9tZXJnZSwgcnVuX3JlcXVpcmVkLCBwcm9wZXJ0eSwgLi4ubG9nIH06IGFueSkgPT4ge1xuICBjb25zdCBpc09yY2hlc3RyYXRvciA9IGxvZ2dlci5pbmNsdWRlcygnb3JjaGVzdHJhdG9yJyk7XG4gIGNvbnN0IGlzS2V5ID0gIWlzT3JjaGVzdHJhdG9yICYmICEha2V5O1xuICBjb25zdCBpc1Byb3BlcnR5ID0gIWlzT3JjaGVzdHJhdG9yICYmICEhcHJvcGVydHk7XG4gIGNvbnN0IHBhcmVudExvZ0tleSA9IFtgW1wiJHt0ZXJtfVwiXWAsICFpc09yY2hlc3RyYXRvciAmJiBrZXkgfHwgcHJvcGVydHldLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gIGNvbnN0IGxvZ01vZGVsS2V5ID0gW3BhcmVudExvZ0tleSwgbW9kZWxdLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG5cbiAgc2V0KGdyb3VwLCBgJHtwYXJlbnRMb2dLZXl9Lm1vZGVsc2AsIHVuaXF1ZShbXG4gICAgLi4uZ2V0KGdyb3VwLCBgJHtwYXJlbnRMb2dLZXl9Lm1vZGVsc2AsIFtdKSxcbiAgICBtb2RlbFxuICBdKSk7XG4gIHNldChncm91cCwgYCR7cGFyZW50TG9nS2V5fS5pc0tleWAsIGlzS2V5KTtcbiAgc2V0KGdyb3VwLCBgJHtwYXJlbnRMb2dLZXl9LmlzUHJvcGVydHlgLCBpc1Byb3BlcnR5KTtcblxuICBsZXQgZGF0YSA9IGdldChncm91cCwgbG9nTW9kZWxLZXksIHt9KTtcblxuICBkYXRhID0gaW5jbHVkZUJsYW5rTm9kZXMoZGF0YSwgbG9nKTtcblxuICBpZiAodHlwZW9mIHNob3VsZF9ydW4gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29uc3Qgc2hvdWxkUnVuID0gc2hvdWxkX3J1biA9PT0gJ1RydWUnO1xuXG4gICAgZGF0YSA9IGlzT3JjaGVzdHJhdG9yID9cbiAgICAgIHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgLi4ub21pdExvZ0tleXMobG9nLCAndmFsdWUnKSxcbiAgICAgICAgc2hvdWxkUnVuT3JjaGVzdHJhdG9yOiBzaG91bGRSdW5cbiAgICAgIH0gOlxuICAgICAge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICAuLi5vbWl0TG9nS2V5cyhsb2cpLFxuICAgICAgICBzaG91bGRSdW5cbiAgICAgIH07XG4gIH1cbiAgZWxzZSBpZiAodHlwZW9mIHJ1bl9yZXF1aXJlZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBydW5SZXF1aXJlZCA9IHJ1bl9yZXF1aXJlZCA9PT0gJ1RydWUnO1xuXG4gICAgZGF0YSA9ICB7XG4gICAgICAuLi5kYXRhLFxuICAgICAgLi4uKHJ1blJlcXVpcmVkID8ge30gOiBvbWl0TG9nS2V5cyhsb2cpKSwgLy8gbm8gbmVlZCB0byBzYXZlIGxvZ3MgaWYgd2UgbmVlZCB0byBydW4gdGhlIG1vZGVsXG4gICAgICBydW5SZXF1aXJlZFxuICAgIH07XG4gIH1cbiAgZWxzZSBpZiAoJ3JlcXVpcmVtZW50cycgaW4gbG9nKSB7XG4gICAgY29uc3QgeyByZXF1aXJlbWVudHMsIC4uLmxvZ0RhdGEgfSA9IGxvZztcblxuICAgIGRhdGEucmVxdWlyZW1lbnRzID0ge1xuICAgICAgLi4uKGRhdGEucmVxdWlyZW1lbnRzIHx8IHt9KSxcbiAgICAgIC4uLmxvZ0RhdGFcbiAgICB9O1xuICB9XG4gIGVsc2UgaWYgKG1pc3NpbmdMb29rdXBQcmVmaXggaW4gbG9nKSB7XG4gICAgZGF0YS5taXNzaW5nTG9va3VwcyA9IHVuaXF1ZShbXG4gICAgICAuLi4oZGF0YS5taXNzaW5nTG9va3VwcyB8fCBbXSksXG4gICAgICBwYXJzZUxvb2t1cChsb2cpXG4gICAgXSk7XG4gIH1cbiAgZWxzZSBpZiAoIWlzT3JjaGVzdHJhdG9yKSB7XG4gICAgZGF0YS5sb2dzID0ge1xuICAgICAgLi4uKGRhdGEubG9ncyB8fCB7fSksXG4gICAgICAuLi5vbWl0TG9nS2V5cyhsb2cpXG4gICAgfTtcbiAgfVxuICBpZiAodHlwZW9mIHNob3VsZF9tZXJnZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBkYXRhLnNob3VsZE1lcmdlID0gc2hvdWxkX21lcmdlO1xuICB9XG5cbiAgc2V0KGdyb3VwLCBsb2dNb2RlbEtleSwgZGF0YSk7XG4gIHJldHVybiBncm91cDtcbn07XG5cbmNvbnN0IGdyb3VwTG9nU3ViVmFsdWUgPSAoZ3JvdXAsIGxvZywga2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaWQgPSBsb2dba2V5XTtcbiAgY29uc3QgZGF0YSA9IGdyb3VwTG9nKGdyb3VwW2lkXSB8fCB7fSwgbG9nKTtcbiAgZ3JvdXBbaWRdID0gZGF0YTtcblxuICBpZiAoa2V5ID09PSAndHJhbnNmb3JtYXRpb24nKSB7XG4gICAgLy8gYWRkIHZhbHVlIHRvIHRoZSBzYW1lIHRlcm0vbW9kZWwgb24gcGFyZW50IGdyb3VwXG4gICAgT2JqZWN0LmVudHJpZXMoZ3JvdXBbaWRdKS5tYXAoKFt0ZXJtLCBtb2RlbHNdKSA9PlxuICAgICAgT2JqZWN0LmtleXMobW9kZWxzKS5tYXAobW9kZWwgPT4ge1xuICAgICAgICBpZiAoZ3JvdXA/Llt0ZXJtXT8uW21vZGVsXSkge1xuICAgICAgICAgIGdyb3VwW3Rlcm1dW21vZGVsXVtrZXldID0gdW5pcXVlKFtcbiAgICAgICAgICAgIC4uLihncm91cFt0ZXJtXVttb2RlbF1ba2V5XSB8fCBbXSksXG4gICAgICAgICAgICBpZFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXA7XG59O1xuXG5jb25zdCBzdWJWYWx1ZUtleXMgPSBbXG4gICd0cmFuc2Zvcm1hdGlvbidcbl07XG5cbmV4cG9ydCBjb25zdCBncm91cExvZ3NCeU1vZGVsID0gKGRhdGE6IHN0cmluZyk6IElOb2RlTG9ncyA9PlxuICBkYXRhLnRyaW0oKS5zcGxpdCgnXFxuJylcbiAgICAubWFwKHBhcnNlTWVzc2FnZSlcbiAgICAuZmlsdGVyKHYgPT4gISF2Py50ZXJtICYmIHY/LnRlcm0gIT09ICdOb25lJyAmJiAhIXY/Lm1vZGVsKVxuICAgIC5yZWR1Y2UoKGdyb3VwLCBsb2cpID0+IHtcbiAgICAgIGNvbnN0IHN1YlZhbHVlID0gc3ViVmFsdWVLZXlzLmZpbmQodiA9PiAhIWxvZ1t2XSk7XG4gICAgICByZXR1cm4gc3ViVmFsdWUgP1xuICAgICAgICBzdWJWYWx1ZSA9PT0gJ3RyYW5zZm9ybWF0aW9uJyA/XG4gICAgICAgICAgLy8gZm9yIHRyYW5zZm9ybWF0aW9uLCBkbyBub3QgYWRkIHRvIHRvcC1sZXZlbCBtb2RlbFxuICAgICAgICAgIGdyb3VwTG9nU3ViVmFsdWUoZ3JvdXAsIGxvZywgc3ViVmFsdWUpIDpcbiAgICAgICAgICBncm91cExvZyhncm91cExvZ1N1YlZhbHVlKGdyb3VwLCBsb2csIHN1YlZhbHVlKSwgbG9nKVxuICAgICAgICA6IGdyb3VwTG9nKGdyb3VwLCBsb2cpO1xuICAgIH0sIHt9KTtcblxuZXhwb3J0IGNvbnN0IGNvbXB1dGVUZXJtcyA9IChcbiAgb3JpZ2luYWxWYWx1ZXM6IGJsYW5rTm9kZVtdLCByZWNhbGN1bGF0ZWRWYWx1ZXM6IGJsYW5rTm9kZVtdLCB0ZXJtcz86IElUZXJtSlNPTkxEW10sIGZpbHRlclRlcm1UeXBlcz86IFRlcm1UZXJtVHlwZVtdXG4pID0+IGZyb20oXG4gICAgdGVybXM/Lmxlbmd0aCA/XG4gICAgICB0ZXJtcyA6XG4gICAgICBbXG4gICAgICAgIC4uLihvcmlnaW5hbFZhbHVlcyB8fCBbXSkubWFwKCh7IHRlcm0gfSkgPT4gdGVybSksXG4gICAgICAgIC4uLihyZWNhbGN1bGF0ZWRWYWx1ZXMgfHwgW10pLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0pXG4gICAgICBdLmZpbHRlcihub2RlID0+ICFmaWx0ZXJUZXJtVHlwZXM/Lmxlbmd0aCB8fCBmaWx0ZXJUZXJtVHlwZXMuaW5jbHVkZXMobm9kZS50ZXJtVHlwZSkpXG4gICkucGlwZShcbiAgICBkaXN0aW5jdCh2ID0+IHYhWydAaWQnXSksXG4gICAgdG9BcnJheSgpLFxuICAgIG1hcCh2ID0+IG9yZGVyQnkodiwgWyduYW1lJ10sIFsnYXNjJ10pKVxuICApLnRvUHJvbWlzZSgpO1xuXG5leHBvcnQgdHlwZSBibGFua05vZGUgPSBFbWlzc2lvbiB8IFByb2R1Y3QgfCBIZXN0aWFJbnB1dCB8IFByb3BlcnR5IHwgUHJhY3RpY2UgfCBJbmRpY2F0b3IgfCBNZWFzdXJlbWVudDtcblxuZXhwb3J0IGVudW0gTG9nU3RhdHVzIHtcbiAgc3VjY2VzcyA9ICdzdWNjZXNzZnVsJyxcbiAgZXJyb3IgPSAnZmFpbGVkJyxcbiAgc2tpcEhpZXJhcmNoeSA9ICdub3QgcnVuIChtb2RlbCBoaWdoZXIgdXAgaGllcmFyY2h5IHJ1biBpbnN0ZWFkKScsXG4gIGRhdGFQcm92aWRlZCA9ICdub3QgcnVuICh1c2VyIHByb3ZpZGVkIGRhdGEgcmV0YWluZWQpJyxcbiAgbm90UmVxdWlyZWQgPSAnbm90IHJlbGV2YW50J1xufVxuXG5jb25zdCBoYXNMb2dzID0gKGxvZ3M/OiBJTm9kZVRlcm1Mb2cpID0+ICEhbG9ncz8ucmVxdWlyZW1lbnRzIHx8ICEhbG9ncz8ubG9ncyB8fCBsb2dzPy5taXNzaW5nTG9va3Vwcz8ubGVuZ3RoID4gMDtcblxuY29uc3QgaGFzTG9nRGV0YWlscyA9IChzdGF0dXM6IExvZ1N0YXR1cywgbG9ncz86IElOb2RlVGVybUxvZykgPT5cbiAgW1xuICAgIExvZ1N0YXR1cy5zdWNjZXNzLFxuICAgIExvZ1N0YXR1cy5lcnJvclxuICBdLmluY2x1ZGVzKHN0YXR1cykgJiYgaGFzTG9ncyhsb2dzKTtcblxuY29uc3QgbG9nU3RhdHVzID0gKGRhdGE6IElCbGFua05vZGVMb2dTdWJWYWx1ZSB8IElCbGFua05vZGVMb2csIGxvZ3M/OiBJTm9kZVRlcm1Mb2csIGhhc1ByZXZpb3VzU3VjY2VzcyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IHdpdGhMb2dzID0gaGFzTG9nKGxvZ3MpO1xuICBjb25zdCBpc0NhbGN1bGF0ZWQgPSBbXG4gICAgdHlwZW9mIGRhdGEub3JpZ2luYWxWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcsIC8vIG5vIG9yaWdpbmFsIHZhbHVlXG4gICAgZGF0YS5pc1JlY2FsY3VsYXRlZCAvLyBpcyByZWNhbGN1bGF0ZWRcbiAgXS5ldmVyeShCb29sZWFuKTtcbiAgLy8gY2FuIGJlIG5vdCByZXF1aXJlZCBmb3IgYSBzcGVjaWZpYyBtb2RlbFxuICBjb25zdCBpc1JlcXVpcmVkID0gISFsb2dzICYmICdydW5SZXF1aXJlZCcgaW4gbG9ncyA/IGxvZ3MucnVuUmVxdWlyZWQgOiBkYXRhLmlzUmVxdWlyZWQ7XG4gIHJldHVybiB3aXRoTG9nc1xuICAgID8gKFxuICAgICAgIWlzUmVxdWlyZWRcbiAgICAgICAgPyBMb2dTdGF0dXMubm90UmVxdWlyZWRcbiAgICAgICAgOiBpc1J1bk9yY2hlc3RyYXRvcihsb2dzKVxuICAgICAgICAgID8gKFxuICAgICAgICAgICAgJ3Nob3VsZFJ1bicgaW4gbG9nc1xuICAgICAgICAgICAgICA/IGxvZ3Muc2hvdWxkUnVuXG4gICAgICAgICAgICAgICAgPyBkYXRhLmlzUmVjYWxjdWxhdGVkXG4gICAgICAgICAgICAgICAgICA/IExvZ1N0YXR1cy5zdWNjZXNzXG4gICAgICAgICAgICAgICAgICA6IGlzRW1wdHkoZGF0YS5vcmlnaW5hbFZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA/IExvZ1N0YXR1cy5lcnJvclxuICAgICAgICAgICAgICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICAgICAgICAgICAgICA6IGhhc1ByZXZpb3VzU3VjY2Vzc1xuICAgICAgICAgICAgICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgICAgICAgICAgICAgOiBMb2dTdGF0dXMuZXJyb3JcbiAgICAgICAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgICAgICAgKVxuICAgICAgICAgIDogZGF0YS5pc1JlY2FsY3VsYXRlZFxuICAgICAgICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgKVxuICAgIDogKFxuICAgICAgaXNDYWxjdWxhdGVkXG4gICAgICAgID8gTG9nU3RhdHVzLnNraXBIaWVyYXJjaHlcbiAgICAgICAgOiBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gICAgKTtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbmZpZ01vZGVsIHtcbiAgbWV0aG9kSWQ6IHN0cmluZztcbiAgbG9ncz86IElOb2RlVGVybUxvZztcbiAgc2hvd0xvZ3M/OiBib29sZWFuO1xuICBzdGF0dXM/OiBMb2dTdGF0dXM7XG4gIG1vZGVsPzogSU1vZGVsO1xuICBjb25maWc/OiBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlIHtcbiAga2V5OiBzdHJpbmc7XG4gIHNob3dVbml0czogYm9vbGVhbjtcbiAgb3JpZ2luYWxWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbjtcbiAgcmVjYWxjdWxhdGVkVmFsdWU6IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW47XG4gIGlzUmVjYWxjdWxhdGVkOiBib29sZWFuO1xuICBpc1JlcXVpcmVkPzogYm9vbGVhbjtcbiAgaWQ/OiBzdHJpbmc7XG4gIGNvbmZpZ01vZGVscz86IElDb25maWdNb2RlbFtdO1xuICBsb2dzPzogSU5vZGVUZXJtTG9ncztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmxhbmtOb2RlTG9nIHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBjYW5PcGVuOiBib29sZWFuO1xuICB0ZXJtOiBJVGVybUpTT05MRDtcbiAgdGVybUlkOiBzdHJpbmc7XG4gIHR5cGU/OiBTY2hlbWFUeXBlO1xuICBjb25maWdNb2RlbHM6IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXTtcbiAgb3JpZ2luYWw6IGJsYW5rTm9kZVtdO1xuICBvcmlnaW5hbFZhbHVlOiBudW1iZXI7XG4gIC8vIHdoZW4gbXVsdGlwbGUgbW9kZWxzIGFyZSBydW5uaW5nIGluIHBhcmFsbGVsXG4gIG9yaWdpbmFsVmFsdWVCeU1ldGhvZElkPzoge1xuICAgIFttZXRob2RJZDogc3RyaW5nXTogbnVtYmVyO1xuICB9O1xuICByZWNhbGN1bGF0ZWQ6IGJsYW5rTm9kZVtdO1xuICByZWNhbGN1bGF0ZWRWYWx1ZTogbnVtYmVyO1xuICAvLyB3aGVuIG11bHRpcGxlIG1vZGVscyBhcmUgcnVubmluZyBpbiBwYXJhbGxlbFxuICByZWNhbGN1bGF0ZWRWYWx1ZUJ5TWV0aG9kSWQ/OiB7XG4gICAgW21ldGhvZElkOiBzdHJpbmddOiBudW1iZXI7XG4gIH07XG4gIGlzT3JpZ2luYWw6IGJvb2xlYW47XG4gIGlzUmVjYWxjdWxhdGVkOiBib29sZWFuO1xuICBoYXNEYXRhOiBib29sZWFuO1xuICBpc1JlcXVpcmVkOiBib29sZWFuO1xuICBsb2dzPzogSU5vZGVUZXJtTG9ncztcbiAga2V5czogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlW107XG4gIHN1YlZhbHVlczogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlW107XG4gIC8vIG1vZGVscyBhcmUgcHJlc2VudCBhcyB3ZWxsIGluIG9uZSBvZiB0aGUgU3ViVmFsdWVzLCBkbyBub3Qgc2hvdyB0d2ljZVxuICBtb2RlbHNJblN1YlZhbHVlcz86IGJvb2xlYW47XG4gIC8vIGNvbnRhaW5zIG11bHRpcGxlIG1vZGVscyBhbGwgcnVubmluZyBpbiBwYXJhbGxlbFxuICBhbGxQYXJhbGxlbD86IGJvb2xlYW47XG59XG5cbmNvbnN0IHJlbW92ZUNvbmZpZ01vZGVsQnlTdGF0dXMgPSAoLi4uc3RhdHVzZXM6IExvZ1N0YXR1c1tdKSA9PiAobW9kZWw6IElDb25maWdNb2RlbCkgPT5cbiAgIXN0YXR1c2VzLmluY2x1ZGVzKG1vZGVsPy5zdGF0dXMpO1xuXG5jb25zdCBrZWVwQ29uZmlnTW9kZWxCeVN0YXR1cyA9ICguLi5zdGF0dXNlczogTG9nU3RhdHVzW10pID0+IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PlxuICBzdGF0dXNlcy5pbmNsdWRlcyhtb2RlbD8uc3RhdHVzKTtcblxuY29uc3QgZmlsdGVyQ29uZmlnTW9kZWxzID0gKFxuICBtb2RlbHM6IChJQ29uZmlnTW9kZWwgfCAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10pLCBmaWx0ZXJGdW5jOiAobW9kZWw6IElDb25maWdNb2RlbCkgPT4gYm9vbGVhblxuKSA9PlxuICAoQXJyYXkuaXNBcnJheShtb2RlbHMpID8gbW9kZWxzIDogW21vZGVsc10pXG4gICAgLmZpbHRlcih2ID0+IEFycmF5LmlzQXJyYXkodikgfHwgZmlsdGVyRnVuYyh2KSlcbiAgICAubWFwKHYgPT4gQXJyYXkuaXNBcnJheSh2KSA/IHYuZmlsdGVyKGZpbHRlckZ1bmMpIDogdilcbiAgICAuZmlsdGVyKEJvb2xlYW4pO1xuXG5jb25zdCBtZXJnZVN1YlZhbHVlcyA9ICh2YWx1ZXM6IGFueVtdKTogYW55W10gPT5cbiAgT2JqZWN0LnZhbHVlcyhcbiAgICB2YWx1ZXMucmVkdWNlKChwcmV2LCB7IGlkLCBrZXksIGNvbmZpZ01vZGVscywgLi4uZGF0YSB9KSA9PiB7XG4gICAgICBjb25zdCB1bmlxdWVLZXkgPSBba2V5LCBpZF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcbiAgICAgIHByZXZbdW5pcXVlS2V5XSA9IHtcbiAgICAgICAgLi4uT2JqZWN0LmFzc2lnbih7fSwgcHJldlt1bmlxdWVLZXldLCBkYXRhKSxcbiAgICAgICAgaWQsXG4gICAgICAgIGtleSxcbiAgICAgICAgY29uZmlnTW9kZWxzOiB1bmlxdWUoWy4uLigocHJldlt1bmlxdWVLZXldIHx8IHt9KS5jb25maWdNb2RlbHMgfHwgW10pLCAuLi4oY29uZmlnTW9kZWxzIHx8IFtdKV0pXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwge30pXG4gICk7XG5cbmNvbnN0IHJlZHVjZVZhbHVlcyA9ICh2YWx1ZXM6IGFueVtdLCB0ZXJtSWQ6IHN0cmluZykgPT4ge1xuICBjb25zdCBwcm9wZXJ0eVZhbHVlcyA9IHZhbHVlc1xuICAgIC5tYXAoKHsgdmFsdWUgfSkgPT4gcHJvcGVydHlWYWx1ZSh2YWx1ZSwgdGVybUlkKSlcbiAgICAvLyBwcm9wZXJ0eVZhbHVlIG1heSByZXR1cm4gbnVsbCBpZiB0aGUgdmFsdWUgaXMgbnVsbCBvciB1bmRlZmluZWQsIHRoZXJlZm9yZSByZW1vdmUgdGhlbSBmcm9tIHRvdGFsXG4gICAgLmZpbHRlcih2ID0+IHYgIT09IG51bGwpO1xuICByZXR1cm4gcHJvcGVydHlWYWx1ZXMubGVuZ3RoID8gcHJvcGVydHlWYWx1ZXMucmVkdWNlKChwLCB2KSA9PiBwICsgdiwgMCkgOiB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBpc1J1bk9yY2hlc3RyYXRvciA9IChsb2c6IElOb2RlVGVybUxvZykgPT4gISgnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2cpIHx8IGxvZy5zaG91bGRSdW5PcmNoZXN0cmF0b3I7XG5cbmNvbnN0IGhhc0xvZyA9IChsb2c6IElOb2RlVGVybUxvZywgd2l0aE9yY2hlc3RyYXRvciA9IHRydWUpID0+XG4gICEhbG9nICYmIChcbiAgICAnc2hvdWxkUnVuJyBpbiBsb2cgfHxcbiAgICAncnVuUmVxdWlyZWQnIGluIGxvZyB8fFxuICAgICh3aXRoT3JjaGVzdHJhdG9yICYmICdzaG91bGRSdW5PcmNoZXN0cmF0b3InIGluIGxvZylcbiAgKTtcblxuY29uc3QgaXNSZWNhbGN1bGF0ZWQgPSAodmFsdWVzOiBibGFua05vZGVbXSwga2V5ID0gJ3ZhbHVlJykgPT4gdmFsdWVzLnNvbWUodiA9PiAoW1xuICAuLi4odi5hZGRlZCB8fCBbXSksXG4gIC4uLih2LnVwZGF0ZWQgfHwgW10pXG5dKS5pbmNsdWRlcyhrZXkpKTtcblxuY29uc3QgYmxhbmtOb2RlVmFsdWVCeUtleToge1xuICBba2V5OiBzdHJpbmddOiAodmFsdWVzOiBibGFua05vZGVbXSwga2V5Pzogc3RyaW5nLCBpZD86IHN0cmluZykgPT4gbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbjtcbn0gPSB7XG4gIHByb3BlcnR5OiAodmFsdWVzOiAoRW1pc3Npb24gfCBQcm9kdWN0IHwgSGVzdGlhSW5wdXQpW10sIF9rLCBpZCkgPT4gISFpZCAmJiB2YWx1ZXM/Lmxlbmd0aFxuICAgID8gKHZhbHVlc1swXS5wcm9wZXJ0aWVzIHx8IFtdKS5maW5kKHAgPT4gcC50ZXJtWydAaWQnXSA9PT0gaWQpPy52YWx1ZSB8fCAnJ1xuICAgIDogJycsXG4gIGlucHV0OiAodmFsdWVzOiBFbWlzc2lvbltdLCBfaywgaWQpID0+ICEhaWQgJiYgKHZhbHVlcyB8fCBbXSkuZmlsdGVyKHYgPT4gdlsnQHR5cGUnXSA9PT0gU2NoZW1hVHlwZS5FbWlzc2lvbikubGVuZ3RoXG4gICAgPyBwcm9wZXJ0eVZhbHVlKHZhbHVlcy5maW5kKCh7IGlucHV0cyB9KSA9PiAoaW5wdXRzIHx8IFtdKS5zb21lKGlucHV0ID0+IGlucHV0WydAaWQnXSA9PT0gaWQpKT8udmFsdWUsIGlkKVxuICAgIDogJycsXG4gIHRyYW5zZm9ybWF0aW9uOiAodmFsdWVzOiBFbWlzc2lvbltdLCBfaywgaWQpID0+IHZhbHVlcy5sZW5ndGhcbiAgICA/IHByb3BlcnR5VmFsdWUodmFsdWVzLmZpbmQoKHsgdHJhbnNmb3JtYXRpb24gfSkgPT4gdHJhbnNmb3JtYXRpb24/LlsnQGlkJ10gPT09IGlkKT8udmFsdWUsIGlkKVxuICAgIDogJycsXG4gIGRlZmF1bHQ6IChibGFua05vZGVzLCBrZXkpID0+IHtcbiAgICBjb25zdCB2YWx1ZSA9IGJsYW5rTm9kZXM/Lmxlbmd0aCA/IGJsYW5rTm9kZXNbMF1ba2V5XSA6IG51bGw7XG4gICAgcmV0dXJuIFsnc3RyaW5nJywgJ251bWJlcicsICdib29sZWFuJywgJ3VuZGVmaW5lZCddLmluY2x1ZGVzKHR5cGVvZiB2YWx1ZSlcbiAgICAgID8gaXNVbmRlZmluZWQodmFsdWUpXG4gICAgICAgID8gJydcbiAgICAgICAgOiB2YWx1ZVxuICAgICAgOiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgICA/IHZhbHVlLmxlbmd0aCA+IDFcbiAgICAgICAgICA/IHZhbHVlLmpvaW4oJzsnKVxuICAgICAgICAgIDogdmFsdWVbMF1cbiAgICAgICAgOiBudWxsO1xuICB9XG59O1xuXG5jb25zdCBibGFua05vZGVWYWx1ZSA9IChibGFua05vZGVzOiBibGFua05vZGVbXSwga2V5OiBzdHJpbmcsIGlkPzogc3RyaW5nKSA9PlxuICBibGFua05vZGVWYWx1ZUJ5S2V5W2tleSBpbiBibGFua05vZGVWYWx1ZUJ5S2V5ID8ga2V5IDogJ2RlZmF1bHQnXShibGFua05vZGVzLCBrZXksIGlkKTtcblxuY29uc3Qgc3ViVmFsdWVMb2dLZXkgPSAoeyBrZXksIGlkIH06IElCbGFua05vZGVMb2dTdWJWYWx1ZSk6IHN0cmluZyA9PlxuICBrZXkgPT09ICd0cmFuc2Zvcm1hdGlvbicgPyBrZXkgOiAoaWQgfHwga2V5IHx8IG51bGwpO1xuXG5jb25zdCBpbnB1dFZhbHVlID0gKHsgdmFsdWUsIGNvZWZmaWNpZW50IH06IGFueSA9IHt9KSA9PlxuICBbdmFsdWUsIGNvZWZmaWNpZW50XS5ldmVyeShpc051bWJlcikgPyArdmFsdWUgKiArY29lZmZpY2llbnQgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IGxvZ1N1YlZhbHVlID0gKGxvZ3M6IElOb2RlVGVybUxvZ3MsIGtleTogc3RyaW5nLCBwcm9wOiBzdHJpbmcsIHNob3dVbml0cyA9IGZhbHNlKSA9PiB7XG4gIGNvbnN0IGxvZyA9IGxvZ3Nba2V5XT8uW3Byb3BdO1xuICByZXR1cm4gbG9nID8gKFxuICAgIEFycmF5LmlzQXJyYXkobG9nKSA/XG4gICAgICAobG9nIGFzIHN0cmluZ1tdKS5tYXAoaWQgPT4gKHtcbiAgICAgICAga2V5OiBwcm9wLCBpZCwgc2hvd1VuaXRzLFxuICAgICAgICAvLyByZWNhbGN1bGF0ZWRWYWx1ZTogaW5wdXRWYWx1ZShsb2dzW2tleV0/LmxvZ3M/LltpZF0pXG4gICAgICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZSkpIDpcbiAgICAgIHtcbiAgICAgICAga2V5OiBwcm9wLCBpZDogbG9nLCBzaG93VW5pdHMsXG4gICAgICAgIC8vIHJlY2FsY3VsYXRlZFZhbHVlOiBpbnB1dFZhbHVlKGxvZ3Nba2V5XT8ubG9ncz8uW2xvZ10pXG4gICAgICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZVxuICApIDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgbG9nUHJvcGVydGllcyA9IChub2RlczogYmxhbmtOb2RlW10sIG1vZGVsczogSU1vZGVsW10pID0+XG4gIG5vZGVzLmZsYXRNYXAobm9kZSA9PlxuICAgICgobm9kZSBhcyBhbnkpLnByb3BlcnRpZXMgfHwgW10pLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm1bJ0BpZCddKVxuICApLm1hcChpZCA9PiAoeyBrZXk6ICdwcm9wZXJ0eScsIGlkLCBzaG93VW5pdHM6IGZhbHNlLCBjb25maWdNb2RlbHM6IGZpbmRNb2RlbHMobW9kZWxzLCBpZCkubWFwKCh7IG1vZGVsIH0pID0+IG1vZGVsKSB9KSk7XG5cbi8qKlxuICogSW5jbHVkZSB0cmFuc2Zvcm1hdGlvbiBtb2RlbCAoY29weSBFbWlzc2lvbnMgZnJvbSBUcmFuc2Zvcm1hdGlvbiB0byBDeWNsZSkgYXMgc3ViVmFsdWUuXG4gKlxuICogQHBhcmFtIGVtaXNzaW9uc1xuICogQHJldHVybnNcbiAqL1xuY29uc3QgbG9nRW1pc3Npb25UcmFuc2Zvcm1hdGlvbnMgPSAoZW1pc3Npb25zOiBFbWlzc2lvbltdKSA9PlxuICBlbWlzc2lvbnMuZmlsdGVyKCh7IHRyYW5zZm9ybWF0aW9uIH0pID0+ICEhdHJhbnNmb3JtYXRpb24/LlsnQGlkJ10pLm1hcCgoeyB0cmFuc2Zvcm1hdGlvbiB9KSA9PiAoe1xuICAgIGlkOiB0cmFuc2Zvcm1hdGlvbj8uWydAaWQnXSxcbiAgICBrZXk6ICd0cmFuc2Zvcm1hdGlvbicsXG4gICAgc2hvd1VuaXRzOiB0cnVlLFxuICAgIGNvbmZpZ01vZGVsczogWydjeWNsZS90cmFuc2Zvcm1hdGlvbiddXG4gIH0pKTtcblxuY29uc3QgaW5jbHVkZUN5Y2xlU3ViVmFsdWUgPSAoc3ViVmFsdWVzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXSkgPT5cbiAgc3ViVmFsdWVzLnNvbWUodiA9PiB2LmtleSAhPT0gJ3Byb3BlcnR5Jyk7XG5cbmNvbnN0IGN5Y2xlU3ViVmFsdWUgPSAoe1xuICB0ZXJtSWQsIGNvbmZpZ01vZGVscywgaXNSZXF1aXJlZCwgc3ViVmFsdWVzLCBvcmlnaW5hbCwgcmVjYWxjdWxhdGVkXG59OiBJQmxhbmtOb2RlTG9nKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsVmFsdWUgPSByZWR1Y2VWYWx1ZXMob3JpZ2luYWwuZmlsdGVyKCh2OiBhbnkpID0+ICF2LmlucHV0cz8ubGVuZ3RoICYmICF2LnRyYW5zZm9ybWF0aW9uKSwgdGVybUlkKTtcbiAgY29uc3QgcmVjYWxjdWxhdGVkVmFsdWVzID0gcmVjYWxjdWxhdGVkLmZpbHRlcigodjogYW55KSA9PiAhdi5pbnB1dHM/Lmxlbmd0aCAmJiAhdi50cmFuc2Zvcm1hdGlvbik7XG4gIGNvbnN0IHJlY2FsY3VsYXRlZFZhbHVlID0gcmVkdWNlVmFsdWVzKHJlY2FsY3VsYXRlZFZhbHVlcywgdGVybUlkKTtcbiAgcmV0dXJuIGluY2x1ZGVDeWNsZVN1YlZhbHVlKHN1YlZhbHVlcykgJiYgIWlzRW1wdHkocmVjYWxjdWxhdGVkVmFsdWUpID8ge1xuICAgIGtleTogJ2N5Y2xlJyxcbiAgICBzaG93VW5pdHM6IHRydWUsXG4gICAgY29uZmlnTW9kZWxzLFxuICAgIGlzUmVxdWlyZWQsXG4gICAgb3JpZ2luYWxWYWx1ZSxcbiAgICByZWNhbGN1bGF0ZWRWYWx1ZSxcbiAgICBpc1JlY2FsY3VsYXRlZDogaXNSZWNhbGN1bGF0ZWQocmVjYWxjdWxhdGVkVmFsdWVzKVxuICB9IGFzIElCbGFua05vZGVMb2dTdWJWYWx1ZSA6IG51bGw7XG59O1xuXG5jb25zdCBsb2dTdWJWYWx1ZXMgPSAoXG4gIGFsbExvZ3M6IElOb2RlTG9ncywgbG9nczogSU5vZGVUZXJtTG9ncywgb3JpZ2luYWw6IGJsYW5rTm9kZVtdLCByZWNhbGN1bGF0ZWQ6IGJsYW5rTm9kZVtdLCBtb2RlbHM6IElNb2RlbFtdLFxuICB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfTogSUNvbmZpZ01vZGVsRG9jc0RhdGFcbikgPT5cbiAgbWVyZ2VTdWJWYWx1ZXMoW1xuICAgIC8vIGluY2x1ZGUgcHJvcGVydGllc1xuICAgIC4uLk9iamVjdC5rZXlzKGxvZ3MpXG4gICAgICAuZmlsdGVyKGlkID0+IGxvZ3NbaWRdLmlzUHJvcGVydHkpXG4gICAgICAubWFwKGlkID0+ICh7XG4gICAgICAgIGlkLFxuICAgICAgICBrZXk6ICdwcm9wZXJ0eScsXG4gICAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICAgIGNvbmZpZ01vZGVsczogKGxvZ3NbaWRdLm1vZGVscyB8fCBbXSkuZmlsdGVyKHYgPT4gaGFzTG9nKGxvZ3NbaWRdW3ZdKSlcbiAgICAgIH0pKSxcbiAgICAuLi4odHlwZSA9PT0gU2NoZW1hVHlwZS5FbWlzc2lvbiA/IGxvZ0VtaXNzaW9uVHJhbnNmb3JtYXRpb25zKHJlY2FsY3VsYXRlZCBhcyBFbWlzc2lvbltdKSA6IFtdKSxcbiAgICAuLi5PYmplY3Qua2V5cyhsb2dzKS5mbGF0TWFwKGtleSA9PlxuICAgICAgW1xuICAgICAgICBsb2dTdWJWYWx1ZShsb2dzLCBrZXksICdpbnB1dCcsIHRydWUpLFxuICAgICAgICBsb2dTdWJWYWx1ZShsb2dzLCBrZXksICdwcm9wZXJ0eScpXG4gICAgICBdXG4gICAgICAgIC5mbGF0KClcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgICAubWFwKHYgPT4gKHsgLi4udiwgY29uZmlnTW9kZWxzOiAodi5jb25maWdNb2RlbHMgYXMgYW55W10pIHx8IFtrZXldIH0pKVxuICAgICksXG4gICAgLi4ubG9nUHJvcGVydGllcyhvcmlnaW5hbCwgbW9kZWxzKSxcbiAgICAuLi5sb2dQcm9wZXJ0aWVzKHJlY2FsY3VsYXRlZCwgbW9kZWxzKVxuICBdKVxuICAgIC5tYXAoKHsga2V5LCBpZCwgc2hvd1VuaXRzLCBjb25maWdNb2RlbHMsIG9yaWdpbmFsVmFsdWUsIHJlY2FsY3VsYXRlZFZhbHVlIH0pID0+IHtcbiAgICAgIG9yaWdpbmFsVmFsdWUgPSBvcmlnaW5hbFZhbHVlIHx8IGJsYW5rTm9kZVZhbHVlKG9yaWdpbmFsLCBrZXksIGlkKTtcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlID0gcmVjYWxjdWxhdGVkVmFsdWUgfHwgYmxhbmtOb2RlVmFsdWUocmVjYWxjdWxhdGVkLCBrZXksIGlkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGtleSxcbiAgICAgICAgaWQsXG4gICAgICAgIHNob3dVbml0cyxcbiAgICAgICAgY29uZmlnTW9kZWxzOiBjb25maWdNb2RlbHMubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfSwgeyBrZXksIGlkIH0gYXMgYW55KSksXG4gICAgICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIHJlY2FsY3VsYXRlZFZhbHVlLFxuICAgICAgICBpc1JlY2FsY3VsYXRlZDogIWlzVW5kZWZpbmVkKHJlY2FsY3VsYXRlZFZhbHVlKSAmJiByZWNhbGN1bGF0ZWRWYWx1ZSAhPT0gb3JpZ2luYWxWYWx1ZSxcbiAgICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWU7XG4gICAgfSlcbiAgICAuZmlsdGVyKCh7IGNvbmZpZ01vZGVscywgb3JpZ2luYWxWYWx1ZSwgcmVjYWxjdWxhdGVkVmFsdWUgfSkgPT4gW1xuICAgICAgY29uZmlnTW9kZWxzLmxlbmd0aCA+IDAsXG4gICAgICBvcmlnaW5hbFZhbHVlICE9PSAnJyB8fCByZWNhbGN1bGF0ZWRWYWx1ZSAhPT0gJydcbiAgICBdLmV2ZXJ5KEJvb2xlYW4pKVxuICAgIC5tYXAodiA9PiB2LmtleSA9PT0gJ2lucHV0JyA/IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGFsbExvZ3MpKHYpIDogZGF0YVdpdGhDb25maWdNb2RlbExvZ3MobG9ncykodikpO1xuXG5jb25zdCBsb2dLZXlzID0gKFxuICBsb2dzOiBJTm9kZVRlcm1Mb2dzLCBvcmlnaW5hbDogYmxhbmtOb2RlW10sIHJlY2FsY3VsYXRlZDogYmxhbmtOb2RlW10sIG1vZGVsczogSU1vZGVsW10sIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCB9XG4pID0+XG4gIE9iamVjdC5rZXlzKGxvZ3MpXG4gICAgLmZpbHRlcihrZXkgPT4gbG9nc1trZXldLmlzS2V5ICYmIGtleSAhPT0gJ3RyYW5zZm9ybWF0aW9uJylcbiAgICAubWFwKGtleSA9PiAoe1xuICAgICAga2V5LFxuICAgICAgc2hvd1VuaXRzOiBmYWxzZSxcbiAgICAgIGNvbmZpZ01vZGVsczogKGxvZ3Nba2V5XS5tb2RlbHMgfHwgW10pXG4gICAgICAgIC5tYXAoY29uZmlnTW9kZWxXaXRoRG9jcyhtb2RlbHMsIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCB9LCB7IGtleSB9IGFzIGFueSkpXG4gICAgICAgIC8vIG9ubHkgdGFrZSB0aG9zZSB3ZSBmb3VuZCBhIG1hdGNoaW5nIG1vZGVsIChhdm9pZCBtYXRjaGluZyBrZXkgb24gd3Jvbmcgbm9kZSB0eXBlKVxuICAgICAgICAuZmlsdGVyKHYgPT4gISF2Lm1vZGVsKSxcbiAgICAgIG9yaWdpbmFsVmFsdWU6IGJsYW5rTm9kZVZhbHVlKG9yaWdpbmFsLCBrZXkpLFxuICAgICAgcmVjYWxjdWxhdGVkVmFsdWU6IGJsYW5rTm9kZVZhbHVlKHJlY2FsY3VsYXRlZCwga2V5KSxcbiAgICAgIGlzUmVjYWxjdWxhdGVkOiBpc1JlY2FsY3VsYXRlZChyZWNhbGN1bGF0ZWQsIGtleSksXG4gICAgICBpc1JlcXVpcmVkOiB0cnVlXG4gICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpKVxuICAgIC5maWx0ZXIodiA9PiB2LmNvbmZpZ01vZGVscy5sZW5ndGggPiAwKVxuICAgIC5tYXAoZGF0YVdpdGhDb25maWdNb2RlbExvZ3MobG9ncykpO1xuXG5jb25zdCBpc01vZGVsRm9ySW5wdXRQcm9kdWN0ID0gKHR5cGU6IFNjaGVtYVR5cGUsIGtleTogc3RyaW5nKSA9PiBbXG4gIGtleSAhPT0gJ2hlc3RpYUFnZ3JlZ2F0ZWREYXRhJyxcbiAgIWtleS5pbmNsdWRlcygnL2lucHV0LycpIHx8IHR5cGUgPT09IFNjaGVtYVR5cGUuSW5wdXQsXG4gICFrZXkuaW5jbHVkZXMoJy9wcm9kdWN0LycpIHx8IHR5cGUgPT09IFNjaGVtYVR5cGUuUHJvZHVjdCxcbl0uZXZlcnkoQm9vbGVhbik7XG5cbmNvbnN0IGlzQmFja2dyb3VuZElucHV0ID0gKGxvZzogSU5vZGVUZXJtTG9nKSA9PlxuICBsb2cubWV0aG9kVGllciA9PT0gRW1pc3Npb25NZXRob2RUaWVyLmJhY2tncm91bmQgJiYgISFsb2cuaW5wdXQgJiYgbG9nLnNob3VsZFJ1bjtcblxuY29uc3QgaXNNb2RlbExvZyA9IChsb2dzOiBJTm9kZVRlcm1Mb2dzLCB0eXBlOiBTY2hlbWFUeXBlKSA9PiAoa2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgbG9nID0gbG9nc1trZXldO1xuICByZXR1cm4gW1xuICAgIC8vIGhhbmRsZSBQcm9kdWN0IHNhbWUgYXMgSW5wdXRcbiAgICBpc01vZGVsRm9ySW5wdXRQcm9kdWN0KHR5cGUsIGtleSksXG4gICAgbG9nLm1ldGhvZFRpZXIgIT09IEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kLFxuICAgICFsb2cuaXNLZXksXG4gICAgLy8gIWxvZy5pbnB1dCxcbiAgICAhbG9nLnByb3BlcnR5XG4gIF0uZXZlcnkoQm9vbGVhbikgJiYgW1xuICAgICdzaG91bGRSdW4nIGluIGxvZyxcbiAgICAnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2csXG4gICAgJ3J1blJlcXVpcmVkJyBpbiBsb2dcbiAgXS5zb21lKEJvb2xlYW4pO1xufTtcblxuY29uc3QgbW9kZWxDb25maWdNYXRjaCA9ICh0ZXJtSWQ6IHN0cmluZywgbW9kZWxLZXk6IHN0cmluZywgbW9kZWw6IHN0cmluZykgPT4gKGNvbmZpZzogSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnKSA9PlxuICBbdGVybUlkID09PSBjb25maWcudmFsdWUsIG1vZGVsS2V5ID09PSBjb25maWcua2V5LCBtb2RlbCA9PT0gY29uZmlnLm1vZGVsXS5ldmVyeShCb29sZWFuKTtcblxuY29uc3QgbW9kZWxDb25maWcgPSAoXG4gIG1vZGVsczogKElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZyB8IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZ1tdKVtdLCB0ZXJtSWQ6IHN0cmluZywgbW9kZWxLZXk6IHN0cmluZywgbW9kZWw6IHN0cmluZ1xuKSA9PiBtb2RlbHMuZmxhdCgpLmZpbmQobW9kZWxDb25maWdNYXRjaCh0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbCkpO1xuXG5jb25zdCBtb2RlbENvbmZpZ09yZGVyID0gKFxuICBtb2RlbHM6IChJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcgfCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXSlbXSwgdGVybUlkOiBzdHJpbmcsIG1vZGVsS2V5OiBzdHJpbmcsIG1vZGVsOiBzdHJpbmdcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGluZGV4ZXMgPSBtb2RlbHMubWFwKChtLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGFycmF5SW5kZXggPSBBcnJheS5pc0FycmF5KG0pID8gbW9kZWxDb25maWdPcmRlcihtLCB0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbCkgOiAnJztcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheShtKVxuICAgICAgPyBhcnJheUluZGV4XG4gICAgICAgID8gW2luZGV4LCBhcnJheUluZGV4XS5qb2luKCcuJylcbiAgICAgICAgOiAnJ1xuICAgICAgOiBtb2RlbENvbmZpZ01hdGNoKHRlcm1JZCwgbW9kZWxLZXksIG1vZGVsKShtKVxuICAgICAgICA/IGAke2luZGV4fWBcbiAgICAgICAgOiAnJztcbiAgfSkuZmlsdGVyKEJvb2xlYW4pO1xuICByZXR1cm4gaW5kZXhlcy5sZW5ndGggPyBpbmRleGVzWzBdIDogJyc7XG59O1xuXG5pbnRlcmZhY2UgSUNvbmZpZ01vZGVsRG9jc0RhdGEge1xuICBub2RlVHlwZTogTm9kZVR5cGU7XG4gIHR5cGU6IFNjaGVtYVR5cGU7XG4gIHRlcm1JZDogc3RyaW5nO1xuICB0ZXJtVHlwZT86IFRlcm1UZXJtVHlwZTtcbn1cblxuY29uc3QgY29uZmlnTW9kZWxXaXRoRG9jcyA9IChcbiAgbW9kZWxzOiBJTW9kZWxbXSwgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkLCB0ZXJtVHlwZSB9OiBJQ29uZmlnTW9kZWxEb2NzRGF0YSwgc3ViVmFsdWU/OiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVcbikgPT4gKG1ldGhvZElkOiBzdHJpbmcpID0+IHtcbiAgY29uc3Qgbm9kZSA9IHtcbiAgICAnQHR5cGUnOiBub2RlVHlwZSxcbiAgICB0ZXJtOiB7ICdAaWQnOiBzdWJWYWx1ZT8uaWQgfHwgdGVybUlkIH0sXG4gICAgbWV0aG9kTW9kZWw6IHsgJ0BpZCc6IG1ldGhvZElkIH1cbiAgfSBhcyBhbnk7XG4gIHJldHVybiB7XG4gICAgbWV0aG9kSWQsXG4gICAgbW9kZWw6IGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxQYXJhbXMobm9kZSkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJsaXZlQW5pbWFsXCJcbiAgICAgICh0ZXJtVHlwZSAmJiBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIHRlcm1UeXBlKSkpIHx8XG4gICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke3N1YlZhbHVlPy5rZXl9LiR7bWV0aG9kSWR9YCkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJpbnB1dC5wcmljZVwiXG4gICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke3R5cGU/LnRvTG93ZXJDYXNlKCl9LiR7c3ViVmFsdWU/LmtleX1gKSkgfHxcbiAgICAgIC8vIGhhbmRsZSBcImlucHV0Lmhlc3RpYUFnZ3JlZ2F0ZWREYXRhXCJcbiAgICAgIGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgYCR7dHlwZT8udG9Mb3dlckNhc2UoKX0uJHttZXRob2RJZH1gKSkgfHxcbiAgICAgIC8vIGhhbmRsZSBcInRyYW5zZm9ybWF0aW9uXCJcbiAgICAgIChzdWJWYWx1ZT8ua2V5ID8gZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBzdWJWYWx1ZT8ua2V5KSkgOiB1bmRlZmluZWQpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJ0cmFuc2Zvcm1hdGlvbi9pbnB1dC9leGNyZXRhXCIgYW5kIG90aGVyIG1vZGVscyB3aXRoIFwiL1wiXG4gICAgICAobWV0aG9kSWQuaW5jbHVkZXMoJy8nKSA/IGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywge1xuICAgICAgICBtb2RlbDogbWV0aG9kSWQuc3BsaXQoJy8nKVswXSxcbiAgICAgICAgbW9kZWxLZXk6IG1ldGhvZElkLnNwbGl0KCcvJykuc2xpY2UoMSkuam9pbignLicpXG4gICAgICB9KSA6IHVuZGVmaW5lZClcbiAgfTtcbn07XG5cbmNvbnN0IGNvbmZpZ01vZGVsV2l0aExvZ3MgPSAoXG4gIGRhdGE6IElCbGFua05vZGVMb2cgfCBJQmxhbmtOb2RlTG9nU3ViVmFsdWUsIGxvZ3M6IElOb2RlVGVybUxvZ3MsIHByZXZpb3VzTW9kZWxTdWNjZXNzID0gZmFsc2VcbikgPT4gKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gbG9nU3RhdHVzKGRhdGEsIGxvZ3M/Llttb2RlbC5tZXRob2RJZF0sIHByZXZpb3VzTW9kZWxTdWNjZXNzKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5tb2RlbCxcbiAgICBsb2dzOiBsb2dzPy5bbW9kZWwubWV0aG9kSWRdLFxuICAgIHN0YXR1cyxcbiAgICBzaG93TG9nczogaGFzTG9nRGV0YWlscyhzdGF0dXMsIGxvZ3M/Llttb2RlbC5tZXRob2RJZF0pXG4gIH0gYXMgSUNvbmZpZ01vZGVsO1xufTtcblxuLyoqXG4gKiBIYW5kbGUgaGllcmFyY2h5IHNraXAgaWYgYSBtb2RlbCBiZWZvcmUgc3VjY2VlZGVkLlxuICpcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gaW5kZXhcbiAqL1xuY29uc3QgaGFzUHJldmlvdXNNb2RlbFN1Y2Nlc3MgPSAobW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10sIGluZGV4ID0gMCkgPT5cbiAgZmlsdGVyQ29uZmlnTW9kZWxzKG1vZGVsc1tpbmRleF0sIGtlZXBDb25maWdNb2RlbEJ5U3RhdHVzKExvZ1N0YXR1cy5zdWNjZXNzKSkubGVuZ3RoID4gMCB8fFxuICBpbmRleCA8PSBtb2RlbHMubGVuZ3RoICYmIGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzKG1vZGVscywgaW5kZXggKyAxKTtcblxuY29uc3QgZGF0YVdpdGhDb25maWdNb2RlbExvZ3MgPSAoXG4gIGxvZ3M6IElOb2RlTG9ncyB8IElOb2RlVGVybUxvZ3NcbikgPT4gPFQgZXh0ZW5kcyAoSUJsYW5rTm9kZUxvZyB8IElCbGFua05vZGVMb2dTdWJWYWx1ZSk+KGRhdGE6IFQpID0+IHtcbiAgY29uc3Qgc3ViTG9nS2V5ID0gc3ViVmFsdWVMb2dLZXkoZGF0YSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpO1xuICBjb25zdCBsb2cgPSBzdWJMb2dLZXkgPyBsb2dzW3N1YkxvZ0tleV0gOiBsb2dzO1xuICBjb25zdCBjb25maWdNb2RlbHM6IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXSA9IFtdO1xuXG4gIC8vIGdvIHRocm91Z2ggbW9kZWxzIG9uZSBieSBvbmUgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG5leHQgbW9kZWxzIGluIGhpZXJhcmNoeSBoYXZlIGZhaWxlZFxuICBmb3IgKGNvbnN0IGluZGV4IGluIGRhdGEuY29uZmlnTW9kZWxzKSB7XG4gICAgaWYgKGRhdGEuY29uZmlnTW9kZWxzLmhhc093blByb3BlcnR5KGluZGV4KSkge1xuICAgICAgY29uc3QgbW9kZWwgPSBkYXRhLmNvbmZpZ01vZGVsc1tpbmRleF07XG4gICAgICBjb25zdCBwcmV2aW91c01vZGVsU3VjY2VzcyA9ICtpbmRleCA+IDAgJiYgaGFzUHJldmlvdXNNb2RlbFN1Y2Nlc3MoY29uZmlnTW9kZWxzKTtcbiAgICAgIGNvbnN0IG5ld01vZGVsID0gQXJyYXkuaXNBcnJheShtb2RlbClcbiAgICAgICAgPyBtb2RlbC5tYXAoY29uZmlnTW9kZWxXaXRoTG9ncyhkYXRhLCBsb2csIHByZXZpb3VzTW9kZWxTdWNjZXNzKSlcbiAgICAgICAgOiBjb25maWdNb2RlbFdpdGhMb2dzKGRhdGEsIGxvZywgcHJldmlvdXNNb2RlbFN1Y2Nlc3MpKG1vZGVsKTtcbiAgICAgIGNvbmZpZ01vZGVscy5wdXNoKG5ld01vZGVsKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIC4uLmRhdGEsXG4gICAgY29uZmlnTW9kZWxzOiBmaWx0ZXJDb25maWdNb2RlbHMoY29uZmlnTW9kZWxzLCByZW1vdmVDb25maWdNb2RlbEJ5U3RhdHVzKExvZ1N0YXR1cy5ub3RSZXF1aXJlZCkpXG4gIH0gYXMgVDtcbn07XG5cbi8qKlxuICogR3JvdXAgbW9kZWxzIHJ1bm5pbmcgaW4gcGFyYWxsZWwgdW5kZXIgdGhlIHNhbWUgYXJyYXksIGFzIHRoZXkgc2hvdWxkIGFwcGVhciB2ZXJ0aWNhbGx5LlxuICpcbiAqIEBwYXJhbSBjb25maWcgVGhlIGNvbmZpZ3VyYXRpb24uXG4gKiBAcGFyYW0gbW9kZWxzIFRoZSBsaXN0IG9mIG1vZGVsc1xuICovXG5jb25zdCBncm91cFBhcmFsbGVsTW9kZWxzID0gKGNvbmZpZzogSU9yY2hlc3RyYXRvckNvbmZpZywgdGVybUlkOiBzdHJpbmcsIG1vZGVsS2V5OiBzdHJpbmcsIG1vZGVsczogSUNvbmZpZ01vZGVsW10pID0+IHtcbiAgY29uc3QgbW9kZWxzV2l0aE9yZGVyID0gbW9kZWxzLm1hcChtb2RlbCA9PiAoe1xuICAgIG1vZGVsOiB7XG4gICAgICAuLi5tb2RlbCxcbiAgICAgIGNvbmZpZzogbW9kZWxDb25maWcoY29uZmlnLm1vZGVscywgdGVybUlkLCBtb2RlbEtleSwgbW9kZWwubWV0aG9kSWQpXG4gICAgfSxcbiAgICBvcmRlcjogbW9kZWxDb25maWdPcmRlcihjb25maWcubW9kZWxzLCB0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbC5tZXRob2RJZClcbiAgfSkpO1xuICByZXR1cm4gbW9kZWxzV2l0aE9yZGVyXG4gICAgLnJlZHVjZSgocHJldiwgeyBtb2RlbCwgb3JkZXIgfSkgPT4ge1xuICAgICAgY29uc3QgaXNBcnJheSA9IG9yZGVyLmluY2x1ZGVzKCcuJyk7XG4gICAgICBjb25zdCBhcnJheUluZGV4ID0gaXNBcnJheSA/IG9yZGVyLnNwbGl0KCcuJylbMF0gOiBwcmV2Lmxlbmd0aDtcbiAgICAgIHByZXZbYXJyYXlJbmRleF0gPSBpc0FycmF5ID8gWy4uLihwcmV2W2FycmF5SW5kZXhdIHx8IFtdKSwgbW9kZWxdIDogbW9kZWw7XG4gICAgICByZXR1cm4gcHJldjtcbiAgICB9LCBbXSBhcyBJQ29uZmlnTW9kZWxbXVtdKVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAubWFwKHYgPT4gdi5sZW5ndGggPT09IDEgPyB2WzBdIDogdik7XG59O1xuXG5jb25zdCBhbGxQYXJhbGxlbCA9IChtb2RlbHM6IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXSkgPT5cbiAgbW9kZWxzLmxlbmd0aCA9PT0gMSAmJiBBcnJheS5pc0FycmF5KG1vZGVsc1swXSkgJiYgbW9kZWxzWzBdLmxlbmd0aCA+IDE7XG5cbmNvbnN0IHZhbHVlQnlNZXRob2RJZCA9ICh2YWx1ZXM6IGJsYW5rTm9kZVtdLCBtZXRob2RJZDogc3RyaW5nLCB0ZXJtSWQ6IHN0cmluZykgPT5cbiAgcHJvcGVydHlWYWx1ZSh2YWx1ZXMuZmluZCh2ID0+IHYubWV0aG9kTW9kZWw/LlsnQGlkJ10gPT09IG1ldGhvZElkKT8udmFsdWUgYXMgbnVtYmVyW10sIHRlcm1JZCk7XG5cbmNvbnN0IGdyb3VwUGFyYWxsZWxWYWx1ZXMgPSAodmFsdWVzOiBibGFua05vZGVbXSwgbW9kZWxzOiBJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSwgdGVybUlkOiBzdHJpbmcpID0+XG4gIEFycmF5LmlzQXJyYXkobW9kZWxzKVxuICAgID8gT2JqZWN0LmZyb21FbnRyaWVzKG1vZGVscy5tYXAobW9kZWwgPT4gW21vZGVsLm1ldGhvZElkLCB2YWx1ZUJ5TWV0aG9kSWQodmFsdWVzLCBtb2RlbC5tZXRob2RJZCwgdGVybUlkKV0pKVxuICAgIDoge307XG5cbmV4cG9ydCBjb25zdCBncm91cExvZ3NCeVRlcm0gPSAoXG4gIG5vZGVUeXBlOiBOb2RlVHlwZSwgbG9nczogSU5vZGVMb2dzLCBtb2RlbHM6IElNb2RlbFtdLCBjb25maWc6IElPcmNoZXN0cmF0b3JDb25maWcsXG4gIGFsbE9yaWdpbmFsVmFsdWVzOiBibGFua05vZGVbXSwgYWxsUmVjYWxjdWxhdGVkVmFsdWVzOiBibGFua05vZGVbXSxcbiAgbm9kZUtleT86IHN0cmluZ1xuKSA9PiB7XG4gIGNvbnN0IG9yaWdpbmFsVmFsdWVzID0gKGFsbE9yaWdpbmFsVmFsdWVzIHx8IFtdKS5maWx0ZXIodmFsdWUgPT4gISh2YWx1ZSBhcyBhbnkpLmRlbGV0ZWQpO1xuICBjb25zdCByZWNhbGN1bGF0ZWRWYWx1ZXMgPSAoYWxsUmVjYWxjdWxhdGVkVmFsdWVzIHx8IFtdKS5maWx0ZXIodmFsdWUgPT4gISh2YWx1ZSBhcyBhbnkpLmRlbGV0ZWQpO1xuICBjb25zdCB0eXBlOiBTY2hlbWFUeXBlID0gb3JpZ2luYWxWYWx1ZXMubGVuZ3RoID9cbiAgICBvcmlnaW5hbFZhbHVlc1swXVsnQHR5cGUnXSB8fCBvcmlnaW5hbFZhbHVlc1swXS50eXBlIDpcbiAgICByZWNhbGN1bGF0ZWRWYWx1ZXMubGVuZ3RoID9cbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlc1swXVsnQHR5cGUnXSB8fCByZWNhbGN1bGF0ZWRWYWx1ZXNbMF0udHlwZSA6XG4gICAgICB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuICh0ZXJtOiBJVGVybUpTT05MRCk6IElCbGFua05vZGVMb2cgPT4ge1xuICAgIGNvbnN0IHRlcm1JZCA9IHRlcm1bJ0BpZCddO1xuICAgIGNvbnN0IHRlcm1UeXBlID0gdGVybS50ZXJtVHlwZTtcbiAgICBjb25zdCB0ZXJtTG9ncyA9IGdldChsb2dzLCB0ZXJtSWQsIHt9KSBhcyBJTm9kZVRlcm1Mb2dzO1xuICAgIGNvbnN0IG9yaWdpbmFsID0gb3JpZ2luYWxWYWx1ZXMuZmlsdGVyKHYgPT4gdGVybUlkID09PSB2LnRlcm0hWydAaWQnXSk7XG4gICAgY29uc3QgcmVjYWxjdWxhdGVkID0gcmVjYWxjdWxhdGVkVmFsdWVzLmZpbHRlcih2ID0+IHRlcm1JZCA9PT0gdi50ZXJtIVsnQGlkJ10pO1xuICAgIGNvbnN0IGhhc0RhdGEgPSAhIW9yaWdpbmFsLmxlbmd0aCB8fCAhIXJlY2FsY3VsYXRlZC5sZW5ndGggfHwgT2JqZWN0LmtleXModGVybUxvZ3MpLmxlbmd0aCA+IDA7XG4gICAgY29uc3QgY29uZmlnTW9kZWxzRGF0YSA9IHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCwgdGVybVR5cGUgfTtcbiAgICBjb25zdCBjb25maWdNb2RlbHMgPSBncm91cFBhcmFsbGVsTW9kZWxzKFxuICAgICAgY29uZmlnLCB0ZXJtSWQsIG5vZGVLZXkhLFxuICAgICAgdW5pcXVlKFtcbiAgICAgICAgLi4uKHRlcm1Mb2dzLm1vZGVscyB8fCBbXSkuZmlsdGVyKGlzTW9kZWxMb2codGVybUxvZ3MsIHR5cGUpKSxcbiAgICAgICAgLy8gLi4uZmluZENvbmZpZ01vZGVscyhjb25maWcsIHRlcm1JZCwgbm9kZUtleSEsIG1vZGVscykubWFwKCh7IG1vZGVsIH0pID0+IG1vZGVsIGFzIHN0cmluZylcbiAgICAgIF0pLm1hcChjb25maWdNb2RlbFdpdGhEb2NzKG1vZGVscywgY29uZmlnTW9kZWxzRGF0YSkpXG4gICAgKTtcbiAgICBjb25zdCBrZXlzID0gbG9nS2V5cyh0ZXJtTG9ncywgb3JpZ2luYWwsIHJlY2FsY3VsYXRlZCwgbW9kZWxzLCBjb25maWdNb2RlbHNEYXRhKTtcbiAgICBjb25zdCBzdWJWYWx1ZXMgPSBsb2dTdWJWYWx1ZXMobG9ncywgdGVybUxvZ3MsIG9yaWdpbmFsLCByZWNhbGN1bGF0ZWQsIG1vZGVscywgY29uZmlnTW9kZWxzRGF0YSk7XG4gICAgY29uc3QgaXNSZXF1aXJlZCA9ICEoXG4gICAgICBPYmplY3RcbiAgICAgICAgLnZhbHVlcyh0ZXJtTG9ncylcbiAgICAgICAgLmZpbHRlcih2ID0+IHR5cGVvZiB2ID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2KSAmJiAhdi5pc0tleSlcbiAgICAgICAgLmV2ZXJ5KHYgPT4gdi5ydW5SZXF1aXJlZCA9PT0gZmFsc2UpXG4gICAgKTtcblxuICAgIGNvbnN0IG5vZGVMb2c6IElCbGFua05vZGVMb2cgPSBkYXRhV2l0aENvbmZpZ01vZGVsTG9ncyh0ZXJtTG9ncykoe1xuICAgICAgaXNPcGVuOiB0cnVlLFxuICAgICAgY2FuT3Blbjoga2V5cy5sZW5ndGggPiAwIHx8IHN1YlZhbHVlcy5sZW5ndGggPiAwLFxuICAgICAgdGVybUlkLFxuICAgICAgdGVybSxcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWdNb2RlbHMsXG4gICAgICBvcmlnaW5hbCxcbiAgICAgIG9yaWdpbmFsVmFsdWU6IHJlZHVjZVZhbHVlcyhvcmlnaW5hbCwgdGVybUlkKSxcbiAgICAgIHJlY2FsY3VsYXRlZCxcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlOiByZWR1Y2VWYWx1ZXMocmVjYWxjdWxhdGVkLCB0ZXJtSWQpLFxuICAgICAgaXNPcmlnaW5hbDogISFvcmlnaW5hbC5sZW5ndGgsXG4gICAgICBpc1JlY2FsY3VsYXRlZDogaXNSZWNhbGN1bGF0ZWQocmVjYWxjdWxhdGVkKSxcbiAgICAgIGhhc0RhdGEsXG4gICAgICBpc1JlcXVpcmVkLFxuICAgICAgbG9nczogdGVybUxvZ3MsXG4gICAgICBrZXlzLFxuICAgICAgc3ViVmFsdWVzLFxuICAgICAgYWxsUGFyYWxsZWw6IGFsbFBhcmFsbGVsKGNvbmZpZ01vZGVscyksXG4gICAgICBvcmlnaW5hbFZhbHVlQnlNZXRob2RJZDogZ3JvdXBQYXJhbGxlbFZhbHVlcyhvcmlnaW5hbCwgY29uZmlnTW9kZWxzWzBdLCB0ZXJtSWQpLFxuICAgICAgcmVjYWxjdWxhdGVkVmFsdWVCeU1ldGhvZElkOiBncm91cFBhcmFsbGVsVmFsdWVzKHJlY2FsY3VsYXRlZCwgY29uZmlnTW9kZWxzWzBdLCB0ZXJtSWQpXG4gICAgfSk7XG4gICAgY29uc3Qgc3ViVmFsdWUgPSBjeWNsZVN1YlZhbHVlKG5vZGVMb2cpO1xuXG4gICAgcmV0dXJuIHN1YlZhbHVlICYmIHN1YlZhbHVlcz8ubGVuZ3RoXG4gICAgICA/IHtcbiAgICAgICAgLi4ubm9kZUxvZyxcbiAgICAgICAgbW9kZWxzSW5TdWJWYWx1ZXM6IHRydWUsXG4gICAgICAgIHN1YlZhbHVlczogW1xuICAgICAgICAgIHN1YlZhbHVlLFxuICAgICAgICAgIC4uLnN1YlZhbHVlc1xuICAgICAgICBdXG4gICAgICB9IC8vIGlmIHdlIGluY2x1ZGUgdGhlIEN5Y2xlIHZhbHVlLCBpdCBiZWNvbWVzIHRoZSBtYWluIHJlZmVyZW5jZSBvZiB0aGUgbW9kZWxzXG4gICAgICA6IG5vZGVMb2c7XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgbW9kZWxDb3VudCA9IChibGFua05vZGVMb2dzOiBJQmxhbmtOb2RlTG9nW10pID0+IE1hdGgubWF4LmFwcGx5KE1hdGgubWF4LCBbXG4gIDAsXG4gIC4uLmJsYW5rTm9kZUxvZ3MuZmxhdE1hcCh2ID0+IFtcbiAgICB2LmNvbmZpZ01vZGVscy5sZW5ndGgsXG4gICAgLi4uKHYuc3ViVmFsdWVzLm1hcChzID0+IHMuY29uZmlnTW9kZWxzPy5sZW5ndGggfHwgMCkpLFxuICAgIC4uLih2LmtleXMubWFwKHMgPT4gcy5jb25maWdNb2RlbHM/Lmxlbmd0aCB8fCAwKSlcbiAgXSlcbl0pO1xuXG5leHBvcnQgY29uc3QgbG9nVmFsdWVBcnJheSA9ICh2YWx1ZTogc3RyaW5nKTogYW55W10gPT5cbiAgWyc7JywgJzonXS5zb21lKHYgPT4gdmFsdWUuaW5jbHVkZXModikpID9cbiAgICB2YWx1ZS5zcGxpdCgnOycpLmZsYXRNYXAodiA9PiB7XG4gICAgICBjb25zdCByZXMgPSB2LnNwbGl0KCdfJykubWFwKHZ2ID0+IHZ2LnNwbGl0KCc6JykpO1xuICAgICAgcmV0dXJuIHJlcy5sZW5ndGggPD0gMSA/IHJlcy5mbGF0KCkgOiBPYmplY3QuZnJvbUVudHJpZXMocmVzKTtcbiAgICB9KSA6XG4gICAgbnVsbDtcbiJdfQ==
|
|
@@ -39,15 +39,17 @@ export class NodeValueDetailsComponent {
|
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
41
|
NodeValueDetailsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: NodeValueDetailsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
42
|
-
NodeValueDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: NodeValueDetailsComponent, selector: "he-node-value-details", inputs: { data: "data", nodeType: "nodeType", dataKey: "dataKey" }, ngImport: i0, template: "<ng-container *bindOnce=\"data\">\n <ng-container *ngIf=\"showInline; else asTable\">\n <ng-container *ngFor=\"let key of keys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n <ng-container *ngFor=\"let key of additionalKeys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #asTable>\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"term\"></he-link-key-value>\n\n <div class=\"table-container mt-2\">\n <table class=\"table is-narrow has-text-white\">\n <thead>\n <th *ngFor=\"let key of tableKeys\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key.split('.')[0]\" target=\"_blank\">\n <b>{{key.includes('.') ? key.split('.')[1] : key}}</b>\n </a>\n </th>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of data!.nodes\">\n <td *ngFor=\"let key of tableKeys\">\n <he-link-key-value [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\" [defaultValue]=\"defaultValue(key)\"></he-link-key-value>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n", styles: ["table{background-color:transparent}table::ng-deep he-link-key-value>a:first-child,table::ng-deep he-link-key-value>a:first-child+span{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "component", type: i3.LinkKeyValueComponent, selector: "he-link-key-value", inputs: ["node", "nodeType", "dataKey", "key", "defaultValue"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
42
|
+
NodeValueDetailsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.8", type: NodeValueDetailsComponent, selector: "he-node-value-details", inputs: { data: "data", nodeType: "nodeType", dataKey: "dataKey", dataState: "dataState" }, ngImport: i0, template: "<ng-container *bindOnce=\"data\">\n <ng-container *ngIf=\"showInline; else asTable\">\n <ng-container *ngFor=\"let key of keys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n <ng-container *ngFor=\"let key of additionalKeys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #asTable>\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" key=\"term\"></he-link-key-value>\n\n <div class=\"table-container mt-2\">\n <table class=\"table is-narrow has-text-white\">\n <thead>\n <th *ngFor=\"let key of tableKeys\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key.split('.')[0]\" target=\"_blank\">\n <b>{{key.includes('.') ? key.split('.')[1] : key}}</b>\n </a>\n </th>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of data!.nodes\">\n <td *ngFor=\"let key of tableKeys\">\n <he-link-key-value [node]=\"node\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" [key]=\"key\" [defaultValue]=\"defaultValue(key)\"></he-link-key-value>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n", styles: ["table{background-color:transparent}table::ng-deep he-link-key-value>a:first-child,table::ng-deep he-link-key-value>a:first-child+span{display:none}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BindOnceDirective, selector: "[bindOnce]", inputs: ["bindOnce"] }, { kind: "component", type: i3.LinkKeyValueComponent, selector: "he-link-key-value", inputs: ["node", "nodeType", "dataKey", "key", "defaultValue", "dataState"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
43
43
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.8", ngImport: i0, type: NodeValueDetailsComponent, decorators: [{
|
|
44
44
|
type: Component,
|
|
45
|
-
args: [{ selector: 'he-node-value-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *bindOnce=\"data\">\n <ng-container *ngIf=\"showInline; else asTable\">\n <ng-container *ngFor=\"let key of keys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n <ng-container *ngFor=\"let key of additionalKeys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #asTable>\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" key=\"term\"></he-link-key-value>\n\n <div class=\"table-container mt-2\">\n <table class=\"table is-narrow has-text-white\">\n <thead>\n <th *ngFor=\"let key of tableKeys\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key.split('.')[0]\" target=\"_blank\">\n <b>{{key.includes('.') ? key.split('.')[1] : key}}</b>\n </a>\n </th>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of data!.nodes\">\n <td *ngFor=\"let key of tableKeys\">\n <he-link-key-value [node]=\"node\" [nodeType]=\"nodeType\" [dataKey]=\"dataKey\" [key]=\"key\" [defaultValue]=\"defaultValue(key)\"></he-link-key-value>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n", styles: ["table{background-color:transparent}table::ng-deep he-link-key-value>a:first-child,table::ng-deep he-link-key-value>a:first-child+span{display:none}\n"] }]
|
|
45
|
+
args: [{ selector: 'he-node-value-details', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *bindOnce=\"data\">\n <ng-container *ngIf=\"showInline; else asTable\">\n <ng-container *ngFor=\"let key of keys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n <ng-container *ngFor=\"let key of additionalKeys\">\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" [key]=\"key\"></he-link-key-value>\n </ng-container>\n </ng-container>\n</ng-container>\n\n<ng-template #asTable>\n <he-link-key-value [node]=\"data!.nodes[0]\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" key=\"term\"></he-link-key-value>\n\n <div class=\"table-container mt-2\">\n <table class=\"table is-narrow has-text-white\">\n <thead>\n <th *ngFor=\"let key of tableKeys\">\n <a class=\"is-dark\" [href]=\"baseUrl + '/schema/' + type + '#' + key.split('.')[0]\" target=\"_blank\">\n <b>{{key.includes('.') ? key.split('.')[1] : key}}</b>\n </a>\n </th>\n </thead>\n <tbody>\n <tr *ngFor=\"let node of data!.nodes\">\n <td *ngFor=\"let key of tableKeys\">\n <he-link-key-value [node]=\"node\" [nodeType]=\"nodeType\" [dataState]=\"dataState\" [dataKey]=\"dataKey\" [key]=\"key\" [defaultValue]=\"defaultValue(key)\"></he-link-key-value>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n</ng-template>\n", styles: ["table{background-color:transparent}table::ng-deep he-link-key-value>a:first-child,table::ng-deep he-link-key-value>a:first-child+span{display:none}\n"] }]
|
|
46
46
|
}], propDecorators: { data: [{
|
|
47
47
|
type: Input
|
|
48
48
|
}], nodeType: [{
|
|
49
49
|
type: Input
|
|
50
50
|
}], dataKey: [{
|
|
51
51
|
type: Input
|
|
52
|
+
}], dataState: [{
|
|
53
|
+
type: Input
|
|
52
54
|
}] } });
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS12YWx1ZS1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL25vZGUtdmFsdWUtZGV0YWlscy9ub2RlLXZhbHVlLWRldGFpbHMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vc3JjL25vZGUvbm9kZS12YWx1ZS1kZXRhaWxzL25vZGUtdmFsdWUtZGV0YWlscy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUdsRixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFFN0IsT0FBTyxFQUFFLGlCQUFpQixFQUFnQixNQUFNLHlCQUF5QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFFN0MsTUFBTSxjQUFjLEdBQUc7SUFDckIsd0JBQXdCLEVBQUUsYUFBYTtJQUN2QyxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGlCQUFpQjtJQUNoRSxNQUFNLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLG9CQUFvQjtJQUN4RyxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsWUFBWTtDQUM5QyxDQUFDO0FBQ0YsTUFBTSxTQUFTLEdBQUc7SUFDaEIsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsWUFBWSxFQUFFLGlCQUFpQjtDQUN4SCxDQUFDO0FBUUYsTUFBTSxPQUFPLHlCQUF5QjtJQU50QztRQWdCUyxZQUFPLEdBQUcsT0FBTyxFQUFFLENBQUM7UUFDcEIsU0FBSSxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsaUJBQWlCLENBQUMsQ0FBQztRQUN2QyxtQkFBYyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxjQUFTLEdBQUcsU0FBUyxDQUFDO0tBb0I5QjtJQWxCQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVELElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLFlBQVksQ0FBQyxHQUFXO1FBQzdCLE9BQU87WUFDTCxrQkFBa0I7WUFDbEIsZ0JBQWdCO1NBQ2pCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVDLENBQUM7O3NIQWhDVSx5QkFBeUI7MEdBQXpCLHlCQUF5Qix5SkN4QnRDLDhnREFpQ0E7MkZEVGEseUJBQXlCO2tCQU5yQyxTQUFTOytCQUNFLHVCQUF1QixtQkFHaEIsdUJBQXVCLENBQUMsTUFBTTs4QkFJckMsSUFBSTtzQkFEYixLQUFLO2dCQUdJLFFBQVE7c0JBRGpCLEtBQUs7Z0JBR0ksT0FBTztzQkFEaEIsS0FBSztnQkFHSSxTQUFTO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgSW5wdXQsIE9uSW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGF0YVN0YXRlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9hcGknO1xuaW1wb3J0IHsgTm9kZVR5cGUgfSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC5nZXQnO1xuXG5pbXBvcnQgeyBncm91cHBlZFZhbHVlS2V5cywgSUdyb3VwZWROb2RlIH0gZnJvbSAnLi4vLi4vY29tbW9uL25vZGUtdXRpbHMnO1xuaW1wb3J0IHsgYmFzZVVybCB9IGZyb20gJy4uLy4uL2NvbW1vbi91dGlscyc7XG5cbmNvbnN0IGFkZGl0aW9uYWxLZXlzID0gW1xuICAnbWV0aG9kTW9kZWxEZXNjcmlwdGlvbicsICdkZXNjcmlwdGlvbicsXG4gICdwcmltYXJ5JywgJ2VtaXNzaW9uRHVyYXRpb24nLCAnb2JzZXJ2YXRpb25zJywgJ3N0YXRzRGVmaW5pdGlvbicsXG4gICd0ZXJtJywgJ3NvdXJjZScsICd2YXJpZXR5JywgJ3JlbGlhYmlsaXR5JywgJ3ByaWNlJywgJ2N1cnJlbmN5JywgJ2Nvc3QnLCAncmV2ZW51ZScsICdlY29ub21pY1ZhbHVlU2hhcmUnLFxuICAnb3BlcmF0aW9uJywgJ2ltcGFjdEFzc2Vzc21lbnQnLCAncHJvcGVydGllcydcbl07XG5jb25zdCB0YWJsZUtleXMgPSBbXG4gICdpbnB1dHMnLCAndHJhbnNmb3JtYXRpb24nLCAnb3BlcmF0aW9uJywgJ3ZhbHVlJywgJ3Rlcm0udW5pdHMnLCAnZGF0ZXMnLCAnbWV0aG9kTW9kZWwnLCAnbWV0aG9kVGllcicsICdzdGF0c0RlZmluaXRpb24nXG5dO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdoZS1ub2RlLXZhbHVlLWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJy4vbm9kZS12YWx1ZS1kZXRhaWxzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbm9kZS12YWx1ZS1kZXRhaWxzLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIE5vZGVWYWx1ZURldGFpbHNDb21wb25lbnQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGF0YT86IElHcm91cGVkTm9kZTxUPjtcbiAgQElucHV0KClcbiAgcHJvdGVjdGVkIG5vZGVUeXBlPzogTm9kZVR5cGU7XG4gIEBJbnB1dCgpXG4gIHByb3RlY3RlZCBkYXRhS2V5Pzogc3RyaW5nO1xuICBASW5wdXQoKVxuICBwcm90ZWN0ZWQgZGF0YVN0YXRlPzogRGF0YVN0YXRlO1xuXG4gIHB1YmxpYyBiYXNlVXJsID0gYmFzZVVybCgpO1xuICBwdWJsaWMga2V5cyA9IFsndmFsdWUnLCAuLi5ncm91cHBlZFZhbHVlS2V5c107XG4gIHB1YmxpYyBhZGRpdGlvbmFsS2V5cyA9IGFkZGl0aW9uYWxLZXlzO1xuICBwdWJsaWMgdGFibGVLZXlzID0gdGFibGVLZXlzO1xuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMudGFibGVLZXlzID0gdGFibGVLZXlzLmZpbHRlcihrZXkgPT4gKHRoaXMuZGF0YT8ubm9kZXMgfHwgW10pLnNvbWUobm9kZSA9PiAhIWdldChub2RlLCBrZXkpKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ubm9kZXNbMF1bJ0B0eXBlJ107XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3dJbmxpbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGF0YT8ubm9kZXM/Lmxlbmd0aCA9PT0gMTtcbiAgfVxuXG4gIHB1YmxpYyBkZWZhdWx0VmFsdWUoa2V5OiBzdHJpbmcpIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2ltcGFjdEFzc2Vzc21lbnQnLFxuICAgICAgJ3RyYW5zZm9ybWF0aW9uJ1xuICAgIF0uaW5jbHVkZXMoa2V5KSA/ICdOL0EgKGZyb20gQ3ljbGUpJyA6ICcnO1xuICB9XG59XG4iLCI8bmctY29udGFpbmVyICpiaW5kT25jZT1cImRhdGFcIj5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dJbmxpbmU7IGVsc2UgYXNUYWJsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGtleSBvZiBrZXlzXCI+XG4gICAgICA8aGUtbGluay1rZXktdmFsdWUgW25vZGVdPVwiZGF0YSEubm9kZXNbMF1cIiBbbm9kZVR5cGVdPVwibm9kZVR5cGVcIiBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiIFtkYXRhS2V5XT1cImRhdGFLZXlcIiBba2V5XT1cImtleVwiPjwvaGUtbGluay1rZXktdmFsdWU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIGFkZGl0aW9uYWxLZXlzXCI+XG4gICAgICA8aGUtbGluay1rZXktdmFsdWUgW25vZGVdPVwiZGF0YSEubm9kZXNbMF1cIiBbbm9kZVR5cGVdPVwibm9kZVR5cGVcIiBbZGF0YVN0YXRlXT1cImRhdGFTdGF0ZVwiIFtkYXRhS2V5XT1cImRhdGFLZXlcIiBba2V5XT1cImtleVwiPjwvaGUtbGluay1rZXktdmFsdWU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvbmctY29udGFpbmVyPlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjYXNUYWJsZT5cbiAgPGhlLWxpbmsta2V5LXZhbHVlIFtub2RlXT1cImRhdGEhLm5vZGVzWzBdXCIgW25vZGVUeXBlXT1cIm5vZGVUeXBlXCIgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIiBbZGF0YUtleV09XCJkYXRhS2V5XCIga2V5PVwidGVybVwiPjwvaGUtbGluay1rZXktdmFsdWU+XG5cbiAgPGRpdiBjbGFzcz1cInRhYmxlLWNvbnRhaW5lciBtdC0yXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwidGFibGUgaXMtbmFycm93IGhhcy10ZXh0LXdoaXRlXCI+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0aCAqbmdGb3I9XCJsZXQga2V5IG9mIHRhYmxlS2V5c1wiPlxuICAgICAgICAgIDxhIGNsYXNzPVwiaXMtZGFya1wiIFtocmVmXT1cImJhc2VVcmwgKyAnL3NjaGVtYS8nICsgdHlwZSArICcjJyArIGtleS5zcGxpdCgnLicpWzBdXCIgdGFyZ2V0PVwiX2JsYW5rXCI+XG4gICAgICAgICAgICA8Yj57e2tleS5pbmNsdWRlcygnLicpID8ga2V5LnNwbGl0KCcuJylbMV0gOiBrZXl9fTwvYj5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvdGg+XG4gICAgICA8L3RoZWFkPlxuICAgICAgPHRib2R5PlxuICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG5vZGUgb2YgZGF0YSEubm9kZXNcIj5cbiAgICAgICAgICA8dGQgKm5nRm9yPVwibGV0IGtleSBvZiB0YWJsZUtleXNcIj5cbiAgICAgICAgICAgIDxoZS1saW5rLWtleS12YWx1ZSBbbm9kZV09XCJub2RlXCIgW25vZGVUeXBlXT1cIm5vZGVUeXBlXCIgW2RhdGFTdGF0ZV09XCJkYXRhU3RhdGVcIiBbZGF0YUtleV09XCJkYXRhS2V5XCIgW2tleV09XCJrZXlcIiBbZGVmYXVsdFZhbHVlXT1cImRlZmF1bHRWYWx1ZShrZXkpXCI+PC9oZS1saW5rLWtleS12YWx1ZT5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICA8L3RyPlxuICAgICAgPC90Ym9keT5cbiAgICA8L3RhYmxlPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|