@hestia-earth/ui-components 0.13.2 → 0.14.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common/link-key-value/link-key-value.component.d.ts +1 -1
- package/esm2020/common/data-table/data-table.component.mjs +2 -2
- package/esm2020/files/files-upload-errors/files-upload-errors.component.mjs +5 -4
- package/esm2020/node/node-logs-models/node-logs-models.model.mjs +3 -2
- package/esm2020/terms/terms.model.mjs +1 -2
- package/fesm2015/hestia-earth-ui-components.mjs +7 -6
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +7 -6
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/files/files-upload-errors/files-upload-errors.component.d.ts +3 -2
- package/package.json +4 -4
|
@@ -493,7 +493,8 @@ const groupParallelModels = (config, termId, modelKey, models) => {
|
|
|
493
493
|
.map(v => v.length === 1 ? v[0] : v);
|
|
494
494
|
};
|
|
495
495
|
const allParallel = (models) => models.length === 1 && Array.isArray(models[0]) && models[0].length > 1;
|
|
496
|
-
const
|
|
496
|
+
const blankNodeModelId = (value) => value['@type'] === SchemaType.Measurement ? value.method?.['@id'] : value.methodModel?.['@id'];
|
|
497
|
+
const valueByMethodId = (values, methodId, termId) => propertyValue(values.find(v => blankNodeModelId(v) === methodId)?.value, termId);
|
|
497
498
|
const groupParallelValues = (values, models, termId) => Array.isArray(models)
|
|
498
499
|
? Object.fromEntries(models.map(model => [model.methodId, valueByMethodId(values, model.methodId, termId)]))
|
|
499
500
|
: {};
|
|
@@ -572,4 +573,4 @@ export const logValueArray = (value) => [';', ':'].some(v => value.includes(v))
|
|
|
572
573
|
return res.length <= 1 ? res.flat() : Object.fromEntries(res);
|
|
573
574
|
}) :
|
|
574
575
|
null;
|
|
575
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1sb2dzLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUNLLGtCQUFrQixFQUNsQixZQUFZLEVBQVksVUFBVSxFQUFFLFVBQVUsRUFDekQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUMwQyxVQUFVLEVBQVUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFDbEgsTUFBTSw2QkFBNkIsQ0FBQztBQXVDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFN0UsTUFBTSxvQkFBb0IsR0FB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QUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3RELEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ2xELENBQUM7Q0FDSCxDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsQ0FBQyxLQUFhLEVBQVMsRUFBRSxDQUNwRCxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxLQUFLLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUMzQixNQUFNLEdBQUcsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNsRCxPQUFPLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEUsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNKLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCB7IGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0LCB0b0FycmF5LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmaWxlVG9FeHQsIFN1cHBvcnRlZEV4dGVuc2lvbnMgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQge1xuICBFbWlzc2lvbiwgRW1pc3Npb25NZXRob2RUaWVyLCBJVGVybUpTT05MRCwgUHJvZHVjdCwgSW5wdXQgYXMgSGVzdGlhSW5wdXQsXG4gIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUsIFByb3BlcnR5LCBTY2hlbWFUeXBlLCBpc1R5cGVOb2RlLCBJbmRpY2F0b3IsIFByYWN0aWNlLCBNZWFzdXJlbWVudCwgVGVybVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB1bmlxdWUsIGlzVW5kZWZpbmVkLCBpc0VtcHR5LCBpc051bWJlciB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC5zZXQnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuXG5pbXBvcnQge1xuICBJT3JjaGVzdHJhdG9yQ29uZmlnLCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcsIGZpbmRNb2RlbHMsIElNb2RlbCwgZmluZE1hdGNoaW5nTW9kZWwsIG1vZGVsUGFyYW1zLCBtb2RlbEtleVBhcmFtc1xufSBmcm9tICcuLi8uLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlTWlzc2luZ0xvb2t1cExvZyB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIHRlcm1JZDogc3RyaW5nO1xuICBjb2x1bW46IHN0cmluZztcbiAgLy8gYXR0cmlidXRlcyBsaW5rZWQgdG8gdGhlIG1vZGVsc1xuICBtb2RlbD86IHN0cmluZztcbiAgdGVybT86IHN0cmluZztcbiAga2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlVGVybUxvZyB7XG4gIHJ1blJlcXVpcmVkPzogYm9vbGVhbjtcbiAgc2hvdWxkUnVuPzogYm9vbGVhbjtcbiAgc2hvdWxkUnVuT3JjaGVzdHJhdG9yPzogYm9vbGVhbjtcbiAgc2hvdWxkTWVyZ2U/OiBib29sZWFuO1xuICByZXBsYWNlTG93ZXJUaWVyPzogYm9vbGVhbjtcbiAgcmVwbGFjZVRocmVzaG9sZD86IGJvb2xlYW47XG4gIG1pc3NpbmdMb29rdXBzPzogSU5vZGVNaXNzaW5nTG9va3VwTG9nW107XG4gIHJlcXVpcmVtZW50cz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGxvZ3M/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIC8vIHBvc3NpYmxlIHN1YiB2YWx1ZXNcbiAgaW5wdXQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHJvcGVydHk/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZVRlcm1Mb2dzIHtcbiAgW21vZGVsS2V5OiBzdHJpbmddOiBhbnkgfCBJTm9kZVRlcm1Mb2c7XG4gIG1vZGVsczogc3RyaW5nW107XG4gIGlzS2V5PzogYm9vbGVhbjtcbiAgaXNQcm9wZXJ0eT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVMb2dzIHtcbiAgW3Rlcm06IHN0cmluZ106IElOb2RlVGVybUxvZ3M7XG59XG5cbmNvbnN0IHRlcm1UeXBlcyA9IE9iamVjdC52YWx1ZXMoVGVybVRlcm1UeXBlKTtcblxuY29uc3QgYmxhbmtOb2RlVHlwZXMgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLmZpbHRlcih0ID0+ICFpc1R5cGVOb2RlKHQpKTtcblxuY29uc3Qgc2NoZW1hVHlwZXNMb3dlckNhc2UgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLm1hcCh2ID0+IHYudG9Mb3dlckNhc2UoKSk7XG5cbmNvbnN0IGJsYW5rTm9kZVR5cGVzTG93ZXJDYXNlID0gYmxhbmtOb2RlVHlwZXMubWFwKHYgPT4gdi50b0xvd2VyQ2FzZSgpKTtcblxuY29uc3QgbWlzc2luZ0xvb2t1cFByZWZpeCA9ICdNaXNzaW5nIGxvb2t1cCc7XG5cbmNvbnN0IHBhcnNlRmlsZW5hbWUgPSAoZmlsZXBhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBbZmlsZW5hbWVdID0gZmlsZXBhdGguc3BsaXQoJy4nKTtcbiAgY29uc3QgZXh0ID0gdGVybVR5cGVzLmluY2x1ZGVzKGZpbGVuYW1lIGFzIGFueSkgPyBTdXBwb3J0ZWRFeHRlbnNpb25zLnhsc3ggOiBTdXBwb3J0ZWRFeHRlbnNpb25zLmNzdjtcbiAgcmV0dXJuIGZpbGVUb0V4dChmaWxlbmFtZSwgZXh0KTtcbn07XG5cbmNvbnN0IHBhcnNlTG9va3VwID0gKHsgY29sdW1uLCB0ZXJtaWQsIFttaXNzaW5nTG9va3VwUHJlZml4XTogbWlzc2luZ0xvb2t1cCB9KSA9PiAoe1xuICBmaWxlbmFtZTogcGFyc2VGaWxlbmFtZShtaXNzaW5nTG9va3VwKSwgdGVybUlkOiB0ZXJtaWQsIGNvbHVtblxufSk7XG5cbmNvbnN0IGNzdlZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+ICh2YWx1ZSB8fCAnJykucmVwbGFjZSgnWycsICcnKS5yZXBsYWNlKCddJywgJycpO1xuXG5jb25zdCBwYXJzZU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UobWVzc2FnZSk7XG4gICAgcmV0dXJuIGRhdGEubWVzc2FnZS5zcGxpdCgnLCcpLnJlZHVjZSgocHJldiwgcGFydHMpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhcnRzLnNwbGl0KCc9Jyk7XG4gICAgICBjb25zdCB2YWwgPSBjc3ZWYWx1ZSh2YWx1ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICAuLi4oa2V5ICYmIHZhbCA/IHsgW2tleS50cmltKCldOiB2YWwgfSA6IHt9KVxuICAgICAgfTtcbiAgICB9LCB7IGxvZ2dlcjogZGF0YS5sb2dnZXIgfSk7XG4gIH1cbiAgY2F0Y2ggKGVycikge1xuICAgIC8vIG1ha2Ugc3VyZSBpdCB3b3JrcyBldmVuIGlmIG9uZSBsb2cgaXMgbWFsZm9ybWVkXG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuXG5jb25zdCBwYXJzZUxvZ011bHRpcGxlVmFsdWUgPSAodmFsdWVzOiBzdHJpbmdbXVtdKSA9PlxuICB2YWx1ZXNcbiAgICAubWFwKHYgPT4gdi5maWx0ZXIoQm9vbGVhbikubGVuZ3RoID09PSAyID8gdi5qb2luKCc6JykgOiBudWxsKVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbignXycpO1xuXG5jb25zdCBwYXJzZUxvZyA9IChsb2c6IGFueSkgPT5cbiAgW1xuICAgICd2YWx1ZScgaW4gbG9nLFxuICAgICdjb2VmZmljaWVudCcgaW4gbG9nLFxuICAgICdub2RlJyBpbiBsb2cgfHwgJ29wZXJhdGlvbicgaW4gbG9nXG4gIF0uZXZlcnkoQm9vbGVhbilcbiAgPyB7XG4gICAgW2xvZy5ub2RlIHx8IGxvZy5vcGVyYXRpb25dOiBwYXJzZUxvZ011bHRpcGxlVmFsdWUoW1xuICAgICAgWyd2YWx1ZScsIGxvZy52YWx1ZV0sXG4gICAgICBbJ2NvZWZmaWNpZW50JywgbG9nLmNvZWZmaWNpZW50XSxcbiAgICAgIFsnb3BlcmF0aW9uJywgIWxvZy5ub2RlID8gbG9nLm9wZXJhdGlvbiA6IG51bGxdXG4gICAgXSlcbiAgfVxuICA6IG9taXRMb2dLZXlzKGxvZyk7XG5cbmNvbnN0IG9taXRMb2dLZXlzID0gKGxvZzogYW55LCAuLi5rZXlzOiBzdHJpbmdbXSkgPT5cbiAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGxvZykuZmlsdGVyKChba2V5XSkgPT4gIXNjaGVtYVR5cGVzTG93ZXJDYXNlLmluY2x1ZGVzKGtleSkgJiYgIWtleXMuaW5jbHVkZXMoa2V5KSlcbiAgKTtcblxuY29uc3QgaW5jbHVkZUJsYW5rTm9kZXMgPSAobG9ncywgbG9nKSA9PlxuICBPYmplY3RcbiAgICAua2V5cyhsb2cpXG4gICAgLmZpbHRlcihrZXkgPT4gYmxhbmtOb2RlVHlwZXNMb3dlckNhc2UuaW5jbHVkZXMoa2V5KSlcbiAgICAucmVkdWNlKChwcmV2LCBrZXkpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgW2tleV06IHVuaXF1ZShbXG4gICAgICAgIC4uLigodHlwZW9mIHByZXZba2V5XSA9PT0gJ3N0cmluZycgPyBbcHJldltrZXldXSA6IHByZXZba2V5XSkgfHwgW10pLFxuICAgICAgICBsb2dba2V5XVxuICAgICAgXSlcbiAgICB9KSwgbG9ncyk7XG5cbmNvbnN0IGdyb3VwTG9nID0gKGdyb3VwLCB7IGxvZ2dlciwgdGVybSwgbW9kZWwsIGtleSwgc2hvdWxkX3J1biwgc2hvdWxkX21lcmdlLCBydW5fcmVxdWlyZWQsIHByb3BlcnR5LCAuLi5sb2cgfTogYW55KSA9PiB7XG4gIGNvbnN0IGlzT3JjaGVzdHJhdG9yID0gbG9nZ2VyLmluY2x1ZGVzKCdvcmNoZXN0cmF0b3InKTtcbiAgY29uc3QgaXNLZXkgPSAhaXNPcmNoZXN0cmF0b3IgJiYgISFrZXk7XG4gIGNvbnN0IGlzUHJvcGVydHkgPSAhaXNPcmNoZXN0cmF0b3IgJiYgISFwcm9wZXJ0eTtcbiAgY29uc3QgcGFyZW50TG9nS2V5ID0gW2BbXCIke3Rlcm19XCJdYCwgIWlzT3JjaGVzdHJhdG9yICYmIGtleSB8fCBwcm9wZXJ0eV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcbiAgY29uc3QgbG9nTW9kZWxLZXkgPSBbcGFyZW50TG9nS2V5LCBtb2RlbF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcblxuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0ubW9kZWxzYCwgdW5pcXVlKFtcbiAgICAuLi5nZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0ubW9kZWxzYCwgW10pLFxuICAgIG1vZGVsXG4gIF0pKTtcbiAgc2V0KGdyb3VwLCBgJHtwYXJlbnRMb2dLZXl9LmlzS2V5YCwgaXNLZXkpO1xuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0uaXNQcm9wZXJ0eWAsIGlzUHJvcGVydHkpO1xuXG4gIGxldCBkYXRhID0gZ2V0KGdyb3VwLCBsb2dNb2RlbEtleSwge30pO1xuXG4gIGRhdGEgPSBpbmNsdWRlQmxhbmtOb2RlcyhkYXRhLCBsb2cpO1xuXG4gIGlmICh0eXBlb2Ygc2hvdWxkX3J1biAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBzaG91bGRSdW4gPSBzaG91bGRfcnVuID09PSAnVHJ1ZSc7XG5cbiAgICBkYXRhID0gaXNPcmNoZXN0cmF0b3IgP1xuICAgICAge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICAuLi5vbWl0TG9nS2V5cyhsb2csICd2YWx1ZScpLFxuICAgICAgICBzaG91bGRSdW5PcmNoZXN0cmF0b3I6IHNob3VsZFJ1blxuICAgICAgfSA6XG4gICAgICB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIC4uLm9taXRMb2dLZXlzKGxvZyksXG4gICAgICAgIHNob3VsZFJ1blxuICAgICAgfTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgcnVuX3JlcXVpcmVkICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHJ1blJlcXVpcmVkID0gcnVuX3JlcXVpcmVkID09PSAnVHJ1ZSc7XG5cbiAgICBkYXRhID0gIHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICAuLi4ocnVuUmVxdWlyZWQgPyB7fSA6IG9taXRMb2dLZXlzKGxvZykpLCAvLyBubyBuZWVkIHRvIHNhdmUgbG9ncyBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUgbW9kZWxcbiAgICAgIHJ1blJlcXVpcmVkXG4gICAgfTtcbiAgfVxuICBlbHNlIGlmICgncmVxdWlyZW1lbnRzJyBpbiBsb2cpIHtcbiAgICBjb25zdCB7IHJlcXVpcmVtZW50cywgLi4ubG9nRGF0YSB9ID0gbG9nO1xuXG4gICAgZGF0YS5yZXF1aXJlbWVudHMgPSB7XG4gICAgICAuLi4oZGF0YS5yZXF1aXJlbWVudHMgfHwge30pLFxuICAgICAgLi4ubG9nRGF0YVxuICAgIH07XG4gIH1cbiAgZWxzZSBpZiAobWlzc2luZ0xvb2t1cFByZWZpeCBpbiBsb2cpIHtcbiAgICBkYXRhLm1pc3NpbmdMb29rdXBzID0gdW5pcXVlKFtcbiAgICAgIC4uLihkYXRhLm1pc3NpbmdMb29rdXBzIHx8IFtdKSxcbiAgICAgIHBhcnNlTG9va3VwKGxvZylcbiAgICBdKTtcbiAgfVxuICBlbHNlIGlmICghaXNPcmNoZXN0cmF0b3IpIHtcbiAgICBkYXRhLmxvZ3MgPSB7XG4gICAgICAuLi4oZGF0YS5sb2dzIHx8IHt9KSxcbiAgICAgIC4uLnBhcnNlTG9nKGxvZylcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlb2Ygc2hvdWxkX21lcmdlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRhdGEuc2hvdWxkTWVyZ2UgPSBzaG91bGRfbWVyZ2UgPT09ICdUcnVlJztcbiAgfVxuICBpZiAodHlwZW9mIGxvZy5yZXBsYWNlTG93ZXJUaWVyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRhdGEucmVwbGFjZUxvd2VyVGllciA9IGxvZy5yZXBsYWNlTG93ZXJUaWVyID09PSAnVHJ1ZSc7XG4gIH1cbiAgaWYgKHR5cGVvZiBsb2cucmVwbGFjZVRocmVzaG9sZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBkYXRhLnJlcGxhY2VUaHJlc2hvbGQgPSBsb2cucmVwbGFjZVRocmVzaG9sZCA9PT0gJ1RydWUnO1xuICB9XG5cbiAgc2V0KGdyb3VwLCBsb2dNb2RlbEtleSwgZGF0YSk7XG4gIHJldHVybiBncm91cDtcbn07XG5cbmNvbnN0IGdyb3VwTG9nU3ViVmFsdWUgPSAoZ3JvdXAsIGxvZywga2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaWQgPSBsb2dba2V5XTtcbiAgY29uc3QgZGF0YSA9IGdyb3VwTG9nKGdyb3VwW2lkXSB8fCB7fSwgbG9nKTtcbiAgZ3JvdXBbaWRdID0gZGF0YTtcblxuICBpZiAoa2V5ID09PSAndHJhbnNmb3JtYXRpb24nKSB7XG4gICAgLy8gYWRkIHZhbHVlIHRvIHRoZSBzYW1lIHRlcm0vbW9kZWwgb24gcGFyZW50IGdyb3VwXG4gICAgT2JqZWN0LmVudHJpZXMoZ3JvdXBbaWRdKS5tYXAoKFt0ZXJtLCBtb2RlbHNdKSA9PlxuICAgICAgT2JqZWN0LmtleXMobW9kZWxzKS5tYXAobW9kZWwgPT4ge1xuICAgICAgICBpZiAoZ3JvdXA/Llt0ZXJtXT8uW21vZGVsXSkge1xuICAgICAgICAgIGdyb3VwW3Rlcm1dW21vZGVsXVtrZXldID0gdW5pcXVlKFtcbiAgICAgICAgICAgIC4uLihncm91cFt0ZXJtXVttb2RlbF1ba2V5XSB8fCBbXSksXG4gICAgICAgICAgICBpZFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXA7XG59O1xuXG5jb25zdCBzdWJWYWx1ZUtleXMgPSBbXG4gICd0cmFuc2Zvcm1hdGlvbidcbl07XG5cbmV4cG9ydCBjb25zdCBncm91cExvZ3NCeU1vZGVsID0gKGRhdGE6IHN0cmluZyk6IElOb2RlTG9ncyA9PlxuICBkYXRhLnRyaW0oKS5zcGxpdCgnXFxuJylcbiAgICAubWFwKHBhcnNlTWVzc2FnZSlcbiAgICAuZmlsdGVyKHYgPT4gISF2Py50ZXJtICYmIHY/LnRlcm0gIT09ICdOb25lJyAmJiAhIXY/Lm1vZGVsKVxuICAgIC5yZWR1Y2UoKGdyb3VwLCBsb2cpID0+IHtcbiAgICAgIGNvbnN0IHN1YlZhbHVlID0gc3ViVmFsdWVLZXlzLmZpbmQodiA9PiAhIWxvZ1t2XSk7XG4gICAgICByZXR1cm4gc3ViVmFsdWUgP1xuICAgICAgICBzdWJWYWx1ZSA9PT0gJ3RyYW5zZm9ybWF0aW9uJyA/XG4gICAgICAgICAgLy8gZm9yIHRyYW5zZm9ybWF0aW9uLCBkbyBub3QgYWRkIHRvIHRvcC1sZXZlbCBtb2RlbFxuICAgICAgICAgIGdyb3VwTG9nU3ViVmFsdWUoZ3JvdXAsIGxvZywgc3ViVmFsdWUpIDpcbiAgICAgICAgICBncm91cExvZyhncm91cExvZ1N1YlZhbHVlKGdyb3VwLCBsb2csIHN1YlZhbHVlKSwgbG9nKVxuICAgICAgICA6IGdyb3VwTG9nKGdyb3VwLCBsb2cpO1xuICAgIH0sIHt9KTtcblxuZXhwb3J0IGNvbnN0IGNvbXB1dGVUZXJtcyA9IChcbiAgb3JpZ2luYWxWYWx1ZXM6IGJsYW5rTm9kZVtdLCByZWNhbGN1bGF0ZWRWYWx1ZXM6IGJsYW5rTm9kZVtdLCB0ZXJtcz86IElUZXJtSlNPTkxEW10sIGZpbHRlclRlcm1UeXBlcz86IFRlcm1UZXJtVHlwZVtdXG4pID0+IGZyb20oXG4gICAgdGVybXM/Lmxlbmd0aCA/XG4gICAgICB0ZXJtcyA6XG4gICAgICBbXG4gICAgICAgIC4uLihvcmlnaW5hbFZhbHVlcyB8fCBbXSkubWFwKCh7IHRlcm0gfSkgPT4gdGVybSksXG4gICAgICAgIC4uLihyZWNhbGN1bGF0ZWRWYWx1ZXMgfHwgW10pLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0pXG4gICAgICBdLmZpbHRlcihub2RlID0+ICFmaWx0ZXJUZXJtVHlwZXM/Lmxlbmd0aCB8fCBmaWx0ZXJUZXJtVHlwZXMuaW5jbHVkZXMobm9kZS50ZXJtVHlwZSkpXG4gICkucGlwZShcbiAgICBkaXN0aW5jdCh2ID0+IHYhWydAaWQnXSksXG4gICAgdG9BcnJheSgpLFxuICAgIG1hcCh2ID0+IG9yZGVyQnkodiwgWyduYW1lJ10sIFsnYXNjJ10pKVxuICApLnRvUHJvbWlzZSgpO1xuXG5leHBvcnQgdHlwZSBibGFua05vZGUgPSBFbWlzc2lvbiB8IFByb2R1Y3QgfCBIZXN0aWFJbnB1dCB8IFByb3BlcnR5IHwgUHJhY3RpY2UgfCBJbmRpY2F0b3IgfCBNZWFzdXJlbWVudDtcblxuZXhwb3J0IGVudW0gTG9nU3RhdHVzIHtcbiAgc3VjY2VzcyA9ICdzdWNjZXNzZnVsJyxcbiAgZXJyb3IgPSAnZmFpbGVkJyxcbiAgc2tpcEhpZXJhcmNoeSA9ICdub3QgcnVuIChtb2RlbCBoaWdoZXIgdXAgaGllcmFyY2h5IHJ1biBpbnN0ZWFkKScsXG4gIGRhdGFQcm92aWRlZCA9ICdub3QgcnVuICh1c2VyIHByb3ZpZGVkIGRhdGEgcmV0YWluZWQpJyxcbiAgbm90UmVxdWlyZWQgPSAnbm90IHJlbGV2YW50J1xufVxuXG5jb25zdCBoYXNMb2dzID0gKGxvZ3M/OiBJTm9kZVRlcm1Mb2cpID0+ICEhbG9ncz8ucmVxdWlyZW1lbnRzIHx8ICEhbG9ncz8ubG9ncyB8fCBsb2dzPy5taXNzaW5nTG9va3Vwcz8ubGVuZ3RoID4gMDtcblxuY29uc3QgaGFzTG9nRGV0YWlscyA9IChzdGF0dXM6IExvZ1N0YXR1cywgbG9ncz86IElOb2RlVGVybUxvZykgPT5cbiAgW1xuICAgIExvZ1N0YXR1cy5zdWNjZXNzLFxuICAgIExvZ1N0YXR1cy5lcnJvcixcbiAgICBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gIF0uaW5jbHVkZXMoc3RhdHVzKSAmJiBoYXNMb2dzKGxvZ3MpO1xuXG5jb25zdCBsb2dTdGF0dXMgPSAoZGF0YTogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlIHwgSUJsYW5rTm9kZUxvZywgbG9ncz86IElOb2RlVGVybUxvZywgaGFzUHJldmlvdXNTdWNjZXNzID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgd2l0aExvZ3MgPSBoYXNMb2cobG9ncyk7XG4gIGNvbnN0IGlzQ2FsY3VsYXRlZCA9IFtcbiAgICB0eXBlb2YgZGF0YS5vcmlnaW5hbFZhbHVlID09PSAndW5kZWZpbmVkJywgLy8gbm8gb3JpZ2luYWwgdmFsdWVcbiAgICBkYXRhLmlzUmVjYWxjdWxhdGVkIC8vIGlzIHJlY2FsY3VsYXRlZFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuICAvLyBjYW4gYmUgbm90IHJlcXVpcmVkIGZvciBhIHNwZWNpZmljIG1vZGVsXG4gIGNvbnN0IGlzUmVxdWlyZWQgPSAhIWxvZ3MgJiYgJ3J1blJlcXVpcmVkJyBpbiBsb2dzID8gbG9ncy5ydW5SZXF1aXJlZCA6IGRhdGEuaXNSZXF1aXJlZDtcbiAgcmV0dXJuIHdpdGhMb2dzXG4gICAgPyAoXG4gICAgICAhaXNSZXF1aXJlZFxuICAgICAgICA/IExvZ1N0YXR1cy5ub3RSZXF1aXJlZFxuICAgICAgICA6IGlzUnVuT3JjaGVzdHJhdG9yKGxvZ3MpXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICAnc2hvdWxkUnVuJyBpbiBsb2dzXG4gICAgICAgICAgICAgID8gbG9ncy5zaG91bGRSdW5cbiAgICAgICAgICAgICAgICA/IGRhdGEuaXNSZWNhbGN1bGF0ZWRcbiAgICAgICAgICAgICAgICAgID8gTG9nU3RhdHVzLnN1Y2Nlc3NcbiAgICAgICAgICAgICAgICAgIDogaXNFbXB0eShkYXRhLm9yaWdpbmFsVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gTG9nU3RhdHVzLmVycm9yXG4gICAgICAgICAgICAgICAgICAgIDogTG9nU3RhdHVzLmRhdGFQcm92aWRlZFxuICAgICAgICAgICAgICAgIDogaGFzUHJldmlvdXNTdWNjZXNzXG4gICAgICAgICAgICAgICAgICA/IExvZ1N0YXR1cy5za2lwSGllcmFyY2h5XG4gICAgICAgICAgICAgICAgICA6IExvZ1N0YXR1cy5lcnJvclxuICAgICAgICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICAgICAgICApXG4gICAgICAgICAgOiBkYXRhLmlzUmVjYWxjdWxhdGVkXG4gICAgICAgICAgICA/IExvZ1N0YXR1cy5za2lwSGllcmFyY2h5XG4gICAgICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICApXG4gICAgOiAoXG4gICAgICBpc0NhbGN1bGF0ZWRcbiAgICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnTW9kZWwge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBsb2dzPzogSU5vZGVUZXJtTG9nO1xuICBzaG93TG9ncz86IGJvb2xlYW47XG4gIHN0YXR1cz86IExvZ1N0YXR1cztcbiAgbW9kZWw/OiBJTW9kZWw7XG4gIGNvbmZpZz86IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmxhbmtOb2RlTG9nU3ViVmFsdWUge1xuICBrZXk6IHN0cmluZztcbiAgc2hvd1VuaXRzOiBib29sZWFuO1xuICBvcmlnaW5hbFZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuO1xuICByZWNhbGN1bGF0ZWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbjtcbiAgaXNSZWNhbGN1bGF0ZWQ6IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgY29uZmlnTW9kZWxzPzogSUNvbmZpZ01vZGVsW107XG4gIGxvZ3M/OiBJTm9kZVRlcm1Mb2dzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCbGFua05vZGVMb2cge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGNhbk9wZW46IGJvb2xlYW47XG4gIHRlcm06IElUZXJtSlNPTkxEO1xuICB0ZXJtSWQ6IHN0cmluZztcbiAgdHlwZT86IFNjaGVtYVR5cGU7XG4gIGNvbmZpZ01vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdO1xuICBvcmlnaW5hbDogYmxhbmtOb2RlW107XG4gIG9yaWdpbmFsVmFsdWU6IG51bWJlcjtcbiAgLy8gd2hlbiBtdWx0aXBsZSBtb2RlbHMgYXJlIHJ1bm5pbmcgaW4gcGFyYWxsZWxcbiAgb3JpZ2luYWxWYWx1ZUJ5TWV0aG9kSWQ/OiB7XG4gICAgW21ldGhvZElkOiBzdHJpbmddOiBudW1iZXI7XG4gIH07XG4gIHJlY2FsY3VsYXRlZDogYmxhbmtOb2RlW107XG4gIHJlY2FsY3VsYXRlZFZhbHVlOiBudW1iZXI7XG4gIC8vIHdoZW4gbXVsdGlwbGUgbW9kZWxzIGFyZSBydW5uaW5nIGluIHBhcmFsbGVsXG4gIHJlY2FsY3VsYXRlZFZhbHVlQnlNZXRob2RJZD86IHtcbiAgICBbbWV0aG9kSWQ6IHN0cmluZ106IG51bWJlcjtcbiAgfTtcbiAgaXNPcmlnaW5hbDogYm9vbGVhbjtcbiAgaXNSZWNhbGN1bGF0ZWQ6IGJvb2xlYW47XG4gIGhhc0RhdGE6IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW47XG4gIGxvZ3M/OiBJTm9kZVRlcm1Mb2dzO1xuICBrZXlzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXTtcbiAgc3ViVmFsdWVzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXTtcbiAgLy8gbW9kZWxzIGFyZSBwcmVzZW50IGFzIHdlbGwgaW4gb25lIG9mIHRoZSBTdWJWYWx1ZXMsIGRvIG5vdCBzaG93IHR3aWNlXG4gIG1vZGVsc0luU3ViVmFsdWVzPzogYm9vbGVhbjtcbiAgLy8gY29udGFpbnMgbXVsdGlwbGUgbW9kZWxzIGFsbCBydW5uaW5nIGluIHBhcmFsbGVsXG4gIGFsbFBhcmFsbGVsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgcmVtb3ZlQ29uZmlnTW9kZWxCeVN0YXR1cyA9ICguLi5zdGF0dXNlczogTG9nU3RhdHVzW10pID0+IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PlxuICAhc3RhdHVzZXMuaW5jbHVkZXMobW9kZWw/LnN0YXR1cyk7XG5cbmNvbnN0IGtlZXBDb25maWdNb2RlbEJ5U3RhdHVzID0gKC4uLnN0YXR1c2VzOiBMb2dTdGF0dXNbXSkgPT4gKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+XG4gIHN0YXR1c2VzLmluY2x1ZGVzKG1vZGVsPy5zdGF0dXMpO1xuXG5jb25zdCBmaWx0ZXJDb25maWdNb2RlbHMgPSAoXG4gIG1vZGVsczogKElDb25maWdNb2RlbCB8IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXSksIGZpbHRlckZ1bmM6IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PiBib29sZWFuXG4pID0+XG4gIChBcnJheS5pc0FycmF5KG1vZGVscykgPyBtb2RlbHMgOiBbbW9kZWxzXSlcbiAgICAuZmlsdGVyKHYgPT4gQXJyYXkuaXNBcnJheSh2KSB8fCBmaWx0ZXJGdW5jKHYpKVxuICAgIC5tYXAodiA9PiBBcnJheS5pc0FycmF5KHYpID8gdi5maWx0ZXIoZmlsdGVyRnVuYykgOiB2KVxuICAgIC5maWx0ZXIodiA9PiBBcnJheS5pc0FycmF5KHYpID8gdj8ubGVuZ3RoIDogISF2KTtcblxuY29uc3QgbWVyZ2VTdWJWYWx1ZXMgPSAodmFsdWVzOiBhbnlbXSk6IGFueVtdID0+XG4gIE9iamVjdC52YWx1ZXMoXG4gICAgdmFsdWVzLnJlZHVjZSgocHJldiwgeyBpZCwga2V5LCBjb25maWdNb2RlbHMsIC4uLmRhdGEgfSkgPT4ge1xuICAgICAgY29uc3QgdW5pcXVlS2V5ID0gW2tleSwgaWRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gICAgICBwcmV2W3VuaXF1ZUtleV0gPSB7XG4gICAgICAgIC4uLk9iamVjdC5hc3NpZ24oe30sIHByZXZbdW5pcXVlS2V5XSwgZGF0YSksXG4gICAgICAgIGlkLFxuICAgICAgICBrZXksXG4gICAgICAgIGNvbmZpZ01vZGVsczogdW5pcXVlKFsuLi4oKHByZXZbdW5pcXVlS2V5XSB8fCB7fSkuY29uZmlnTW9kZWxzIHx8IFtdKSwgLi4uKGNvbmZpZ01vZGVscyB8fCBbXSldKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KVxuICApO1xuXG5jb25zdCByZWR1Y2VWYWx1ZXMgPSAodmFsdWVzOiBhbnlbXSwgdGVybUlkOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZXMgPSB2YWx1ZXNcbiAgICAubWFwKCh7IHZhbHVlIH0pID0+IHByb3BlcnR5VmFsdWUodmFsdWUsIHRlcm1JZCkpXG4gICAgLy8gcHJvcGVydHlWYWx1ZSBtYXkgcmV0dXJuIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCB0aGVyZWZvcmUgcmVtb3ZlIHRoZW0gZnJvbSB0b3RhbFxuICAgIC5maWx0ZXIodiA9PiB2ICE9PSBudWxsKTtcbiAgcmV0dXJuIHByb3BlcnR5VmFsdWVzLmxlbmd0aCA/IHByb3BlcnR5VmFsdWVzLnJlZHVjZSgocCwgdikgPT4gcCArIHYsIDApIDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgaXNSdW5PcmNoZXN0cmF0b3IgPSAobG9nOiBJTm9kZVRlcm1Mb2cpID0+ICEoJ3Nob3VsZFJ1bk9yY2hlc3RyYXRvcicgaW4gbG9nKSB8fCBsb2cuc2hvdWxkUnVuT3JjaGVzdHJhdG9yO1xuXG5jb25zdCBoYXNMb2cgPSAobG9nOiBJTm9kZVRlcm1Mb2csIHdpdGhPcmNoZXN0cmF0b3IgPSB0cnVlKSA9PlxuICAhIWxvZyAmJiAoXG4gICAgJ3Nob3VsZFJ1bicgaW4gbG9nIHx8XG4gICAgJ3J1blJlcXVpcmVkJyBpbiBsb2cgfHxcbiAgICAod2l0aE9yY2hlc3RyYXRvciAmJiAnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2cpXG4gICk7XG5cbmNvbnN0IGlzUmVjYWxjdWxhdGVkID0gKHZhbHVlczogYmxhbmtOb2RlW10sIGtleSA9ICd2YWx1ZScpID0+IHZhbHVlcy5zb21lKHYgPT4gKFtcbiAgLi4uKHYuYWRkZWQgfHwgW10pLFxuICAuLi4odi51cGRhdGVkIHx8IFtdKVxuXSkuaW5jbHVkZXMoa2V5KSk7XG5cbmNvbnN0IGJsYW5rTm9kZVZhbHVlQnlLZXk6IHtcbiAgW2tleTogc3RyaW5nXTogKHZhbHVlczogYmxhbmtOb2RlW10sIGtleT86IHN0cmluZywgaWQ/OiBzdHJpbmcpID0+IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW47XG59ID0ge1xuICBwcm9wZXJ0eTogKHZhbHVlczogKEVtaXNzaW9uIHwgUHJvZHVjdCB8IEhlc3RpYUlucHV0KVtdLCBfaywgaWQpID0+ICEhaWQgJiYgdmFsdWVzPy5sZW5ndGhcbiAgICA/ICh2YWx1ZXNbMF0ucHJvcGVydGllcyB8fCBbXSkuZmluZChwID0+IHAudGVybVsnQGlkJ10gPT09IGlkKT8udmFsdWUgfHwgJydcbiAgICA6ICcnLFxuICBpbnB1dDogKHZhbHVlczogRW1pc3Npb25bXSwgX2ssIGlkKSA9PiAhIWlkICYmICh2YWx1ZXMgfHwgW10pLmZpbHRlcih2ID0+IHZbJ0B0eXBlJ10gPT09IFNjaGVtYVR5cGUuRW1pc3Npb24pLmxlbmd0aFxuICAgID8gcHJvcGVydHlWYWx1ZSh2YWx1ZXMuZmluZCgoeyBpbnB1dHMgfSkgPT4gKGlucHV0cyB8fCBbXSkuc29tZShpbnB1dCA9PiBpbnB1dFsnQGlkJ10gPT09IGlkKSk/LnZhbHVlLCBpZClcbiAgICA6ICcnLFxuICB0cmFuc2Zvcm1hdGlvbjogKHZhbHVlczogRW1pc3Npb25bXSwgX2ssIGlkKSA9PiB2YWx1ZXMubGVuZ3RoXG4gICAgPyBwcm9wZXJ0eVZhbHVlKHZhbHVlcy5maW5kKCh7IHRyYW5zZm9ybWF0aW9uIH0pID0+IHRyYW5zZm9ybWF0aW9uPy5bJ0BpZCddID09PSBpZCk/LnZhbHVlLCBpZClcbiAgICA6ICcnLFxuICBkZWZhdWx0OiAoYmxhbmtOb2Rlcywga2V5KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBibGFua05vZGVzPy5sZW5ndGggPyBibGFua05vZGVzWzBdW2tleV0gOiBudWxsO1xuICAgIHJldHVybiBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbicsICd1bmRlZmluZWQnXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpXG4gICAgICA/IGlzVW5kZWZpbmVkKHZhbHVlKVxuICAgICAgICA/ICcnXG4gICAgICAgIDogdmFsdWVcbiAgICAgIDogQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5sZW5ndGggPiAxXG4gICAgICAgICAgPyB2YWx1ZS5qb2luKCc7JylcbiAgICAgICAgICA6IHZhbHVlWzBdXG4gICAgICAgIDogbnVsbDtcbiAgfVxufTtcblxuY29uc3QgYmxhbmtOb2RlVmFsdWUgPSAoYmxhbmtOb2RlczogYmxhbmtOb2RlW10sIGtleTogc3RyaW5nLCBpZD86IHN0cmluZykgPT5cbiAgYmxhbmtOb2RlVmFsdWVCeUtleVtrZXkgaW4gYmxhbmtOb2RlVmFsdWVCeUtleSA/IGtleSA6ICdkZWZhdWx0J10oYmxhbmtOb2Rlcywga2V5LCBpZCk7XG5cbmNvbnN0IHN1YlZhbHVlTG9nS2V5ID0gKHsga2V5LCBpZCB9OiBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpOiBzdHJpbmcgPT5cbiAga2V5ID09PSAndHJhbnNmb3JtYXRpb24nID8ga2V5IDogKGlkIHx8IGtleSB8fCBudWxsKTtcblxuY29uc3QgaW5wdXRWYWx1ZSA9ICh7IHZhbHVlLCBjb2VmZmljaWVudCB9OiBhbnkgPSB7fSkgPT5cbiAgW3ZhbHVlLCBjb2VmZmljaWVudF0uZXZlcnkoaXNOdW1iZXIpID8gK3ZhbHVlICogK2NvZWZmaWNpZW50IDogdW5kZWZpbmVkO1xuXG5jb25zdCBsb2dTdWJWYWx1ZSA9IChsb2dzOiBJTm9kZVRlcm1Mb2dzLCBrZXk6IHN0cmluZywgcHJvcDogc3RyaW5nLCBzaG93VW5pdHMgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBsb2cgPSBsb2dzW2tleV0/Lltwcm9wXTtcbiAgcmV0dXJuIGxvZyA/IChcbiAgICBBcnJheS5pc0FycmF5KGxvZykgP1xuICAgICAgKGxvZyBhcyBzdHJpbmdbXSkubWFwKGlkID0+ICh7XG4gICAgICAgIGtleTogcHJvcCwgaWQsIHNob3dVbml0cyxcbiAgICAgICAgLy8gcmVjYWxjdWxhdGVkVmFsdWU6IGlucHV0VmFsdWUobG9nc1trZXldPy5sb2dzPy5baWRdKVxuICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpKSA6XG4gICAgICB7XG4gICAgICAgIGtleTogcHJvcCwgaWQ6IGxvZywgc2hvd1VuaXRzLFxuICAgICAgICAvLyByZWNhbGN1bGF0ZWRWYWx1ZTogaW5wdXRWYWx1ZShsb2dzW2tleV0/LmxvZ3M/Lltsb2ddKVxuICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWVcbiAgKSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGxvZ1Byb3BlcnRpZXMgPSAobm9kZXM6IGJsYW5rTm9kZVtdLCBtb2RlbHM6IElNb2RlbFtdKSA9PlxuICBub2Rlcy5mbGF0TWFwKG5vZGUgPT5cbiAgICAoKG5vZGUgYXMgYW55KS5wcm9wZXJ0aWVzIHx8IFtdKS5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtWydAaWQnXSlcbiAgKS5tYXAoaWQgPT4gKHsga2V5OiAncHJvcGVydHknLCBpZCwgc2hvd1VuaXRzOiBmYWxzZSwgY29uZmlnTW9kZWxzOiBmaW5kTW9kZWxzKG1vZGVscywgaWQpLm1hcCgoeyBtb2RlbCB9KSA9PiBtb2RlbCkgfSkpO1xuXG4vKipcbiAqIEluY2x1ZGUgdHJhbnNmb3JtYXRpb24gbW9kZWwgKGNvcHkgRW1pc3Npb25zIGZyb20gVHJhbnNmb3JtYXRpb24gdG8gQ3ljbGUpIGFzIHN1YlZhbHVlLlxuICpcbiAqIEBwYXJhbSBlbWlzc2lvbnNcbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGxvZ0VtaXNzaW9uVHJhbnNmb3JtYXRpb25zID0gKGVtaXNzaW9uczogRW1pc3Npb25bXSkgPT5cbiAgZW1pc3Npb25zLmZpbHRlcigoeyB0cmFuc2Zvcm1hdGlvbiB9KSA9PiAhIXRyYW5zZm9ybWF0aW9uPy5bJ0BpZCddKS5tYXAoKHsgdHJhbnNmb3JtYXRpb24gfSkgPT4gKHtcbiAgICBpZDogdHJhbnNmb3JtYXRpb24/LlsnQGlkJ10sXG4gICAga2V5OiAndHJhbnNmb3JtYXRpb24nLFxuICAgIHNob3dVbml0czogdHJ1ZSxcbiAgICBjb25maWdNb2RlbHM6IFsnY3ljbGUvdHJhbnNmb3JtYXRpb24nXVxuICB9KSk7XG5cbmNvbnN0IGluY2x1ZGVDeWNsZVN1YlZhbHVlID0gKHN1YlZhbHVlczogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlW10pID0+XG4gIHN1YlZhbHVlcy5zb21lKHYgPT4gdi5rZXkgIT09ICdwcm9wZXJ0eScpO1xuXG5jb25zdCBjeWNsZVN1YlZhbHVlID0gKHtcbiAgdGVybUlkLCBjb25maWdNb2RlbHMsIGlzUmVxdWlyZWQsIHN1YlZhbHVlcywgb3JpZ2luYWwsIHJlY2FsY3VsYXRlZFxufTogSUJsYW5rTm9kZUxvZykgPT4ge1xuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gcmVkdWNlVmFsdWVzKG9yaWdpbmFsLmZpbHRlcigodjogYW55KSA9PiAhdi5pbnB1dHM/Lmxlbmd0aCAmJiAhdi50cmFuc2Zvcm1hdGlvbiksIHRlcm1JZCk7XG4gIGNvbnN0IHJlY2FsY3VsYXRlZFZhbHVlcyA9IHJlY2FsY3VsYXRlZC5maWx0ZXIoKHY6IGFueSkgPT4gIXYuaW5wdXRzPy5sZW5ndGggJiYgIXYudHJhbnNmb3JtYXRpb24pO1xuICBjb25zdCByZWNhbGN1bGF0ZWRWYWx1ZSA9IHJlZHVjZVZhbHVlcyhyZWNhbGN1bGF0ZWRWYWx1ZXMsIHRlcm1JZCk7XG4gIHJldHVybiBpbmNsdWRlQ3ljbGVTdWJWYWx1ZShzdWJWYWx1ZXMpICYmICFpc0VtcHR5KHJlY2FsY3VsYXRlZFZhbHVlKSA/IHtcbiAgICBrZXk6ICdjeWNsZScsXG4gICAgc2hvd1VuaXRzOiB0cnVlLFxuICAgIGNvbmZpZ01vZGVscyxcbiAgICBpc1JlcXVpcmVkLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcmVjYWxjdWxhdGVkVmFsdWUsXG4gICAgaXNSZWNhbGN1bGF0ZWQ6IGlzUmVjYWxjdWxhdGVkKHJlY2FsY3VsYXRlZFZhbHVlcylcbiAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUgOiBudWxsO1xufTtcblxuY29uc3QgbG9nU3ViVmFsdWVzID0gKFxuICBhbGxMb2dzOiBJTm9kZUxvZ3MsIGxvZ3M6IElOb2RlVGVybUxvZ3MsIG9yaWdpbmFsOiBibGFua05vZGVbXSwgcmVjYWxjdWxhdGVkOiBibGFua05vZGVbXSwgbW9kZWxzOiBJTW9kZWxbXSxcbiAgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkIH06IElDb25maWdNb2RlbERvY3NEYXRhXG4pID0+XG4gIG1lcmdlU3ViVmFsdWVzKFtcbiAgICAvLyBpbmNsdWRlIHByb3BlcnRpZXNcbiAgICAuLi5PYmplY3Qua2V5cyhsb2dzKVxuICAgICAgLmZpbHRlcihpZCA9PiBsb2dzW2lkXS5pc1Byb3BlcnR5KVxuICAgICAgLm1hcChpZCA9PiAoe1xuICAgICAgICBpZCxcbiAgICAgICAga2V5OiAncHJvcGVydHknLFxuICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICBjb25maWdNb2RlbHM6IChsb2dzW2lkXS5tb2RlbHMgfHwgW10pLmZpbHRlcih2ID0+IGhhc0xvZyhsb2dzW2lkXVt2XSkpXG4gICAgICB9KSksXG4gICAgLi4uKHR5cGUgPT09IFNjaGVtYVR5cGUuRW1pc3Npb24gPyBsb2dFbWlzc2lvblRyYW5zZm9ybWF0aW9ucyhyZWNhbGN1bGF0ZWQgYXMgRW1pc3Npb25bXSkgOiBbXSksXG4gICAgLi4uT2JqZWN0LmtleXMobG9ncykuZmxhdE1hcChrZXkgPT5cbiAgICAgIFtcbiAgICAgICAgbG9nU3ViVmFsdWUobG9ncywga2V5LCAnaW5wdXQnLCB0cnVlKSxcbiAgICAgICAgbG9nU3ViVmFsdWUobG9ncywga2V5LCAncHJvcGVydHknKVxuICAgICAgXVxuICAgICAgICAuZmxhdCgpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLm1hcCh2ID0+ICh7IC4uLnYsIGNvbmZpZ01vZGVsczogKHYuY29uZmlnTW9kZWxzIGFzIGFueVtdKSB8fCBba2V5XSB9KSlcbiAgICApLFxuICAgIC4uLmxvZ1Byb3BlcnRpZXMob3JpZ2luYWwsIG1vZGVscyksXG4gICAgLi4ubG9nUHJvcGVydGllcyhyZWNhbGN1bGF0ZWQsIG1vZGVscylcbiAgXSlcbiAgICAubWFwKCh7IGtleSwgaWQsIHNob3dVbml0cywgY29uZmlnTW9kZWxzLCBvcmlnaW5hbFZhbHVlLCByZWNhbGN1bGF0ZWRWYWx1ZSB9KSA9PiB7XG4gICAgICBvcmlnaW5hbFZhbHVlID0gb3JpZ2luYWxWYWx1ZSB8fCBibGFua05vZGVWYWx1ZShvcmlnaW5hbCwga2V5LCBpZCk7XG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZSA9IHJlY2FsY3VsYXRlZFZhbHVlIHx8IGJsYW5rTm9kZVZhbHVlKHJlY2FsY3VsYXRlZCwga2V5LCBpZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXksXG4gICAgICAgIGlkLFxuICAgICAgICBzaG93VW5pdHMsXG4gICAgICAgIGNvbmZpZ01vZGVsczogY29uZmlnTW9kZWxzLm1hcChjb25maWdNb2RlbFdpdGhEb2NzKG1vZGVscywgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkIH0sIHsga2V5LCBpZCB9IGFzIGFueSkpLFxuICAgICAgICBvcmlnaW5hbFZhbHVlLFxuICAgICAgICByZWNhbGN1bGF0ZWRWYWx1ZSxcbiAgICAgICAgaXNSZWNhbGN1bGF0ZWQ6ICFpc1VuZGVmaW5lZChyZWNhbGN1bGF0ZWRWYWx1ZSkgJiYgcmVjYWxjdWxhdGVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIGlzUmVxdWlyZWQ6IHRydWVcbiAgICAgIH0gYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlO1xuICAgIH0pXG4gICAgLmZpbHRlcigoeyBjb25maWdNb2RlbHMsIG9yaWdpbmFsVmFsdWUsIHJlY2FsY3VsYXRlZFZhbHVlIH0pID0+IFtcbiAgICAgIGNvbmZpZ01vZGVscy5sZW5ndGggPiAwLFxuICAgICAgb3JpZ2luYWxWYWx1ZSAhPT0gJycgfHwgcmVjYWxjdWxhdGVkVmFsdWUgIT09ICcnXG4gICAgXS5ldmVyeShCb29sZWFuKSlcbiAgICAubWFwKHYgPT4gdi5rZXkgPT09ICdpbnB1dCcgPyBkYXRhV2l0aENvbmZpZ01vZGVsTG9ncyhhbGxMb2dzKSh2KSA6IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGxvZ3MpKHYpKTtcblxuY29uc3QgbG9nS2V5cyA9IChcbiAgbG9nczogSU5vZGVUZXJtTG9ncywgb3JpZ2luYWw6IGJsYW5rTm9kZVtdLCByZWNhbGN1bGF0ZWQ6IGJsYW5rTm9kZVtdLCBtb2RlbHM6IElNb2RlbFtdLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfVxuKSA9PlxuICBPYmplY3Qua2V5cyhsb2dzKVxuICAgIC5maWx0ZXIoa2V5ID0+IGxvZ3Nba2V5XS5pc0tleSAmJiBrZXkgIT09ICd0cmFuc2Zvcm1hdGlvbicpXG4gICAgLm1hcChrZXkgPT4gKHtcbiAgICAgIGtleSxcbiAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICBjb25maWdNb2RlbHM6IChsb2dzW2tleV0ubW9kZWxzIHx8IFtdKVxuICAgICAgICAubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfSwgeyBrZXkgfSBhcyBhbnkpKVxuICAgICAgICAvLyBvbmx5IHRha2UgdGhvc2Ugd2UgZm91bmQgYSBtYXRjaGluZyBtb2RlbCAoYXZvaWQgbWF0Y2hpbmcga2V5IG9uIHdyb25nIG5vZGUgdHlwZSlcbiAgICAgICAgLmZpbHRlcih2ID0+ICEhdi5tb2RlbCksXG4gICAgICBvcmlnaW5hbFZhbHVlOiBibGFua05vZGVWYWx1ZShvcmlnaW5hbCwga2V5KSxcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlOiBibGFua05vZGVWYWx1ZShyZWNhbGN1bGF0ZWQsIGtleSksXG4gICAgICBpc1JlY2FsY3VsYXRlZDogaXNSZWNhbGN1bGF0ZWQocmVjYWxjdWxhdGVkLCBrZXkpLFxuICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgIH0gYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlKSlcbiAgICAuZmlsdGVyKHYgPT4gdi5jb25maWdNb2RlbHMubGVuZ3RoID4gMClcbiAgICAubWFwKGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGxvZ3MpKTtcblxuY29uc3QgaXNNb2RlbEZvcklucHV0UHJvZHVjdCA9ICh0eXBlOiBTY2hlbWFUeXBlLCBrZXk6IHN0cmluZykgPT4gW1xuICBrZXkgIT09ICdoZXN0aWFBZ2dyZWdhdGVkRGF0YScsXG4gICFrZXkuaW5jbHVkZXMoJy9pbnB1dC8nKSB8fCB0eXBlID09PSBTY2hlbWFUeXBlLklucHV0LFxuICAha2V5LmluY2x1ZGVzKCcvcHJvZHVjdC8nKSB8fCB0eXBlID09PSBTY2hlbWFUeXBlLlByb2R1Y3QsXG5dLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBpc0JhY2tncm91bmRJbnB1dCA9IChsb2c6IElOb2RlVGVybUxvZykgPT5cbiAgbG9nLm1ldGhvZFRpZXIgPT09IEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kICYmICEhbG9nLmlucHV0ICYmIGxvZy5zaG91bGRSdW47XG5cbmNvbnN0IGlzTW9kZWxMb2cgPSAobG9nczogSU5vZGVUZXJtTG9ncywgdHlwZTogU2NoZW1hVHlwZSkgPT4gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxvZyA9IGxvZ3Nba2V5XTtcbiAgcmV0dXJuICEhbG9nICYmIFtcbiAgICAvLyBoYW5kbGUgUHJvZHVjdCBzYW1lIGFzIElucHV0XG4gICAgaXNNb2RlbEZvcklucHV0UHJvZHVjdCh0eXBlLCBrZXkpLFxuICAgIGxvZy5tZXRob2RUaWVyICE9PSBFbWlzc2lvbk1ldGhvZFRpZXIuYmFja2dyb3VuZCxcbiAgICAhbG9nLmlzS2V5LFxuICAgIC8vICFsb2cuaW5wdXQsXG4gICAgIWxvZy5wcm9wZXJ0eVxuICBdLmV2ZXJ5KEJvb2xlYW4pICYmIFtcbiAgICAnc2hvdWxkUnVuJyBpbiBsb2csXG4gICAgJ3Nob3VsZFJ1bk9yY2hlc3RyYXRvcicgaW4gbG9nLFxuICAgICdydW5SZXF1aXJlZCcgaW4gbG9nXG4gIF0uc29tZShCb29sZWFuKTtcbn07XG5cbmNvbnN0IG1vZGVsQ29uZmlnTWF0Y2ggPSAodGVybUlkOiBzdHJpbmcsIG1vZGVsS2V5OiBzdHJpbmcsIG1vZGVsOiBzdHJpbmcpID0+IChjb25maWc6IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZykgPT5cbiAgW3Rlcm1JZCA9PT0gY29uZmlnLnZhbHVlLCBtb2RlbEtleSA9PT0gY29uZmlnLmtleSwgbW9kZWwgPT09IGNvbmZpZy5tb2RlbF0uZXZlcnkoQm9vbGVhbik7XG5cbmNvbnN0IG1vZGVsQ29uZmlnID0gKFxuICBtb2RlbHM6IChJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcgfCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXSlbXSwgdGVybUlkOiBzdHJpbmcsIG1vZGVsS2V5OiBzdHJpbmcsIG1vZGVsOiBzdHJpbmdcbikgPT4gbW9kZWxzLmZsYXQoKS5maW5kKG1vZGVsQ29uZmlnTWF0Y2godGVybUlkLCBtb2RlbEtleSwgbW9kZWwpKTtcblxuY29uc3QgbW9kZWxDb25maWdPcmRlciA9IChcbiAgbW9kZWxzOiAoSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnIHwgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW10pW10sIHRlcm1JZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nLCBtb2RlbDogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBpbmRleGVzID0gbW9kZWxzLm1hcCgobSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBhcnJheUluZGV4ID0gQXJyYXkuaXNBcnJheShtKSA/IG1vZGVsQ29uZmlnT3JkZXIobSwgdGVybUlkLCBtb2RlbEtleSwgbW9kZWwpIDogJyc7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobSlcbiAgICAgID8gYXJyYXlJbmRleFxuICAgICAgICA/IFtpbmRleCwgYXJyYXlJbmRleF0uam9pbignLicpXG4gICAgICAgIDogJydcbiAgICAgIDogbW9kZWxDb25maWdNYXRjaCh0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbCkobSlcbiAgICAgICAgPyBgJHtpbmRleH1gXG4gICAgICAgIDogJyc7XG4gIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGluZGV4ZXMubGVuZ3RoID8gaW5kZXhlc1swXSA6ICcnO1xufTtcblxuaW50ZXJmYWNlIElDb25maWdNb2RlbERvY3NEYXRhIHtcbiAgbm9kZVR5cGU6IE5vZGVUeXBlO1xuICB0eXBlOiBTY2hlbWFUeXBlO1xuICB0ZXJtSWQ6IHN0cmluZztcbiAgdGVybVR5cGU/OiBUZXJtVGVybVR5cGU7XG59XG5cbmNvbnN0IGNvbmZpZ01vZGVsV2l0aERvY3MgPSAoXG4gIG1vZGVsczogSU1vZGVsW10sIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCwgdGVybVR5cGUgfTogSUNvbmZpZ01vZGVsRG9jc0RhdGEsIHN1YlZhbHVlPzogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlXG4pID0+IChtZXRob2RJZDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5vZGUgPSB7XG4gICAgJ0B0eXBlJzogbm9kZVR5cGUsXG4gICAgdGVybTogeyAnQGlkJzogc3ViVmFsdWU/LmlkIHx8IHRlcm1JZCB9LFxuICAgIG1ldGhvZE1vZGVsOiB7ICdAaWQnOiBtZXRob2RJZCB9XG4gIH0gYXMgYW55O1xuICByZXR1cm4ge1xuICAgIG1ldGhvZElkLFxuICAgIG1vZGVsOiBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsUGFyYW1zKG5vZGUpKSB8fFxuICAgICAgLy8gaGFuZGxlIFwibGl2ZUFuaW1hbFwiXG4gICAgICAodGVybVR5cGUgJiYgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCB0ZXJtVHlwZSkpKSB8fFxuICAgICAgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBgJHtzdWJWYWx1ZT8ua2V5fS4ke21ldGhvZElkfWApKSB8fFxuICAgICAgLy8gaGFuZGxlIFwiaW5wdXQucHJpY2VcIlxuICAgICAgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBgJHt0eXBlPy50b0xvd2VyQ2FzZSgpfS4ke3N1YlZhbHVlPy5rZXl9YCkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJpbnB1dC5oZXN0aWFBZ2dyZWdhdGVkRGF0YVwiXG4gICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke3R5cGU/LnRvTG93ZXJDYXNlKCl9LiR7bWV0aG9kSWR9YCkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJ0cmFuc2Zvcm1hdGlvblwiXG4gICAgICAoc3ViVmFsdWU/LmtleSA/IGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgc3ViVmFsdWU/LmtleSkpIDogdW5kZWZpbmVkKSB8fFxuICAgICAgLy8gaGFuZGxlIFwidHJhbnNmb3JtYXRpb24vaW5wdXQvZXhjcmV0YVwiIGFuZCBvdGhlciBtb2RlbHMgd2l0aCBcIi9cIlxuICAgICAgKG1ldGhvZElkLmluY2x1ZGVzKCcvJykgPyBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIHtcbiAgICAgICAgbW9kZWw6IG1ldGhvZElkLnNwbGl0KCcvJylbMF0sXG4gICAgICAgIG1vZGVsS2V5OiBtZXRob2RJZC5zcGxpdCgnLycpLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgfSkgOiB1bmRlZmluZWQpXG4gIH07XG59O1xuXG5jb25zdCBjb25maWdNb2RlbFdpdGhMb2dzID0gKFxuICBkYXRhOiBJQmxhbmtOb2RlTG9nIHwgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlLCBsb2dzOiBJTm9kZVRlcm1Mb2dzLCBwcmV2aW91c01vZGVsU3VjY2VzcyA9IGZhbHNlXG4pID0+IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGxvZ1N0YXR1cyhkYXRhLCBsb2dzPy5bbW9kZWwubWV0aG9kSWRdLCBwcmV2aW91c01vZGVsU3VjY2Vzcyk7XG4gIHJldHVybiB7XG4gICAgLi4ubW9kZWwsXG4gICAgbG9nczogbG9ncz8uW21vZGVsLm1ldGhvZElkXSxcbiAgICBzdGF0dXMsXG4gICAgc2hvd0xvZ3M6IGhhc0xvZ0RldGFpbHMoc3RhdHVzLCBsb2dzPy5bbW9kZWwubWV0aG9kSWRdKVxuICB9IGFzIElDb25maWdNb2RlbDtcbn07XG5cbi8qKlxuICogSGFuZGxlIGhpZXJhcmNoeSBza2lwIGlmIGEgbW9kZWwgYmVmb3JlIHN1Y2NlZWRlZC5cbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGluZGV4XG4gKi9cbmNvbnN0IGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzID0gKG1vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdLCBpbmRleCA9IDApID0+XG4gIGZpbHRlckNvbmZpZ01vZGVscyhtb2RlbHNbaW5kZXhdLCBrZWVwQ29uZmlnTW9kZWxCeVN0YXR1cyhMb2dTdGF0dXMuc3VjY2VzcykpLmxlbmd0aCA+IDAgfHxcbiAgaW5kZXggPD0gbW9kZWxzLmxlbmd0aCAmJiBoYXNQcmV2aW91c01vZGVsU3VjY2Vzcyhtb2RlbHMsIGluZGV4ICsgMSk7XG5cbmNvbnN0IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzID0gKFxuICBsb2dzOiBJTm9kZUxvZ3MgfCBJTm9kZVRlcm1Mb2dzXG4pID0+IDxUIGV4dGVuZHMgKElCbGFua05vZGVMb2cgfCBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpPihkYXRhOiBUKSA9PiB7XG4gIGNvbnN0IHN1YkxvZ0tleSA9IHN1YlZhbHVlTG9nS2V5KGRhdGEgYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlKTtcbiAgY29uc3QgbG9nID0gc3ViTG9nS2V5ID8gbG9nc1tzdWJMb2dLZXldIDogbG9ncztcbiAgY29uc3QgY29uZmlnTW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10gPSBbXTtcblxuICAvLyBnbyB0aHJvdWdoIG1vZGVscyBvbmUgYnkgb25lIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBuZXh0IG1vZGVscyBpbiBoaWVyYXJjaHkgaGF2ZSBmYWlsZWRcbiAgZm9yIChjb25zdCBpbmRleCBpbiBkYXRhLmNvbmZpZ01vZGVscykge1xuICAgIGlmIChkYXRhLmNvbmZpZ01vZGVscy5oYXNPd25Qcm9wZXJ0eShpbmRleCkpIHtcbiAgICAgIGNvbnN0IG1vZGVsID0gZGF0YS5jb25maWdNb2RlbHNbaW5kZXhdO1xuICAgICAgY29uc3QgcHJldmlvdXNNb2RlbFN1Y2Nlc3MgPSAraW5kZXggPiAwICYmIGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzKGNvbmZpZ01vZGVscyk7XG4gICAgICBjb25zdCBuZXdNb2RlbCA9IEFycmF5LmlzQXJyYXkobW9kZWwpXG4gICAgICAgID8gbW9kZWwubWFwKGNvbmZpZ01vZGVsV2l0aExvZ3MoZGF0YSwgbG9nLCBwcmV2aW91c01vZGVsU3VjY2VzcykpXG4gICAgICAgIDogY29uZmlnTW9kZWxXaXRoTG9ncyhkYXRhLCBsb2csIHByZXZpb3VzTW9kZWxTdWNjZXNzKShtb2RlbCk7XG4gICAgICBjb25maWdNb2RlbHMucHVzaChuZXdNb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5kYXRhLFxuICAgIGNvbmZpZ01vZGVsczogZmlsdGVyQ29uZmlnTW9kZWxzKGNvbmZpZ01vZGVscywgKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+XG4gICAgICAhW0xvZ1N0YXR1cy5ub3RSZXF1aXJlZF0uaW5jbHVkZXMobW9kZWw/LnN0YXR1cykgfHwgbW9kZWwubWV0aG9kSWQgPT09ICdlbWlzc2lvbk5vdFJlbGV2YW50J1xuICAgIClcbiAgfSBhcyBUO1xufTtcblxuLyoqXG4gKiBHcm91cCBtb2RlbHMgcnVubmluZyBpbiBwYXJhbGxlbCB1bmRlciB0aGUgc2FtZSBhcnJheSwgYXMgdGhleSBzaG91bGQgYXBwZWFyIHZlcnRpY2FsbHkuXG4gKlxuICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSBtb2RlbHMgVGhlIGxpc3Qgb2YgbW9kZWxzXG4gKi9cbmNvbnN0IGdyb3VwUGFyYWxsZWxNb2RlbHMgPSAoY29uZmlnOiBJT3JjaGVzdHJhdG9yQ29uZmlnLCB0ZXJtSWQ6IHN0cmluZywgbW9kZWxLZXk6IHN0cmluZywgbW9kZWxzOiBJQ29uZmlnTW9kZWxbXSkgPT4ge1xuICBjb25zdCBtb2RlbHNXaXRoT3JkZXIgPSBtb2RlbHMubWFwKG1vZGVsID0+ICh7XG4gICAgbW9kZWw6IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgY29uZmlnOiBtb2RlbENvbmZpZyhjb25maWcubW9kZWxzLCB0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbC5tZXRob2RJZClcbiAgICB9LFxuICAgIG9yZGVyOiBtb2RlbENvbmZpZ09yZGVyKGNvbmZpZy5tb2RlbHMsIHRlcm1JZCwgbW9kZWxLZXksIG1vZGVsLm1ldGhvZElkKVxuICB9KSk7XG4gIHJldHVybiBtb2RlbHNXaXRoT3JkZXJcbiAgICAucmVkdWNlKChwcmV2LCB7IG1vZGVsLCBvcmRlciB9KSA9PiB7XG4gICAgICBjb25zdCBpc0FycmF5ID0gb3JkZXIuaW5jbHVkZXMoJy4nKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gaXNBcnJheSA/IG9yZGVyLnNwbGl0KCcuJylbMF0gOiBvcmRlciB8fCBwcmV2Lmxlbmd0aDtcbiAgICAgIHByZXZbaW5kZXhdID0gaXNBcnJheSA/IFsuLi4ocHJldltpbmRleF0gfHwgW10pLCBtb2RlbF0gOiBbbW9kZWxdO1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10gYXMgSUNvbmZpZ01vZGVsW11bXSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCh2ID0+IHYubGVuZ3RoID09PSAxID8gdlswXSA6IHYpO1xufTtcblxuY29uc3QgYWxsUGFyYWxsZWwgPSAobW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10pID0+XG4gIG1vZGVscy5sZW5ndGggPT09IDEgJiYgQXJyYXkuaXNBcnJheShtb2RlbHNbMF0pICYmIG1vZGVsc1swXS5sZW5ndGggPiAxO1xuXG5jb25zdCB2YWx1ZUJ5TWV0aG9kSWQgPSAodmFsdWVzOiBibGFua05vZGVbXSwgbWV0aG9kSWQ6IHN0cmluZywgdGVybUlkOiBzdHJpbmcpID0+XG4gIHByb3BlcnR5VmFsdWUodmFsdWVzLmZpbmQodiA9PiB2Lm1ldGhvZE1vZGVsPy5bJ0BpZCddID09PSBtZXRob2RJZCk/LnZhbHVlIGFzIG51bWJlcltdLCB0ZXJtSWQpO1xuXG5jb25zdCBncm91cFBhcmFsbGVsVmFsdWVzID0gKHZhbHVlczogYmxhbmtOb2RlW10sIG1vZGVsczogSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10sIHRlcm1JZDogc3RyaW5nKSA9PlxuICBBcnJheS5pc0FycmF5KG1vZGVscylcbiAgICA/IE9iamVjdC5mcm9tRW50cmllcyhtb2RlbHMubWFwKG1vZGVsID0+IFttb2RlbC5tZXRob2RJZCwgdmFsdWVCeU1ldGhvZElkKHZhbHVlcywgbW9kZWwubWV0aG9kSWQsIHRlcm1JZCldKSlcbiAgICA6IHt9O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBMb2dzQnlUZXJtID0gKFxuICBub2RlVHlwZTogTm9kZVR5cGUsIGxvZ3M6IElOb2RlTG9ncywgbW9kZWxzOiBJTW9kZWxbXSwgY29uZmlnOiBJT3JjaGVzdHJhdG9yQ29uZmlnLFxuICBhbGxPcmlnaW5hbFZhbHVlczogYmxhbmtOb2RlW10sIGFsbFJlY2FsY3VsYXRlZFZhbHVlczogYmxhbmtOb2RlW10sXG4gIG5vZGVLZXk/OiBzdHJpbmdcbikgPT4ge1xuICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IChhbGxPcmlnaW5hbFZhbHVlcyB8fCBbXSkuZmlsdGVyKHZhbHVlID0+ICEodmFsdWUgYXMgYW55KS5kZWxldGVkKTtcbiAgY29uc3QgcmVjYWxjdWxhdGVkVmFsdWVzID0gKGFsbFJlY2FsY3VsYXRlZFZhbHVlcyB8fCBbXSkuZmlsdGVyKHZhbHVlID0+ICEodmFsdWUgYXMgYW55KS5kZWxldGVkKTtcbiAgY29uc3QgdHlwZTogU2NoZW1hVHlwZSA9IG9yaWdpbmFsVmFsdWVzLmxlbmd0aCA/XG4gICAgb3JpZ2luYWxWYWx1ZXNbMF1bJ0B0eXBlJ10gfHwgb3JpZ2luYWxWYWx1ZXNbMF0udHlwZSA6XG4gICAgcmVjYWxjdWxhdGVkVmFsdWVzLmxlbmd0aCA/XG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZXNbMF1bJ0B0eXBlJ10gfHwgcmVjYWxjdWxhdGVkVmFsdWVzWzBdLnR5cGUgOlxuICAgICAgdW5kZWZpbmVkO1xuXG4gIHJldHVybiAodGVybTogSVRlcm1KU09OTEQpOiBJQmxhbmtOb2RlTG9nID0+IHtcbiAgICBjb25zdCB0ZXJtSWQgPSB0ZXJtWydAaWQnXTtcbiAgICBjb25zdCB0ZXJtVHlwZSA9IHRlcm0udGVybVR5cGU7XG4gICAgY29uc3QgdGVybUxvZ3MgPSBnZXQobG9ncywgdGVybUlkLCB7fSkgYXMgSU5vZGVUZXJtTG9ncztcbiAgICBjb25zdCBvcmlnaW5hbCA9IG9yaWdpbmFsVmFsdWVzLmZpbHRlcih2ID0+IHRlcm1JZCA9PT0gdi50ZXJtIVsnQGlkJ10pO1xuICAgIGNvbnN0IHJlY2FsY3VsYXRlZCA9IHJlY2FsY3VsYXRlZFZhbHVlcy5maWx0ZXIodiA9PiB0ZXJtSWQgPT09IHYudGVybSFbJ0BpZCddKTtcbiAgICBjb25zdCBoYXNEYXRhID0gISFvcmlnaW5hbC5sZW5ndGggfHwgISFyZWNhbGN1bGF0ZWQubGVuZ3RoIHx8IE9iamVjdC5rZXlzKHRlcm1Mb2dzKS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGNvbmZpZ01vZGVsc0RhdGEgPSB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQsIHRlcm1UeXBlIH07XG4gICAgY29uc3QgY29uZmlnTW9kZWxzID0gZ3JvdXBQYXJhbGxlbE1vZGVscyhcbiAgICAgIGNvbmZpZywgdGVybUlkLCBub2RlS2V5ISxcbiAgICAgIHVuaXF1ZShbXG4gICAgICAgIC4uLih0ZXJtTG9ncy5tb2RlbHMgfHwgW10pLmZpbHRlcihpc01vZGVsTG9nKHRlcm1Mb2dzLCB0eXBlKSksXG4gICAgICAgIC8vIC4uLmZpbmRDb25maWdNb2RlbHMoY29uZmlnLCB0ZXJtSWQsIG5vZGVLZXkhLCBtb2RlbHMpLm1hcCgoeyBtb2RlbCB9KSA9PiBtb2RlbCBhcyBzdHJpbmcpXG4gICAgICBdKS5tYXAoY29uZmlnTW9kZWxXaXRoRG9jcyhtb2RlbHMsIGNvbmZpZ01vZGVsc0RhdGEpKVxuICAgICk7XG4gICAgY29uc3Qga2V5cyA9IGxvZ0tleXModGVybUxvZ3MsIG9yaWdpbmFsLCByZWNhbGN1bGF0ZWQsIG1vZGVscywgY29uZmlnTW9kZWxzRGF0YSk7XG4gICAgY29uc3Qgc3ViVmFsdWVzID0gbG9nU3ViVmFsdWVzKGxvZ3MsIHRlcm1Mb2dzLCBvcmlnaW5hbCwgcmVjYWxjdWxhdGVkLCBtb2RlbHMsIGNvbmZpZ01vZGVsc0RhdGEpO1xuICAgIGNvbnN0IGlzUmVxdWlyZWQgPSAhKFxuICAgICAgT2JqZWN0XG4gICAgICAgIC52YWx1ZXModGVybUxvZ3MpXG4gICAgICAgIC5maWx0ZXIodiA9PiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodikgJiYgIXYuaXNLZXkpXG4gICAgICAgIC5ldmVyeSh2ID0+IHYucnVuUmVxdWlyZWQgPT09IGZhbHNlKVxuICAgICk7XG5cbiAgICBjb25zdCBub2RlTG9nOiBJQmxhbmtOb2RlTG9nID0gZGF0YVdpdGhDb25maWdNb2RlbExvZ3ModGVybUxvZ3MpKHtcbiAgICAgIGlzT3BlbjogdHJ1ZSxcbiAgICAgIGNhbk9wZW46IGtleXMubGVuZ3RoID4gMCB8fCBzdWJWYWx1ZXMubGVuZ3RoID4gMCxcbiAgICAgIHRlcm1JZCxcbiAgICAgIHRlcm0sXG4gICAgICB0eXBlLFxuICAgICAgY29uZmlnTW9kZWxzLFxuICAgICAgb3JpZ2luYWwsXG4gICAgICBvcmlnaW5hbFZhbHVlOiByZWR1Y2VWYWx1ZXMob3JpZ2luYWwsIHRlcm1JZCksXG4gICAgICByZWNhbGN1bGF0ZWQsXG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZTogcmVkdWNlVmFsdWVzKHJlY2FsY3VsYXRlZCwgdGVybUlkKSxcbiAgICAgIGlzT3JpZ2luYWw6ICEhb3JpZ2luYWwubGVuZ3RoLFxuICAgICAgaXNSZWNhbGN1bGF0ZWQ6IGlzUmVjYWxjdWxhdGVkKHJlY2FsY3VsYXRlZCksXG4gICAgICBoYXNEYXRhLFxuICAgICAgaXNSZXF1aXJlZCxcbiAgICAgIGxvZ3M6IHRlcm1Mb2dzLFxuICAgICAga2V5cyxcbiAgICAgIHN1YlZhbHVlcyxcbiAgICAgIGFsbFBhcmFsbGVsOiBhbGxQYXJhbGxlbChjb25maWdNb2RlbHMpLFxuICAgICAgb3JpZ2luYWxWYWx1ZUJ5TWV0aG9kSWQ6IGdyb3VwUGFyYWxsZWxWYWx1ZXMob3JpZ2luYWwsIGNvbmZpZ01vZGVsc1swXSwgdGVybUlkKSxcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlQnlNZXRob2RJZDogZ3JvdXBQYXJhbGxlbFZhbHVlcyhyZWNhbGN1bGF0ZWQsIGNvbmZpZ01vZGVsc1swXSwgdGVybUlkKVxuICAgIH0pO1xuICAgIGNvbnN0IHN1YlZhbHVlID0gY3ljbGVTdWJWYWx1ZShub2RlTG9nKTtcblxuICAgIHJldHVybiBzdWJWYWx1ZSAmJiBzdWJWYWx1ZXM/Lmxlbmd0aFxuICAgICAgPyB7XG4gICAgICAgIC4uLm5vZGVMb2csXG4gICAgICAgIG1vZGVsc0luU3ViVmFsdWVzOiB0cnVlLFxuICAgICAgICBzdWJWYWx1ZXM6IFtcbiAgICAgICAgICBzdWJWYWx1ZSxcbiAgICAgICAgICAuLi5zdWJWYWx1ZXNcbiAgICAgICAgXVxuICAgICAgfSAvLyBpZiB3ZSBpbmNsdWRlIHRoZSBDeWNsZSB2YWx1ZSwgaXQgYmVjb21lcyB0aGUgbWFpbiByZWZlcmVuY2Ugb2YgdGhlIG1vZGVsc1xuICAgICAgOiBub2RlTG9nO1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IG1vZGVsQ291bnQgPSAoYmxhbmtOb2RlTG9nczogSUJsYW5rTm9kZUxvZ1tdKSA9PiBNYXRoLm1heC5hcHBseShNYXRoLm1heCwgW1xuICAwLFxuICAuLi5ibGFua05vZGVMb2dzLmZsYXRNYXAodiA9PiBbXG4gICAgdi5jb25maWdNb2RlbHMubGVuZ3RoLFxuICAgIC4uLih2LnN1YlZhbHVlcy5tYXAocyA9PiBzLmNvbmZpZ01vZGVscz8ubGVuZ3RoIHx8IDApKSxcbiAgICAuLi4odi5rZXlzLm1hcChzID0+IHMuY29uZmlnTW9kZWxzPy5sZW5ndGggfHwgMCkpXG4gIF0pXG5dKTtcblxuZXhwb3J0IGNvbnN0IGxvZ1ZhbHVlQXJyYXkgPSAodmFsdWU6IHN0cmluZyk6IGFueVtdID0+XG4gIFsnOycsICc6J10uc29tZSh2ID0+IHZhbHVlLmluY2x1ZGVzKHYpKSA/XG4gICAgdmFsdWUuc3BsaXQoJzsnKS5mbGF0TWFwKHYgPT4ge1xuICAgICAgY29uc3QgcmVzID0gdi5zcGxpdCgnXycpLm1hcCh2diA9PiB2di5zcGxpdCgnOicpKTtcbiAgICAgIHJldHVybiByZXMubGVuZ3RoIDw9IDEgPyByZXMuZmxhdCgpIDogT2JqZWN0LmZyb21FbnRyaWVzKHJlcyk7XG4gICAgfSkgOlxuICAgIG51bGw7XG4iXX0=
|
|
576
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1sb2dzLW1vZGVscy5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9ub2RlL25vZGUtbG9ncy1tb2RlbHMvbm9kZS1sb2dzLW1vZGVscy5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwrQkFBK0I7QUFDL0IsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUM1QixPQUFPLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4RCxPQUFPLEVBQUUsU0FBUyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkUsT0FBTyxFQUNLLGtCQUFrQixFQUNsQixZQUFZLEVBQVksVUFBVSxFQUFFLFVBQVUsRUFDekQsTUFBTSxzQkFBc0IsQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDN0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQzlELE9BQU8sR0FBRyxNQUFNLFlBQVksQ0FBQztBQUM3QixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFFckMsT0FBTyxFQUMwQyxVQUFVLEVBQVUsaUJBQWlCLEVBQUUsV0FBVyxFQUFFLGNBQWMsRUFDbEgsTUFBTSw2QkFBNkIsQ0FBQztBQXVDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUU5QyxNQUFNLGNBQWMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFFN0UsTUFBTSxvQkFBb0IsR0FB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QUMsQ0FBQztJQUNKLElBQUksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCB7IGZyb20gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0LCB0b0FycmF5LCBtYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBmaWxlVG9FeHQsIFN1cHBvcnRlZEV4dGVuc2lvbnMgfSBmcm9tICdAaGVzdGlhLWVhcnRoL2FwaSc7XG5pbXBvcnQge1xuICBFbWlzc2lvbiwgRW1pc3Npb25NZXRob2RUaWVyLCBJVGVybUpTT05MRCwgUHJvZHVjdCwgSW5wdXQgYXMgSGVzdGlhSW5wdXQsXG4gIE5vZGVUeXBlLCBUZXJtVGVybVR5cGUsIFByb3BlcnR5LCBTY2hlbWFUeXBlLCBpc1R5cGVOb2RlLCBJbmRpY2F0b3IsIFByYWN0aWNlLCBNZWFzdXJlbWVudCwgVGVybVxufSBmcm9tICdAaGVzdGlhLWVhcnRoL3NjaGVtYSc7XG5pbXBvcnQgeyB1bmlxdWUsIGlzVW5kZWZpbmVkLCBpc0VtcHR5LCBpc051bWJlciB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHsgcHJvcGVydHlWYWx1ZSB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMvZGlzdC90ZXJtJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgc2V0IGZyb20gJ2xvZGFzaC5zZXQnO1xuaW1wb3J0IG9yZGVyQnkgZnJvbSAnbG9kYXNoLm9yZGVyYnknO1xuXG5pbXBvcnQge1xuICBJT3JjaGVzdHJhdG9yQ29uZmlnLCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcsIGZpbmRNb2RlbHMsIElNb2RlbCwgZmluZE1hdGNoaW5nTW9kZWwsIG1vZGVsUGFyYW1zLCBtb2RlbEtleVBhcmFtc1xufSBmcm9tICcuLi8uLi9lbmdpbmUvZW5naW5lLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlTWlzc2luZ0xvb2t1cExvZyB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIHRlcm1JZDogc3RyaW5nO1xuICBjb2x1bW46IHN0cmluZztcbiAgLy8gYXR0cmlidXRlcyBsaW5rZWQgdG8gdGhlIG1vZGVsc1xuICBtb2RlbD86IHN0cmluZztcbiAgdGVybT86IHN0cmluZztcbiAga2V5Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlVGVybUxvZyB7XG4gIHJ1blJlcXVpcmVkPzogYm9vbGVhbjtcbiAgc2hvdWxkUnVuPzogYm9vbGVhbjtcbiAgc2hvdWxkUnVuT3JjaGVzdHJhdG9yPzogYm9vbGVhbjtcbiAgc2hvdWxkTWVyZ2U/OiBib29sZWFuO1xuICByZXBsYWNlTG93ZXJUaWVyPzogYm9vbGVhbjtcbiAgcmVwbGFjZVRocmVzaG9sZD86IGJvb2xlYW47XG4gIG1pc3NpbmdMb29rdXBzPzogSU5vZGVNaXNzaW5nTG9va3VwTG9nW107XG4gIHJlcXVpcmVtZW50cz86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG4gIGxvZ3M/OiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIC8vIHBvc3NpYmxlIHN1YiB2YWx1ZXNcbiAgaW5wdXQ/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbiAgcHJvcGVydHk/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJTm9kZVRlcm1Mb2dzIHtcbiAgW21vZGVsS2V5OiBzdHJpbmddOiBhbnkgfCBJTm9kZVRlcm1Mb2c7XG4gIG1vZGVsczogc3RyaW5nW107XG4gIGlzS2V5PzogYm9vbGVhbjtcbiAgaXNQcm9wZXJ0eT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5vZGVMb2dzIHtcbiAgW3Rlcm06IHN0cmluZ106IElOb2RlVGVybUxvZ3M7XG59XG5cbmNvbnN0IHRlcm1UeXBlcyA9IE9iamVjdC52YWx1ZXMoVGVybVRlcm1UeXBlKTtcblxuY29uc3QgYmxhbmtOb2RlVHlwZXMgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLmZpbHRlcih0ID0+ICFpc1R5cGVOb2RlKHQpKTtcblxuY29uc3Qgc2NoZW1hVHlwZXNMb3dlckNhc2UgPSBPYmplY3QudmFsdWVzKFNjaGVtYVR5cGUpLm1hcCh2ID0+IHYudG9Mb3dlckNhc2UoKSk7XG5cbmNvbnN0IGJsYW5rTm9kZVR5cGVzTG93ZXJDYXNlID0gYmxhbmtOb2RlVHlwZXMubWFwKHYgPT4gdi50b0xvd2VyQ2FzZSgpKTtcblxuY29uc3QgbWlzc2luZ0xvb2t1cFByZWZpeCA9ICdNaXNzaW5nIGxvb2t1cCc7XG5cbmNvbnN0IHBhcnNlRmlsZW5hbWUgPSAoZmlsZXBhdGg6IHN0cmluZykgPT4ge1xuICBjb25zdCBbZmlsZW5hbWVdID0gZmlsZXBhdGguc3BsaXQoJy4nKTtcbiAgY29uc3QgZXh0ID0gdGVybVR5cGVzLmluY2x1ZGVzKGZpbGVuYW1lIGFzIGFueSkgPyBTdXBwb3J0ZWRFeHRlbnNpb25zLnhsc3ggOiBTdXBwb3J0ZWRFeHRlbnNpb25zLmNzdjtcbiAgcmV0dXJuIGZpbGVUb0V4dChmaWxlbmFtZSwgZXh0KTtcbn07XG5cbmNvbnN0IHBhcnNlTG9va3VwID0gKHsgY29sdW1uLCB0ZXJtaWQsIFttaXNzaW5nTG9va3VwUHJlZml4XTogbWlzc2luZ0xvb2t1cCB9KSA9PiAoe1xuICBmaWxlbmFtZTogcGFyc2VGaWxlbmFtZShtaXNzaW5nTG9va3VwKSwgdGVybUlkOiB0ZXJtaWQsIGNvbHVtblxufSk7XG5cbmNvbnN0IGNzdlZhbHVlID0gKHZhbHVlOiBzdHJpbmcpID0+ICh2YWx1ZSB8fCAnJykucmVwbGFjZSgnWycsICcnKS5yZXBsYWNlKCddJywgJycpO1xuXG5jb25zdCBwYXJzZU1lc3NhZ2UgPSAobWVzc2FnZTogc3RyaW5nKSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UobWVzc2FnZSk7XG4gICAgcmV0dXJuIGRhdGEubWVzc2FnZS5zcGxpdCgnLCcpLnJlZHVjZSgocHJldiwgcGFydHMpID0+IHtcbiAgICAgIGNvbnN0IFtrZXksIHZhbHVlXSA9IHBhcnRzLnNwbGl0KCc9Jyk7XG4gICAgICBjb25zdCB2YWwgPSBjc3ZWYWx1ZSh2YWx1ZSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICAuLi4oa2V5ICYmIHZhbCA/IHsgW2tleS50cmltKCldOiB2YWwgfSA6IHt9KVxuICAgICAgfTtcbiAgICB9LCB7IGxvZ2dlcjogZGF0YS5sb2dnZXIgfSk7XG4gIH1cbiAgY2F0Y2ggKGVycikge1xuICAgIC8vIG1ha2Ugc3VyZSBpdCB3b3JrcyBldmVuIGlmIG9uZSBsb2cgaXMgbWFsZm9ybWVkXG4gICAgcmV0dXJuIHt9O1xuICB9XG59O1xuXG5jb25zdCBwYXJzZUxvZ011bHRpcGxlVmFsdWUgPSAodmFsdWVzOiBzdHJpbmdbXVtdKSA9PlxuICB2YWx1ZXNcbiAgICAubWFwKHYgPT4gdi5maWx0ZXIoQm9vbGVhbikubGVuZ3RoID09PSAyID8gdi5qb2luKCc6JykgOiBudWxsKVxuICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAuam9pbignXycpO1xuXG5jb25zdCBwYXJzZUxvZyA9IChsb2c6IGFueSkgPT5cbiAgW1xuICAgICd2YWx1ZScgaW4gbG9nLFxuICAgICdjb2VmZmljaWVudCcgaW4gbG9nLFxuICAgICdub2RlJyBpbiBsb2cgfHwgJ29wZXJhdGlvbicgaW4gbG9nXG4gIF0uZXZlcnkoQm9vbGVhbilcbiAgPyB7XG4gICAgW2xvZy5ub2RlIHx8IGxvZy5vcGVyYXRpb25dOiBwYXJzZUxvZ011bHRpcGxlVmFsdWUoW1xuICAgICAgWyd2YWx1ZScsIGxvZy52YWx1ZV0sXG4gICAgICBbJ2NvZWZmaWNpZW50JywgbG9nLmNvZWZmaWNpZW50XSxcbiAgICAgIFsnb3BlcmF0aW9uJywgIWxvZy5ub2RlID8gbG9nLm9wZXJhdGlvbiA6IG51bGxdXG4gICAgXSlcbiAgfVxuICA6IG9taXRMb2dLZXlzKGxvZyk7XG5cbmNvbnN0IG9taXRMb2dLZXlzID0gKGxvZzogYW55LCAuLi5rZXlzOiBzdHJpbmdbXSkgPT5cbiAgT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIE9iamVjdC5lbnRyaWVzKGxvZykuZmlsdGVyKChba2V5XSkgPT4gIXNjaGVtYVR5cGVzTG93ZXJDYXNlLmluY2x1ZGVzKGtleSkgJiYgIWtleXMuaW5jbHVkZXMoa2V5KSlcbiAgKTtcblxuY29uc3QgaW5jbHVkZUJsYW5rTm9kZXMgPSAobG9ncywgbG9nKSA9PlxuICBPYmplY3RcbiAgICAua2V5cyhsb2cpXG4gICAgLmZpbHRlcihrZXkgPT4gYmxhbmtOb2RlVHlwZXNMb3dlckNhc2UuaW5jbHVkZXMoa2V5KSlcbiAgICAucmVkdWNlKChwcmV2LCBrZXkpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgW2tleV06IHVuaXF1ZShbXG4gICAgICAgIC4uLigodHlwZW9mIHByZXZba2V5XSA9PT0gJ3N0cmluZycgPyBbcHJldltrZXldXSA6IHByZXZba2V5XSkgfHwgW10pLFxuICAgICAgICBsb2dba2V5XVxuICAgICAgXSlcbiAgICB9KSwgbG9ncyk7XG5cbmNvbnN0IGdyb3VwTG9nID0gKGdyb3VwLCB7IGxvZ2dlciwgdGVybSwgbW9kZWwsIGtleSwgc2hvdWxkX3J1biwgc2hvdWxkX21lcmdlLCBydW5fcmVxdWlyZWQsIHByb3BlcnR5LCAuLi5sb2cgfTogYW55KSA9PiB7XG4gIGNvbnN0IGlzT3JjaGVzdHJhdG9yID0gbG9nZ2VyLmluY2x1ZGVzKCdvcmNoZXN0cmF0b3InKTtcbiAgY29uc3QgaXNLZXkgPSAhaXNPcmNoZXN0cmF0b3IgJiYgISFrZXk7XG4gIGNvbnN0IGlzUHJvcGVydHkgPSAhaXNPcmNoZXN0cmF0b3IgJiYgISFwcm9wZXJ0eTtcbiAgY29uc3QgcGFyZW50TG9nS2V5ID0gW2BbXCIke3Rlcm19XCJdYCwgIWlzT3JjaGVzdHJhdG9yICYmIGtleSB8fCBwcm9wZXJ0eV0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcbiAgY29uc3QgbG9nTW9kZWxLZXkgPSBbcGFyZW50TG9nS2V5LCBtb2RlbF0uZmlsdGVyKEJvb2xlYW4pLmpvaW4oJy4nKTtcblxuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0ubW9kZWxzYCwgdW5pcXVlKFtcbiAgICAuLi5nZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0ubW9kZWxzYCwgW10pLFxuICAgIG1vZGVsXG4gIF0pKTtcbiAgc2V0KGdyb3VwLCBgJHtwYXJlbnRMb2dLZXl9LmlzS2V5YCwgaXNLZXkpO1xuICBzZXQoZ3JvdXAsIGAke3BhcmVudExvZ0tleX0uaXNQcm9wZXJ0eWAsIGlzUHJvcGVydHkpO1xuXG4gIGxldCBkYXRhID0gZ2V0KGdyb3VwLCBsb2dNb2RlbEtleSwge30pO1xuXG4gIGRhdGEgPSBpbmNsdWRlQmxhbmtOb2RlcyhkYXRhLCBsb2cpO1xuXG4gIGlmICh0eXBlb2Ygc2hvdWxkX3J1biAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb25zdCBzaG91bGRSdW4gPSBzaG91bGRfcnVuID09PSAnVHJ1ZSc7XG5cbiAgICBkYXRhID0gaXNPcmNoZXN0cmF0b3IgP1xuICAgICAge1xuICAgICAgICAuLi5kYXRhLFxuICAgICAgICAuLi5vbWl0TG9nS2V5cyhsb2csICd2YWx1ZScpLFxuICAgICAgICBzaG91bGRSdW5PcmNoZXN0cmF0b3I6IHNob3VsZFJ1blxuICAgICAgfSA6XG4gICAgICB7XG4gICAgICAgIC4uLmRhdGEsXG4gICAgICAgIC4uLm9taXRMb2dLZXlzKGxvZyksXG4gICAgICAgIHNob3VsZFJ1blxuICAgICAgfTtcbiAgfVxuICBlbHNlIGlmICh0eXBlb2YgcnVuX3JlcXVpcmVkICE9PSAndW5kZWZpbmVkJykge1xuICAgIGNvbnN0IHJ1blJlcXVpcmVkID0gcnVuX3JlcXVpcmVkID09PSAnVHJ1ZSc7XG5cbiAgICBkYXRhID0gIHtcbiAgICAgIC4uLmRhdGEsXG4gICAgICAuLi4ocnVuUmVxdWlyZWQgPyB7fSA6IG9taXRMb2dLZXlzKGxvZykpLCAvLyBubyBuZWVkIHRvIHNhdmUgbG9ncyBpZiB3ZSBuZWVkIHRvIHJ1biB0aGUgbW9kZWxcbiAgICAgIHJ1blJlcXVpcmVkXG4gICAgfTtcbiAgfVxuICBlbHNlIGlmICgncmVxdWlyZW1lbnRzJyBpbiBsb2cpIHtcbiAgICBjb25zdCB7IHJlcXVpcmVtZW50cywgLi4ubG9nRGF0YSB9ID0gbG9nO1xuXG4gICAgZGF0YS5yZXF1aXJlbWVudHMgPSB7XG4gICAgICAuLi4oZGF0YS5yZXF1aXJlbWVudHMgfHwge30pLFxuICAgICAgLi4ubG9nRGF0YVxuICAgIH07XG4gIH1cbiAgZWxzZSBpZiAobWlzc2luZ0xvb2t1cFByZWZpeCBpbiBsb2cpIHtcbiAgICBkYXRhLm1pc3NpbmdMb29rdXBzID0gdW5pcXVlKFtcbiAgICAgIC4uLihkYXRhLm1pc3NpbmdMb29rdXBzIHx8IFtdKSxcbiAgICAgIHBhcnNlTG9va3VwKGxvZylcbiAgICBdKTtcbiAgfVxuICBlbHNlIGlmICghaXNPcmNoZXN0cmF0b3IpIHtcbiAgICBkYXRhLmxvZ3MgPSB7XG4gICAgICAuLi4oZGF0YS5sb2dzIHx8IHt9KSxcbiAgICAgIC4uLnBhcnNlTG9nKGxvZylcbiAgICB9O1xuICB9XG4gIGlmICh0eXBlb2Ygc2hvdWxkX21lcmdlICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRhdGEuc2hvdWxkTWVyZ2UgPSBzaG91bGRfbWVyZ2UgPT09ICdUcnVlJztcbiAgfVxuICBpZiAodHlwZW9mIGxvZy5yZXBsYWNlTG93ZXJUaWVyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGRhdGEucmVwbGFjZUxvd2VyVGllciA9IGxvZy5yZXBsYWNlTG93ZXJUaWVyID09PSAnVHJ1ZSc7XG4gIH1cbiAgaWYgKHR5cGVvZiBsb2cucmVwbGFjZVRocmVzaG9sZCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBkYXRhLnJlcGxhY2VUaHJlc2hvbGQgPSBsb2cucmVwbGFjZVRocmVzaG9sZCA9PT0gJ1RydWUnO1xuICB9XG5cbiAgc2V0KGdyb3VwLCBsb2dNb2RlbEtleSwgZGF0YSk7XG4gIHJldHVybiBncm91cDtcbn07XG5cbmNvbnN0IGdyb3VwTG9nU3ViVmFsdWUgPSAoZ3JvdXAsIGxvZywga2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgaWQgPSBsb2dba2V5XTtcbiAgY29uc3QgZGF0YSA9IGdyb3VwTG9nKGdyb3VwW2lkXSB8fCB7fSwgbG9nKTtcbiAgZ3JvdXBbaWRdID0gZGF0YTtcblxuICBpZiAoa2V5ID09PSAndHJhbnNmb3JtYXRpb24nKSB7XG4gICAgLy8gYWRkIHZhbHVlIHRvIHRoZSBzYW1lIHRlcm0vbW9kZWwgb24gcGFyZW50IGdyb3VwXG4gICAgT2JqZWN0LmVudHJpZXMoZ3JvdXBbaWRdKS5tYXAoKFt0ZXJtLCBtb2RlbHNdKSA9PlxuICAgICAgT2JqZWN0LmtleXMobW9kZWxzKS5tYXAobW9kZWwgPT4ge1xuICAgICAgICBpZiAoZ3JvdXA/Llt0ZXJtXT8uW21vZGVsXSkge1xuICAgICAgICAgIGdyb3VwW3Rlcm1dW21vZGVsXVtrZXldID0gdW5pcXVlKFtcbiAgICAgICAgICAgIC4uLihncm91cFt0ZXJtXVttb2RlbF1ba2V5XSB8fCBbXSksXG4gICAgICAgICAgICBpZFxuICAgICAgICAgIF0pO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gZ3JvdXA7XG59O1xuXG5jb25zdCBzdWJWYWx1ZUtleXMgPSBbXG4gICd0cmFuc2Zvcm1hdGlvbidcbl07XG5cbmV4cG9ydCBjb25zdCBncm91cExvZ3NCeU1vZGVsID0gKGRhdGE6IHN0cmluZyk6IElOb2RlTG9ncyA9PlxuICBkYXRhLnRyaW0oKS5zcGxpdCgnXFxuJylcbiAgICAubWFwKHBhcnNlTWVzc2FnZSlcbiAgICAuZmlsdGVyKHYgPT4gISF2Py50ZXJtICYmIHY/LnRlcm0gIT09ICdOb25lJyAmJiAhIXY/Lm1vZGVsKVxuICAgIC5yZWR1Y2UoKGdyb3VwLCBsb2cpID0+IHtcbiAgICAgIGNvbnN0IHN1YlZhbHVlID0gc3ViVmFsdWVLZXlzLmZpbmQodiA9PiAhIWxvZ1t2XSk7XG4gICAgICByZXR1cm4gc3ViVmFsdWUgP1xuICAgICAgICBzdWJWYWx1ZSA9PT0gJ3RyYW5zZm9ybWF0aW9uJyA/XG4gICAgICAgICAgLy8gZm9yIHRyYW5zZm9ybWF0aW9uLCBkbyBub3QgYWRkIHRvIHRvcC1sZXZlbCBtb2RlbFxuICAgICAgICAgIGdyb3VwTG9nU3ViVmFsdWUoZ3JvdXAsIGxvZywgc3ViVmFsdWUpIDpcbiAgICAgICAgICBncm91cExvZyhncm91cExvZ1N1YlZhbHVlKGdyb3VwLCBsb2csIHN1YlZhbHVlKSwgbG9nKVxuICAgICAgICA6IGdyb3VwTG9nKGdyb3VwLCBsb2cpO1xuICAgIH0sIHt9KTtcblxuZXhwb3J0IGNvbnN0IGNvbXB1dGVUZXJtcyA9IChcbiAgb3JpZ2luYWxWYWx1ZXM6IGJsYW5rTm9kZVtdLCByZWNhbGN1bGF0ZWRWYWx1ZXM6IGJsYW5rTm9kZVtdLCB0ZXJtcz86IElUZXJtSlNPTkxEW10sIGZpbHRlclRlcm1UeXBlcz86IFRlcm1UZXJtVHlwZVtdXG4pID0+IGZyb20oXG4gICAgdGVybXM/Lmxlbmd0aCA/XG4gICAgICB0ZXJtcyA6XG4gICAgICBbXG4gICAgICAgIC4uLihvcmlnaW5hbFZhbHVlcyB8fCBbXSkubWFwKCh7IHRlcm0gfSkgPT4gdGVybSksXG4gICAgICAgIC4uLihyZWNhbGN1bGF0ZWRWYWx1ZXMgfHwgW10pLm1hcCgoeyB0ZXJtIH0pID0+IHRlcm0pXG4gICAgICBdLmZpbHRlcihub2RlID0+ICFmaWx0ZXJUZXJtVHlwZXM/Lmxlbmd0aCB8fCBmaWx0ZXJUZXJtVHlwZXMuaW5jbHVkZXMobm9kZS50ZXJtVHlwZSkpXG4gICkucGlwZShcbiAgICBkaXN0aW5jdCh2ID0+IHYhWydAaWQnXSksXG4gICAgdG9BcnJheSgpLFxuICAgIG1hcCh2ID0+IG9yZGVyQnkodiwgWyduYW1lJ10sIFsnYXNjJ10pKVxuICApLnRvUHJvbWlzZSgpO1xuXG5leHBvcnQgdHlwZSBibGFua05vZGUgPSBFbWlzc2lvbiB8IFByb2R1Y3QgfCBIZXN0aWFJbnB1dCB8IFByb3BlcnR5IHwgUHJhY3RpY2UgfCBJbmRpY2F0b3IgfCBNZWFzdXJlbWVudDtcblxuZXhwb3J0IGVudW0gTG9nU3RhdHVzIHtcbiAgc3VjY2VzcyA9ICdzdWNjZXNzZnVsJyxcbiAgZXJyb3IgPSAnZmFpbGVkJyxcbiAgc2tpcEhpZXJhcmNoeSA9ICdub3QgcnVuIChtb2RlbCBoaWdoZXIgdXAgaGllcmFyY2h5IHJ1biBpbnN0ZWFkKScsXG4gIGRhdGFQcm92aWRlZCA9ICdub3QgcnVuICh1c2VyIHByb3ZpZGVkIGRhdGEgcmV0YWluZWQpJyxcbiAgbm90UmVxdWlyZWQgPSAnbm90IHJlbGV2YW50J1xufVxuXG5jb25zdCBoYXNMb2dzID0gKGxvZ3M/OiBJTm9kZVRlcm1Mb2cpID0+ICEhbG9ncz8ucmVxdWlyZW1lbnRzIHx8ICEhbG9ncz8ubG9ncyB8fCBsb2dzPy5taXNzaW5nTG9va3Vwcz8ubGVuZ3RoID4gMDtcblxuY29uc3QgaGFzTG9nRGV0YWlscyA9IChzdGF0dXM6IExvZ1N0YXR1cywgbG9ncz86IElOb2RlVGVybUxvZykgPT5cbiAgW1xuICAgIExvZ1N0YXR1cy5zdWNjZXNzLFxuICAgIExvZ1N0YXR1cy5lcnJvcixcbiAgICBMb2dTdGF0dXMuZGF0YVByb3ZpZGVkXG4gIF0uaW5jbHVkZXMoc3RhdHVzKSAmJiBoYXNMb2dzKGxvZ3MpO1xuXG5jb25zdCBsb2dTdGF0dXMgPSAoZGF0YTogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlIHwgSUJsYW5rTm9kZUxvZywgbG9ncz86IElOb2RlVGVybUxvZywgaGFzUHJldmlvdXNTdWNjZXNzID0gZmFsc2UpID0+IHtcbiAgY29uc3Qgd2l0aExvZ3MgPSBoYXNMb2cobG9ncyk7XG4gIGNvbnN0IGlzQ2FsY3VsYXRlZCA9IFtcbiAgICB0eXBlb2YgZGF0YS5vcmlnaW5hbFZhbHVlID09PSAndW5kZWZpbmVkJywgLy8gbm8gb3JpZ2luYWwgdmFsdWVcbiAgICBkYXRhLmlzUmVjYWxjdWxhdGVkIC8vIGlzIHJlY2FsY3VsYXRlZFxuICBdLmV2ZXJ5KEJvb2xlYW4pO1xuICAvLyBjYW4gYmUgbm90IHJlcXVpcmVkIGZvciBhIHNwZWNpZmljIG1vZGVsXG4gIGNvbnN0IGlzUmVxdWlyZWQgPSAhIWxvZ3MgJiYgJ3J1blJlcXVpcmVkJyBpbiBsb2dzID8gbG9ncy5ydW5SZXF1aXJlZCA6IGRhdGEuaXNSZXF1aXJlZDtcbiAgcmV0dXJuIHdpdGhMb2dzXG4gICAgPyAoXG4gICAgICAhaXNSZXF1aXJlZFxuICAgICAgICA/IExvZ1N0YXR1cy5ub3RSZXF1aXJlZFxuICAgICAgICA6IGlzUnVuT3JjaGVzdHJhdG9yKGxvZ3MpXG4gICAgICAgICAgPyAoXG4gICAgICAgICAgICAnc2hvdWxkUnVuJyBpbiBsb2dzXG4gICAgICAgICAgICAgID8gbG9ncy5zaG91bGRSdW5cbiAgICAgICAgICAgICAgICA/IGRhdGEuaXNSZWNhbGN1bGF0ZWRcbiAgICAgICAgICAgICAgICAgID8gTG9nU3RhdHVzLnN1Y2Nlc3NcbiAgICAgICAgICAgICAgICAgIDogaXNFbXB0eShkYXRhLm9yaWdpbmFsVmFsdWUpXG4gICAgICAgICAgICAgICAgICAgID8gTG9nU3RhdHVzLmVycm9yXG4gICAgICAgICAgICAgICAgICAgIDogTG9nU3RhdHVzLmRhdGFQcm92aWRlZFxuICAgICAgICAgICAgICAgIDogaGFzUHJldmlvdXNTdWNjZXNzXG4gICAgICAgICAgICAgICAgICA/IExvZ1N0YXR1cy5za2lwSGllcmFyY2h5XG4gICAgICAgICAgICAgICAgICA6IExvZ1N0YXR1cy5lcnJvclxuICAgICAgICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICAgICAgICApXG4gICAgICAgICAgOiBkYXRhLmlzUmVjYWxjdWxhdGVkXG4gICAgICAgICAgICA/IExvZ1N0YXR1cy5za2lwSGllcmFyY2h5XG4gICAgICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICApXG4gICAgOiAoXG4gICAgICBpc0NhbGN1bGF0ZWRcbiAgICAgICAgPyBMb2dTdGF0dXMuc2tpcEhpZXJhcmNoeVxuICAgICAgICA6IExvZ1N0YXR1cy5kYXRhUHJvdmlkZWRcbiAgICApO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBJQ29uZmlnTW9kZWwge1xuICBtZXRob2RJZDogc3RyaW5nO1xuICBsb2dzPzogSU5vZGVUZXJtTG9nO1xuICBzaG93TG9ncz86IGJvb2xlYW47XG4gIHN0YXR1cz86IExvZ1N0YXR1cztcbiAgbW9kZWw/OiBJTW9kZWw7XG4gIGNvbmZpZz86IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJQmxhbmtOb2RlTG9nU3ViVmFsdWUge1xuICBrZXk6IHN0cmluZztcbiAgc2hvd1VuaXRzOiBib29sZWFuO1xuICBvcmlnaW5hbFZhbHVlOiBudW1iZXIgfCBzdHJpbmcgfCBib29sZWFuO1xuICByZWNhbGN1bGF0ZWRWYWx1ZTogbnVtYmVyIHwgc3RyaW5nIHwgYm9vbGVhbjtcbiAgaXNSZWNhbGN1bGF0ZWQ6IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICBpZD86IHN0cmluZztcbiAgY29uZmlnTW9kZWxzPzogSUNvbmZpZ01vZGVsW107XG4gIGxvZ3M/OiBJTm9kZVRlcm1Mb2dzO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElCbGFua05vZGVMb2cge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGNhbk9wZW46IGJvb2xlYW47XG4gIHRlcm06IElUZXJtSlNPTkxEO1xuICB0ZXJtSWQ6IHN0cmluZztcbiAgdHlwZT86IFNjaGVtYVR5cGU7XG4gIGNvbmZpZ01vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdO1xuICBvcmlnaW5hbDogYmxhbmtOb2RlW107XG4gIG9yaWdpbmFsVmFsdWU6IG51bWJlcjtcbiAgLy8gd2hlbiBtdWx0aXBsZSBtb2RlbHMgYXJlIHJ1bm5pbmcgaW4gcGFyYWxsZWxcbiAgb3JpZ2luYWxWYWx1ZUJ5TWV0aG9kSWQ/OiB7XG4gICAgW21ldGhvZElkOiBzdHJpbmddOiBudW1iZXI7XG4gIH07XG4gIHJlY2FsY3VsYXRlZDogYmxhbmtOb2RlW107XG4gIHJlY2FsY3VsYXRlZFZhbHVlOiBudW1iZXI7XG4gIC8vIHdoZW4gbXVsdGlwbGUgbW9kZWxzIGFyZSBydW5uaW5nIGluIHBhcmFsbGVsXG4gIHJlY2FsY3VsYXRlZFZhbHVlQnlNZXRob2RJZD86IHtcbiAgICBbbWV0aG9kSWQ6IHN0cmluZ106IG51bWJlcjtcbiAgfTtcbiAgaXNPcmlnaW5hbDogYm9vbGVhbjtcbiAgaXNSZWNhbGN1bGF0ZWQ6IGJvb2xlYW47XG4gIGhhc0RhdGE6IGJvb2xlYW47XG4gIGlzUmVxdWlyZWQ6IGJvb2xlYW47XG4gIGxvZ3M/OiBJTm9kZVRlcm1Mb2dzO1xuICBrZXlzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXTtcbiAgc3ViVmFsdWVzOiBJQmxhbmtOb2RlTG9nU3ViVmFsdWVbXTtcbiAgLy8gbW9kZWxzIGFyZSBwcmVzZW50IGFzIHdlbGwgaW4gb25lIG9mIHRoZSBTdWJWYWx1ZXMsIGRvIG5vdCBzaG93IHR3aWNlXG4gIG1vZGVsc0luU3ViVmFsdWVzPzogYm9vbGVhbjtcbiAgLy8gY29udGFpbnMgbXVsdGlwbGUgbW9kZWxzIGFsbCBydW5uaW5nIGluIHBhcmFsbGVsXG4gIGFsbFBhcmFsbGVsPzogYm9vbGVhbjtcbn1cblxuY29uc3QgcmVtb3ZlQ29uZmlnTW9kZWxCeVN0YXR1cyA9ICguLi5zdGF0dXNlczogTG9nU3RhdHVzW10pID0+IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PlxuICAhc3RhdHVzZXMuaW5jbHVkZXMobW9kZWw/LnN0YXR1cyk7XG5cbmNvbnN0IGtlZXBDb25maWdNb2RlbEJ5U3RhdHVzID0gKC4uLnN0YXR1c2VzOiBMb2dTdGF0dXNbXSkgPT4gKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+XG4gIHN0YXR1c2VzLmluY2x1ZGVzKG1vZGVsPy5zdGF0dXMpO1xuXG5jb25zdCBmaWx0ZXJDb25maWdNb2RlbHMgPSAoXG4gIG1vZGVsczogKElDb25maWdNb2RlbCB8IChJQ29uZmlnTW9kZWwgfCBJQ29uZmlnTW9kZWxbXSlbXSksIGZpbHRlckZ1bmM6IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PiBib29sZWFuXG4pID0+XG4gIChBcnJheS5pc0FycmF5KG1vZGVscykgPyBtb2RlbHMgOiBbbW9kZWxzXSlcbiAgICAuZmlsdGVyKHYgPT4gQXJyYXkuaXNBcnJheSh2KSB8fCBmaWx0ZXJGdW5jKHYpKVxuICAgIC5tYXAodiA9PiBBcnJheS5pc0FycmF5KHYpID8gdi5maWx0ZXIoZmlsdGVyRnVuYykgOiB2KVxuICAgIC5maWx0ZXIodiA9PiBBcnJheS5pc0FycmF5KHYpID8gdj8ubGVuZ3RoIDogISF2KTtcblxuY29uc3QgbWVyZ2VTdWJWYWx1ZXMgPSAodmFsdWVzOiBhbnlbXSk6IGFueVtdID0+XG4gIE9iamVjdC52YWx1ZXMoXG4gICAgdmFsdWVzLnJlZHVjZSgocHJldiwgeyBpZCwga2V5LCBjb25maWdNb2RlbHMsIC4uLmRhdGEgfSkgPT4ge1xuICAgICAgY29uc3QgdW5pcXVlS2V5ID0gW2tleSwgaWRdLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gICAgICBwcmV2W3VuaXF1ZUtleV0gPSB7XG4gICAgICAgIC4uLk9iamVjdC5hc3NpZ24oe30sIHByZXZbdW5pcXVlS2V5XSwgZGF0YSksXG4gICAgICAgIGlkLFxuICAgICAgICBrZXksXG4gICAgICAgIGNvbmZpZ01vZGVsczogdW5pcXVlKFsuLi4oKHByZXZbdW5pcXVlS2V5XSB8fCB7fSkuY29uZmlnTW9kZWxzIHx8IFtdKSwgLi4uKGNvbmZpZ01vZGVscyB8fCBbXSldKVxuICAgICAgfTtcbiAgICAgIHJldHVybiBwcmV2O1xuICAgIH0sIHt9KVxuICApO1xuXG5jb25zdCByZWR1Y2VWYWx1ZXMgPSAodmFsdWVzOiBhbnlbXSwgdGVybUlkOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcHJvcGVydHlWYWx1ZXMgPSB2YWx1ZXNcbiAgICAubWFwKCh7IHZhbHVlIH0pID0+IHByb3BlcnR5VmFsdWUodmFsdWUsIHRlcm1JZCkpXG4gICAgLy8gcHJvcGVydHlWYWx1ZSBtYXkgcmV0dXJuIG51bGwgaWYgdGhlIHZhbHVlIGlzIG51bGwgb3IgdW5kZWZpbmVkLCB0aGVyZWZvcmUgcmVtb3ZlIHRoZW0gZnJvbSB0b3RhbFxuICAgIC5maWx0ZXIodiA9PiB2ICE9PSBudWxsKTtcbiAgcmV0dXJuIHByb3BlcnR5VmFsdWVzLmxlbmd0aCA/IHByb3BlcnR5VmFsdWVzLnJlZHVjZSgocCwgdikgPT4gcCArIHYsIDApIDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgaXNSdW5PcmNoZXN0cmF0b3IgPSAobG9nOiBJTm9kZVRlcm1Mb2cpID0+ICEoJ3Nob3VsZFJ1bk9yY2hlc3RyYXRvcicgaW4gbG9nKSB8fCBsb2cuc2hvdWxkUnVuT3JjaGVzdHJhdG9yO1xuXG5jb25zdCBoYXNMb2cgPSAobG9nOiBJTm9kZVRlcm1Mb2csIHdpdGhPcmNoZXN0cmF0b3IgPSB0cnVlKSA9PlxuICAhIWxvZyAmJiAoXG4gICAgJ3Nob3VsZFJ1bicgaW4gbG9nIHx8XG4gICAgJ3J1blJlcXVpcmVkJyBpbiBsb2cgfHxcbiAgICAod2l0aE9yY2hlc3RyYXRvciAmJiAnc2hvdWxkUnVuT3JjaGVzdHJhdG9yJyBpbiBsb2cpXG4gICk7XG5cbmNvbnN0IGlzUmVjYWxjdWxhdGVkID0gKHZhbHVlczogYmxhbmtOb2RlW10sIGtleSA9ICd2YWx1ZScpID0+IHZhbHVlcy5zb21lKHYgPT4gKFtcbiAgLi4uKHYuYWRkZWQgfHwgW10pLFxuICAuLi4odi51cGRhdGVkIHx8IFtdKVxuXSkuaW5jbHVkZXMoa2V5KSk7XG5cbmNvbnN0IGJsYW5rTm9kZVZhbHVlQnlLZXk6IHtcbiAgW2tleTogc3RyaW5nXTogKHZhbHVlczogYmxhbmtOb2RlW10sIGtleT86IHN0cmluZywgaWQ/OiBzdHJpbmcpID0+IG51bWJlciB8IHN0cmluZyB8IGJvb2xlYW47XG59ID0ge1xuICBwcm9wZXJ0eTogKHZhbHVlczogKEVtaXNzaW9uIHwgUHJvZHVjdCB8IEhlc3RpYUlucHV0KVtdLCBfaywgaWQpID0+ICEhaWQgJiYgdmFsdWVzPy5sZW5ndGhcbiAgICA/ICh2YWx1ZXNbMF0ucHJvcGVydGllcyB8fCBbXSkuZmluZChwID0+IHAudGVybVsnQGlkJ10gPT09IGlkKT8udmFsdWUgfHwgJydcbiAgICA6ICcnLFxuICBpbnB1dDogKHZhbHVlczogRW1pc3Npb25bXSwgX2ssIGlkKSA9PiAhIWlkICYmICh2YWx1ZXMgfHwgW10pLmZpbHRlcih2ID0+IHZbJ0B0eXBlJ10gPT09IFNjaGVtYVR5cGUuRW1pc3Npb24pLmxlbmd0aFxuICAgID8gcHJvcGVydHlWYWx1ZSh2YWx1ZXMuZmluZCgoeyBpbnB1dHMgfSkgPT4gKGlucHV0cyB8fCBbXSkuc29tZShpbnB1dCA9PiBpbnB1dFsnQGlkJ10gPT09IGlkKSk/LnZhbHVlLCBpZClcbiAgICA6ICcnLFxuICB0cmFuc2Zvcm1hdGlvbjogKHZhbHVlczogRW1pc3Npb25bXSwgX2ssIGlkKSA9PiB2YWx1ZXMubGVuZ3RoXG4gICAgPyBwcm9wZXJ0eVZhbHVlKHZhbHVlcy5maW5kKCh7IHRyYW5zZm9ybWF0aW9uIH0pID0+IHRyYW5zZm9ybWF0aW9uPy5bJ0BpZCddID09PSBpZCk/LnZhbHVlLCBpZClcbiAgICA6ICcnLFxuICBkZWZhdWx0OiAoYmxhbmtOb2Rlcywga2V5KSA9PiB7XG4gICAgY29uc3QgdmFsdWUgPSBibGFua05vZGVzPy5sZW5ndGggPyBibGFua05vZGVzWzBdW2tleV0gOiBudWxsO1xuICAgIHJldHVybiBbJ3N0cmluZycsICdudW1iZXInLCAnYm9vbGVhbicsICd1bmRlZmluZWQnXS5pbmNsdWRlcyh0eXBlb2YgdmFsdWUpXG4gICAgICA/IGlzVW5kZWZpbmVkKHZhbHVlKVxuICAgICAgICA/ICcnXG4gICAgICAgIDogdmFsdWVcbiAgICAgIDogQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgICAgPyB2YWx1ZS5sZW5ndGggPiAxXG4gICAgICAgICAgPyB2YWx1ZS5qb2luKCc7JylcbiAgICAgICAgICA6IHZhbHVlWzBdXG4gICAgICAgIDogbnVsbDtcbiAgfVxufTtcblxuY29uc3QgYmxhbmtOb2RlVmFsdWUgPSAoYmxhbmtOb2RlczogYmxhbmtOb2RlW10sIGtleTogc3RyaW5nLCBpZD86IHN0cmluZykgPT5cbiAgYmxhbmtOb2RlVmFsdWVCeUtleVtrZXkgaW4gYmxhbmtOb2RlVmFsdWVCeUtleSA/IGtleSA6ICdkZWZhdWx0J10oYmxhbmtOb2Rlcywga2V5LCBpZCk7XG5cbmNvbnN0IHN1YlZhbHVlTG9nS2V5ID0gKHsga2V5LCBpZCB9OiBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpOiBzdHJpbmcgPT5cbiAga2V5ID09PSAndHJhbnNmb3JtYXRpb24nID8ga2V5IDogKGlkIHx8IGtleSB8fCBudWxsKTtcblxuY29uc3QgaW5wdXRWYWx1ZSA9ICh7IHZhbHVlLCBjb2VmZmljaWVudCB9OiBhbnkgPSB7fSkgPT5cbiAgW3ZhbHVlLCBjb2VmZmljaWVudF0uZXZlcnkoaXNOdW1iZXIpID8gK3ZhbHVlICogK2NvZWZmaWNpZW50IDogdW5kZWZpbmVkO1xuXG5jb25zdCBsb2dTdWJWYWx1ZSA9IChsb2dzOiBJTm9kZVRlcm1Mb2dzLCBrZXk6IHN0cmluZywgcHJvcDogc3RyaW5nLCBzaG93VW5pdHMgPSBmYWxzZSkgPT4ge1xuICBjb25zdCBsb2cgPSBsb2dzW2tleV0/Lltwcm9wXTtcbiAgcmV0dXJuIGxvZyA/IChcbiAgICBBcnJheS5pc0FycmF5KGxvZykgP1xuICAgICAgKGxvZyBhcyBzdHJpbmdbXSkubWFwKGlkID0+ICh7XG4gICAgICAgIGtleTogcHJvcCwgaWQsIHNob3dVbml0cyxcbiAgICAgICAgLy8gcmVjYWxjdWxhdGVkVmFsdWU6IGlucHV0VmFsdWUobG9nc1trZXldPy5sb2dzPy5baWRdKVxuICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpKSA6XG4gICAgICB7XG4gICAgICAgIGtleTogcHJvcCwgaWQ6IGxvZywgc2hvd1VuaXRzLFxuICAgICAgICAvLyByZWNhbGN1bGF0ZWRWYWx1ZTogaW5wdXRWYWx1ZShsb2dzW2tleV0/LmxvZ3M/Lltsb2ddKVxuICAgICAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWVcbiAgKSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IGxvZ1Byb3BlcnRpZXMgPSAobm9kZXM6IGJsYW5rTm9kZVtdLCBtb2RlbHM6IElNb2RlbFtdKSA9PlxuICBub2Rlcy5mbGF0TWFwKG5vZGUgPT5cbiAgICAoKG5vZGUgYXMgYW55KS5wcm9wZXJ0aWVzIHx8IFtdKS5tYXAoKHsgdGVybSB9KSA9PiB0ZXJtWydAaWQnXSlcbiAgKS5tYXAoaWQgPT4gKHsga2V5OiAncHJvcGVydHknLCBpZCwgc2hvd1VuaXRzOiBmYWxzZSwgY29uZmlnTW9kZWxzOiBmaW5kTW9kZWxzKG1vZGVscywgaWQpLm1hcCgoeyBtb2RlbCB9KSA9PiBtb2RlbCkgfSkpO1xuXG4vKipcbiAqIEluY2x1ZGUgdHJhbnNmb3JtYXRpb24gbW9kZWwgKGNvcHkgRW1pc3Npb25zIGZyb20gVHJhbnNmb3JtYXRpb24gdG8gQ3ljbGUpIGFzIHN1YlZhbHVlLlxuICpcbiAqIEBwYXJhbSBlbWlzc2lvbnNcbiAqIEByZXR1cm5zXG4gKi9cbmNvbnN0IGxvZ0VtaXNzaW9uVHJhbnNmb3JtYXRpb25zID0gKGVtaXNzaW9uczogRW1pc3Npb25bXSkgPT5cbiAgZW1pc3Npb25zLmZpbHRlcigoeyB0cmFuc2Zvcm1hdGlvbiB9KSA9PiAhIXRyYW5zZm9ybWF0aW9uPy5bJ0BpZCddKS5tYXAoKHsgdHJhbnNmb3JtYXRpb24gfSkgPT4gKHtcbiAgICBpZDogdHJhbnNmb3JtYXRpb24/LlsnQGlkJ10sXG4gICAga2V5OiAndHJhbnNmb3JtYXRpb24nLFxuICAgIHNob3dVbml0czogdHJ1ZSxcbiAgICBjb25maWdNb2RlbHM6IFsnY3ljbGUvdHJhbnNmb3JtYXRpb24nXVxuICB9KSk7XG5cbmNvbnN0IGluY2x1ZGVDeWNsZVN1YlZhbHVlID0gKHN1YlZhbHVlczogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlW10pID0+XG4gIHN1YlZhbHVlcy5zb21lKHYgPT4gdi5rZXkgIT09ICdwcm9wZXJ0eScpO1xuXG5jb25zdCBjeWNsZVN1YlZhbHVlID0gKHtcbiAgdGVybUlkLCBjb25maWdNb2RlbHMsIGlzUmVxdWlyZWQsIHN1YlZhbHVlcywgb3JpZ2luYWwsIHJlY2FsY3VsYXRlZFxufTogSUJsYW5rTm9kZUxvZykgPT4ge1xuICBjb25zdCBvcmlnaW5hbFZhbHVlID0gcmVkdWNlVmFsdWVzKG9yaWdpbmFsLmZpbHRlcigodjogYW55KSA9PiAhdi5pbnB1dHM/Lmxlbmd0aCAmJiAhdi50cmFuc2Zvcm1hdGlvbiksIHRlcm1JZCk7XG4gIGNvbnN0IHJlY2FsY3VsYXRlZFZhbHVlcyA9IHJlY2FsY3VsYXRlZC5maWx0ZXIoKHY6IGFueSkgPT4gIXYuaW5wdXRzPy5sZW5ndGggJiYgIXYudHJhbnNmb3JtYXRpb24pO1xuICBjb25zdCByZWNhbGN1bGF0ZWRWYWx1ZSA9IHJlZHVjZVZhbHVlcyhyZWNhbGN1bGF0ZWRWYWx1ZXMsIHRlcm1JZCk7XG4gIHJldHVybiBpbmNsdWRlQ3ljbGVTdWJWYWx1ZShzdWJWYWx1ZXMpICYmICFpc0VtcHR5KHJlY2FsY3VsYXRlZFZhbHVlKSA/IHtcbiAgICBrZXk6ICdjeWNsZScsXG4gICAgc2hvd1VuaXRzOiB0cnVlLFxuICAgIGNvbmZpZ01vZGVscyxcbiAgICBpc1JlcXVpcmVkLFxuICAgIG9yaWdpbmFsVmFsdWUsXG4gICAgcmVjYWxjdWxhdGVkVmFsdWUsXG4gICAgaXNSZWNhbGN1bGF0ZWQ6IGlzUmVjYWxjdWxhdGVkKHJlY2FsY3VsYXRlZFZhbHVlcylcbiAgfSBhcyBJQmxhbmtOb2RlTG9nU3ViVmFsdWUgOiBudWxsO1xufTtcblxuY29uc3QgbG9nU3ViVmFsdWVzID0gKFxuICBhbGxMb2dzOiBJTm9kZUxvZ3MsIGxvZ3M6IElOb2RlVGVybUxvZ3MsIG9yaWdpbmFsOiBibGFua05vZGVbXSwgcmVjYWxjdWxhdGVkOiBibGFua05vZGVbXSwgbW9kZWxzOiBJTW9kZWxbXSxcbiAgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkIH06IElDb25maWdNb2RlbERvY3NEYXRhXG4pID0+XG4gIG1lcmdlU3ViVmFsdWVzKFtcbiAgICAvLyBpbmNsdWRlIHByb3BlcnRpZXNcbiAgICAuLi5PYmplY3Qua2V5cyhsb2dzKVxuICAgICAgLmZpbHRlcihpZCA9PiBsb2dzW2lkXS5pc1Byb3BlcnR5KVxuICAgICAgLm1hcChpZCA9PiAoe1xuICAgICAgICBpZCxcbiAgICAgICAga2V5OiAncHJvcGVydHknLFxuICAgICAgICBzaG93VW5pdHM6IGZhbHNlLFxuICAgICAgICBjb25maWdNb2RlbHM6IChsb2dzW2lkXS5tb2RlbHMgfHwgW10pLmZpbHRlcih2ID0+IGhhc0xvZyhsb2dzW2lkXVt2XSkpXG4gICAgICB9KSksXG4gICAgLi4uKHR5cGUgPT09IFNjaGVtYVR5cGUuRW1pc3Npb24gPyBsb2dFbWlzc2lvblRyYW5zZm9ybWF0aW9ucyhyZWNhbGN1bGF0ZWQgYXMgRW1pc3Npb25bXSkgOiBbXSksXG4gICAgLi4uT2JqZWN0LmtleXMobG9ncykuZmxhdE1hcChrZXkgPT5cbiAgICAgIFtcbiAgICAgICAgbG9nU3ViVmFsdWUobG9ncywga2V5LCAnaW5wdXQnLCB0cnVlKSxcbiAgICAgICAgbG9nU3ViVmFsdWUobG9ncywga2V5LCAncHJvcGVydHknKVxuICAgICAgXVxuICAgICAgICAuZmxhdCgpXG4gICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgLm1hcCh2ID0+ICh7IC4uLnYsIGNvbmZpZ01vZGVsczogKHYuY29uZmlnTW9kZWxzIGFzIGFueVtdKSB8fCBba2V5XSB9KSlcbiAgICApLFxuICAgIC4uLmxvZ1Byb3BlcnRpZXMob3JpZ2luYWwsIG1vZGVscyksXG4gICAgLi4ubG9nUHJvcGVydGllcyhyZWNhbGN1bGF0ZWQsIG1vZGVscylcbiAgXSlcbiAgICAubWFwKCh7IGtleSwgaWQsIHNob3dVbml0cywgY29uZmlnTW9kZWxzLCBvcmlnaW5hbFZhbHVlLCByZWNhbGN1bGF0ZWRWYWx1ZSB9KSA9PiB7XG4gICAgICBvcmlnaW5hbFZhbHVlID0gb3JpZ2luYWxWYWx1ZSB8fCBibGFua05vZGVWYWx1ZShvcmlnaW5hbCwga2V5LCBpZCk7XG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZSA9IHJlY2FsY3VsYXRlZFZhbHVlIHx8IGJsYW5rTm9kZVZhbHVlKHJlY2FsY3VsYXRlZCwga2V5LCBpZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXksXG4gICAgICAgIGlkLFxuICAgICAgICBzaG93VW5pdHMsXG4gICAgICAgIGNvbmZpZ01vZGVsczogY29uZmlnTW9kZWxzLm1hcChjb25maWdNb2RlbFdpdGhEb2NzKG1vZGVscywgeyBub2RlVHlwZSwgdHlwZSwgdGVybUlkIH0sIHsga2V5LCBpZCB9IGFzIGFueSkpLFxuICAgICAgICBvcmlnaW5hbFZhbHVlLFxuICAgICAgICByZWNhbGN1bGF0ZWRWYWx1ZSxcbiAgICAgICAgaXNSZWNhbGN1bGF0ZWQ6ICFpc1VuZGVmaW5lZChyZWNhbGN1bGF0ZWRWYWx1ZSkgJiYgcmVjYWxjdWxhdGVkVmFsdWUgIT09IG9yaWdpbmFsVmFsdWUsXG4gICAgICAgIGlzUmVxdWlyZWQ6IHRydWVcbiAgICAgIH0gYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlO1xuICAgIH0pXG4gICAgLmZpbHRlcigoeyBjb25maWdNb2RlbHMsIG9yaWdpbmFsVmFsdWUsIHJlY2FsY3VsYXRlZFZhbHVlIH0pID0+IFtcbiAgICAgIGNvbmZpZ01vZGVscy5sZW5ndGggPiAwLFxuICAgICAgb3JpZ2luYWxWYWx1ZSAhPT0gJycgfHwgcmVjYWxjdWxhdGVkVmFsdWUgIT09ICcnXG4gICAgXS5ldmVyeShCb29sZWFuKSlcbiAgICAubWFwKHYgPT4gdi5rZXkgPT09ICdpbnB1dCcgPyBkYXRhV2l0aENvbmZpZ01vZGVsTG9ncyhhbGxMb2dzKSh2KSA6IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGxvZ3MpKHYpKTtcblxuY29uc3QgbG9nS2V5cyA9IChcbiAgbG9nczogSU5vZGVUZXJtTG9ncywgb3JpZ2luYWw6IGJsYW5rTm9kZVtdLCByZWNhbGN1bGF0ZWQ6IGJsYW5rTm9kZVtdLCBtb2RlbHM6IElNb2RlbFtdLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfVxuKSA9PlxuICBPYmplY3Qua2V5cyhsb2dzKVxuICAgIC5maWx0ZXIoa2V5ID0+IGxvZ3Nba2V5XS5pc0tleSAmJiBrZXkgIT09ICd0cmFuc2Zvcm1hdGlvbicpXG4gICAgLm1hcChrZXkgPT4gKHtcbiAgICAgIGtleSxcbiAgICAgIHNob3dVbml0czogZmFsc2UsXG4gICAgICBjb25maWdNb2RlbHM6IChsb2dzW2tleV0ubW9kZWxzIHx8IFtdKVxuICAgICAgICAubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCB7IG5vZGVUeXBlLCB0eXBlLCB0ZXJtSWQgfSwgeyBrZXkgfSBhcyBhbnkpKVxuICAgICAgICAvLyBvbmx5IHRha2UgdGhvc2Ugd2UgZm91bmQgYSBtYXRjaGluZyBtb2RlbCAoYXZvaWQgbWF0Y2hpbmcga2V5IG9uIHdyb25nIG5vZGUgdHlwZSlcbiAgICAgICAgLmZpbHRlcih2ID0+ICEhdi5tb2RlbCksXG4gICAgICBvcmlnaW5hbFZhbHVlOiBibGFua05vZGVWYWx1ZShvcmlnaW5hbCwga2V5KSxcbiAgICAgIHJlY2FsY3VsYXRlZFZhbHVlOiBibGFua05vZGVWYWx1ZShyZWNhbGN1bGF0ZWQsIGtleSksXG4gICAgICBpc1JlY2FsY3VsYXRlZDogaXNSZWNhbGN1bGF0ZWQocmVjYWxjdWxhdGVkLCBrZXkpLFxuICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgIH0gYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlKSlcbiAgICAuZmlsdGVyKHYgPT4gdi5jb25maWdNb2RlbHMubGVuZ3RoID4gMClcbiAgICAubWFwKGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKGxvZ3MpKTtcblxuY29uc3QgaXNNb2RlbEZvcklucHV0UHJvZHVjdCA9ICh0eXBlOiBTY2hlbWFUeXBlLCBrZXk6IHN0cmluZykgPT4gW1xuICBrZXkgIT09ICdoZXN0aWFBZ2dyZWdhdGVkRGF0YScsXG4gICFrZXkuaW5jbHVkZXMoJy9pbnB1dC8nKSB8fCB0eXBlID09PSBTY2hlbWFUeXBlLklucHV0LFxuICAha2V5LmluY2x1ZGVzKCcvcHJvZHVjdC8nKSB8fCB0eXBlID09PSBTY2hlbWFUeXBlLlByb2R1Y3QsXG5dLmV2ZXJ5KEJvb2xlYW4pO1xuXG5jb25zdCBpc0JhY2tncm91bmRJbnB1dCA9IChsb2c6IElOb2RlVGVybUxvZykgPT5cbiAgbG9nLm1ldGhvZFRpZXIgPT09IEVtaXNzaW9uTWV0aG9kVGllci5iYWNrZ3JvdW5kICYmICEhbG9nLmlucHV0ICYmIGxvZy5zaG91bGRSdW47XG5cbmNvbnN0IGlzTW9kZWxMb2cgPSAobG9nczogSU5vZGVUZXJtTG9ncywgdHlwZTogU2NoZW1hVHlwZSkgPT4gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGxvZyA9IGxvZ3Nba2V5XTtcbiAgcmV0dXJuICEhbG9nICYmIFtcbiAgICAvLyBoYW5kbGUgUHJvZHVjdCBzYW1lIGFzIElucHV0XG4gICAgaXNNb2RlbEZvcklucHV0UHJvZHVjdCh0eXBlLCBrZXkpLFxuICAgIGxvZy5tZXRob2RUaWVyICE9PSBFbWlzc2lvbk1ldGhvZFRpZXIuYmFja2dyb3VuZCxcbiAgICAhbG9nLmlzS2V5LFxuICAgIC8vICFsb2cuaW5wdXQsXG4gICAgIWxvZy5wcm9wZXJ0eVxuICBdLmV2ZXJ5KEJvb2xlYW4pICYmIFtcbiAgICAnc2hvdWxkUnVuJyBpbiBsb2csXG4gICAgJ3Nob3VsZFJ1bk9yY2hlc3RyYXRvcicgaW4gbG9nLFxuICAgICdydW5SZXF1aXJlZCcgaW4gbG9nXG4gIF0uc29tZShCb29sZWFuKTtcbn07XG5cbmNvbnN0IG1vZGVsQ29uZmlnTWF0Y2ggPSAodGVybUlkOiBzdHJpbmcsIG1vZGVsS2V5OiBzdHJpbmcsIG1vZGVsOiBzdHJpbmcpID0+IChjb25maWc6IElPcmNoZXN0cmF0b3JNb2RlbENvbmZpZykgPT5cbiAgW3Rlcm1JZCA9PT0gY29uZmlnLnZhbHVlLCBtb2RlbEtleSA9PT0gY29uZmlnLmtleSwgbW9kZWwgPT09IGNvbmZpZy5tb2RlbF0uZXZlcnkoQm9vbGVhbik7XG5cbmNvbnN0IG1vZGVsQ29uZmlnID0gKFxuICBtb2RlbHM6IChJT3JjaGVzdHJhdG9yTW9kZWxDb25maWcgfCBJT3JjaGVzdHJhdG9yTW9kZWxDb25maWdbXSlbXSwgdGVybUlkOiBzdHJpbmcsIG1vZGVsS2V5OiBzdHJpbmcsIG1vZGVsOiBzdHJpbmdcbikgPT4gbW9kZWxzLmZsYXQoKS5maW5kKG1vZGVsQ29uZmlnTWF0Y2godGVybUlkLCBtb2RlbEtleSwgbW9kZWwpKTtcblxuY29uc3QgbW9kZWxDb25maWdPcmRlciA9IChcbiAgbW9kZWxzOiAoSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnIHwgSU9yY2hlc3RyYXRvck1vZGVsQ29uZmlnW10pW10sIHRlcm1JZDogc3RyaW5nLCBtb2RlbEtleTogc3RyaW5nLCBtb2RlbDogc3RyaW5nXG4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBpbmRleGVzID0gbW9kZWxzLm1hcCgobSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBhcnJheUluZGV4ID0gQXJyYXkuaXNBcnJheShtKSA/IG1vZGVsQ29uZmlnT3JkZXIobSwgdGVybUlkLCBtb2RlbEtleSwgbW9kZWwpIDogJyc7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkobSlcbiAgICAgID8gYXJyYXlJbmRleFxuICAgICAgICA/IFtpbmRleCwgYXJyYXlJbmRleF0uam9pbignLicpXG4gICAgICAgIDogJydcbiAgICAgIDogbW9kZWxDb25maWdNYXRjaCh0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbCkobSlcbiAgICAgICAgPyBgJHtpbmRleH1gXG4gICAgICAgIDogJyc7XG4gIH0pLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGluZGV4ZXMubGVuZ3RoID8gaW5kZXhlc1swXSA6ICcnO1xufTtcblxuaW50ZXJmYWNlIElDb25maWdNb2RlbERvY3NEYXRhIHtcbiAgbm9kZVR5cGU6IE5vZGVUeXBlO1xuICB0eXBlOiBTY2hlbWFUeXBlO1xuICB0ZXJtSWQ6IHN0cmluZztcbiAgdGVybVR5cGU/OiBUZXJtVGVybVR5cGU7XG59XG5cbmNvbnN0IGNvbmZpZ01vZGVsV2l0aERvY3MgPSAoXG4gIG1vZGVsczogSU1vZGVsW10sIHsgbm9kZVR5cGUsIHR5cGUsIHRlcm1JZCwgdGVybVR5cGUgfTogSUNvbmZpZ01vZGVsRG9jc0RhdGEsIHN1YlZhbHVlPzogSUJsYW5rTm9kZUxvZ1N1YlZhbHVlXG4pID0+IChtZXRob2RJZDogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IG5vZGUgPSB7XG4gICAgJ0B0eXBlJzogbm9kZVR5cGUsXG4gICAgdGVybTogeyAnQGlkJzogc3ViVmFsdWU/LmlkIHx8IHRlcm1JZCB9LFxuICAgIG1ldGhvZE1vZGVsOiB7ICdAaWQnOiBtZXRob2RJZCB9XG4gIH0gYXMgYW55O1xuICByZXR1cm4ge1xuICAgIG1ldGhvZElkLFxuICAgIG1vZGVsOiBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsUGFyYW1zKG5vZGUpKSB8fFxuICAgICAgLy8gaGFuZGxlIFwibGl2ZUFuaW1hbFwiXG4gICAgICAodGVybVR5cGUgJiYgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCB0ZXJtVHlwZSkpKSB8fFxuICAgICAgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBgJHtzdWJWYWx1ZT8ua2V5fS4ke21ldGhvZElkfWApKSB8fFxuICAgICAgLy8gaGFuZGxlIFwiaW5wdXQucHJpY2VcIlxuICAgICAgZmluZE1hdGNoaW5nTW9kZWwobW9kZWxzLCBtb2RlbEtleVBhcmFtcyhub2RlLCBgJHt0eXBlPy50b0xvd2VyQ2FzZSgpfS4ke3N1YlZhbHVlPy5rZXl9YCkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJpbnB1dC5oZXN0aWFBZ2dyZWdhdGVkRGF0YVwiXG4gICAgICBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIG1vZGVsS2V5UGFyYW1zKG5vZGUsIGAke3R5cGU/LnRvTG93ZXJDYXNlKCl9LiR7bWV0aG9kSWR9YCkpIHx8XG4gICAgICAvLyBoYW5kbGUgXCJ0cmFuc2Zvcm1hdGlvblwiXG4gICAgICAoc3ViVmFsdWU/LmtleSA/IGZpbmRNYXRjaGluZ01vZGVsKG1vZGVscywgbW9kZWxLZXlQYXJhbXMobm9kZSwgc3ViVmFsdWU/LmtleSkpIDogdW5kZWZpbmVkKSB8fFxuICAgICAgLy8gaGFuZGxlIFwidHJhbnNmb3JtYXRpb24vaW5wdXQvZXhjcmV0YVwiIGFuZCBvdGhlciBtb2RlbHMgd2l0aCBcIi9cIlxuICAgICAgKG1ldGhvZElkLmluY2x1ZGVzKCcvJykgPyBmaW5kTWF0Y2hpbmdNb2RlbChtb2RlbHMsIHtcbiAgICAgICAgbW9kZWw6IG1ldGhvZElkLnNwbGl0KCcvJylbMF0sXG4gICAgICAgIG1vZGVsS2V5OiBtZXRob2RJZC5zcGxpdCgnLycpLnNsaWNlKDEpLmpvaW4oJy4nKVxuICAgICAgfSkgOiB1bmRlZmluZWQpXG4gIH07XG59O1xuXG5jb25zdCBjb25maWdNb2RlbFdpdGhMb2dzID0gKFxuICBkYXRhOiBJQmxhbmtOb2RlTG9nIHwgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlLCBsb2dzOiBJTm9kZVRlcm1Mb2dzLCBwcmV2aW91c01vZGVsU3VjY2VzcyA9IGZhbHNlXG4pID0+IChtb2RlbDogSUNvbmZpZ01vZGVsKSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGxvZ1N0YXR1cyhkYXRhLCBsb2dzPy5bbW9kZWwubWV0aG9kSWRdLCBwcmV2aW91c01vZGVsU3VjY2Vzcyk7XG4gIHJldHVybiB7XG4gICAgLi4ubW9kZWwsXG4gICAgbG9nczogbG9ncz8uW21vZGVsLm1ldGhvZElkXSxcbiAgICBzdGF0dXMsXG4gICAgc2hvd0xvZ3M6IGhhc0xvZ0RldGFpbHMoc3RhdHVzLCBsb2dzPy5bbW9kZWwubWV0aG9kSWRdKVxuICB9IGFzIElDb25maWdNb2RlbDtcbn07XG5cbi8qKlxuICogSGFuZGxlIGhpZXJhcmNoeSBza2lwIGlmIGEgbW9kZWwgYmVmb3JlIHN1Y2NlZWRlZC5cbiAqXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIGluZGV4XG4gKi9cbmNvbnN0IGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzID0gKG1vZGVsczogKElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdKVtdLCBpbmRleCA9IDApID0+XG4gIGZpbHRlckNvbmZpZ01vZGVscyhtb2RlbHNbaW5kZXhdLCBrZWVwQ29uZmlnTW9kZWxCeVN0YXR1cyhMb2dTdGF0dXMuc3VjY2VzcykpLmxlbmd0aCA+IDAgfHxcbiAgaW5kZXggPD0gbW9kZWxzLmxlbmd0aCAmJiBoYXNQcmV2aW91c01vZGVsU3VjY2Vzcyhtb2RlbHMsIGluZGV4ICsgMSk7XG5cbmNvbnN0IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzID0gKFxuICBsb2dzOiBJTm9kZUxvZ3MgfCBJTm9kZVRlcm1Mb2dzXG4pID0+IDxUIGV4dGVuZHMgKElCbGFua05vZGVMb2cgfCBJQmxhbmtOb2RlTG9nU3ViVmFsdWUpPihkYXRhOiBUKSA9PiB7XG4gIGNvbnN0IHN1YkxvZ0tleSA9IHN1YlZhbHVlTG9nS2V5KGRhdGEgYXMgSUJsYW5rTm9kZUxvZ1N1YlZhbHVlKTtcbiAgY29uc3QgbG9nID0gc3ViTG9nS2V5ID8gbG9nc1tzdWJMb2dLZXldIDogbG9ncztcbiAgY29uc3QgY29uZmlnTW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10gPSBbXTtcblxuICAvLyBnbyB0aHJvdWdoIG1vZGVscyBvbmUgYnkgb25lIHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBuZXh0IG1vZGVscyBpbiBoaWVyYXJjaHkgaGF2ZSBmYWlsZWRcbiAgZm9yIChjb25zdCBpbmRleCBpbiBkYXRhLmNvbmZpZ01vZGVscykge1xuICAgIGlmIChkYXRhLmNvbmZpZ01vZGVscy5oYXNPd25Qcm9wZXJ0eShpbmRleCkpIHtcbiAgICAgIGNvbnN0IG1vZGVsID0gZGF0YS5jb25maWdNb2RlbHNbaW5kZXhdO1xuICAgICAgY29uc3QgcHJldmlvdXNNb2RlbFN1Y2Nlc3MgPSAraW5kZXggPiAwICYmIGhhc1ByZXZpb3VzTW9kZWxTdWNjZXNzKGNvbmZpZ01vZGVscyk7XG4gICAgICBjb25zdCBuZXdNb2RlbCA9IEFycmF5LmlzQXJyYXkobW9kZWwpXG4gICAgICAgID8gbW9kZWwubWFwKGNvbmZpZ01vZGVsV2l0aExvZ3MoZGF0YSwgbG9nLCBwcmV2aW91c01vZGVsU3VjY2VzcykpXG4gICAgICAgIDogY29uZmlnTW9kZWxXaXRoTG9ncyhkYXRhLCBsb2csIHByZXZpb3VzTW9kZWxTdWNjZXNzKShtb2RlbCk7XG4gICAgICBjb25maWdNb2RlbHMucHVzaChuZXdNb2RlbCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5kYXRhLFxuICAgIGNvbmZpZ01vZGVsczogZmlsdGVyQ29uZmlnTW9kZWxzKGNvbmZpZ01vZGVscywgKG1vZGVsOiBJQ29uZmlnTW9kZWwpID0+XG4gICAgICAhW0xvZ1N0YXR1cy5ub3RSZXF1aXJlZF0uaW5jbHVkZXMobW9kZWw/LnN0YXR1cykgfHwgbW9kZWwubWV0aG9kSWQgPT09ICdlbWlzc2lvbk5vdFJlbGV2YW50J1xuICAgIClcbiAgfSBhcyBUO1xufTtcblxuLyoqXG4gKiBHcm91cCBtb2RlbHMgcnVubmluZyBpbiBwYXJhbGxlbCB1bmRlciB0aGUgc2FtZSBhcnJheSwgYXMgdGhleSBzaG91bGQgYXBwZWFyIHZlcnRpY2FsbHkuXG4gKlxuICogQHBhcmFtIGNvbmZpZyBUaGUgY29uZmlndXJhdGlvbi5cbiAqIEBwYXJhbSBtb2RlbHMgVGhlIGxpc3Qgb2YgbW9kZWxzXG4gKi9cbmNvbnN0IGdyb3VwUGFyYWxsZWxNb2RlbHMgPSAoY29uZmlnOiBJT3JjaGVzdHJhdG9yQ29uZmlnLCB0ZXJtSWQ6IHN0cmluZywgbW9kZWxLZXk6IHN0cmluZywgbW9kZWxzOiBJQ29uZmlnTW9kZWxbXSkgPT4ge1xuICBjb25zdCBtb2RlbHNXaXRoT3JkZXIgPSBtb2RlbHMubWFwKG1vZGVsID0+ICh7XG4gICAgbW9kZWw6IHtcbiAgICAgIC4uLm1vZGVsLFxuICAgICAgY29uZmlnOiBtb2RlbENvbmZpZyhjb25maWcubW9kZWxzLCB0ZXJtSWQsIG1vZGVsS2V5LCBtb2RlbC5tZXRob2RJZClcbiAgICB9LFxuICAgIG9yZGVyOiBtb2RlbENvbmZpZ09yZGVyKGNvbmZpZy5tb2RlbHMsIHRlcm1JZCwgbW9kZWxLZXksIG1vZGVsLm1ldGhvZElkKVxuICB9KSk7XG4gIHJldHVybiBtb2RlbHNXaXRoT3JkZXJcbiAgICAucmVkdWNlKChwcmV2LCB7IG1vZGVsLCBvcmRlciB9KSA9PiB7XG4gICAgICBjb25zdCBpc0FycmF5ID0gb3JkZXIuaW5jbHVkZXMoJy4nKTtcbiAgICAgIGNvbnN0IGluZGV4ID0gaXNBcnJheSA/IG9yZGVyLnNwbGl0KCcuJylbMF0gOiBvcmRlciB8fCBwcmV2Lmxlbmd0aDtcbiAgICAgIHByZXZbaW5kZXhdID0gaXNBcnJheSA/IFsuLi4ocHJldltpbmRleF0gfHwgW10pLCBtb2RlbF0gOiBbbW9kZWxdO1xuICAgICAgcmV0dXJuIHByZXY7XG4gICAgfSwgW10gYXMgSUNvbmZpZ01vZGVsW11bXSlcbiAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgLm1hcCh2ID0+IHYubGVuZ3RoID09PSAxID8gdlswXSA6IHYpO1xufTtcblxuY29uc3QgYWxsUGFyYWxsZWwgPSAobW9kZWxzOiAoSUNvbmZpZ01vZGVsIHwgSUNvbmZpZ01vZGVsW10pW10pID0+XG4gIG1vZGVscy5sZW5ndGggPT09IDEgJiYgQXJyYXkuaXNBcnJheShtb2RlbHNbMF0pICYmIG1vZGVsc1swXS5sZW5ndGggPiAxO1xuXG5jb25zdCBibGFua05vZGVNb2RlbElkID0gKHZhbHVlOiBibGFua05vZGUpID0+XG4gIHZhbHVlWydAdHlwZSddID09PSBTY2hlbWFUeXBlLk1lYXN1cmVtZW50ID8gKHZhbHVlIGFzIE1lYXN1cmVtZW50KS5tZXRob2Q/LlsnQGlkJ10gOiAodmFsdWUgYXMgYW55KS5tZXRob2RNb2RlbD8uWydAaWQnXTtcblxuY29uc3QgdmFsdWVCeU1ldGhvZElkID0gKHZhbHVlczogYmxhbmtOb2RlW10sIG1ldGhvZElkOiBzdHJpbmcsIHRlcm1JZDogc3RyaW5nKSA9PlxuICBwcm9wZXJ0eVZhbHVlKHZhbHVlcy5maW5kKHYgPT4gYmxhbmtOb2RlTW9kZWxJZCh2KSA9PT0gbWV0aG9kSWQpPy52YWx1ZSBhcyBudW1iZXJbXSwgdGVybUlkKTtcblxuY29uc3QgZ3JvdXBQYXJhbGxlbFZhbHVlcyA9ICh2YWx1ZXM6IGJsYW5rTm9kZVtdLCBtb2RlbHM6IElDb25maWdNb2RlbCB8IElDb25maWdNb2RlbFtdLCB0ZXJtSWQ6IHN0cmluZykgPT5cbiAgQXJyYXkuaXNBcnJheShtb2RlbHMpXG4gICAgPyBPYmplY3QuZnJvbUVudHJpZXMobW9kZWxzLm1hcChtb2RlbCA9PiBbbW9kZWwubWV0aG9kSWQsIHZhbHVlQnlNZXRob2RJZCh2YWx1ZXMsIG1vZGVsLm1ldGhvZElkLCB0ZXJtSWQpXSkpXG4gICAgOiB7fTtcblxuZXhwb3J0IGNvbnN0IGdyb3VwTG9nc0J5VGVybSA9IChcbiAgbm9kZVR5cGU6IE5vZGVUeXBlLCBsb2dzOiBJTm9kZUxvZ3MsIG1vZGVsczogSU1vZGVsW10sIGNvbmZpZzogSU9yY2hlc3RyYXRvckNvbmZpZyxcbiAgYWxsT3JpZ2luYWxWYWx1ZXM6IGJsYW5rTm9kZVtdLCBhbGxSZWNhbGN1bGF0ZWRWYWx1ZXM6IGJsYW5rTm9kZVtdLFxuICBub2RlS2V5Pzogc3RyaW5nXG4pID0+IHtcbiAgY29uc3Qgb3JpZ2luYWxWYWx1ZXMgPSAoYWxsT3JpZ2luYWxWYWx1ZXMgfHwgW10pLmZpbHRlcih2YWx1ZSA9PiAhKHZhbHVlIGFzIGFueSkuZGVsZXRlZCk7XG4gIGNvbnN0IHJlY2FsY3VsYXRlZFZhbHVlcyA9IChhbGxSZWNhbGN1bGF0ZWRWYWx1ZXMgfHwgW10pLmZpbHRlcih2YWx1ZSA9PiAhKHZhbHVlIGFzIGFueSkuZGVsZXRlZCk7XG4gIGNvbnN0IHR5cGU6IFNjaGVtYVR5cGUgPSBvcmlnaW5hbFZhbHVlcy5sZW5ndGggP1xuICAgIG9yaWdpbmFsVmFsdWVzWzBdWydAdHlwZSddIHx8IG9yaWdpbmFsVmFsdWVzWzBdLnR5cGUgOlxuICAgIHJlY2FsY3VsYXRlZFZhbHVlcy5sZW5ndGggP1xuICAgICAgcmVjYWxjdWxhdGVkVmFsdWVzWzBdWydAdHlwZSddIHx8IHJlY2FsY3VsYXRlZFZhbHVlc1swXS50eXBlIDpcbiAgICAgIHVuZGVmaW5lZDtcblxuICByZXR1cm4gKHRlcm06IElUZXJtSlNPTkxEKTogSUJsYW5rTm9kZUxvZyA9PiB7XG4gICAgY29uc3QgdGVybUlkID0gdGVybVsnQGlkJ107XG4gICAgY29uc3QgdGVybVR5cGUgPSB0ZXJtLnRlcm1UeXBlO1xuICAgIGNvbnN0IHRlcm1Mb2dzID0gZ2V0KGxvZ3MsIHRlcm1JZCwge30pIGFzIElOb2RlVGVybUxvZ3M7XG4gICAgY29uc3Qgb3JpZ2luYWwgPSBvcmlnaW5hbFZhbHVlcy5maWx0ZXIodiA9PiB0ZXJtSWQgPT09IHYudGVybSFbJ0BpZCddKTtcbiAgICBjb25zdCByZWNhbGN1bGF0ZWQgPSByZWNhbGN1bGF0ZWRWYWx1ZXMuZmlsdGVyKHYgPT4gdGVybUlkID09PSB2LnRlcm0hWydAaWQnXSk7XG4gICAgY29uc3QgaGFzRGF0YSA9ICEhb3JpZ2luYWwubGVuZ3RoIHx8ICEhcmVjYWxjdWxhdGVkLmxlbmd0aCB8fCBPYmplY3Qua2V5cyh0ZXJtTG9ncykubGVuZ3RoID4gMDtcbiAgICBjb25zdCBjb25maWdNb2RlbHNEYXRhID0geyBub2RlVHlwZSwgdHlwZSwgdGVybUlkLCB0ZXJtVHlwZSB9O1xuICAgIGNvbnN0IGNvbmZpZ01vZGVscyA9IGdyb3VwUGFyYWxsZWxNb2RlbHMoXG4gICAgICBjb25maWcsIHRlcm1JZCwgbm9kZUtleSEsXG4gICAgICB1bmlxdWUoW1xuICAgICAgICAuLi4odGVybUxvZ3MubW9kZWxzIHx8IFtdKS5maWx0ZXIoaXNNb2RlbExvZyh0ZXJtTG9ncywgdHlwZSkpLFxuICAgICAgICAvLyAuLi5maW5kQ29uZmlnTW9kZWxzKGNvbmZpZywgdGVybUlkLCBub2RlS2V5ISwgbW9kZWxzKS5tYXAoKHsgbW9kZWwgfSkgPT4gbW9kZWwgYXMgc3RyaW5nKVxuICAgICAgXSkubWFwKGNvbmZpZ01vZGVsV2l0aERvY3MobW9kZWxzLCBjb25maWdNb2RlbHNEYXRhKSlcbiAgICApO1xuICAgIGNvbnN0IGtleXMgPSBsb2dLZXlzKHRlcm1Mb2dzLCBvcmlnaW5hbCwgcmVjYWxjdWxhdGVkLCBtb2RlbHMsIGNvbmZpZ01vZGVsc0RhdGEpO1xuICAgIGNvbnN0IHN1YlZhbHVlcyA9IGxvZ1N1YlZhbHVlcyhsb2dzLCB0ZXJtTG9ncywgb3JpZ2luYWwsIHJlY2FsY3VsYXRlZCwgbW9kZWxzLCBjb25maWdNb2RlbHNEYXRhKTtcbiAgICBjb25zdCBpc1JlcXVpcmVkID0gIShcbiAgICAgIE9iamVjdFxuICAgICAgICAudmFsdWVzKHRlcm1Mb2dzKVxuICAgICAgICAuZmlsdGVyKHYgPT4gdHlwZW9mIHYgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KHYpICYmICF2LmlzS2V5KVxuICAgICAgICAuZXZlcnkodiA9PiB2LnJ1blJlcXVpcmVkID09PSBmYWxzZSlcbiAgICApO1xuXG4gICAgY29uc3Qgbm9kZUxvZzogSUJsYW5rTm9kZUxvZyA9IGRhdGFXaXRoQ29uZmlnTW9kZWxMb2dzKHRlcm1Mb2dzKSh7XG4gICAgICBpc09wZW46IHRydWUsXG4gICAgICBjYW5PcGVuOiBrZXlzLmxlbmd0aCA+IDAgfHwgc3ViVmFsdWVzLmxlbmd0aCA+IDAsXG4gICAgICB0ZXJtSWQsXG4gICAgICB0ZXJtLFxuICAgICAgdHlwZSxcbiAgICAgIGNvbmZpZ01vZGVscyxcbiAgICAgIG9yaWdpbmFsLFxuICAgICAgb3JpZ2luYWxWYWx1ZTogcmVkdWNlVmFsdWVzKG9yaWdpbmFsLCB0ZXJtSWQpLFxuICAgICAgcmVjYWxjdWxhdGVkLFxuICAgICAgcmVjYWxjdWxhdGVkVmFsdWU6IHJlZHVjZVZhbHVlcyhyZWNhbGN1bGF0ZWQsIHRlcm1JZCksXG4gICAgICBpc09yaWdpbmFsOiAhIW9yaWdpbmFsLmxlbmd0aCxcbiAgICAgIGlzUmVjYWxjdWxhdGVkOiBpc1JlY2FsY3VsYXRlZChyZWNhbGN1bGF0ZWQpLFxuICAgICAgaGFzRGF0YSxcbiAgICAgIGlzUmVxdWlyZWQsXG4gICAgICBsb2dzOiB0ZXJtTG9ncyxcbiAgICAgIGtleXMsXG4gICAgICBzdWJWYWx1ZXMsXG4gICAgICBhbGxQYXJhbGxlbDogYWxsUGFyYWxsZWwoY29uZmlnTW9kZWxzKSxcbiAgICAgIG9yaWdpbmFsVmFsdWVCeU1ldGhvZElkOiBncm91cFBhcmFsbGVsVmFsdWVzKG9yaWdpbmFsLCBjb25maWdNb2RlbHNbMF0sIHRlcm1JZCksXG4gICAgICByZWNhbGN1bGF0ZWRWYWx1ZUJ5TWV0aG9kSWQ6IGdyb3VwUGFyYWxsZWxWYWx1ZXMocmVjYWxjdWxhdGVkLCBjb25maWdNb2RlbHNbMF0sIHRlcm1JZClcbiAgICB9KTtcbiAgICBjb25zdCBzdWJWYWx1ZSA9IGN5Y2xlU3ViVmFsdWUobm9kZUxvZyk7XG5cbiAgICByZXR1cm4gc3ViVmFsdWUgJiYgc3ViVmFsdWVzPy5sZW5ndGhcbiAgICAgID8ge1xuICAgICAgICAuLi5ub2RlTG9nLFxuICAgICAgICBtb2RlbHNJblN1YlZhbHVlczogdHJ1ZSxcbiAgICAgICAgc3ViVmFsdWVzOiBbXG4gICAgICAgICAgc3ViVmFsdWUsXG4gICAgICAgICAgLi4uc3ViVmFsdWVzXG4gICAgICAgIF1cbiAgICAgIH0gLy8gaWYgd2UgaW5jbHVkZSB0aGUgQ3ljbGUgdmFsdWUsIGl0IGJlY29tZXMgdGhlIG1haW4gcmVmZXJlbmNlIG9mIHRoZSBtb2RlbHNcbiAgICAgIDogbm9kZUxvZztcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBtb2RlbENvdW50ID0gKGJsYW5rTm9kZUxvZ3M6IElCbGFua05vZGVMb2dbXSkgPT4gTWF0aC5tYXguYXBwbHkoTWF0aC5tYXgsIFtcbiAgMCxcbiAgLi4uYmxhbmtOb2RlTG9ncy5mbGF0TWFwKHYgPT4gW1xuICAgIHYuY29uZmlnTW9kZWxzLmxlbmd0aCxcbiAgICAuLi4odi5zdWJWYWx1ZXMubWFwKHMgPT4gcy5jb25maWdNb2RlbHM/Lmxlbmd0aCB8fCAwKSksXG4gICAgLi4uKHYua2V5cy5tYXAocyA9PiBzLmNvbmZpZ01vZGVscz8ubGVuZ3RoIHx8IDApKVxuICBdKVxuXSk7XG5cbmV4cG9ydCBjb25zdCBsb2dWYWx1ZUFycmF5ID0gKHZhbHVlOiBzdHJpbmcpOiBhbnlbXSA9PlxuICBbJzsnLCAnOiddLnNvbWUodiA9PiB2YWx1ZS5pbmNsdWRlcyh2KSkgP1xuICAgIHZhbHVlLnNwbGl0KCc7JykuZmxhdE1hcCh2ID0+IHtcbiAgICAgIGNvbnN0IHJlcyA9IHYuc3BsaXQoJ18nKS5tYXAodnYgPT4gdnYuc3BsaXQoJzonKSk7XG4gICAgICByZXR1cm4gcmVzLmxlbmd0aCA8PSAxID8gcmVzLmZsYXQoKSA6IE9iamVjdC5mcm9tRW50cmllcyhyZXMpO1xuICAgIH0pIDpcbiAgICBudWxsO1xuIl19
|
|
@@ -23,8 +23,7 @@ const termTypeToLabel = {
|
|
|
23
23
|
const termKeyToLabel = {
|
|
24
24
|
pubchem: 'PubChem',
|
|
25
25
|
casNumber: 'CAS Number',
|
|
26
|
-
chemidplus: 'ChemIDplus',
|
|
27
26
|
agrovoc: 'AGROVOC'
|
|
28
27
|
};
|
|
29
28
|
export const termTypeLabel = (value = 'N/A') => termTypeToLabel[value] || termKeyToLabel[value] || keyToLabel(value);
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVybXMubW9kZWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVybXMvdGVybXMubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFxQixZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWpELE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLElBQXdCLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUNsRixHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7SUFDbEMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVM7SUFDdkQsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLFdBQVc7SUFDakQsTUFBTSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxlQUFlO0NBQzFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUNoQixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLGlCQUFpQixFQUFzQixFQUFFLEdBQXNCLEVBQUUsRUFBRSxDQUNwRyxDQUFDLGlCQUFpQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUVyRSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsWUFBWSxFQUFzQixFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3pFLElBQUksRUFBRSxZQUFZLElBQUksRUFBRTtDQUN6QixDQUFDLENBQUM7QUFFSCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQXNCLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDNUUsR0FBRyxFQUFFLFFBQVM7SUFDZCxHQUFHLEVBQUUsU0FBVTtDQUNoQixDQUFDLENBQUM7QUFFSCxNQUFNLGVBQWUsR0FFakI7SUFDRixDQUFDLFlBQVksQ0FBQyx5QkFBeUIsQ0FBQyxFQUFFLG9CQUFvQjtJQUM5RCxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLHNCQUFzQjtJQUN4RCxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsRUFBRSw2QkFBNkI7SUFDekQsQ0FBQyxZQUFZLENBQUMsZUFBZSxDQUFDLEVBQUUsb0JBQW9CO0lBQ3BELENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxFQUFFLGdCQUFnQjtDQUM5QyxDQUFDO0FBRUYsTUFBTSxjQUFjLEdBRWhCO0lBQ0YsT0FBTyxFQUFFLFNBQVM7SUFDbEIsU0FBUyxFQUFFLFlBQVk7SUFDdkIsT0FBTyxFQUFFLFNBQVM7Q0FDbkIsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLFFBQTRDLEtBQUssRUFBVSxFQUFFLENBQ3pGLGVBQWUsQ0FBQyxLQUFLLENBQUMsSUFBSSxjQUFjLENBQUMsS0FBSyxDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVGVybSwgSVRlcm1KU09OTEQsIFRlcm1UZXJtVHlwZSwgaXNFeHBhbmRhYmxlIH0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9zY2hlbWEnO1xuaW1wb3J0IHsga2V5VG9MYWJlbCB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuXG5leHBvcnQgY29uc3QgdGVybVByb3BlcnRpZXMgPSAodGVybTogVGVybSB8IElUZXJtSlNPTkxEKSA9PiBPYmplY3Qua2V5cyh0ZXJtKS5maWx0ZXIoXG4gIGtleSA9PiAhaXNFeHBhbmRhYmxlKHRlcm1ba2V5XSkgJiYgIVtcbiAgICAncGlubmVkJywgJ2V4cGFuZGVkJywgJ2V4dGVuZGVkJywgJ3NlbGVjdGVkJywgJ2xvYWRpbmcnLFxuICAgICdfc2NvcmUnLCAnQHR5cGUnLCAnQGlkJywgJ0Bjb250ZXh0JywgJ2NyZWF0ZWRBdCcsXG4gICAgJ25hbWUnLCAnc3lub255bXMnLCAndGVybVR5cGUnLCAnbG9jYXRpb24nLCAncHJvcGVydGllcycsICdzY2hlbWFWZXJzaW9uJ1xuICBdLmluY2x1ZGVzKGtleSlcbik7XG5cbmV4cG9ydCBjb25zdCBmaW5kUHJvcGVydHlCeUlkID0gKHsgZGVmYXVsdFByb3BlcnRpZXMgfTogVGVybSB8IElUZXJtSlNPTkxELCBrZXk6IGtleW9mIElUZXJtSlNPTkxEKSA9PlxuICAoZGVmYXVsdFByb3BlcnRpZXMgfHwgW10pLmZpbmQoKHsgdGVybSB9KSA9PiB0ZXJtIVsnQGlkJ10gPT09IGtleSk7XG5cbmV4cG9ydCBjb25zdCB0ZXJtTG9jYXRpb25OYW1lID0gKHsgZ2FkbUZ1bGxOYW1lIH06IFRlcm0gfCBJVGVybUpTT05MRCkgPT4gKHtcbiAgbmFtZTogZ2FkbUZ1bGxOYW1lIHx8ICcnXG59KTtcblxuZXhwb3J0IGNvbnN0IHRlcm1Mb2NhdGlvbiA9ICh7IGxhdGl0dWRlLCBsb25naXR1ZGUgfTogVGVybSB8IElUZXJtSlNPTkxEKSA9PiAoe1xuICBsYXQ6IGxhdGl0dWRlISxcbiAgbG5nOiBsb25naXR1ZGUhXG59KTtcblxuY29uc3QgdGVybVR5cGVUb0xhYmVsOiB7XG4gIFt0eXBlIGluIFRlcm1UZXJtVHlwZV0/OiBzdHJpbmc7XG59ID0ge1xuICBbVGVybVRlcm1UeXBlLm1ldGhvZEVtaXNzaW9uUmVzb3VyY2VVc2VdOiAnTWV0aG9kIChFbWlzc2lvbnMpJyxcbiAgW1Rlcm1UZXJtVHlwZS5tZXRob2RNZWFzdXJlbWVudF06ICdNZXRob2QgKE1lYXN1cmVtZW50KScsXG4gIFtUZXJtVGVybVR5cGUucGVzdGljaWRlQUldOiAnUGVzdGljaWRlIEFjdGl2ZSBJbmdyZWRpZW50JyxcbiAgW1Rlcm1UZXJtVHlwZS5zdGFuZGFyZHNMYWJlbHNdOiAnU3RhbmRhcmRzICYgTGFiZWxzJyxcbiAgW1Rlcm1UZXJtVHlwZS51c2RhU29pbFR5cGVdOiAnVVNEQSBTb2lsIFR5cGUnXG59O1xuXG5jb25zdCB0ZXJtS2V5VG9MYWJlbDoge1xuICBbcHJvcGVydHkgaW4ga2V5b2YgVGVybV0/OiBzdHJpbmc7XG59ID0ge1xuICBwdWJjaGVtOiAnUHViQ2hlbScsXG4gIGNhc051bWJlcjogJ0NBUyBOdW1iZXInLFxuICBhZ3Jvdm9jOiAnQUdST1ZPQydcbn07XG5cbmV4cG9ydCBjb25zdCB0ZXJtVHlwZUxhYmVsID0gKHZhbHVlOiBUZXJtVGVybVR5cGUgfCBrZXlvZiBUZXJtIHwgc3RyaW5nID0gJ04vQScpOiBzdHJpbmcgPT5cbiAgdGVybVR5cGVUb0xhYmVsW3ZhbHVlXSB8fCB0ZXJtS2V5VG9MYWJlbFt2YWx1ZV0gfHwga2V5VG9MYWJlbCh2YWx1ZSk7XG4iXX0=
|