@hestia-earth/ui-components 0.19.1 → 0.19.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/esm2020/common/maps-utils.mjs +13 -6
- package/esm2020/files/files-error.model.mjs +10 -4
- package/esm2020/files/files-form.model.mjs +2 -2
- package/esm2020/files/files-upload-errors/files-upload-errors.component.mjs +4 -3
- package/fesm2015/hestia-earth-ui-components.mjs +25 -11
- package/fesm2015/hestia-earth-ui-components.mjs.map +1 -1
- package/fesm2020/hestia-earth-ui-components.mjs +25 -11
- package/fesm2020/hestia-earth-ui-components.mjs.map +1 -1
- package/files/files-upload-errors/files-upload-errors.component.d.ts +1 -0
- package/impact-assessments/impact-assessments-products-logs/impact-assessments-products-logs.component.d.ts +0 -1
- package/package.json +1 -1
|
@@ -232,7 +232,7 @@ const propertyTypeValue = {
|
|
|
232
232
|
integer: val => +(`${val}` || '0'),
|
|
233
233
|
boolean: val => (`${val}` || '').toLowerCase() === 'true'
|
|
234
234
|
};
|
|
235
|
-
const propertyValue = (schema, value) => schema.type ? (Array.isArray(schema.type) ?
|
|
235
|
+
const propertyValue = (schema, value) => schema.type ? (Array.isArray(schema.type) && typeof value in propertyTypeValue ?
|
|
236
236
|
propertyTypeValue[typeof value](value, schema) :
|
|
237
237
|
propertyTypeValue[schema.type](value, schema)) :
|
|
238
238
|
safeJSONStringify(value);
|
|
@@ -561,4 +561,4 @@ export const calculateCycleStartDate = (properties, property) => {
|
|
|
561
561
|
const endDate = siblingProperty(properties, property, 'endDate');
|
|
562
562
|
return moment(endDate.value).locale('en-gb').subtract(cycleDuration.value, 'days').format('YYYY-MM-DD');
|
|
563
563
|
};
|
|
564
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ2UsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFDM0QsZ0JBQWdCLEVBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUNhLHdCQUF3QixFQUFFLFdBQVcsRUFDdkQsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFDdEQsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQ2hGLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUN6RixrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFDakUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckgsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJ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YSxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBRSxDQUFDO0lBQzlFLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBRSxDQUFDO0lBQ2xFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZW4tZ2InO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBkaWZmSW5EYXlzLCBpc051bWJlciB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHtcbiAgSlNPTiBhcyBIZXN0aWFKc29uLCBTY2hlbWFUeXBlLCBOb2RlVHlwZSwgaXNUeXBlTm9kZSwgaXNUeXBlVmFsaWQsIGlzRXhwYW5kYWJsZSxcbiAgU2l0ZSwgT3JnYW5pc2F0aW9uLCB0eXBlVG9TY2hlbWFUeXBlXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7XG4gIGRlZmluaXRpb25zLCBkZWZpbml0aW9uLCBJRGVmaW5pdGlvbk9iamVjdCwgSURlZmluaXRpb25BcnJheSwgZ2VuZXJpY1R5cGVcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYSc7XG5cbmltcG9ydCB7XG4gIElWYWxpZGF0aW9uRXJyb3IsIGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZSwgZm9ybWF0RXJyb3IsXG4gIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IsIGVycm9ySGFzRXJyb3IsIGVycm9ySGFzV2FybmluZywgdmFsaWRhdGlvbkVycm9yTGV2ZWwsXG4gIG1pc3NpbmdOb2RlRXJyb3JzLCBpc01pc3NpbmdPbmVPZkVycm9yLCBpc01pZ3JhdGlvbkVycm9yLCBtaWdyYXRpb25FcnJvck1lc3NhZ2Vcbn0gZnJvbSAnLi9maWxlcy1lcnJvci5tb2RlbCc7XG5pbXBvcnQge1xuICBzY2hlbWFSZXF1aXJlZFByb3BlcnRpZXMsIHZhbHVlVHlwZVRvRGVmYXVsdCwgZGVmaW5pdGlvblRvU2NoZW1hVHlwZSwgYXZhaWxhYmxlUHJvcGVydGllcyxcbiAgbmVzdGluZ1R5cGVFbmFibGVkLCBuZXN0aW5nRW5hYmxlZCwgbGlua1R5cGVFbmFibGVkLCBpc1NjaGVtYUlyaVxufSBmcm9tICcuLi9zY2hlbWEvc2NoZW1hLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWF0Y2hDb3VudHJ5IH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBiYXNlVXJsLCBjb2RlLCBnbG9zc2FyeUxpbmssIG1hcHNVcmwsIHNhZmVKU09OUGFyc2UsIHNhZmVKU09OU3RyaW5naWZ5LCBzY2hlbWFMaW5rIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgbWlzc2luZ05vZGVFcnJvck1lc3NhZ2UgPSAoeyAnQHR5cGUnOiBfdCwgdHlwZSwgbmFtZSB9OiBhbnksIG1pc3NpbmdJZEVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAgKF90IHx8IHR5cGUpID09PSAnVGVybSdcbiAgICAvLyBtaWdyYXRlZCBmcm9tIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgID8gaXNNaWdyYXRpb25FcnJvcihtaXNzaW5nSWRFcnJvcilcbiAgICAgID8gbWlncmF0aW9uRXJyb3JNZXNzYWdlKG1pc3NpbmdJZEVycm9yKVxuICAgICAgOiBgJHtuYW1lID8gYFRoZSB0ZXJtIFwiJHtuYW1lfVwiYCA6ICdUaGlzIHRlcm0nfSBkb2Vzbid0IG1hdGNoIGEgdGVybSBpbiB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LlxuICAgICAgUGxlYXNlIGNoZWNrIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3NhcnknKX0gZm9yIHRoZSBjb3JyZWN0ICR7Y29kZSgnQGlkJyl9IG9yICR7Y29kZSgnbmFtZScpfSBhbmQgc3BlbGxpbmcuYFxuICAgIDogYFRoaXMgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSBkb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGxpbmsgdG8gYW4gZXhpc3RpbmdcbiAgICAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGluIEhlc3RpYSwgcGxlYXNlIGNoZWNrIHRoZSAke2NvZGUoJ25hbWUnKX0gb3IgJHtjb2RlKCdAaWQnKX0gaXMgY29ycmVjdC5cbiAgICBJZiB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgYSBuZXcgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSwgcGxlYXNlIGlkZW50aWZ5IGl0IHdpdGggYW4gJHtjb2RlKCdpZCcpfSBmaWVsZC5gO1xuXG5leHBvcnQgY29uc3QgQVJSQVlfREVMSU1JVEVSID0gJzsnO1xuY29uc3QgcHJpdmF0ZUtleXMgPSBbXG4gICdmaWxlcGF0aCdcbl07XG5cbmV4cG9ydCB0eXBlIHN1Z2dlc3Rpb25UeXBlID0gTm9kZVR5cGUgfCAnc2VsZWN0JyB8ICdkZWZhdWx0JztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U3VnZ2VzdGlvblR5cGU6IHN1Z2dlc3Rpb25UeXBlID0gJ2RlZmF1bHQnO1xuXG5pbnRlcmZhY2UgSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24ge1xuICB0eXBlPzogc3VnZ2VzdGlvblR5cGU7XG4gIHF1ZXJpZXM/OiBhbnlbXTtcbiAgdmFsdWVzPzogc3RyaW5nW107XG4gIHBhcmVudExldmVsPzogbnVtYmVyO1xuICBpc0xpbmtOb2RlPzogYm9vbGVhbjtcbiAgaXNVbmlxdWVLZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5ld1Byb3BlcnR5IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcHJvcD86IGRlZmluaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVycm9yUHJvcGVydHkge1xuICBsZXZlbD86IHZhbGlkYXRpb25FcnJvckxldmVsO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlUHJvcGVydHkge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgYnkgdGhlIHVzZXJcbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIGlzQWRkZWQ/OiBib29sZWFuO1xuICBzY2hlbWFUeXBlOiBTY2hlbWFUeXBlO1xuICBrZXk6IHN0cmluZztcbiAgZnVsbEtleTogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGJvb2xlYW47XG4gIHN1Z2dlc3Rpb25zPzogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb247XG4gIHNjaGVtYT86IGRlZmluaXRpb247XG4gIGVycm9yPzogSVZhbGlkYXRpb25FcnJvcjtcbiAgaGFzRXJyb3I/OiBib29sZWFuO1xuICBoYXNXYXJuaW5nPzogYm9vbGVhbjtcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICBjbG9zZWRWaXNpYmxlPzogYm9vbGVhbjtcbiAgbmV3UHJvcGVydHk/OiBJTmV3UHJvcGVydHk7XG4gIG5ld0Vycm9yPzogSUVycm9yUHJvcGVydHk7XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICBpc0hpZGRlbj86IGJvb2xlYW47XG4gIGlzQXJyYXk/OiBib29sZWFuO1xuICBpc0V4cGFuZGFibGU/OiBib29sZWFuO1xuICBpc09wZW4/OiBib29sZWFuO1xuICBwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W107XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBleHRlcm5hbFVybD86IHtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICAvLyBkZWZhdWx0IGlzIGV4dGVybmFsLWxpbmstYWx0XG4gICAgaWNvbj86IHN0cmluZztcbiAgICB1cmxQYXJhbVZhbHVlPzogYm9vbGVhbjtcbiAgfTtcbiAgLy8gbWFraW5nIGNoYW5nZXMgb24gdGhlIHByb3BlcnR5XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICAvLyB1c2VyIG1hZGUgY2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgY2hhbmdlZD86IGJvb2xlYW47XG4gIGZvcm1hdHRlcjogKHZhbHVlOiBhbnkpID0+IHN0cmluZztcbn1cblxuY29uc3Qgc3RyaW5nVmFsdWUgPSAodmFsdWU6IGFueSkgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwgPyAnJyA6IHZhbHVlKS50b1N0cmluZygpO1xuY29uc3Qgbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGggPSAoa2V5OiBzdHJpbmcpID0+IGtleS5yZXBsYWNlKC9cXFtcXGQrXFxdJC8sICcnKTtcbmV4cG9ydCBjb25zdCBrZXlUb0RhdGFQYXRoID0gKGtleTogc3RyaW5nKSA9PiBrZXk/Lmxlbmd0aCA/IGAuJHtrZXl9YCA6ICcnO1xuZXhwb3J0IGNvbnN0IGRhdGFQYXRoVG9LZXkgPSAoZGF0YVBhdGggPSAnJywgdHJpbUFycmF5ID0gZmFsc2UpID0+XG4gIHRyaW1BcnJheSA/IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGRhdGFQYXRoLnN1YnN0cmluZygxKSkgOiBkYXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5leHBvcnQgY29uc3QgcGFyZW50S2V5ID0gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGtleXMgPSAoa2V5LnN0YXJ0c1dpdGgoJy4nKSA/IGtleS5zdWJzdHJpbmcoMSkgOiBrZXkpLnNwbGl0KCcuJyk7XG4gIGtleXMucG9wKCk7XG4gIHJldHVybiBrZXlzLmpvaW4oJy4nKTtcbn07XG5cbi8qKlxuICogU29ydCBwcm9wZXJ0aWVzIGhhdmluZyBlcnJvcnMsIHR5cGUsIGlkLCAuLi5wcm9wZXJ0aWVzIChzaW1wbGUpLCBhbmQgZmluYWxseSB0aGUgZ3JvdXBzXG4gKlxuICogQHBhcmFtIGEge0lOb2RlUHJvcGVydHl9XG4gKiBAcGFyYW0gYiB7SU5vZGVQcm9wZXJ0eX1cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRQcm9wZXJ0aWVzID0gKGE6IElOb2RlUHJvcGVydHksIGI6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgaWYgKGlzTnVtYmVyKGEua2V5KSAmJiBpc051bWJlcihiLmtleSkpIHtcbiAgICByZXR1cm4gK2Eua2V5IC0gK2Iua2V5O1xuICB9XG4gIGlmIChhLmlzRXhwYW5kYWJsZSkge1xuICAgIHJldHVybiBiLmlzRXhwYW5kYWJsZSA/IGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpIDogMTtcbiAgfVxuICBpZiAoYi5pc0V4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhLmtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBjb25zdCBhS2V5ID0gYS5rZXkucmVwbGFjZSgnQCcsICcnKTtcbiAgY29uc3QgYktleSA9IGIua2V5LnJlcGxhY2UoJ0AnLCAnJyk7XG4gIGlmIChhS2V5ID09PSAndHlwZScpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGJLZXkgPT09ICd0eXBlJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChhS2V5ID09PSAnaWQnICYmIGJLZXkgIT09ICd0eXBlJykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoYS5oYXNFcnJvciB8fCBhLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpO1xufTtcblxuY29uc3QgZGVmYXVsdFByb3BlcnR5RXJyb3I6IHtcbiAgW2tleTogc3RyaW5nXTogKGVycm9yOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59ID0ge1xuICBtYXg6ICh7IG1heCB9KSA9PiBgc2hvdWxkIGJlIDw9ICR7bWF4fWAsXG4gIG1pbjogKHsgbWluIH0pID0+IGBzaG91bGQgYmUgPj0gJHttaW59YCxcbiAgcGF0dGVybjogKHsgcmVxdWlyZWRQYXR0ZXJuIH0pID0+IGBzaG91bGQgbWF0Y2ggcGF0dGVybiBcIiR7cmVxdWlyZWRQYXR0ZXJufVwiYCxcbiAgcmVxdWlyZWQ6IChfZSwgeyBzY2hlbWFUeXBlIH0pID0+IHNjaGVtYVR5cGUgPyBgc2hvdWxkIGJlIHNldCBvciBsaW5rZWQgdG8gYW5vdGhlciAke3NjaGVtYVR5cGV9YCA6IHVuZGVmaW5lZFxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFByb3BlcnR5RXJyb3IgPSAoZXJyb3JzOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGVycm9ycylbMF07XG4gIHJldHVybiBrZXkgaW4gZGVmYXVsdFByb3BlcnR5RXJyb3IgPyBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UoZGVmYXVsdFByb3BlcnR5RXJyb3Jba2V5XShlcnJvcnNba2V5XSwgcHJvcGVydHkpKSA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdHRlciA9IChrZXk6IHN0cmluZykgPT4gKHZhbHVlOiBhbnkpID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyAodmFsdWUuYmlibGlvZ3JhcGh5Py50aXRsZSB8fCB2YWx1ZVtrZXldIHx8IHZhbHVlLm5hbWUpIDogdmFsdWU7XG5cbmV4cG9ydCBjb25zdCBoYXNFcnJvciA9IHZhbHVlID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuc29tZShoYXNFcnJvcikgOiB2YWx1ZS5oYXNFcnJvcjtcblxuZXhwb3J0IGNvbnN0IGhhc1dhcm5pbmcgPSB2YWx1ZSA9PiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNvbWUoaGFzV2FybmluZykgOiB2YWx1ZS5oYXNXYXJuaW5nO1xuXG5jb25zdCBjb21waWxlU3VnZ2VzdGlvblF1ZXJpZXMgPSAoa2V5OiBzdHJpbmcsIGFsbE9mOiBhbnlbXSkgPT4ge1xuICBjb25zdCBjb25kaXRpb25zID0gKGFsbE9mIHx8IFtdKVxuICAgIC5maWx0ZXIodiA9PiAodi5pZj8ucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKGtleSkpXG4gICAgLm1hcCh2ID0+IHYudGhlbj8ucHJvcGVydGllcz8uW2tleV0pXG4gICAgLm1hcCh2ID0+IHY/Lml0ZW1zPy5wcm9wZXJ0aWVzIHx8IHY/LnByb3BlcnRpZXMpXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGNvbmRpdGlvbnMubGVuZ3RoID8gW3tcbiAgICBib29sOiB7XG4gICAgICBzaG91bGQ6IGNvbmRpdGlvbnMuZmxhdE1hcChjb25kID0+IE9iamVjdC5rZXlzKGNvbmQpLmZsYXRNYXAoayA9PiAoY29uZFtrXS5lbnVtIHx8IFtdKS5tYXAodiA9PiAoe1xuICAgICAgICBtYXRjaDogeyBba106IHYgfVxuICAgICAgfSkpKSksXG4gICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgIH1cbiAgfV0gOiBbXTtcbn07XG5cbi8vIGRlZmF1bHQgc3VnZ2VzdCBmb3IgbGlua2luZyBub2RlcyB0b2dldGhlciB1c2luZyB0aGUgYGlkYCBmaWVsZFxuY29uc3Qgc3VnZ2VzdExpbmtOb2RlcyA9ICh0eXBlOiBOb2RlVHlwZSwgZnVsbEtleTogc3RyaW5nKTogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpO1xuICByZXR1cm4ga2V5ID09PSAnaWQnICYmIGtleXMubGVuZ3RoID49IDEgPyB7IHR5cGUsIGlzTGlua05vZGU6IHRydWUgfSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHN1Z2dlc3RFeGlzdGluZ05vZGUgPSAodHlwZTogTm9kZVR5cGUsIGZ1bGxLZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA+PSAxICYmIFsnQGlkJywgJ29wZW5MQ0FJZCddLmluY2x1ZGVzKGtleSkgPyB7IHR5cGUsIGlzVW5pcXVlS2V5OiAnQGlkJyB9IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbiA9ICh0eXBlOiBOb2RlVHlwZSkgPT4gKGZ1bGxLZXk6IHN0cmluZykgPT5cbiAgc3VnZ2VzdExpbmtOb2Rlcyh0eXBlLCBmdWxsS2V5KSB8fCBzdWdnZXN0RXhpc3RpbmdOb2RlKHR5cGUsIGZ1bGxLZXkpO1xuXG5jb25zdCB0ZXJtU3VnZ2VzdGlvbnMgPSAocGFyZW50OiBzdHJpbmcsIHsgYWxsT2YgfTogSURlZmluaXRpb25PYmplY3QpID0+ICh7XG4gIHR5cGU6IE5vZGVUeXBlLlRlcm0sXG4gIHF1ZXJpZXM6IFtcbiAgICAuLi5jb21waWxlU3VnZ2VzdGlvblF1ZXJpZXMobm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgocGFyZW50KSwgYWxsT2YhKSxcbiAgICAuLi4oWydjb3VudHJ5J10uaW5jbHVkZXMocGFyZW50KSA/IFttYXRjaENvdW50cnldIDogW10pXG4gIF1cbn0pO1xuXG5jb25zdCB0eXBlVG9TdWdnZXN0aW9uOiB7XG4gIFt0eXBlIGluIFNjaGVtYVR5cGV8Tm9kZVR5cGV8Z2VuZXJpY1R5cGV8J2ludGVnZXInXT86IChcbiAgICBmdWxsS2V5OiBzdHJpbmcsIHBhcmVudFNjaGVtYT86IGRlZmluaXRpb24sIHNjaGVtYT86IGRlZmluaXRpb25cbiAgKSA9PiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbnxhbnk7XG59ID0ge1xuICBbTm9kZVR5cGUuQWN0b3JdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLkFjdG9yKSxcbiAgW05vZGVUeXBlLkN5Y2xlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5DeWNsZSksXG4gIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50KSxcbiAgW05vZGVUeXBlLk9yZ2FuaXNhdGlvbl06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuT3JnYW5pc2F0aW9uKSxcbiAgW05vZGVUeXBlLlNpdGVdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlNpdGUpLFxuICBbTm9kZVR5cGUuU291cmNlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5Tb3VyY2UpLFxuICBbTm9kZVR5cGUuVGVybV06IChmdWxsS2V5LCBwYXJlbnRTY2hlbWEpID0+IHtcbiAgICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICAgIHJldHVybiBbJ25hbWUnXS5pbmNsdWRlcyhrZXkpICYmIGtleXMubGVuZ3RoID49IDEgP1xuICAgICAgdGVybVN1Z2dlc3Rpb25zKGtleXMucG9wKCkhLCBwYXJlbnRTY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpIDpcbiAgICAgIGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuVGVybSkoZnVsbEtleSk7XG4gIH0sXG4gIFtTY2hlbWFUeXBlLkJpYmxpb2dyYXBoeV06IChmdWxsS2V5KSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnBvcCgpITtcbiAgICAvLyBwcmV2ZW50IHJlcGxhY2luZyBhIHRvcC1sZXZlbCBzb3VyY2VcbiAgICByZXR1cm4gWyd0aXRsZScsICdkb2N1bWVudERPSScsICdzY29wdXMnXS5pbmNsdWRlcyhrZXkpICYmIHBhcmVudCA9PT0gJ2JpYmxpb2dyYXBoeScgJiYga2V5cy5sZW5ndGggPj0gMSA/IHtcbiAgICAgIHR5cGU6IE5vZGVUeXBlLlNvdXJjZSxcbiAgICAgIHBhcmVudExldmVsOiAxXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgbnVtYmVyOiAoX2EsIF9iLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6IFtdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIGludGVnZXI6IChfYSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdCA/IFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDogW107XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgc3RyaW5nOiAoZnVsbEtleSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0ID9cbiAgICAgIFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDpcbiAgICAgICgoc2NoZW1hIGFzIGFueSkuZW51bSB8fCBbXSkuZmlsdGVyKHZhbCA9PiAhT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5pbmNsdWRlcyh2YWwpKTtcbiAgICBjb25zdCBrZXkgPSBmdWxsS2V5LnNwbGl0KCcuJykucG9wKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwICYmIGtleSAhPT0gJ3R5cGUnID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBib29sZWFuOiAoX2EpID0+ICh7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgdmFsdWVzOiBbJ3RydWUnLCAnZmFsc2UnXVxuICB9KVxufTtcblxuY29uc3QgZW5hYmxlU3VnZ2VzdGlvbnMgPSAoXG4gIHBhcmVudFNjaGVtYTogZGVmaW5pdGlvbiwgdHlwZTogU2NoZW1hVHlwZSB8IE5vZGVUeXBlIHwgZ2VuZXJpY1R5cGUsIGZ1bGxLZXk6IHN0cmluZywgc2NoZW1hPzogZGVmaW5pdGlvblxuKSA9PiB7XG4gIGNvbnN0IHN1Z2dlc3Rpb24gPSB0eXBlIGluIHR5cGVUb1N1Z2dlc3Rpb24gPyB0eXBlVG9TdWdnZXN0aW9uW3R5cGVdIShmdWxsS2V5LCBwYXJlbnRTY2hlbWEpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gc3VnZ2VzdGlvbiB8fCAoXG4gICAgc2NoZW1hICYmIHNjaGVtYS50eXBlIGFzIGdlbmVyaWNUeXBlIGluIHR5cGVUb1N1Z2dlc3Rpb24gP1xuICAgICAgdHlwZVRvU3VnZ2VzdGlvbltzY2hlbWEudHlwZSBhcyBnZW5lcmljVHlwZV0hKGZ1bGxLZXksIHBhcmVudFNjaGVtYSwgc2NoZW1hKSA6XG4gICAgICB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBub2RlQXZhaWxhYmxlUHJvcGVydGllcyA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwgeyBmdWxsS2V5LCBzY2hlbWEsIHNjaGVtYVR5cGUgfTogUGFydGlhbDxJTm9kZVByb3BlcnR5PlxuKSA9PiBhdmFpbGFibGVQcm9wZXJ0aWVzKHNjaGVtYSEsIHNjaGVtYVR5cGUhLCBmdWxsS2V5ID8gZ2V0KG5vZGUsIGZ1bGxLZXksIHt9KSA6IG5vZGUsIGZ1bGxLZXkhLmxlbmd0aCA+IDApO1xuXG5leHBvcnQgY29uc3QgaXNBZGRQcm9wZXJ0eUVuYWJsZWQgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIHNjaGVtYVR5cGU6IFNjaGVtYVR5cGUsIHNjaGVtYTogZGVmaW5pdGlvbiwgZnVsbEtleSA9ICcnXG4pID0+ICEhc2NoZW1hICYmXG4gICEhT2JqZWN0LmtleXMobm9kZUF2YWlsYWJsZVByb3BlcnRpZXMobm9kZSwgeyBmdWxsS2V5LCBzY2hlbWEgfSkpLmxlbmd0aCAmJlxuICAoIWZ1bGxLZXkgfHwgbmVzdGluZ1R5cGVFbmFibGVkKHNjaGVtYVR5cGUpKTtcblxuY29uc3QgZWRpdGFibGVLZXkgPSAoa2V5OiBzdHJpbmcpID0+ICFbJ3R5cGUnLCAnQHR5cGUnLCAndGVybVR5cGUnXS5pbmNsdWRlcyhrZXkpO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydHlJZCA9ICgpID0+IHV1aWR2NCgpO1xuXG5jb25zdCBwcm9wZXJ0eVVybCA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBrZXk6IHN0cmluZykgPT5cbiAgWydAaWQnLCAnbmFtZSddLmluY2x1ZGVzKGtleSkgJiYgbGlua1R5cGVFbmFibGVkKG5vZGVbJ0B0eXBlJ10pXG4gICAgPyBub2RlWydAaWQnXVxuICAgICAgPyB7XG4gICAgICAgIHVybDogYCR7YmFzZVVybCgpfS8ke25vZGVbJ0B0eXBlJ10udG9Mb3dlckNhc2UoKX0vJHtub2RlWydAaWQnXX1gLFxuICAgICAgICB0aXRsZTogJ09wZW4nXG4gICAgICB9XG4gICAgICA6IG5vZGVbJ0B0eXBlJ10gPT09IFNjaGVtYVR5cGUuVGVybVxuICAgICAgICA/IHtcbiAgICAgICAgICB1cmw6IGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/cXVlcnk9YCxcbiAgICAgICAgICB1cmxQYXJhbVZhbHVlOiB0cnVlLFxuICAgICAgICAgIHRpdGxlOiAnU2VhcmNoIGluIEdsb3NzYXJ5J1xuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IHByb3BlcnR5TWFwc1VybCA9IChub2RlOiBTaXRlIHwgT3JnYW5pc2F0aW9uLCBrZXk6IHN0cmluZywgdmFsdWUpID0+XG4gIFsndHlwZSddLmluY2x1ZGVzKGtleSkgJiYgW1xuICAgIFNjaGVtYVR5cGUuU2l0ZS50b1N0cmluZygpLFxuICAgIFNjaGVtYVR5cGUuT3JnYW5pc2F0aW9uLnRvU3RyaW5nKClcbiAgXS5pbmNsdWRlcyhzdHJpbmdWYWx1ZSh2YWx1ZSkgfHwgbm9kZS50eXBlKSA/XG4gICAge1xuICAgICAgdXJsOiBtYXBzVXJsKHsgbGF0OiBub2RlLmxhdGl0dWRlLCBsbmc6IG5vZGUubG9uZ2l0dWRlIH0pLFxuICAgICAgdGl0bGU6ICdWaWV3IG9uIG1hcHMnLFxuICAgICAgaWNvbjogJ21hcCdcbiAgICB9IDpcbiAgICB1bmRlZmluZWQ7XG5cbmNvbnN0IHByb3BlcnR5RXh0ZXJuYWxVcmwgPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+XG4gIHByb3BlcnR5VXJsKG5vZGUsIGtleSkgfHxcbiAgcHJvcGVydHlNYXBzVXJsKG5vZGUgYXMgYW55LCBrZXksIHZhbHVlKTtcblxuY29uc3QgYXJyYXlQbGFjZWhvbGRlciA9ICh2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PiBgVHlwZSBhICR7dmFsdWVUeXBlfSB0aGVuIHByZXNzIEVudGVyYDtcblxuY29uc3QgZGVmYXVsdFBsYWNlaG9sZGVyID0gKHsgdHlwZSwgZXhhbXBsZXMgfTogYW55LCB2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PiBleGFtcGxlcz8ubGVuZ3RoID8gKFxuICBBcnJheS5pc0FycmF5KGV4YW1wbGVzWzBdKSA/IGFycmF5UGxhY2Vob2xkZXIodmFsdWVUeXBlKSA6IGV4YW1wbGVzWzBdXG4pIDogYE11c3QgYmUgb2YgdHlwZSAke3R5cGUgfHwgdmFsdWVUeXBlfWA7XG5cbmNvbnN0IHNjaGVtYVBsYWNob2xkZXIgPSAoc2NoZW1hOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbcGFyZW50LCAuLi5rZXlzXSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9O1xuICBjb25zdCB7IGV4YW1wbGVzIH0gPSBwYXJlbnQgaW4gcHJvcGVydGllcyA/IHByb3BlcnRpZXNbcGFyZW50XSA6IHsgZXhhbXBsZXM6IFtdIH07XG4gIHJldHVybiBleGFtcGxlcz8ubGVuZ3RoICYmIHR5cGVvZiBleGFtcGxlc1swXSA9PT0gJ29iamVjdCcgPyBnZXQoZXhhbXBsZXNbMF0sIGtleXMuam9pbignLicpLCBudWxsKTogbnVsbDtcbn07XG5cbmNvbnN0IHByb3BlcnR5UGxhY2Vob2xkZXIgPSAoc2NoZW1hOiBhbnksIHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUsIGZ1bGxLZXkgPSAnJywgcGFyZW50U2NoZW1hPzogYW55KSA9PlxuICBzY2hlbWEudHlwZSA9PT0gJ2FycmF5JyA/XG4gICAgYXJyYXlQbGFjZWhvbGRlcih2YWx1ZVR5cGUpIDogKFxuICAgICAgcGFyZW50U2NoZW1hICYmIGZ1bGxLZXk/Lmxlbmd0aCA/IHNjaGVtYVBsYWNob2xkZXIocGFyZW50U2NoZW1hLCBmdWxsS2V5KSA6IG51bGxcbiAgICApIHx8IGRlZmF1bHRQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSk7XG5cbmNvbnN0IHByb3BlcnR5VHlwZVZhbHVlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiAodmFsdWU6IGFueSwgc2NoZW1hOiBkZWZpbml0aW9uKSA9PiBhbnk7XG59ID0ge1xuICBvYmplY3Q6IHZhbCA9PiBzYWZlSlNPTlN0cmluZ2lmeSh2YWwpLFxuICBhcnJheTogKHZhbCwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgcmV0dXJuICckcmVmJyBpbiBpdGVtcyA/IHZhbCA6IChcbiAgICAgIEFycmF5LmlzQXJyYXkodmFsKSA/XG4gICAgICAgIHZhbC5tYXAodmFsdWUgPT4gcHJvcGVydHlWYWx1ZShpdGVtcywgdmFsdWUpKS5qb2luKEFSUkFZX0RFTElNSVRFUikgOlxuICAgICAgICB2YWxcbiAgICApO1xuICB9LFxuICBqc29uOiB2YWwgPT4gdmFsIHx8ICcnLFxuICBzdHJpbmc6IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRyaW0oKSxcbiAgbnVtYmVyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBpbnRlZ2VyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBib29sZWFuOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbn07XG5cbmNvbnN0IHByb3BlcnR5VmFsdWUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZTogYW55KSA9PlxuICBzY2hlbWEudHlwZSA/IChcbiAgICBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSA/XG4gICAgICBwcm9wZXJ0eVR5cGVWYWx1ZVt0eXBlb2YgdmFsdWVdKHZhbHVlLCBzY2hlbWEpIDpcbiAgICAgIHByb3BlcnR5VHlwZVZhbHVlW3NjaGVtYS50eXBlIGFzIHN0cmluZ10odmFsdWUsIHNjaGVtYSlcbiAgKSA6XG4gIHNhZmVKU09OU3RyaW5naWZ5KHZhbHVlKTtcblxuY29uc3QgcHJvcGVydHlWYWx1ZVR5cGUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZT86IGFueSkgPT5cbiAgKHNjaGVtYS50eXBlID8gKFxuICAgIEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpID9cbiAgICAgIHNjaGVtYS50eXBlWzBdIDpcbiAgICAgIHNjaGVtYS50eXBlID09PSAnYXJyYXknID9cbiAgICAgICAgcHJvcGVydHlWYWx1ZVR5cGUoeyAuLi5zY2hlbWEsIHR5cGU6IFtzY2hlbWEuaXRlbXMudHlwZSBhcyBnZW5lcmljVHlwZV0gfSkgOlxuICAgICAgICBzY2hlbWEudHlwZVxuICApIDogdHlwZW9mIHZhbHVlKSBhcyBnZW5lcmljVHlwZTtcblxuY29uc3QgcHJvcGVydHlUeXBlUGFyc2VWYWx1ZToge1xuICBbdHlwZTogc3RyaW5nXTogKHZhbHVlOiBhbnksIHNjaGVtYTogZGVmaW5pdGlvbikgPT4gYW55O1xufSA9IHtcbiAgdW5kZWZpbmVkOiAoKSA9PiB1bmRlZmluZWQsXG4gIG9iamVjdDogdmFsID0+IHNhZmVKU09OUGFyc2UodmFsKSxcbiAgYXJyYXk6ICh2YWwsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHsgaXRlbXMgfSA9IHNjaGVtYSBhcyBJRGVmaW5pdGlvbkFycmF5O1xuICAgIHJldHVybiAnJHJlZicgaW4gaXRlbXMgPyB2YWwgOiAoXG4gICAgICAhdmFsIHx8IEFycmF5LmlzQXJyYXkodmFsKSA/IHZhbCA6IHZhbC5zcGxpdChBUlJBWV9ERUxJTUlURVIpLm1hcCh2YWx1ZSA9PiBwYXJzZU5ld1ZhbHVlKGl0ZW1zLCB2YWx1ZSkpXG4gICAgKTtcbiAgfSxcbiAganNvbjogdmFsID0+IHZhbCB8fCAnJyxcbiAgc3RyaW5nOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50cmltKCksXG4gIG51bWJlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgaW50ZWdlcjogdmFsID0+ICsoYCR7dmFsfWAgfHwgJzAnKSxcbiAgYm9vbGVhbjogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudG9Mb3dlckNhc2UoKSA9PT0gJ3RydWUnXG59O1xuXG4vKipcbiAqIENvbnZlcnQgdmFsdWUgdG8gdGhlIGZpbmFsIHR5cGUgaW4gdGhlIHNjaGVtYS5cbiAqXG4gKiBAcGFyYW0gc2NoZW1hIERlZmluaXRpb24gb2YgdGhlIHZhbHVlLlxuICogQHBhcmFtIHZhbHVlXG4gKiBAcmV0dXJucyBWYWx1ZSBpbiB0aGUgY29ycmVjdCBmb3JtYXQuXG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZU5ld1ZhbHVlID0gKHNjaGVtYTogZGVmaW5pdGlvbiwgdmFsdWU6IGFueSkgPT5cbiAgc2NoZW1hLnR5cGUgPyAoXG4gICAgQXJyYXkuaXNBcnJheShzY2hlbWEudHlwZSkgP1xuICAgICAgcHJvcGVydHlUeXBlUGFyc2VWYWx1ZVt0eXBlb2YgdmFsdWVdKHZhbHVlLCBzY2hlbWEpIDpcbiAgICAgIHByb3BlcnR5VHlwZVBhcnNlVmFsdWVbc2NoZW1hLnR5cGUgYXMgc3RyaW5nXSh2YWx1ZSwgc2NoZW1hKVxuICApIDogdmFsdWU7XG5cbmNvbnN0IGlzT3BlbkRlZmF1bHQgPSAoc2NoZW1hVHlwZTogU2NoZW1hVHlwZSkgPT4gW1xuICBTY2hlbWFUeXBlLlRlcm1cbl0uaW5jbHVkZXMoc2NoZW1hVHlwZSk7XG5cbi8vIGNhbiB0aGUgcHJvcGVydHkgYmUgc2VlbiB3aGVuIHRoZSBncm91cCBpcyBjbG9zZWRcbmNvbnN0IGlzS2V5Q2xvc2VkVmlzaWJsZSA9IChrZXk6IHN0cmluZykgPT4gWyd0eXBlJywgJ2lkJywgJ0B0eXBlJywgJ0BpZCddLmluY2x1ZGVzKGtleSk7XG5cbmNvbnN0IGlzS2V5SGlkZGVuID0gKGtleTogc3RyaW5nKSA9PiBbJ3R5cGUnLCAnQHR5cGUnXS5pbmNsdWRlcyhrZXkpO1xuXG5jb25zdCBpc0tleVJlcXVpcmVkID0gKGtleTogc3RyaW5nLCBkZWY/OiBJRGVmaW5pdGlvbk9iamVjdCkgPT5cbiAgWyd0eXBlJywgJ2lkJ10uaW5jbHVkZXMoa2V5KSB8fCAoZGVmPy5yZXF1aXJlZCB8fCBbXSkuaW5jbHVkZXMoa2V5KTtcblxuZXhwb3J0IGNvbnN0IHByb3BlcnR5RXJyb3IgPSAoZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10pID0+IChkYXRhUGF0aDogc3RyaW5nLCBub25FeHBhbmRhYmxlQXJyYXkgPSBmYWxzZSkgPT5cbiAgZXJyb3JzLmZpbmQoZXJyb3IgPT5cbiAgICAoXG4gICAgICBlcnJvci5kYXRhUGF0aCA9PT0gZGF0YVBhdGggfHwgKFxuICAgICAgICBub25FeHBhbmRhYmxlQXJyYXkgJiYgbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgoZXJyb3IuZGF0YVBhdGghKSA9PT0gbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgoZGF0YVBhdGgpXG4gICAgICApXG4gICAgKSAmJiAoZGF0YVBhdGgubGVuZ3RoID4gMCB8fCAhaXNNaXNzaW5nUHJvcGVydHlFcnJvcihlcnJvcikpXG4gICk7XG5cbmNvbnN0IG1pc3NpbmdQcm9wZXJ0eUVycm9ycyA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIHBhcmVudCA9ICcnXG4pOiBJTm9kZVByb3BlcnR5W10gPT4ge1xuICBjb25zdCBhbGxFcnJvcnMgPSBlcnJvcnMuZmlsdGVyKGVycm9yID0+XG4gICAgZXJyb3IuZGF0YVBhdGggPT09IGtleVRvRGF0YVBhdGgocGFyZW50KSAmJiBpc01pc3NpbmdQcm9wZXJ0eUVycm9yKGVycm9yKVxuICApO1xuICAvLyBjaGVjayBmb3Igbm9kZSBub3QgZm91bmQgZXJyb3JzXG4gIGNvbnN0IG1pc3NpbmdOb2RlID0gbWlzc2luZ05vZGVFcnJvcnMoYWxsRXJyb3JzKTtcbiAgcmV0dXJuIG1pc3NpbmdOb2RlLmxlbmd0aCA9PT0gMiA/IFt7XG4gICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICBzY2hlbWFUeXBlOiBub2RlLnR5cGUsXG4gICAgc3VnZ2VzdGlvbnM6IHsgdHlwZTogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlIH0sXG4gICAga2V5OiAnJyxcbiAgICBmdWxsS2V5OiBwYXJlbnQsXG4gICAgdmFsdWU6ICcnLFxuICAgIGVycm9yOiB7XG4gICAgICBsZXZlbDogJ2Vycm9yJyxcbiAgICAgIG1lc3NhZ2U6IG1pc3NpbmdOb2RlRXJyb3JNZXNzYWdlKG5vZGUsIG1pc3NpbmdOb2RlLmZpbmQoKHsgcGFyYW1zIH0pID0+IHBhcmFtcz8ubWlzc2luZ1Byb3BlcnR5ID09PSAnQGlkJykpXG4gICAgfSxcbiAgICBoYXNFcnJvcjogdHJ1ZSxcbiAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlLFxuICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKCcnKVxuICB9XSA6IGFsbEVycm9ycy5tYXAoZXJyb3IgPT4ge1xuICAgIGNvbnN0IHsgbWlzc2luZ1Byb3BlcnR5IH0gPSBlcnJvci5wYXJhbXMhO1xuICAgIGNvbnN0IGZ1bGxLZXkgPSBwYXJlbnQgPyBgJHtwYXJlbnR9LiR7bWlzc2luZ1Byb3BlcnR5fWAgOiBtaXNzaW5nUHJvcGVydHk7XG4gICAgY29uc3QgbWlzc2luZ09uZU9mID0gaXNNaXNzaW5nT25lT2ZFcnJvcihlcnJvcik7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICBzY2hlbWFUeXBlOiBub2RlLnR5cGUsXG4gICAgICBzdWdnZXN0aW9uczogeyB0eXBlOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUgfSxcbiAgICAgIGtleTogbWlzc2luZ1Byb3BlcnR5LFxuICAgICAgZnVsbEtleSxcbiAgICAgIHZhbHVlOiAnQWRkIGZpZWxkIHRvIGZpeCcsXG4gICAgICBlZGl0YWJsZTogZmFsc2UsXG4gICAgICBlcnJvcjogZm9ybWF0RXJyb3IoZXJyb3IpLFxuICAgICAgaGFzRXJyb3I6IG1pc3NpbmdPbmVPZiA/IGZhbHNlIDogZXJyb3JIYXNFcnJvcihlcnJvciksXG4gICAgICBoYXNXYXJuaW5nOiBtaXNzaW5nT25lT2YgfHwgZXJyb3JIYXNXYXJuaW5nKGVycm9yKSxcbiAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiB0cnVlLFxuICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIobWlzc2luZ1Byb3BlcnR5KVxuICAgIH07XG4gIH0pO1xufTtcblxuY29uc3QgcHJvcGVydHlGcm9tTm9kZSA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBkZWVwRWRpdGFibGU6IGJvb2xlYW4sIHBhcmVudCA9ICcnLCBub2RlOiBhbnlcbikgPT4gKGtleTogc3RyaW5nKTogSU5vZGVQcm9wZXJ0eSA9PiB7XG4gIGNvbnN0IHZhbHVlID0gbm9kZVtrZXldO1xuICBjb25zdCBleHBhbmRhYmxlID0gaXNFeHBhbmRhYmxlKHZhbHVlKTtcbiAgY29uc3QgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkodmFsdWUpO1xuICBjb25zdCBub25FeHBhbmRhYmxlQXJyYXkgPSBpc0FycmF5ICYmICFleHBhbmRhYmxlO1xuICBjb25zdCBmdWxsS2V5ID0gQXJyYXkuaXNBcnJheShub2RlKSA/IGAke3BhcmVudH1bJHtrZXl9XWAgOiBbXG4gICAgcGFyZW50LFxuICAgIGtleVxuICBdLmZpbHRlcihCb29sZWFuKS5qb2luKCcuJyk7XG4gIGNvbnN0IG5vZGVUeXBlID0gbm9kZS50eXBlIHx8IG5vZGVbJ0B0eXBlJ107XG4gIGNvbnN0IHNjaGVtYVR5cGUgPSBleHBhbmRhYmxlID8gKFxuICAgIGlzQXJyYXkgJiYgdmFsdWUubGVuZ3RoID8gdmFsdWVbMF0udHlwZSB8fCB2YWx1ZVswXVsnQHR5cGUnXSA6IHZhbHVlLnR5cGUgfHwgdmFsdWVbJ0B0eXBlJ11cbiAgKSA6IG5vZGVUeXBlO1xuICBjb25zdCBzY2hlbWEgPSAoc2NoZW1hcyAmJiBpc1R5cGVWYWxpZCh7IHR5cGU6IHNjaGVtYVR5cGUgfSkgPyAoXG4gICAgZXhwYW5kYWJsZSA/IHNjaGVtYXNbc2NoZW1hVHlwZV0gOiBzY2hlbWFzW3NjaGVtYVR5cGVdLnByb3BlcnRpZXNba2V5XVxuICApIDogbnVsbCkgfHwge307XG4gIGNvbnN0IGlzSXJpID0gaXNTY2hlbWFJcmkoc2NoZW1hKTtcbiAgY29uc3QgZXJyb3IgPSBwcm9wZXJ0eUVycm9yKGVycm9ycykoa2V5VG9EYXRhUGF0aChmdWxsS2V5KSwgbm9uRXhwYW5kYWJsZUFycmF5KTtcbiAgY29uc3QgcGFyZW50U2NoZW1hID0gZXhwYW5kYWJsZSA/IChcbiAgICAvLyBUT0RPOiBmb3Igbm9uLWFycmF5LCBzaG91bGQgYmUgc2NoZW1hIHVubGVzcyBsYXN0IHJlY3Vyc2lvblxuICAgIGlzQXJyYXkgPyBzY2hlbWEgOiBub2RlU2NoZW1hXG4gICkgOiBub2RlU2NoZW1hO1xuICBjb25zdCBwcm9wZXJ0aWVzID0gZXhwYW5kYWJsZSB8fCBpc0lyaSA/XG4gICAgcmVjdXJzaXZlUHJvcGVydGllcyhzY2hlbWFzLCBlcnJvcnMsIHBhcmVudFNjaGVtYSwgZGVlcEVkaXRhYmxlLCBmdWxsS2V5KSh2YWx1ZSkgOiBbXTtcbiAgY29uc3QgaW5FcnJvciA9IGVycm9ySGFzRXJyb3IoZXJyb3IpIHx8IGhhc0Vycm9yKHByb3BlcnRpZXMpO1xuICBjb25zdCBpbldhcm5pbmcgPSBlcnJvckhhc1dhcm5pbmcoZXJyb3IpIHx8IGhhc1dhcm5pbmcocHJvcGVydGllcyk7XG4gIGNvbnN0IGVkaXRhYmxlID0gaXNUeXBlTm9kZShub2RlWydAdHlwZSddKSB8fCAoZXhwYW5kYWJsZSAmJiBpc1R5cGVOb2RlKHZhbHVlWydAdHlwZSddKSkgP1xuICAgIGZhbHNlIDpcbiAgICAoXG4gICAgICAvLyBwcmV2ZW50IGVkaXRpbmcvYWRkaW5nIG5ldyBwcm9wZXJ0aWVzIG9uIGV4aXN0aW5nIHN1Yi1ub2Rlc1xuICAgICAgIWRlZXBFZGl0YWJsZSAmJiBpc1R5cGVOb2RlKHNjaGVtYVR5cGUpICYmIChcbiAgICAgICAgZXhwYW5kYWJsZSA/IHZhbHVlLnR5cGUgIT09IE5vZGVUeXBlLlRlcm0gOiBwYXJlbnQgJiYgbm9kZS50eXBlICE9PSBOb2RlVHlwZS5UZXJtXG4gICAgICApID9cbiAgICAgICAgZmFsc2UgOlxuICAgICAgICAvLyBoYW5kbGUgSVJJXG4gICAgICAgICghc2NoZW1hVHlwZSAmJiBrZXkgPT09ICdAaWQnKSB8fCBlZGl0YWJsZUtleShrZXkpXG4gICAgKTtcbiAgY29uc3QgdmFsdWVUeXBlID0gcHJvcGVydHlWYWx1ZVR5cGUoc2NoZW1hLCB2YWx1ZSk7XG4gIHJldHVybiB7XG4gICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICBzY2hlbWFUeXBlOiBpc0lyaSA/IG51bGwgOiBzY2hlbWFUeXBlLFxuICAgIHNjaGVtYSxcbiAgICBrZXksXG4gICAgZnVsbEtleSxcbiAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZShzY2hlbWEsIHZhbHVlKSxcbiAgICBlZGl0YWJsZTogaW5FcnJvciB8fCBlZGl0YWJsZSxcbiAgICBzdWdnZXN0aW9uczogZW5hYmxlU3VnZ2VzdGlvbnMobm9kZVNjaGVtYSwgbm9kZS50eXBlLCBmdWxsS2V5LCBzY2hlbWEpLFxuICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQobm9kZSwgc2NoZW1hVHlwZSwgc2NoZW1hLCBmdWxsS2V5KSxcbiAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgIGVycm9yOiBmb3JtYXRFcnJvcihlcnJvciksXG4gICAgaXNIaWRkZW46IHBhcmVudCAmJiBpc0tleUhpZGRlbihrZXkpLFxuICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgIGhhc0Vycm9yOiBpbkVycm9yLFxuICAgIGhhc1dhcm5pbmc6IGluV2FybmluZyxcbiAgICBpc1JlcXVpcmVkOiBpc0tleVJlcXVpcmVkKGtleSwgc2NoZW1hc1tub2RlVHlwZV0pLFxuICAgIGlzQXJyYXksXG4gICAgaXNFeHBhbmRhYmxlOiBleHBhbmRhYmxlLFxuICAgIGlzT3BlbjogaXNPcGVuRGVmYXVsdChzY2hlbWFUeXBlKSxcbiAgICBwcm9wZXJ0aWVzLFxuICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eVBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlLCBmdWxsS2V5LCBwYXJlbnRTY2hlbWEpLFxuICAgIGV4dGVybmFsVXJsOiBwcm9wZXJ0eUV4dGVybmFsVXJsKG5vZGUsIGtleSwgdmFsdWUpLFxuICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaW5nbGVQcm9wZXJ0eSA9IChzY2hlbWFzOiBkZWZpbml0aW9ucywgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIG5vZGU6IGFueSwgZnVsbEtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IFtfdCwgLi4ua2V5c10gPSBmdWxsS2V5LnNwbGl0KCcuJyk7XG4gIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICBjb25zdCBwYXJlbnQgPSBrZXlzLmpvaW4oJy4nKTtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IHBhcmVudC5sZW5ndGggPyBnZXQobm9kZSwgcGFyZW50KSA6IG5vZGU7XG4gIGNvbnN0IHNjaGVtYVR5cGUgPSB0eXBlVG9TY2hlbWFUeXBlKHBhcmVudE5vZGUudHlwZSB8fCBwYXJlbnROb2RlWydAdHlwZSddKTtcbiAgY29uc3QgcGFyZW50U2NoZW1hID0gc2NoZW1hc1tzY2hlbWFUeXBlXTtcbiAgcmV0dXJuIHByb3BlcnR5RnJvbU5vZGUoc2NoZW1hcywgZXJyb3JzLCBwYXJlbnRTY2hlbWEsIHRydWUsIHBhcmVudCwgcGFyZW50Tm9kZSkoa2V5KTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWN1cnNpdmVQcm9wZXJ0aWVzID0gKFxuICBzY2hlbWFzOiBkZWZpbml0aW9ucywgZXJyb3JzOiBJVmFsaWRhdGlvbkVycm9yW10sIG5vZGVTY2hlbWE6IGRlZmluaXRpb24sIGRlZXBFZGl0YWJsZTogYm9vbGVhbiwgcGFyZW50ID0gJydcbikgPT4gKG5vZGU6IGFueSk6IElOb2RlUHJvcGVydHlbXSA9PlxuICBPYmplY3Qua2V5cyhub2RlKVxuICAgIC5maWx0ZXIoa2V5ID0+ICFwcml2YXRlS2V5cy5pbmNsdWRlcyhrZXkpKVxuICAgIC5tYXAocHJvcGVydHlGcm9tTm9kZShzY2hlbWFzLCBlcnJvcnMsIG5vZGVTY2hlbWEsIGRlZXBFZGl0YWJsZSwgcGFyZW50LCBub2RlKSlcbiAgICAuY29uY2F0KC4uLm1pc3NpbmdQcm9wZXJ0eUVycm9ycyhub2RlLCBlcnJvcnMsIHBhcmVudCkpXG4gICAgLnNvcnQoc29ydFByb3BlcnRpZXMpO1xuXG5jb25zdCBmdWxsS2V5UGFydHMgPSAoZnVsbEtleTogc3RyaW5nKSA9PiBmdWxsS2V5LnNwbGl0KCcuJykuZmxhdE1hcCh2YWwgPT4ge1xuICBpZiAodmFsLmVuZHNXaXRoKCddJykpIHtcbiAgICBjb25zdCBba2V5LCBpbmRleF0gPSB2YWwuc3BsaXQoJ1snKTtcbiAgICByZXR1cm4gW2tleSwgaW5kZXgucmVwbGFjZSgnXScsICcnKV07XG4gIH1cbiAgcmV0dXJuIHZhbDtcbn0pO1xuXG5leHBvcnQgY29uc3QgdXBkYXRlUHJvcGVydGllcyA9ICh7IHByb3BlcnRpZXMgfTogUGFydGlhbDxJTm9kZVByb3BlcnR5PiwgdXBkYXRlcjogKHByb3A6IElOb2RlUHJvcGVydHkpID0+IElOb2RlUHJvcGVydHkpID0+XG4gIChwcm9wZXJ0aWVzIHx8IFtdKS5tYXAocHJvcCA9PiB1cGRhdGVQcm9wZXJ0aWVzKHVwZGF0ZXIocHJvcCksIHVwZGF0ZXIpKTtcblxuZXhwb3J0IGNvbnN0IHR5cGVUb05ld1Byb3BlcnR5ID0gKFxuICBzY2hlbWFzOiBkZWZpbml0aW9ucywgc2NoZW1hOiBkZWZpbml0aW9uLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBub2RlOiBhbnksIGZ1bGxLZXk6IHN0cmluZ1xuKTogSU5vZGVQcm9wZXJ0eSA9PiB7XG4gIGNvbnN0IGtleSA9IGZ1bGxLZXlQYXJ0cyhmdWxsS2V5KS5wb3AoKSE7XG4gIGNvbnN0IG1hcHBpbmdzOiB7XG4gICAgW2tleTogc3RyaW5nXTogKCkgPT4gSU5vZGVQcm9wZXJ0eTtcbiAgfSA9IHtcbiAgICBvYmplY3Q6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgc2NoZW1hVHlwZSwgcHJvcGVydGllcyB9ID0gc2NoZW1hUmVxdWlyZWRQcm9wZXJ0aWVzKHNjaGVtYXMsIHNjaGVtYSBhcyBJRGVmaW5pdGlvbk9iamVjdCk7XG4gICAgICBub2RlW2tleV0gPSBub2RlW2tleV0gfHwge307XG4gICAgICBub2RlW2tleV0udHlwZSA9IHNjaGVtYVR5cGU7XG4gICAgICAvLyBUT0RPOiBoYW5kbGUgbG9hZCBzY2hlbWFzIGZyb20gaHR0cCBzb3VyY2VcbiAgICAgIGlmIChzY2hlbWFUeXBlLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xuICAgICAgICByZXR1cm4gdHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgeyB0eXBlOiAnanNvbicgfSBhcyBhbnksIG5vZGVTY2hlbWEsIG5vZGUsIGZ1bGxLZXkpO1xuICAgICAgfVxuICAgICAgLy8gVE9ETzogaGFuZGxlIG5vZGVTY2hlbWEgc2hvdWxkIGJlIHNjaGVtYSB1bmxlc3MgbGFzdCByZWN1cnNpb25cbiAgICAgIGNvbnN0IHByb3BzID0gcHJvcGVydGllc1xuICAgICAgICAuZmlsdGVyKHByb3AgPT4gbmVzdGluZ0VuYWJsZWQoc2NoZW1hVHlwZSwgcHJvcC5rZXkpICYmICEhcHJvcC52YWx1ZSlcbiAgICAgICAgLm1hcChcbiAgICAgICAgICB2ID0+ICh7XG4gICAgICAgICAgICAuLi50eXBlVG9OZXdQcm9wZXJ0eShzY2hlbWFzLCB2LnZhbHVlLCBub2RlU2NoZW1hLCBub2RlW2tleV0sIGAke2Z1bGxLZXl9LiR7di5rZXl9YCksXG4gICAgICAgICAgICBpc1JlcXVpcmVkOiB0cnVlXG4gICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gcHJvcHMucmVkdWNlKChwcmV2LCBjdXJyKSA9PiAoeyAuLi5wcmV2LCBbY3Vyci5rZXldOiBjdXJyLnZhbHVlIH0pLCB7fSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWE6IHNjaGVtYXNbc2NoZW1hVHlwZV0sXG4gICAgICAgIHNjaGVtYVR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBzY2hlbWFUeXBlLCBmdWxsS2V5KSxcbiAgICAgICAgcHJvcGVydGllczogcHJvcHMuc29ydChzb3J0UHJvcGVydGllcyksXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogaXNBZGRQcm9wZXJ0eUVuYWJsZWQobm9kZSwgc2NoZW1hVHlwZSwgc2NoZW1hc1tzY2hlbWFUeXBlXSwga2V5KSxcbiAgICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgIGlzUmVxdWlyZWQ6IGlzS2V5UmVxdWlyZWQoa2V5LCBzY2hlbWEgYXMgYW55KSxcbiAgICAgICAgaXNBcnJheTogZmFsc2UsXG4gICAgICAgIGlzRXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgaXNPcGVuOiBpc09wZW5EZWZhdWx0KHNjaGVtYVR5cGUpLFxuICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gICAgICB9O1xuICAgIH0sXG4gICAgYXJyYXk6ICgpID0+IHtcbiAgICAgIGNvbnN0IHsgaXRlbXMgfSA9IHNjaGVtYSBhcyBJRGVmaW5pdGlvbkFycmF5O1xuICAgICAgLy8gYXJyYXkgb2Ygc3RyaW5nLCBudW1iZXIgYW5kIGJvb2xlYW5cbiAgICAgIGlmIChpdGVtcy50eXBlKSB7XG4gICAgICAgIHJldHVybiBtYXBwaW5ncy5kZWZhdWx0KCk7XG4gICAgICB9XG4gICAgICBjb25zdCBzY2hlbWFUeXBlID0gZGVmaW5pdGlvblRvU2NoZW1hVHlwZShpdGVtcyBhcyBJRGVmaW5pdGlvbk9iamVjdCk7XG4gICAgICBub2RlW2tleV0gPSBub2RlW2tleV0gfHwgW107XG4gICAgICBub2RlW2tleV0ucHVzaCh7IH0pO1xuICAgICAgY29uc3QgcHJvcGVydHkgPSB0eXBlVG9OZXdQcm9wZXJ0eShzY2hlbWFzLCBpdGVtcywgc2NoZW1hc1tzY2hlbWFUeXBlXSwgbm9kZVtrZXldWzBdLCBgJHtmdWxsS2V5fVswXWApO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzY2hlbWFUeXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIGZ1bGxLZXksXG4gICAgICAgIHZhbHVlOiBbcHJvcGVydHkudmFsdWVdLFxuICAgICAgICBlZGl0YWJsZTogZWRpdGFibGVLZXkoa2V5KSxcbiAgICAgICAgaXNIaWRkZW46IGlzS2V5SGlkZGVuKGtleSksXG4gICAgICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgICAgICBzdWdnZXN0aW9uczogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wZXJ0aWVzOiBbcHJvcGVydHldLFxuICAgICAgICBuZXdQcm9wZXJ0eToge30sXG4gICAgICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICAgICAgaXNBcnJheTogdHJ1ZSxcbiAgICAgICAgaXNFeHBhbmRhYmxlOiB0cnVlLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gICAgICB9O1xuICAgIH0sXG4gICAgZGVmYXVsdDogKCkgPT4ge1xuICAgICAgY29uc3QgdmFsdWVUeXBlID0gcHJvcGVydHlWYWx1ZVR5cGUoc2NoZW1hKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gc2NoZW1hLmRlZmF1bHQgfHwgKHNjaGVtYSBhcyBhbnkpLmNvbnN0IHx8IHZhbHVlVHlwZVRvRGVmYXVsdFt2YWx1ZVR5cGVdO1xuICAgICAgbm9kZVtrZXldID0gdmFsdWU7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgICBpc0FkZGVkOiB0cnVlLFxuICAgICAgICBzY2hlbWEsXG4gICAgICAgIHNjaGVtYVR5cGU6IG5vZGUudHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZTogcHJvcGVydHlWYWx1ZShzY2hlbWEsIHZhbHVlKSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIG5vZGUudHlwZSwgZnVsbEtleSwgc2NoZW1hKSxcbiAgICAgICAgcGxhY2Vob2xkZXI6IHByb3BlcnR5UGxhY2Vob2xkZXIoc2NoZW1hLCB2YWx1ZVR5cGUsIGZ1bGxLZXksIG5vZGVTY2hlbWEpLFxuICAgICAgICBleHRlcm5hbFVybDogcHJvcGVydHlFeHRlcm5hbFVybChub2RlLCBrZXksIHZhbHVlKSxcbiAgICAgICAgcHJvcGVydGllczogW10sXG4gICAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogZmFsc2UsXG4gICAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKGtleSlcbiAgICAgIH07XG4gICAgfVxuICB9O1xuICBjb25zdCBtYXBwZWQgPSAhc2NoZW1hLnR5cGUgPyBtYXBwaW5ncy5vYmplY3QgOiAoXG4gICAgc2NoZW1hLnR5cGUgYXMgc3RyaW5nIGluIG1hcHBpbmdzID8gbWFwcGluZ3Nbc2NoZW1hLnR5cGUgYXMgc3RyaW5nXSA6IG1hcHBpbmdzLmRlZmF1bHRcbiAgKTtcbiAgcmV0dXJuIG1hcHBlZCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGZpbmRQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBmb3IgKGNvbnN0IHAgb2YgcHJvcGVydGllcykge1xuICAgIGlmIChwLmZ1bGxLZXkgPT09IGZ1bGxLZXkpIHtcbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZFAgPSBmaW5kUHJvcGVydHkocC5wcm9wZXJ0aWVzLCBmdWxsS2V5KTtcbiAgICBpZiAoY2hpbGRQKSB7XG4gICAgICByZXR1cm4gY2hpbGRQO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJlbnRQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGFsbEtleXMgPSBwcm9wZXJ0eS5mdWxsS2V5LnNwbGl0KCcuJyk7XG4gIFsuLi5uZXcgQXJyYXkocHJvcGVydHkuc3VnZ2VzdGlvbnM/LnBhcmVudExldmVsIHx8IDApXS5tYXAoKCkgPT4gYWxsS2V5cy5wb3AoKSk7XG4gIGNvbnN0IHBhcmVudEtleXMgPSBmdWxsS2V5UGFydHMoYWxsS2V5cy5qb2luKCcuJykpO1xuICBwYXJlbnRLZXlzLnBvcCgpO1xuICBjb25zdCBwYXJlbnQgPSAocGFyZW50S2V5cy5yZWR1Y2UoKHByZXYsIGN1cnIsIGN1cnJJbmRleCk6IGFueSA9PiB7XG4gICAgY29uc3QgcHJvcCA9IHByZXYuZmluZCh2ID0+IHYua2V5ID09PSBjdXJyKTtcbiAgICByZXR1cm4gY3VyckluZGV4ID09PSBwYXJlbnRLZXlzLmxlbmd0aCAtIDEgPyAocHJvcCB8fCB7fSBhcyBJTm9kZVByb3BlcnR5KSA6IChwcm9wIS5wcm9wZXJ0aWVzIHx8IFtdKTtcbiAgfSwgcHJvcGVydGllcykgYXMgYW55KSBhcyBJTm9kZVByb3BlcnR5O1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJlbnQpID8gcHJvcGVydHkgOiBwYXJlbnQ7XG59O1xuXG5leHBvcnQgY29uc3QgbmVzdGVkUHJvcGVydHkgPSAoeyBwcm9wZXJ0aWVzIH06IElOb2RlUHJvcGVydHksIG5lc3RlZEtleTogc3RyaW5nKSA9PlxuICBwcm9wZXJ0aWVzLmZpbmQoKHsga2V5IH0pID0+IGtleSA9PT0gbmVzdGVkS2V5KTtcblxuZXhwb3J0IGNvbnN0IHNpYmxpbmdQcm9wZXJ0eSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5LCBzaWJsaW5nS2V5OiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcGFyZW50ID0gcGFyZW50UHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHkpO1xuICBjb25zdCBwYXJlbnRQcm9wZXJ0aWVzID0gcGFyZW50ID09PSBwcm9wZXJ0eSA/IHByb3BlcnRpZXMgOiBwYXJlbnQucHJvcGVydGllcztcbiAgcmV0dXJuIHBhcmVudFByb3BlcnRpZXMuZmluZChwcm9wID0+IHByb3Aua2V5ID09PSBzaWJsaW5nS2V5KTtcbn07XG5cbmV4cG9ydCBjb25zdCBncm91cENoYW5nZWQgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBrZXk6IHN0cmluZywgdmFsdWU/OiBhbnkpID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJlbnRLZXlzID0gZnVsbEtleVBhcnRzKGtleSk7XG4gICAgcGFyZW50S2V5cy5yZWR1Y2UoKHByZXYsIGN1cnIsIGN1cnJJbmRleCkgPT4ge1xuICAgICAgaWYgKGN1cnJJbmRleCA9PT0gcGFyZW50S2V5cy5sZW5ndGggLSAxICYmIHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBwcmV2LnNwbGljZShwcmV2LmZpbmRJbmRleCh2ID0+IHYua2V5ID09PSBjdXJyKSwgMSk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY29uc3QgcHJvcCA9IHByZXYuZmluZCh2ID0+IHYua2V5ID09PSBjdXJyKSE7XG4gICAgICAgIHByb3AuY2hhbmdlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBwcm9wLnByb3BlcnRpZXM7XG4gICAgICB9XG4gICAgfSwgcHJvcGVydGllcyk7XG4gIH1cbiAgY2F0Y2ggKF9lcnIpIHt9XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb3BlcnR5S2V5cyA9IChwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT5cbiAgcHJvcGVydHkucHJvcGVydGllcy5tYXAoKHByb3AsIGkpID0+IHtcbiAgICBwcm9wLmZ1bGxLZXkgPSBgJHtwcm9wZXJ0eS5mdWxsS2V5fSR7cHJvcGVydHkuaXNBcnJheSA/IGBbJHtpfV1gIDogYC4ke3Byb3Aua2V5fWB9YDtcbiAgICBwcm9wLmtleSA9IHByb3BlcnR5LmlzQXJyYXkgPyBgJHtpfWAgOiBwcm9wLmtleTtcbiAgICByZXR1cm4gcmVmcmVzaFByb3BlcnR5S2V5cyhwcm9wKTtcbiAgfSk7XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZUR1cmF0aW9uRW5hYmxlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpO1xuICByZXR1cm4gISFzdGFydERhdGU/LnZhbHVlICYmICEhZW5kRGF0ZT8udmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbiA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ3N0YXJ0RGF0ZScpITtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKSE7XG4gIHJldHVybiBkaWZmSW5EYXlzKHN0YXJ0RGF0ZS52YWx1ZSwgZW5kRGF0ZS52YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGVFbmFibGVkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwgcHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgY29uc3QgY3ljbGVEdXJhdGlvbiA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2N5Y2xlRHVyYXRpb24nKTtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKTtcbiAgcmV0dXJuICEhY3ljbGVEdXJhdGlvbj8udmFsdWUgJiYgISFlbmREYXRlPy52YWx1ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVDeWNsZVN0YXJ0RGF0ZSA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGN5Y2xlRHVyYXRpb24gPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdjeWNsZUR1cmF0aW9uJykhO1xuICBjb25zdCBlbmREYXRlID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnZW5kRGF0ZScpITtcbiAgcmV0dXJuIG1vbWVudChlbmREYXRlLnZhbHVlKS5sb2NhbGUoJ2VuLWdiJykuc3VidHJhY3QoY3ljbGVEdXJhdGlvbi52YWx1ZSwgJ2RheXMnKS5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbn07XG4iXX0=
|
|
564
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZXMtZm9ybS5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9maWxlcy9maWxlcy1mb3JtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtCQUErQjtBQUMvQixPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxNQUFNLE1BQU0sUUFBUSxDQUFDO0FBQzVCLE9BQU8scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLEVBQUUsSUFBSSxNQUFNLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUMzRCxPQUFPLEVBQ2UsVUFBVSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFDM0QsZ0JBQWdCLEVBQ3JDLE1BQU0sc0JBQXNCLENBQUM7QUFLOUIsT0FBTyxFQUNhLHdCQUF3QixFQUFFLFdBQVcsRUFDdkQsc0JBQXNCLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFDdEQsaUJBQWlCLEVBQUUsbUJBQW1CLEVBQUUsZ0JBQWdCLEVBQUUscUJBQXFCLEVBQ2hGLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUNMLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUN6RixrQkFBa0IsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFDakUsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFckgsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJ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dUIsRUFBRSxFQUFFO0lBQzlGLE1BQU0sYUFBYSxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLGVBQWUsQ0FBRSxDQUFDO0lBQzlFLE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBRSxDQUFDO0lBQ2xFLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzFHLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNvbXBsZXhpdHkgKi9cbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoLmdldCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgJ21vbWVudC9sb2NhbGUvZW4tZ2InO1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBkaWZmSW5EYXlzLCBpc051bWJlciB9IGZyb20gJ0BoZXN0aWEtZWFydGgvdXRpbHMnO1xuaW1wb3J0IHtcbiAgSlNPTiBhcyBIZXN0aWFKc29uLCBTY2hlbWFUeXBlLCBOb2RlVHlwZSwgaXNUeXBlTm9kZSwgaXNUeXBlVmFsaWQsIGlzRXhwYW5kYWJsZSxcbiAgU2l0ZSwgT3JnYW5pc2F0aW9uLCB0eXBlVG9TY2hlbWFUeXBlXG59IGZyb20gJ0BoZXN0aWEtZWFydGgvc2NoZW1hJztcbmltcG9ydCB7XG4gIGRlZmluaXRpb25zLCBkZWZpbml0aW9uLCBJRGVmaW5pdGlvbk9iamVjdCwgSURlZmluaXRpb25BcnJheSwgZ2VuZXJpY1R5cGVcbn0gZnJvbSAnQGhlc3RpYS1lYXJ0aC9qc29uLXNjaGVtYSc7XG5cbmltcG9ydCB7XG4gIElWYWxpZGF0aW9uRXJyb3IsIGZvcm1hdEN1c3RvbUVycm9yTWVzc2FnZSwgZm9ybWF0RXJyb3IsXG4gIGlzTWlzc2luZ1Byb3BlcnR5RXJyb3IsIGVycm9ySGFzRXJyb3IsIGVycm9ySGFzV2FybmluZywgdmFsaWRhdGlvbkVycm9yTGV2ZWwsXG4gIG1pc3NpbmdOb2RlRXJyb3JzLCBpc01pc3NpbmdPbmVPZkVycm9yLCBpc01pZ3JhdGlvbkVycm9yLCBtaWdyYXRpb25FcnJvck1lc3NhZ2Vcbn0gZnJvbSAnLi9maWxlcy1lcnJvci5tb2RlbCc7XG5pbXBvcnQge1xuICBzY2hlbWFSZXF1aXJlZFByb3BlcnRpZXMsIHZhbHVlVHlwZVRvRGVmYXVsdCwgZGVmaW5pdGlvblRvU2NoZW1hVHlwZSwgYXZhaWxhYmxlUHJvcGVydGllcyxcbiAgbmVzdGluZ1R5cGVFbmFibGVkLCBuZXN0aW5nRW5hYmxlZCwgbGlua1R5cGVFbmFibGVkLCBpc1NjaGVtYUlyaVxufSBmcm9tICcuLi9zY2hlbWEvc2NoZW1hLnNlcnZpY2UnO1xuaW1wb3J0IHsgbWF0Y2hDb3VudHJ5IH0gZnJvbSAnLi4vc2VhcmNoL3NlYXJjaC5tb2RlbCc7XG5pbXBvcnQgeyBiYXNlVXJsLCBjb2RlLCBnbG9zc2FyeUxpbmssIG1hcHNVcmwsIHNhZmVKU09OUGFyc2UsIHNhZmVKU09OU3RyaW5naWZ5LCBzY2hlbWFMaW5rIH0gZnJvbSAnLi4vY29tbW9uL3V0aWxzJztcblxuY29uc3QgbWlzc2luZ05vZGVFcnJvck1lc3NhZ2UgPSAoeyAnQHR5cGUnOiBfdCwgdHlwZSwgbmFtZSB9OiBhbnksIG1pc3NpbmdJZEVycm9yPzogSVZhbGlkYXRpb25FcnJvcikgPT5cbiAgKF90IHx8IHR5cGUpID09PSAnVGVybSdcbiAgICAvLyBtaWdyYXRlZCBmcm9tIGEgdmFsdWUgdG8gYW5vdGhlclxuICAgID8gaXNNaWdyYXRpb25FcnJvcihtaXNzaW5nSWRFcnJvcilcbiAgICAgID8gbWlncmF0aW9uRXJyb3JNZXNzYWdlKG1pc3NpbmdJZEVycm9yKVxuICAgICAgOiBgJHtuYW1lID8gYFRoZSB0ZXJtIFwiJHtuYW1lfVwiYCA6ICdUaGlzIHRlcm0nfSBkb2Vzbid0IG1hdGNoIGEgdGVybSBpbiB0aGUgJHtnbG9zc2FyeUxpbmsoJ0dsb3NzYXJ5IG9mIFRlcm1zJyl9LlxuICAgICAgUGxlYXNlIGNoZWNrIHRoZSAke2dsb3NzYXJ5TGluaygnR2xvc3NhcnknKX0gZm9yIHRoZSBjb3JyZWN0ICR7Y29kZSgnQGlkJyl9IG9yICR7Y29kZSgnbmFtZScpfSBhbmQgc3BlbGxpbmcuYFxuICAgIDogYFRoaXMgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSBkb2VzIG5vdCBleGlzdCBpbiBIZXN0aWEuIElmIHlvdSBhcmUgdHJ5aW5nIHRvIGxpbmsgdG8gYW4gZXhpc3RpbmdcbiAgICAke3NjaGVtYUxpbmsoX3QgfHwgdHlwZSl9IGluIEhlc3RpYSwgcGxlYXNlIGNoZWNrIHRoZSAke2NvZGUoJ25hbWUnKX0gb3IgJHtjb2RlKCdAaWQnKX0gaXMgY29ycmVjdC5cbiAgICBJZiB5b3UgYXJlIHRyeWluZyB0byBjcmVhdGUgYSBuZXcgJHtzY2hlbWFMaW5rKF90IHx8IHR5cGUpfSwgcGxlYXNlIGlkZW50aWZ5IGl0IHdpdGggYW4gJHtjb2RlKCdpZCcpfSBmaWVsZC5gO1xuXG5leHBvcnQgY29uc3QgQVJSQVlfREVMSU1JVEVSID0gJzsnO1xuY29uc3QgcHJpdmF0ZUtleXMgPSBbXG4gICdmaWxlcGF0aCdcbl07XG5cbmV4cG9ydCB0eXBlIHN1Z2dlc3Rpb25UeXBlID0gTm9kZVR5cGUgfCAnc2VsZWN0JyB8ICdkZWZhdWx0JztcbmV4cG9ydCBjb25zdCBkZWZhdWx0U3VnZ2VzdGlvblR5cGU6IHN1Z2dlc3Rpb25UeXBlID0gJ2RlZmF1bHQnO1xuXG5pbnRlcmZhY2UgSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24ge1xuICB0eXBlPzogc3VnZ2VzdGlvblR5cGU7XG4gIHF1ZXJpZXM/OiBhbnlbXTtcbiAgdmFsdWVzPzogc3RyaW5nW107XG4gIHBhcmVudExldmVsPzogbnVtYmVyO1xuICBpc0xpbmtOb2RlPzogYm9vbGVhbjtcbiAgaXNVbmlxdWVLZXk/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSU5ld1Byb3BlcnR5IHtcbiAgbmFtZT86IHN0cmluZztcbiAgcHJvcD86IGRlZmluaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUVycm9yUHJvcGVydHkge1xuICBsZXZlbD86IHZhbGlkYXRpb25FcnJvckxldmVsO1xuICBtZXNzYWdlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElOb2RlUHJvcGVydHkge1xuICAvKipcbiAgICogV2hldGhlciBvciBub3QgdGhpcyBwcm9wZXJ0eSB3YXMgYWRkZWQgYnkgdGhlIHVzZXJcbiAgICovXG4gIGlkOiBzdHJpbmc7XG4gIGlzQWRkZWQ/OiBib29sZWFuO1xuICBzY2hlbWFUeXBlOiBTY2hlbWFUeXBlO1xuICBrZXk6IHN0cmluZztcbiAgZnVsbEtleTogc3RyaW5nO1xuICB2YWx1ZTogYW55O1xuICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGJvb2xlYW47XG4gIHN1Z2dlc3Rpb25zPzogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb247XG4gIHNjaGVtYT86IGRlZmluaXRpb247XG4gIGVycm9yPzogSVZhbGlkYXRpb25FcnJvcjtcbiAgaGFzRXJyb3I/OiBib29sZWFuO1xuICBoYXNXYXJuaW5nPzogYm9vbGVhbjtcbiAgZWRpdGFibGU/OiBib29sZWFuO1xuICBjbG9zZWRWaXNpYmxlPzogYm9vbGVhbjtcbiAgbmV3UHJvcGVydHk/OiBJTmV3UHJvcGVydHk7XG4gIG5ld0Vycm9yPzogSUVycm9yUHJvcGVydHk7XG4gIGlzUmVxdWlyZWQ/OiBib29sZWFuO1xuICBpc0hpZGRlbj86IGJvb2xlYW47XG4gIGlzQXJyYXk/OiBib29sZWFuO1xuICBpc0V4cGFuZGFibGU/OiBib29sZWFuO1xuICBpc09wZW4/OiBib29sZWFuO1xuICBwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W107XG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nO1xuICBleHRlcm5hbFVybD86IHtcbiAgICB1cmw/OiBzdHJpbmc7XG4gICAgdGl0bGU6IHN0cmluZztcbiAgICAvLyBkZWZhdWx0IGlzIGV4dGVybmFsLWxpbmstYWx0XG4gICAgaWNvbj86IHN0cmluZztcbiAgICB1cmxQYXJhbVZhbHVlPzogYm9vbGVhbjtcbiAgfTtcbiAgLy8gbWFraW5nIGNoYW5nZXMgb24gdGhlIHByb3BlcnR5XG4gIGxvYWRpbmc/OiBib29sZWFuO1xuICAvLyB1c2VyIG1hZGUgY2hhbmdlcyB0byB0aGUgb3JpZ2luYWwgdmFsdWVcbiAgY2hhbmdlZD86IGJvb2xlYW47XG4gIGZvcm1hdHRlcjogKHZhbHVlOiBhbnkpID0+IHN0cmluZztcbn1cblxuY29uc3Qgc3RyaW5nVmFsdWUgPSAodmFsdWU6IGFueSkgPT4gKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdmFsdWUgPT09IG51bGwgPyAnJyA6IHZhbHVlKS50b1N0cmluZygpO1xuY29uc3Qgbm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGggPSAoa2V5OiBzdHJpbmcpID0+IGtleS5yZXBsYWNlKC9cXFtcXGQrXFxdJC8sICcnKTtcbmV4cG9ydCBjb25zdCBrZXlUb0RhdGFQYXRoID0gKGtleTogc3RyaW5nKSA9PiBrZXk/Lmxlbmd0aCA/IGAuJHtrZXl9YCA6ICcnO1xuZXhwb3J0IGNvbnN0IGRhdGFQYXRoVG9LZXkgPSAoZGF0YVBhdGggPSAnJywgdHJpbUFycmF5ID0gZmFsc2UpID0+XG4gIHRyaW1BcnJheSA/IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGRhdGFQYXRoLnN1YnN0cmluZygxKSkgOiBkYXRhUGF0aC5zdWJzdHJpbmcoMSk7XG5leHBvcnQgY29uc3QgcGFyZW50S2V5ID0gKGtleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IGtleXMgPSAoa2V5LnN0YXJ0c1dpdGgoJy4nKSA/IGtleS5zdWJzdHJpbmcoMSkgOiBrZXkpLnNwbGl0KCcuJyk7XG4gIGtleXMucG9wKCk7XG4gIHJldHVybiBrZXlzLmpvaW4oJy4nKTtcbn07XG5cbi8qKlxuICogU29ydCBwcm9wZXJ0aWVzIGhhdmluZyBlcnJvcnMsIHR5cGUsIGlkLCAuLi5wcm9wZXJ0aWVzIChzaW1wbGUpLCBhbmQgZmluYWxseSB0aGUgZ3JvdXBzXG4gKlxuICogQHBhcmFtIGEge0lOb2RlUHJvcGVydHl9XG4gKiBAcGFyYW0gYiB7SU5vZGVQcm9wZXJ0eX1cbiAqL1xuZXhwb3J0IGNvbnN0IHNvcnRQcm9wZXJ0aWVzID0gKGE6IElOb2RlUHJvcGVydHksIGI6IElOb2RlUHJvcGVydHkpID0+IHtcbiAgaWYgKGlzTnVtYmVyKGEua2V5KSAmJiBpc051bWJlcihiLmtleSkpIHtcbiAgICByZXR1cm4gK2Eua2V5IC0gK2Iua2V5O1xuICB9XG4gIGlmIChhLmlzRXhwYW5kYWJsZSkge1xuICAgIHJldHVybiBiLmlzRXhwYW5kYWJsZSA/IGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpIDogMTtcbiAgfVxuICBpZiAoYi5pc0V4cGFuZGFibGUpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKCFhLmtleSkge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBjb25zdCBhS2V5ID0gYS5rZXkucmVwbGFjZSgnQCcsICcnKTtcbiAgY29uc3QgYktleSA9IGIua2V5LnJlcGxhY2UoJ0AnLCAnJyk7XG4gIGlmIChhS2V5ID09PSAndHlwZScpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgaWYgKGJLZXkgPT09ICd0eXBlJykge1xuICAgIHJldHVybiAxO1xuICB9XG4gIGlmIChhS2V5ID09PSAnaWQnICYmIGJLZXkgIT09ICd0eXBlJykge1xuICAgIHJldHVybiAtMTtcbiAgfVxuICBpZiAoYS5oYXNFcnJvciB8fCBhLmhhc1dhcm5pbmcpIHtcbiAgICByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIGEua2V5LmxvY2FsZUNvbXBhcmUoYi5rZXkpO1xufTtcblxuY29uc3QgZGVmYXVsdFByb3BlcnR5RXJyb3I6IHtcbiAgW2tleTogc3RyaW5nXTogKGVycm9yOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59ID0ge1xuICBtYXg6ICh7IG1heCB9KSA9PiBgc2hvdWxkIGJlIDw9ICR7bWF4fWAsXG4gIG1pbjogKHsgbWluIH0pID0+IGBzaG91bGQgYmUgPj0gJHttaW59YCxcbiAgcGF0dGVybjogKHsgcmVxdWlyZWRQYXR0ZXJuIH0pID0+IGBzaG91bGQgbWF0Y2ggcGF0dGVybiBcIiR7cmVxdWlyZWRQYXR0ZXJufVwiYCxcbiAgcmVxdWlyZWQ6IChfZSwgeyBzY2hlbWFUeXBlIH0pID0+IHNjaGVtYVR5cGUgPyBgc2hvdWxkIGJlIHNldCBvciBsaW5rZWQgdG8gYW5vdGhlciAke3NjaGVtYVR5cGV9YCA6IHVuZGVmaW5lZFxufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdFByb3BlcnR5RXJyb3IgPSAoZXJyb3JzOiBhbnksIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGtleSA9IE9iamVjdC5rZXlzKGVycm9ycylbMF07XG4gIHJldHVybiBrZXkgaW4gZGVmYXVsdFByb3BlcnR5RXJyb3IgPyBmb3JtYXRDdXN0b21FcnJvck1lc3NhZ2UoZGVmYXVsdFByb3BlcnR5RXJyb3Jba2V5XShlcnJvcnNba2V5XSwgcHJvcGVydHkpKSA6ICcnO1xufTtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdHRlciA9IChrZXk6IHN0cmluZykgPT4gKHZhbHVlOiBhbnkpID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgPyAodmFsdWUuYmlibGlvZ3JhcGh5Py50aXRsZSB8fCB2YWx1ZVtrZXldIHx8IHZhbHVlLm5hbWUpIDogdmFsdWU7XG5cbmV4cG9ydCBjb25zdCBoYXNFcnJvciA9IHZhbHVlID0+IEFycmF5LmlzQXJyYXkodmFsdWUpID8gdmFsdWUuc29tZShoYXNFcnJvcikgOiB2YWx1ZS5oYXNFcnJvcjtcblxuZXhwb3J0IGNvbnN0IGhhc1dhcm5pbmcgPSB2YWx1ZSA9PiBBcnJheS5pc0FycmF5KHZhbHVlKSA/IHZhbHVlLnNvbWUoaGFzV2FybmluZykgOiB2YWx1ZS5oYXNXYXJuaW5nO1xuXG5jb25zdCBjb21waWxlU3VnZ2VzdGlvblF1ZXJpZXMgPSAoa2V5OiBzdHJpbmcsIGFsbE9mOiBhbnlbXSkgPT4ge1xuICBjb25zdCBjb25kaXRpb25zID0gKGFsbE9mIHx8IFtdKVxuICAgIC5maWx0ZXIodiA9PiAodi5pZj8ucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKGtleSkpXG4gICAgLm1hcCh2ID0+IHYudGhlbj8ucHJvcGVydGllcz8uW2tleV0pXG4gICAgLm1hcCh2ID0+IHY/Lml0ZW1zPy5wcm9wZXJ0aWVzIHx8IHY/LnByb3BlcnRpZXMpXG4gICAgLmZpbHRlcihCb29sZWFuKTtcbiAgcmV0dXJuIGNvbmRpdGlvbnMubGVuZ3RoID8gW3tcbiAgICBib29sOiB7XG4gICAgICBzaG91bGQ6IGNvbmRpdGlvbnMuZmxhdE1hcChjb25kID0+IE9iamVjdC5rZXlzKGNvbmQpLmZsYXRNYXAoayA9PiAoY29uZFtrXS5lbnVtIHx8IFtdKS5tYXAodiA9PiAoe1xuICAgICAgICBtYXRjaDogeyBba106IHYgfVxuICAgICAgfSkpKSksXG4gICAgICBtaW5pbXVtX3Nob3VsZF9tYXRjaDogMVxuICAgIH1cbiAgfV0gOiBbXTtcbn07XG5cbi8vIGRlZmF1bHQgc3VnZ2VzdCBmb3IgbGlua2luZyBub2RlcyB0b2dldGhlciB1c2luZyB0aGUgYGlkYCBmaWVsZFxuY29uc3Qgc3VnZ2VzdExpbmtOb2RlcyA9ICh0eXBlOiBOb2RlVHlwZSwgZnVsbEtleTogc3RyaW5nKTogSU5vZGVQcm9wZXJ0eVN1Z2dlc3Rpb24gfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpO1xuICByZXR1cm4ga2V5ID09PSAnaWQnICYmIGtleXMubGVuZ3RoID49IDEgPyB7IHR5cGUsIGlzTGlua05vZGU6IHRydWUgfSA6IHVuZGVmaW5lZDtcbn07XG5cbmNvbnN0IHN1Z2dlc3RFeGlzdGluZ05vZGUgPSAodHlwZTogTm9kZVR5cGUsIGZ1bGxLZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHlTdWdnZXN0aW9uIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3Qga2V5ID0ga2V5cy5wb3AoKSE7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA+PSAxICYmIFsnQGlkJywgJ29wZW5MQ0FJZCddLmluY2x1ZGVzKGtleSkgPyB7IHR5cGUsIGlzVW5pcXVlS2V5OiAnQGlkJyB9IDogdW5kZWZpbmVkO1xufTtcblxuY29uc3QgZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbiA9ICh0eXBlOiBOb2RlVHlwZSkgPT4gKGZ1bGxLZXk6IHN0cmluZykgPT5cbiAgc3VnZ2VzdExpbmtOb2Rlcyh0eXBlLCBmdWxsS2V5KSB8fCBzdWdnZXN0RXhpc3RpbmdOb2RlKHR5cGUsIGZ1bGxLZXkpO1xuXG5jb25zdCB0ZXJtU3VnZ2VzdGlvbnMgPSAocGFyZW50OiBzdHJpbmcsIHsgYWxsT2YgfTogSURlZmluaXRpb25PYmplY3QpID0+ICh7XG4gIHR5cGU6IE5vZGVUeXBlLlRlcm0sXG4gIHF1ZXJpZXM6IFtcbiAgICAuLi5jb21waWxlU3VnZ2VzdGlvblF1ZXJpZXMobm9uRXhwYW5kYWJsZUFycmF5RGF0YVBhdGgocGFyZW50KSwgYWxsT2YhKSxcbiAgICAuLi4oWydjb3VudHJ5J10uaW5jbHVkZXMocGFyZW50KSA/IFttYXRjaENvdW50cnldIDogW10pXG4gIF1cbn0pO1xuXG5jb25zdCB0eXBlVG9TdWdnZXN0aW9uOiB7XG4gIFt0eXBlIGluIFNjaGVtYVR5cGV8Tm9kZVR5cGV8Z2VuZXJpY1R5cGV8J2ludGVnZXInXT86IChcbiAgICBmdWxsS2V5OiBzdHJpbmcsIHBhcmVudFNjaGVtYT86IGRlZmluaXRpb24sIHNjaGVtYT86IGRlZmluaXRpb25cbiAgKSA9PiBJTm9kZVByb3BlcnR5U3VnZ2VzdGlvbnxhbnk7XG59ID0ge1xuICBbTm9kZVR5cGUuQWN0b3JdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLkFjdG9yKSxcbiAgW05vZGVUeXBlLkN5Y2xlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5DeWNsZSksXG4gIFtOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50XTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5JbXBhY3RBc3Nlc3NtZW50KSxcbiAgW05vZGVUeXBlLk9yZ2FuaXNhdGlvbl06IGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuT3JnYW5pc2F0aW9uKSxcbiAgW05vZGVUeXBlLlNpdGVdOiBkZWZhdWx0Tm9kZVR5cGVTdWdnZXN0aW9uKE5vZGVUeXBlLlNpdGUpLFxuICBbTm9kZVR5cGUuU291cmNlXTogZGVmYXVsdE5vZGVUeXBlU3VnZ2VzdGlvbihOb2RlVHlwZS5Tb3VyY2UpLFxuICBbTm9kZVR5cGUuVGVybV06IChmdWxsS2V5LCBwYXJlbnRTY2hlbWEpID0+IHtcbiAgICBjb25zdCBrZXlzID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICAgIGNvbnN0IGtleSA9IGtleXMucG9wKCkhO1xuICAgIHJldHVybiBbJ25hbWUnXS5pbmNsdWRlcyhrZXkpICYmIGtleXMubGVuZ3RoID49IDEgP1xuICAgICAgdGVybVN1Z2dlc3Rpb25zKGtleXMucG9wKCkhLCBwYXJlbnRTY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpIDpcbiAgICAgIGRlZmF1bHROb2RlVHlwZVN1Z2dlc3Rpb24oTm9kZVR5cGUuVGVybSkoZnVsbEtleSk7XG4gIH0sXG4gIFtTY2hlbWFUeXBlLkJpYmxpb2dyYXBoeV06IChmdWxsS2V5KSA9PiB7XG4gICAgY29uc3Qga2V5cyA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgICBjb25zdCBwYXJlbnQgPSBrZXlzLnBvcCgpITtcbiAgICAvLyBwcmV2ZW50IHJlcGxhY2luZyBhIHRvcC1sZXZlbCBzb3VyY2VcbiAgICByZXR1cm4gWyd0aXRsZScsICdkb2N1bWVudERPSScsICdzY29wdXMnXS5pbmNsdWRlcyhrZXkpICYmIHBhcmVudCA9PT0gJ2JpYmxpb2dyYXBoeScgJiYga2V5cy5sZW5ndGggPj0gMSA/IHtcbiAgICAgIHR5cGU6IE5vZGVUeXBlLlNvdXJjZSxcbiAgICAgIHBhcmVudExldmVsOiAxXG4gICAgfSA6IHVuZGVmaW5lZDtcbiAgfSxcbiAgbnVtYmVyOiAoX2EsIF9iLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB2YWx1ZXMgPSAoc2NoZW1hIGFzIGFueSkuY29uc3QgPyBbKHNjaGVtYSBhcyBhbnkpLmNvbnN0XSA6IFtdO1xuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiB2YWx1ZXMubGVuZ3RoID4gMCA/ICdzZWxlY3QnIDogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlLFxuICAgICAgLy8gZXhjbHVkZSBzdWdnZXN0aW5nIFNjaGVtYVR5cGVcbiAgICAgIHZhbHVlc1xuICAgIH07XG4gIH0sXG4gIGludGVnZXI6IChfYSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIGNvbnN0IHZhbHVlcyA9IChzY2hlbWEgYXMgYW55KS5jb25zdCA/IFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDogW107XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICAvLyBleGNsdWRlIHN1Z2dlc3RpbmcgU2NoZW1hVHlwZVxuICAgICAgdmFsdWVzXG4gICAgfTtcbiAgfSxcbiAgc3RyaW5nOiAoZnVsbEtleSwgX2IsIHNjaGVtYSkgPT4ge1xuICAgIC8vIGV4Y2x1ZGUgc3VnZ2VzdGluZyBTY2hlbWFUeXBlXG4gICAgY29uc3QgdmFsdWVzID0gKHNjaGVtYSBhcyBhbnkpLmNvbnN0ID9cbiAgICAgIFsoc2NoZW1hIGFzIGFueSkuY29uc3RdIDpcbiAgICAgICgoc2NoZW1hIGFzIGFueSkuZW51bSB8fCBbXSkuZmlsdGVyKHZhbCA9PiAhT2JqZWN0LnZhbHVlcyhTY2hlbWFUeXBlKS5pbmNsdWRlcyh2YWwpKTtcbiAgICBjb25zdCBrZXkgPSBmdWxsS2V5LnNwbGl0KCcuJykucG9wKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IHZhbHVlcy5sZW5ndGggPiAwICYmIGtleSAhPT0gJ3R5cGUnID8gJ3NlbGVjdCcgOiBkZWZhdWx0U3VnZ2VzdGlvblR5cGUsXG4gICAgICB2YWx1ZXNcbiAgICB9O1xuICB9LFxuICBib29sZWFuOiAoX2EpID0+ICh7XG4gICAgdHlwZTogJ3NlbGVjdCcsXG4gICAgdmFsdWVzOiBbJ3RydWUnLCAnZmFsc2UnXVxuICB9KVxufTtcblxuY29uc3QgZW5hYmxlU3VnZ2VzdGlvbnMgPSAoXG4gIHBhcmVudFNjaGVtYTogZGVmaW5pdGlvbiwgdHlwZTogU2NoZW1hVHlwZSB8IE5vZGVUeXBlIHwgZ2VuZXJpY1R5cGUsIGZ1bGxLZXk6IHN0cmluZywgc2NoZW1hPzogZGVmaW5pdGlvblxuKSA9PiB7XG4gIGNvbnN0IHN1Z2dlc3Rpb24gPSB0eXBlIGluIHR5cGVUb1N1Z2dlc3Rpb24gPyB0eXBlVG9TdWdnZXN0aW9uW3R5cGVdIShmdWxsS2V5LCBwYXJlbnRTY2hlbWEpIDogdW5kZWZpbmVkO1xuICByZXR1cm4gc3VnZ2VzdGlvbiB8fCAoXG4gICAgc2NoZW1hICYmIHNjaGVtYS50eXBlIGFzIGdlbmVyaWNUeXBlIGluIHR5cGVUb1N1Z2dlc3Rpb24gP1xuICAgICAgdHlwZVRvU3VnZ2VzdGlvbltzY2hlbWEudHlwZSBhcyBnZW5lcmljVHlwZV0hKGZ1bGxLZXksIHBhcmVudFNjaGVtYSwgc2NoZW1hKSA6XG4gICAgICB1bmRlZmluZWRcbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBub2RlQXZhaWxhYmxlUHJvcGVydGllcyA9IChcbiAgbm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwgeyBmdWxsS2V5LCBzY2hlbWEsIHNjaGVtYVR5cGUgfTogUGFydGlhbDxJTm9kZVByb3BlcnR5PlxuKSA9PiBhdmFpbGFibGVQcm9wZXJ0aWVzKHNjaGVtYSEsIHNjaGVtYVR5cGUhLCBmdWxsS2V5ID8gZ2V0KG5vZGUsIGZ1bGxLZXksIHt9KSA6IG5vZGUsIGZ1bGxLZXkhLmxlbmd0aCA+IDApO1xuXG5leHBvcnQgY29uc3QgaXNBZGRQcm9wZXJ0eUVuYWJsZWQgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIHNjaGVtYVR5cGU6IFNjaGVtYVR5cGUsIHNjaGVtYTogZGVmaW5pdGlvbiwgZnVsbEtleSA9ICcnXG4pID0+ICEhc2NoZW1hICYmXG4gICEhT2JqZWN0LmtleXMobm9kZUF2YWlsYWJsZVByb3BlcnRpZXMobm9kZSwgeyBmdWxsS2V5LCBzY2hlbWEgfSkpLmxlbmd0aCAmJlxuICAoIWZ1bGxLZXkgfHwgbmVzdGluZ1R5cGVFbmFibGVkKHNjaGVtYVR5cGUpKTtcblxuY29uc3QgZWRpdGFibGVLZXkgPSAoa2V5OiBzdHJpbmcpID0+ICFbJ3R5cGUnLCAnQHR5cGUnLCAndGVybVR5cGUnXS5pbmNsdWRlcyhrZXkpO1xuXG5leHBvcnQgY29uc3QgcHJvcGVydHlJZCA9ICgpID0+IHV1aWR2NCgpO1xuXG5jb25zdCBwcm9wZXJ0eVVybCA9IChub2RlOiBIZXN0aWFKc29uPFNjaGVtYVR5cGU+LCBrZXk6IHN0cmluZykgPT5cbiAgWydAaWQnLCAnbmFtZSddLmluY2x1ZGVzKGtleSkgJiYgbGlua1R5cGVFbmFibGVkKG5vZGVbJ0B0eXBlJ10pXG4gICAgPyBub2RlWydAaWQnXVxuICAgICAgPyB7XG4gICAgICAgIHVybDogYCR7YmFzZVVybCgpfS8ke25vZGVbJ0B0eXBlJ10udG9Mb3dlckNhc2UoKX0vJHtub2RlWydAaWQnXX1gLFxuICAgICAgICB0aXRsZTogJ09wZW4nXG4gICAgICB9XG4gICAgICA6IG5vZGVbJ0B0eXBlJ10gPT09IFNjaGVtYVR5cGUuVGVybVxuICAgICAgICA/IHtcbiAgICAgICAgICB1cmw6IGAke2Jhc2VVcmwoKX0vZ2xvc3Nhcnk/cXVlcnk9YCxcbiAgICAgICAgICB1cmxQYXJhbVZhbHVlOiB0cnVlLFxuICAgICAgICAgIHRpdGxlOiAnU2VhcmNoIGluIEdsb3NzYXJ5J1xuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkXG4gICAgOiB1bmRlZmluZWQ7XG5cbmNvbnN0IHByb3BlcnR5TWFwc1VybCA9IChub2RlOiBTaXRlIHwgT3JnYW5pc2F0aW9uLCBrZXk6IHN0cmluZywgdmFsdWUpID0+XG4gIFsndHlwZSddLmluY2x1ZGVzKGtleSkgJiYgW1xuICAgIFNjaGVtYVR5cGUuU2l0ZS50b1N0cmluZygpLFxuICAgIFNjaGVtYVR5cGUuT3JnYW5pc2F0aW9uLnRvU3RyaW5nKClcbiAgXS5pbmNsdWRlcyhzdHJpbmdWYWx1ZSh2YWx1ZSkgfHwgbm9kZS50eXBlKSA/XG4gICAge1xuICAgICAgdXJsOiBtYXBzVXJsKHsgbGF0OiBub2RlLmxhdGl0dWRlLCBsbmc6IG5vZGUubG9uZ2l0dWRlIH0pLFxuICAgICAgdGl0bGU6ICdWaWV3IG9uIG1hcHMnLFxuICAgICAgaWNvbjogJ21hcCdcbiAgICB9IDpcbiAgICB1bmRlZmluZWQ7XG5cbmNvbnN0IHByb3BlcnR5RXh0ZXJuYWxVcmwgPSAobm9kZTogSGVzdGlhSnNvbjxTY2hlbWFUeXBlPiwga2V5OiBzdHJpbmcsIHZhbHVlOiBhbnkpID0+XG4gIHByb3BlcnR5VXJsKG5vZGUsIGtleSkgfHxcbiAgcHJvcGVydHlNYXBzVXJsKG5vZGUgYXMgYW55LCBrZXksIHZhbHVlKTtcblxuY29uc3QgYXJyYXlQbGFjZWhvbGRlciA9ICh2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PiBgVHlwZSBhICR7dmFsdWVUeXBlfSB0aGVuIHByZXNzIEVudGVyYDtcblxuY29uc3QgZGVmYXVsdFBsYWNlaG9sZGVyID0gKHsgdHlwZSwgZXhhbXBsZXMgfTogYW55LCB2YWx1ZVR5cGU6IGdlbmVyaWNUeXBlKSA9PiBleGFtcGxlcz8ubGVuZ3RoID8gKFxuICBBcnJheS5pc0FycmF5KGV4YW1wbGVzWzBdKSA/IGFycmF5UGxhY2Vob2xkZXIodmFsdWVUeXBlKSA6IGV4YW1wbGVzWzBdXG4pIDogYE11c3QgYmUgb2YgdHlwZSAke3R5cGUgfHwgdmFsdWVUeXBlfWA7XG5cbmNvbnN0IHNjaGVtYVBsYWNob2xkZXIgPSAoc2NoZW1hOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbcGFyZW50LCAuLi5rZXlzXSA9IGZ1bGxLZXkuc3BsaXQoJy4nKTtcbiAgY29uc3QgcHJvcGVydGllcyA9IHNjaGVtYS5wcm9wZXJ0aWVzIHx8IHt9O1xuICBjb25zdCB7IGV4YW1wbGVzIH0gPSBwYXJlbnQgaW4gcHJvcGVydGllcyA/IHByb3BlcnRpZXNbcGFyZW50XSA6IHsgZXhhbXBsZXM6IFtdIH07XG4gIHJldHVybiBleGFtcGxlcz8ubGVuZ3RoICYmIHR5cGVvZiBleGFtcGxlc1swXSA9PT0gJ29iamVjdCcgPyBnZXQoZXhhbXBsZXNbMF0sIGtleXMuam9pbignLicpLCBudWxsKTogbnVsbDtcbn07XG5cbmNvbnN0IHByb3BlcnR5UGxhY2Vob2xkZXIgPSAoc2NoZW1hOiBhbnksIHZhbHVlVHlwZTogZ2VuZXJpY1R5cGUsIGZ1bGxLZXkgPSAnJywgcGFyZW50U2NoZW1hPzogYW55KSA9PlxuICBzY2hlbWEudHlwZSA9PT0gJ2FycmF5JyA/XG4gICAgYXJyYXlQbGFjZWhvbGRlcih2YWx1ZVR5cGUpIDogKFxuICAgICAgcGFyZW50U2NoZW1hICYmIGZ1bGxLZXk/Lmxlbmd0aCA/IHNjaGVtYVBsYWNob2xkZXIocGFyZW50U2NoZW1hLCBmdWxsS2V5KSA6IG51bGxcbiAgICApIHx8IGRlZmF1bHRQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSk7XG5cbmNvbnN0IHByb3BlcnR5VHlwZVZhbHVlOiB7XG4gIFt0eXBlOiBzdHJpbmddOiAodmFsdWU6IGFueSwgc2NoZW1hOiBkZWZpbml0aW9uKSA9PiBhbnk7XG59ID0ge1xuICBvYmplY3Q6IHZhbCA9PiBzYWZlSlNPTlN0cmluZ2lmeSh2YWwpLFxuICBhcnJheTogKHZhbCwgc2NoZW1hKSA9PiB7XG4gICAgY29uc3QgeyBpdGVtcyB9ID0gc2NoZW1hIGFzIElEZWZpbml0aW9uQXJyYXk7XG4gICAgcmV0dXJuICckcmVmJyBpbiBpdGVtcyA/IHZhbCA6IChcbiAgICAgIEFycmF5LmlzQXJyYXkodmFsKSA/XG4gICAgICAgIHZhbC5tYXAodmFsdWUgPT4gcHJvcGVydHlWYWx1ZShpdGVtcywgdmFsdWUpKS5qb2luKEFSUkFZX0RFTElNSVRFUikgOlxuICAgICAgICB2YWxcbiAgICApO1xuICB9LFxuICBqc29uOiB2YWwgPT4gdmFsIHx8ICcnLFxuICBzdHJpbmc6IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRyaW0oKSxcbiAgbnVtYmVyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBpbnRlZ2VyOiB2YWwgPT4gKyhgJHt2YWx9YCB8fCAnMCcpLFxuICBib29sZWFuOiB2YWwgPT4gKGAke3ZhbH1gIHx8ICcnKS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbn07XG5cbmNvbnN0IHByb3BlcnR5VmFsdWUgPSAoc2NoZW1hOiBkZWZpbml0aW9uLCB2YWx1ZTogYW55KSA9PlxuICBzY2hlbWEudHlwZSA/IChcbiAgICBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSAmJiB0eXBlb2YgdmFsdWUgaW4gcHJvcGVydHlUeXBlVmFsdWUgP1xuICAgICAgcHJvcGVydHlUeXBlVmFsdWVbdHlwZW9mIHZhbHVlXSh2YWx1ZSwgc2NoZW1hKSA6XG4gICAgICBwcm9wZXJ0eVR5cGVWYWx1ZVtzY2hlbWEudHlwZSBhcyBzdHJpbmddKHZhbHVlLCBzY2hlbWEpXG4gICkgOlxuICBzYWZlSlNPTlN0cmluZ2lmeSh2YWx1ZSk7XG5cbmNvbnN0IHByb3BlcnR5VmFsdWVUeXBlID0gKHNjaGVtYTogZGVmaW5pdGlvbiwgdmFsdWU/OiBhbnkpID0+XG4gIChzY2hlbWEudHlwZSA/IChcbiAgICBBcnJheS5pc0FycmF5KHNjaGVtYS50eXBlKSA/XG4gICAgICBzY2hlbWEudHlwZVswXSA6XG4gICAgICBzY2hlbWEudHlwZSA9PT0gJ2FycmF5JyA/XG4gICAgICAgIHByb3BlcnR5VmFsdWVUeXBlKHsgLi4uc2NoZW1hLCB0eXBlOiBbc2NoZW1hLml0ZW1zLnR5cGUgYXMgZ2VuZXJpY1R5cGVdIH0pIDpcbiAgICAgICAgc2NoZW1hLnR5cGVcbiAgKSA6IHR5cGVvZiB2YWx1ZSkgYXMgZ2VuZXJpY1R5cGU7XG5cbmNvbnN0IHByb3BlcnR5VHlwZVBhcnNlVmFsdWU6IHtcbiAgW3R5cGU6IHN0cmluZ106ICh2YWx1ZTogYW55LCBzY2hlbWE6IGRlZmluaXRpb24pID0+IGFueTtcbn0gPSB7XG4gIHVuZGVmaW5lZDogKCkgPT4gdW5kZWZpbmVkLFxuICBvYmplY3Q6IHZhbCA9PiBzYWZlSlNPTlBhcnNlKHZhbCksXG4gIGFycmF5OiAodmFsLCBzY2hlbWEpID0+IHtcbiAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICByZXR1cm4gJyRyZWYnIGluIGl0ZW1zID8gdmFsIDogKFxuICAgICAgIXZhbCB8fCBBcnJheS5pc0FycmF5KHZhbCkgPyB2YWwgOiB2YWwuc3BsaXQoQVJSQVlfREVMSU1JVEVSKS5tYXAodmFsdWUgPT4gcGFyc2VOZXdWYWx1ZShpdGVtcywgdmFsdWUpKVxuICAgICk7XG4gIH0sXG4gIGpzb246IHZhbCA9PiB2YWwgfHwgJycsXG4gIHN0cmluZzogdmFsID0+IChgJHt2YWx9YCB8fCAnJykudHJpbSgpLFxuICBudW1iZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGludGVnZXI6IHZhbCA9PiArKGAke3ZhbH1gIHx8ICcwJyksXG4gIGJvb2xlYW46IHZhbCA9PiAoYCR7dmFsfWAgfHwgJycpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJ1xufTtcblxuLyoqXG4gKiBDb252ZXJ0IHZhbHVlIHRvIHRoZSBmaW5hbCB0eXBlIGluIHRoZSBzY2hlbWEuXG4gKlxuICogQHBhcmFtIHNjaGVtYSBEZWZpbml0aW9uIG9mIHRoZSB2YWx1ZS5cbiAqIEBwYXJhbSB2YWx1ZVxuICogQHJldHVybnMgVmFsdWUgaW4gdGhlIGNvcnJlY3QgZm9ybWF0LlxuICovXG5leHBvcnQgY29uc3QgcGFyc2VOZXdWYWx1ZSA9IChzY2hlbWE6IGRlZmluaXRpb24sIHZhbHVlOiBhbnkpID0+XG4gIHNjaGVtYS50eXBlID8gKFxuICAgIEFycmF5LmlzQXJyYXkoc2NoZW1hLnR5cGUpID9cbiAgICAgIHByb3BlcnR5VHlwZVBhcnNlVmFsdWVbdHlwZW9mIHZhbHVlXSh2YWx1ZSwgc2NoZW1hKSA6XG4gICAgICBwcm9wZXJ0eVR5cGVQYXJzZVZhbHVlW3NjaGVtYS50eXBlIGFzIHN0cmluZ10odmFsdWUsIHNjaGVtYSlcbiAgKSA6IHZhbHVlO1xuXG5jb25zdCBpc09wZW5EZWZhdWx0ID0gKHNjaGVtYVR5cGU6IFNjaGVtYVR5cGUpID0+IFtcbiAgU2NoZW1hVHlwZS5UZXJtXG5dLmluY2x1ZGVzKHNjaGVtYVR5cGUpO1xuXG4vLyBjYW4gdGhlIHByb3BlcnR5IGJlIHNlZW4gd2hlbiB0aGUgZ3JvdXAgaXMgY2xvc2VkXG5jb25zdCBpc0tleUNsb3NlZFZpc2libGUgPSAoa2V5OiBzdHJpbmcpID0+IFsndHlwZScsICdpZCcsICdAdHlwZScsICdAaWQnXS5pbmNsdWRlcyhrZXkpO1xuXG5jb25zdCBpc0tleUhpZGRlbiA9IChrZXk6IHN0cmluZykgPT4gWyd0eXBlJywgJ0B0eXBlJ10uaW5jbHVkZXMoa2V5KTtcblxuY29uc3QgaXNLZXlSZXF1aXJlZCA9IChrZXk6IHN0cmluZywgZGVmPzogSURlZmluaXRpb25PYmplY3QpID0+XG4gIFsndHlwZScsICdpZCddLmluY2x1ZGVzKGtleSkgfHwgKGRlZj8ucmVxdWlyZWQgfHwgW10pLmluY2x1ZGVzKGtleSk7XG5cbmV4cG9ydCBjb25zdCBwcm9wZXJ0eUVycm9yID0gKGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdKSA9PiAoZGF0YVBhdGg6IHN0cmluZywgbm9uRXhwYW5kYWJsZUFycmF5ID0gZmFsc2UpID0+XG4gIGVycm9ycy5maW5kKGVycm9yID0+XG4gICAgKFxuICAgICAgZXJyb3IuZGF0YVBhdGggPT09IGRhdGFQYXRoIHx8IChcbiAgICAgICAgbm9uRXhwYW5kYWJsZUFycmF5ICYmIG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGVycm9yLmRhdGFQYXRoISkgPT09IG5vbkV4cGFuZGFibGVBcnJheURhdGFQYXRoKGRhdGFQYXRoKVxuICAgICAgKVxuICAgICkgJiYgKGRhdGFQYXRoLmxlbmd0aCA+IDAgfHwgIWlzTWlzc2luZ1Byb3BlcnR5RXJyb3IoZXJyb3IpKVxuICApO1xuXG5jb25zdCBtaXNzaW5nUHJvcGVydHlFcnJvcnMgPSAoXG4gIG5vZGU6IEhlc3RpYUpzb248U2NoZW1hVHlwZT4sIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBwYXJlbnQgPSAnJ1xuKTogSU5vZGVQcm9wZXJ0eVtdID0+IHtcbiAgY29uc3QgYWxsRXJyb3JzID0gZXJyb3JzLmZpbHRlcihlcnJvciA9PlxuICAgIGVycm9yLmRhdGFQYXRoID09PSBrZXlUb0RhdGFQYXRoKHBhcmVudCkgJiYgaXNNaXNzaW5nUHJvcGVydHlFcnJvcihlcnJvcilcbiAgKTtcbiAgLy8gY2hlY2sgZm9yIG5vZGUgbm90IGZvdW5kIGVycm9yc1xuICBjb25zdCBtaXNzaW5nTm9kZSA9IG1pc3NpbmdOb2RlRXJyb3JzKGFsbEVycm9ycyk7XG4gIHJldHVybiBtaXNzaW5nTm9kZS5sZW5ndGggPT09IDIgPyBbe1xuICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgIHN1Z2dlc3Rpb25zOiB7IHR5cGU6IGRlZmF1bHRTdWdnZXN0aW9uVHlwZSB9LFxuICAgIGtleTogJycsXG4gICAgZnVsbEtleTogcGFyZW50LFxuICAgIHZhbHVlOiAnJyxcbiAgICBlcnJvcjoge1xuICAgICAgbGV2ZWw6ICdlcnJvcicsXG4gICAgICBtZXNzYWdlOiBtaXNzaW5nTm9kZUVycm9yTWVzc2FnZShub2RlLCBtaXNzaW5nTm9kZS5maW5kKCh7IHBhcmFtcyB9KSA9PiBwYXJhbXM/Lm1pc3NpbmdQcm9wZXJ0eSA9PT0gJ0BpZCcpKVxuICAgIH0sXG4gICAgaGFzRXJyb3I6IHRydWUsXG4gICAgcHJvcGVydGllczogW10sXG4gICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcignJylcbiAgfV0gOiBhbGxFcnJvcnMubWFwKGVycm9yID0+IHtcbiAgICBjb25zdCB7IG1pc3NpbmdQcm9wZXJ0eSB9ID0gZXJyb3IucGFyYW1zITtcbiAgICBjb25zdCBmdWxsS2V5ID0gcGFyZW50ID8gYCR7cGFyZW50fS4ke21pc3NpbmdQcm9wZXJ0eX1gIDogbWlzc2luZ1Byb3BlcnR5O1xuICAgIGNvbnN0IG1pc3NpbmdPbmVPZiA9IGlzTWlzc2luZ09uZU9mRXJyb3IoZXJyb3IpO1xuICAgIHJldHVybiB7XG4gICAgICBpZDogcHJvcGVydHlJZCgpLFxuICAgICAgc2NoZW1hVHlwZTogbm9kZS50eXBlLFxuICAgICAgc3VnZ2VzdGlvbnM6IHsgdHlwZTogZGVmYXVsdFN1Z2dlc3Rpb25UeXBlIH0sXG4gICAgICBrZXk6IG1pc3NpbmdQcm9wZXJ0eSxcbiAgICAgIGZ1bGxLZXksXG4gICAgICB2YWx1ZTogJ0FkZCBmaWVsZCB0byBmaXgnLFxuICAgICAgZWRpdGFibGU6IGZhbHNlLFxuICAgICAgZXJyb3I6IGZvcm1hdEVycm9yKGVycm9yKSxcbiAgICAgIGhhc0Vycm9yOiBtaXNzaW5nT25lT2YgPyBmYWxzZSA6IGVycm9ySGFzRXJyb3IoZXJyb3IpLFxuICAgICAgaGFzV2FybmluZzogbWlzc2luZ09uZU9mIHx8IGVycm9ySGFzV2FybmluZyhlcnJvciksXG4gICAgICBwcm9wZXJ0aWVzOiBbXSxcbiAgICAgIGFkZFByb3BlcnR5RW5hYmxlZDogdHJ1ZSxcbiAgICAgIGZvcm1hdHRlcjogZm9ybWF0dGVyKG1pc3NpbmdQcm9wZXJ0eSlcbiAgICB9O1xuICB9KTtcbn07XG5cbmNvbnN0IHByb3BlcnR5RnJvbU5vZGUgPSAoXG4gIHNjaGVtYXM6IGRlZmluaXRpb25zLCBlcnJvcnM6IElWYWxpZGF0aW9uRXJyb3JbXSwgbm9kZVNjaGVtYTogZGVmaW5pdGlvbiwgZGVlcEVkaXRhYmxlOiBib29sZWFuLCBwYXJlbnQgPSAnJywgbm9kZTogYW55XG4pID0+IChrZXk6IHN0cmluZyk6IElOb2RlUHJvcGVydHkgPT4ge1xuICBjb25zdCB2YWx1ZSA9IG5vZGVba2V5XTtcbiAgY29uc3QgZXhwYW5kYWJsZSA9IGlzRXhwYW5kYWJsZSh2YWx1ZSk7XG4gIGNvbnN0IGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHZhbHVlKTtcbiAgY29uc3Qgbm9uRXhwYW5kYWJsZUFycmF5ID0gaXNBcnJheSAmJiAhZXhwYW5kYWJsZTtcbiAgY29uc3QgZnVsbEtleSA9IEFycmF5LmlzQXJyYXkobm9kZSkgPyBgJHtwYXJlbnR9WyR7a2V5fV1gIDogW1xuICAgIHBhcmVudCxcbiAgICBrZXlcbiAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignLicpO1xuICBjb25zdCBub2RlVHlwZSA9IG5vZGUudHlwZSB8fCBub2RlWydAdHlwZSddO1xuICBjb25zdCBzY2hlbWFUeXBlID0gZXhwYW5kYWJsZSA/IChcbiAgICBpc0FycmF5ICYmIHZhbHVlLmxlbmd0aCA/IHZhbHVlWzBdLnR5cGUgfHwgdmFsdWVbMF1bJ0B0eXBlJ10gOiB2YWx1ZS50eXBlIHx8IHZhbHVlWydAdHlwZSddXG4gICkgOiBub2RlVHlwZTtcbiAgY29uc3Qgc2NoZW1hID0gKHNjaGVtYXMgJiYgaXNUeXBlVmFsaWQoeyB0eXBlOiBzY2hlbWFUeXBlIH0pID8gKFxuICAgIGV4cGFuZGFibGUgPyBzY2hlbWFzW3NjaGVtYVR5cGVdIDogc2NoZW1hc1tzY2hlbWFUeXBlXS5wcm9wZXJ0aWVzW2tleV1cbiAgKSA6IG51bGwpIHx8IHt9O1xuICBjb25zdCBpc0lyaSA9IGlzU2NoZW1hSXJpKHNjaGVtYSk7XG4gIGNvbnN0IGVycm9yID0gcHJvcGVydHlFcnJvcihlcnJvcnMpKGtleVRvRGF0YVBhdGgoZnVsbEtleSksIG5vbkV4cGFuZGFibGVBcnJheSk7XG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IGV4cGFuZGFibGUgPyAoXG4gICAgLy8gVE9ETzogZm9yIG5vbi1hcnJheSwgc2hvdWxkIGJlIHNjaGVtYSB1bmxlc3MgbGFzdCByZWN1cnNpb25cbiAgICBpc0FycmF5ID8gc2NoZW1hIDogbm9kZVNjaGVtYVxuICApIDogbm9kZVNjaGVtYTtcbiAgY29uc3QgcHJvcGVydGllcyA9IGV4cGFuZGFibGUgfHwgaXNJcmkgP1xuICAgIHJlY3Vyc2l2ZVByb3BlcnRpZXMoc2NoZW1hcywgZXJyb3JzLCBwYXJlbnRTY2hlbWEsIGRlZXBFZGl0YWJsZSwgZnVsbEtleSkodmFsdWUpIDogW107XG4gIGNvbnN0IGluRXJyb3IgPSBlcnJvckhhc0Vycm9yKGVycm9yKSB8fCBoYXNFcnJvcihwcm9wZXJ0aWVzKTtcbiAgY29uc3QgaW5XYXJuaW5nID0gZXJyb3JIYXNXYXJuaW5nKGVycm9yKSB8fCBoYXNXYXJuaW5nKHByb3BlcnRpZXMpO1xuICBjb25zdCBlZGl0YWJsZSA9IGlzVHlwZU5vZGUobm9kZVsnQHR5cGUnXSkgfHwgKGV4cGFuZGFibGUgJiYgaXNUeXBlTm9kZSh2YWx1ZVsnQHR5cGUnXSkpID9cbiAgICBmYWxzZSA6XG4gICAgKFxuICAgICAgLy8gcHJldmVudCBlZGl0aW5nL2FkZGluZyBuZXcgcHJvcGVydGllcyBvbiBleGlzdGluZyBzdWItbm9kZXNcbiAgICAgICFkZWVwRWRpdGFibGUgJiYgaXNUeXBlTm9kZShzY2hlbWFUeXBlKSAmJiAoXG4gICAgICAgIGV4cGFuZGFibGUgPyB2YWx1ZS50eXBlICE9PSBOb2RlVHlwZS5UZXJtIDogcGFyZW50ICYmIG5vZGUudHlwZSAhPT0gTm9kZVR5cGUuVGVybVxuICAgICAgKSA/XG4gICAgICAgIGZhbHNlIDpcbiAgICAgICAgLy8gaGFuZGxlIElSSVxuICAgICAgICAoIXNjaGVtYVR5cGUgJiYga2V5ID09PSAnQGlkJykgfHwgZWRpdGFibGVLZXkoa2V5KVxuICAgICk7XG4gIGNvbnN0IHZhbHVlVHlwZSA9IHByb3BlcnR5VmFsdWVUeXBlKHNjaGVtYSwgdmFsdWUpO1xuICByZXR1cm4ge1xuICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgc2NoZW1hVHlwZTogaXNJcmkgPyBudWxsIDogc2NoZW1hVHlwZSxcbiAgICBzY2hlbWEsXG4gICAga2V5LFxuICAgIGZ1bGxLZXksXG4gICAgdmFsdWU6IHByb3BlcnR5VmFsdWUoc2NoZW1hLCB2YWx1ZSksXG4gICAgZWRpdGFibGU6IGluRXJyb3IgfHwgZWRpdGFibGUsXG4gICAgc3VnZ2VzdGlvbnM6IGVuYWJsZVN1Z2dlc3Rpb25zKG5vZGVTY2hlbWEsIG5vZGUudHlwZSwgZnVsbEtleSwgc2NoZW1hKSxcbiAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKG5vZGUsIHNjaGVtYVR5cGUsIHNjaGVtYSwgZnVsbEtleSksXG4gICAgbmV3UHJvcGVydHk6IHt9LFxuICAgIG5ld0Vycm9yOiB7IGxldmVsOiAnd2FybmluZycgfSxcbiAgICBlcnJvcjogZm9ybWF0RXJyb3IoZXJyb3IpLFxuICAgIGlzSGlkZGVuOiBwYXJlbnQgJiYgaXNLZXlIaWRkZW4oa2V5KSxcbiAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICBoYXNFcnJvcjogaW5FcnJvcixcbiAgICBoYXNXYXJuaW5nOiBpbldhcm5pbmcsXG4gICAgaXNSZXF1aXJlZDogaXNLZXlSZXF1aXJlZChrZXksIHNjaGVtYXNbbm9kZVR5cGVdKSxcbiAgICBpc0FycmF5LFxuICAgIGlzRXhwYW5kYWJsZTogZXhwYW5kYWJsZSxcbiAgICBpc09wZW46IGlzT3BlbkRlZmF1bHQoc2NoZW1hVHlwZSksXG4gICAgcHJvcGVydGllcyxcbiAgICBwbGFjZWhvbGRlcjogcHJvcGVydHlQbGFjZWhvbGRlcihzY2hlbWEsIHZhbHVlVHlwZSwgZnVsbEtleSwgcGFyZW50U2NoZW1hKSxcbiAgICBleHRlcm5hbFVybDogcHJvcGVydHlFeHRlcm5hbFVybChub2RlLCBrZXksIHZhbHVlKSxcbiAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3Qgc2luZ2xlUHJvcGVydHkgPSAoc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlOiBhbnksIGZ1bGxLZXk6IHN0cmluZykgPT4ge1xuICBjb25zdCBbX3QsIC4uLmtleXNdID0gZnVsbEtleS5zcGxpdCgnLicpO1xuICBjb25zdCBrZXkgPSBrZXlzLnBvcCgpITtcbiAgY29uc3QgcGFyZW50ID0ga2V5cy5qb2luKCcuJyk7XG4gIGNvbnN0IHBhcmVudE5vZGUgPSBwYXJlbnQubGVuZ3RoID8gZ2V0KG5vZGUsIHBhcmVudCkgOiBub2RlO1xuICBjb25zdCBzY2hlbWFUeXBlID0gdHlwZVRvU2NoZW1hVHlwZShwYXJlbnROb2RlLnR5cGUgfHwgcGFyZW50Tm9kZVsnQHR5cGUnXSk7XG4gIGNvbnN0IHBhcmVudFNjaGVtYSA9IHNjaGVtYXNbc2NoZW1hVHlwZV07XG4gIHJldHVybiBwcm9wZXJ0eUZyb21Ob2RlKHNjaGVtYXMsIGVycm9ycywgcGFyZW50U2NoZW1hLCB0cnVlLCBwYXJlbnQsIHBhcmVudE5vZGUpKGtleSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVjdXJzaXZlUHJvcGVydGllcyA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIGVycm9yczogSVZhbGlkYXRpb25FcnJvcltdLCBub2RlU2NoZW1hOiBkZWZpbml0aW9uLCBkZWVwRWRpdGFibGU6IGJvb2xlYW4sIHBhcmVudCA9ICcnXG4pID0+IChub2RlOiBhbnkpOiBJTm9kZVByb3BlcnR5W10gPT5cbiAgT2JqZWN0LmtleXMobm9kZSlcbiAgICAuZmlsdGVyKGtleSA9PiAhcHJpdmF0ZUtleXMuaW5jbHVkZXMoa2V5KSlcbiAgICAubWFwKHByb3BlcnR5RnJvbU5vZGUoc2NoZW1hcywgZXJyb3JzLCBub2RlU2NoZW1hLCBkZWVwRWRpdGFibGUsIHBhcmVudCwgbm9kZSkpXG4gICAgLmNvbmNhdCguLi5taXNzaW5nUHJvcGVydHlFcnJvcnMobm9kZSwgZXJyb3JzLCBwYXJlbnQpKVxuICAgIC5zb3J0KHNvcnRQcm9wZXJ0aWVzKTtcblxuY29uc3QgZnVsbEtleVBhcnRzID0gKGZ1bGxLZXk6IHN0cmluZykgPT4gZnVsbEtleS5zcGxpdCgnLicpLmZsYXRNYXAodmFsID0+IHtcbiAgaWYgKHZhbC5lbmRzV2l0aCgnXScpKSB7XG4gICAgY29uc3QgW2tleSwgaW5kZXhdID0gdmFsLnNwbGl0KCdbJyk7XG4gICAgcmV0dXJuIFtrZXksIGluZGV4LnJlcGxhY2UoJ10nLCAnJyldO1xuICB9XG4gIHJldHVybiB2YWw7XG59KTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVByb3BlcnRpZXMgPSAoeyBwcm9wZXJ0aWVzIH06IFBhcnRpYWw8SU5vZGVQcm9wZXJ0eT4sIHVwZGF0ZXI6IChwcm9wOiBJTm9kZVByb3BlcnR5KSA9PiBJTm9kZVByb3BlcnR5KSA9PlxuICAocHJvcGVydGllcyB8fCBbXSkubWFwKHByb3AgPT4gdXBkYXRlUHJvcGVydGllcyh1cGRhdGVyKHByb3ApLCB1cGRhdGVyKSk7XG5cbmV4cG9ydCBjb25zdCB0eXBlVG9OZXdQcm9wZXJ0eSA9IChcbiAgc2NoZW1hczogZGVmaW5pdGlvbnMsIHNjaGVtYTogZGVmaW5pdGlvbiwgbm9kZVNjaGVtYTogZGVmaW5pdGlvbiwgbm9kZTogYW55LCBmdWxsS2V5OiBzdHJpbmdcbik6IElOb2RlUHJvcGVydHkgPT4ge1xuICBjb25zdCBrZXkgPSBmdWxsS2V5UGFydHMoZnVsbEtleSkucG9wKCkhO1xuICBjb25zdCBtYXBwaW5nczoge1xuICAgIFtrZXk6IHN0cmluZ106ICgpID0+IElOb2RlUHJvcGVydHk7XG4gIH0gPSB7XG4gICAgb2JqZWN0OiAoKSA9PiB7XG4gICAgICBjb25zdCB7IHNjaGVtYVR5cGUsIHByb3BlcnRpZXMgfSA9IHNjaGVtYVJlcXVpcmVkUHJvcGVydGllcyhzY2hlbWFzLCBzY2hlbWEgYXMgSURlZmluaXRpb25PYmplY3QpO1xuICAgICAgbm9kZVtrZXldID0gbm9kZVtrZXldIHx8IHt9O1xuICAgICAgbm9kZVtrZXldLnR5cGUgPSBzY2hlbWFUeXBlO1xuICAgICAgLy8gVE9ETzogaGFuZGxlIGxvYWQgc2NoZW1hcyBmcm9tIGh0dHAgc291cmNlXG4gICAgICBpZiAoc2NoZW1hVHlwZS5zdGFydHNXaXRoKCdodHRwJykpIHtcbiAgICAgICAgcmV0dXJuIHR5cGVUb05ld1Byb3BlcnR5KHNjaGVtYXMsIHsgdHlwZTogJ2pzb24nIH0gYXMgYW55LCBub2RlU2NoZW1hLCBub2RlLCBmdWxsS2V5KTtcbiAgICAgIH1cbiAgICAgIC8vIFRPRE86IGhhbmRsZSBub2RlU2NoZW1hIHNob3VsZCBiZSBzY2hlbWEgdW5sZXNzIGxhc3QgcmVjdXJzaW9uXG4gICAgICBjb25zdCBwcm9wcyA9IHByb3BlcnRpZXNcbiAgICAgICAgLmZpbHRlcihwcm9wID0+IG5lc3RpbmdFbmFibGVkKHNjaGVtYVR5cGUsIHByb3Aua2V5KSAmJiAhIXByb3AudmFsdWUpXG4gICAgICAgIC5tYXAoXG4gICAgICAgICAgdiA9PiAoe1xuICAgICAgICAgICAgLi4udHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgdi52YWx1ZSwgbm9kZVNjaGVtYSwgbm9kZVtrZXldLCBgJHtmdWxsS2V5fS4ke3Yua2V5fWApLFxuICAgICAgICAgICAgaXNSZXF1aXJlZDogdHJ1ZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHByb3BzLnJlZHVjZSgocHJldiwgY3VycikgPT4gKHsgLi4ucHJldiwgW2N1cnIua2V5XTogY3Vyci52YWx1ZSB9KSwge30pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hOiBzY2hlbWFzW3NjaGVtYVR5cGVdLFxuICAgICAgICBzY2hlbWFUeXBlLFxuICAgICAgICBrZXksXG4gICAgICAgIGZ1bGxLZXksXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBlZGl0YWJsZTogZWRpdGFibGVLZXkoa2V5KSxcbiAgICAgICAgaXNIaWRkZW46IGlzS2V5SGlkZGVuKGtleSksXG4gICAgICAgIGNsb3NlZFZpc2libGU6IGlzS2V5Q2xvc2VkVmlzaWJsZShrZXkpLFxuICAgICAgICBzdWdnZXN0aW9uczogZW5hYmxlU3VnZ2VzdGlvbnMobm9kZVNjaGVtYSwgc2NoZW1hVHlwZSwgZnVsbEtleSksXG4gICAgICAgIHByb3BlcnRpZXM6IHByb3BzLnNvcnQoc29ydFByb3BlcnRpZXMpLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGlzQWRkUHJvcGVydHlFbmFibGVkKG5vZGUsIHNjaGVtYVR5cGUsIHNjaGVtYXNbc2NoZW1hVHlwZV0sIGtleSksXG4gICAgICAgIG5ld1Byb3BlcnR5OiB7fSxcbiAgICAgICAgbmV3RXJyb3I6IHsgbGV2ZWw6ICd3YXJuaW5nJyB9LFxuICAgICAgICBpc1JlcXVpcmVkOiBpc0tleVJlcXVpcmVkKGtleSwgc2NoZW1hIGFzIGFueSksXG4gICAgICAgIGlzQXJyYXk6IGZhbHNlLFxuICAgICAgICBpc0V4cGFuZGFibGU6IHRydWUsXG4gICAgICAgIGlzT3BlbjogaXNPcGVuRGVmYXVsdChzY2hlbWFUeXBlKSxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICAgICAgfTtcbiAgICB9LFxuICAgIGFycmF5OiAoKSA9PiB7XG4gICAgICBjb25zdCB7IGl0ZW1zIH0gPSBzY2hlbWEgYXMgSURlZmluaXRpb25BcnJheTtcbiAgICAgIC8vIGFycmF5IG9mIHN0cmluZywgbnVtYmVyIGFuZCBib29sZWFuXG4gICAgICBpZiAoaXRlbXMudHlwZSkge1xuICAgICAgICByZXR1cm4gbWFwcGluZ3MuZGVmYXVsdCgpO1xuICAgICAgfVxuICAgICAgY29uc3Qgc2NoZW1hVHlwZSA9IGRlZmluaXRpb25Ub1NjaGVtYVR5cGUoaXRlbXMgYXMgSURlZmluaXRpb25PYmplY3QpO1xuICAgICAgbm9kZVtrZXldID0gbm9kZVtrZXldIHx8IFtdO1xuICAgICAgbm9kZVtrZXldLnB1c2goeyB9KTtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gdHlwZVRvTmV3UHJvcGVydHkoc2NoZW1hcywgaXRlbXMsIHNjaGVtYXNbc2NoZW1hVHlwZV0sIG5vZGVba2V5XVswXSwgYCR7ZnVsbEtleX1bMF1gKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGlkOiBwcm9wZXJ0eUlkKCksXG4gICAgICAgIGlzQWRkZWQ6IHRydWUsXG4gICAgICAgIHNjaGVtYSxcbiAgICAgICAgc2NoZW1hVHlwZSxcbiAgICAgICAga2V5LFxuICAgICAgICBmdWxsS2V5LFxuICAgICAgICB2YWx1ZTogW3Byb3BlcnR5LnZhbHVlXSxcbiAgICAgICAgZWRpdGFibGU6IGVkaXRhYmxlS2V5KGtleSksXG4gICAgICAgIGlzSGlkZGVuOiBpc0tleUhpZGRlbihrZXkpLFxuICAgICAgICBjbG9zZWRWaXNpYmxlOiBpc0tleUNsb3NlZFZpc2libGUoa2V5KSxcbiAgICAgICAgc3VnZ2VzdGlvbnM6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJvcGVydGllczogW3Byb3BlcnR5XSxcbiAgICAgICAgbmV3UHJvcGVydHk6IHt9LFxuICAgICAgICBuZXdFcnJvcjogeyBsZXZlbDogJ3dhcm5pbmcnIH0sXG4gICAgICAgIGlzQXJyYXk6IHRydWUsXG4gICAgICAgIGlzRXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgICAgYWRkUHJvcGVydHlFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgZm9ybWF0dGVyOiBmb3JtYXR0ZXIoa2V5KVxuICAgICAgfTtcbiAgICB9LFxuICAgIGRlZmF1bHQ6ICgpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlVHlwZSA9IHByb3BlcnR5VmFsdWVUeXBlKHNjaGVtYSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHNjaGVtYS5kZWZhdWx0IHx8IChzY2hlbWEgYXMgYW55KS5jb25zdCB8fCB2YWx1ZVR5cGVUb0RlZmF1bHRbdmFsdWVUeXBlXTtcbiAgICAgIG5vZGVba2V5XSA9IHZhbHVlO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHByb3BlcnR5SWQoKSxcbiAgICAgICAgaXNBZGRlZDogdHJ1ZSxcbiAgICAgICAgc2NoZW1hLFxuICAgICAgICBzY2hlbWFUeXBlOiBub2RlLnR5cGUsXG4gICAgICAgIGtleSxcbiAgICAgICAgZnVsbEtleSxcbiAgICAgICAgdmFsdWU6IHByb3BlcnR5VmFsdWUoc2NoZW1hLCB2YWx1ZSksXG4gICAgICAgIGVkaXRhYmxlOiBlZGl0YWJsZUtleShrZXkpLFxuICAgICAgICBpc0hpZGRlbjogaXNLZXlIaWRkZW4oa2V5KSxcbiAgICAgICAgY2xvc2VkVmlzaWJsZTogaXNLZXlDbG9zZWRWaXNpYmxlKGtleSksXG4gICAgICAgIHN1Z2dlc3Rpb25zOiBlbmFibGVTdWdnZXN0aW9ucyhub2RlU2NoZW1hLCBub2RlLnR5cGUsIGZ1bGxLZXksIHNjaGVtYSksXG4gICAgICAgIHBsYWNlaG9sZGVyOiBwcm9wZXJ0eVBsYWNlaG9sZGVyKHNjaGVtYSwgdmFsdWVUeXBlLCBmdWxsS2V5LCBub2RlU2NoZW1hKSxcbiAgICAgICAgZXh0ZXJuYWxVcmw6IHByb3BlcnR5RXh0ZXJuYWxVcmwobm9kZSwga2V5LCB2YWx1ZSksXG4gICAgICAgIHByb3BlcnRpZXM6IFtdLFxuICAgICAgICBhZGRQcm9wZXJ0eUVuYWJsZWQ6IGZhbHNlLFxuICAgICAgICBmb3JtYXR0ZXI6IGZvcm1hdHRlcihrZXkpXG4gICAgICB9O1xuICAgIH1cbiAgfTtcbiAgY29uc3QgbWFwcGVkID0gIXNjaGVtYS50eXBlID8gbWFwcGluZ3Mub2JqZWN0IDogKFxuICAgIHNjaGVtYS50eXBlIGFzIHN0cmluZyBpbiBtYXBwaW5ncyA/IG1hcHBpbmdzW3NjaGVtYS50eXBlIGFzIHN0cmluZ10gOiBtYXBwaW5ncy5kZWZhdWx0XG4gICk7XG4gIHJldHVybiBtYXBwZWQoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBmaW5kUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBmdWxsS2V5OiBzdHJpbmcpID0+IHtcbiAgZm9yIChjb25zdCBwIG9mIHByb3BlcnRpZXMpIHtcbiAgICBpZiAocC5mdWxsS2V5ID09PSBmdWxsS2V5KSB7XG4gICAgICByZXR1cm4gcDtcbiAgICB9XG4gICAgY29uc3QgY2hpbGRQID0gZmluZFByb3BlcnR5KHAucHJvcGVydGllcywgZnVsbEtleSk7XG4gICAgaWYgKGNoaWxkUCkge1xuICAgICAgcmV0dXJuIGNoaWxkUDtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgcGFyZW50UHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBhbGxLZXlzID0gcHJvcGVydHkuZnVsbEtleS5zcGxpdCgnLicpO1xuICBbLi4ubmV3IEFycmF5KHByb3BlcnR5LnN1Z2dlc3Rpb25zPy5wYXJlbnRMZXZlbCB8fCAwKV0ubWFwKCgpID0+IGFsbEtleXMucG9wKCkpO1xuICBjb25zdCBwYXJlbnRLZXlzID0gZnVsbEtleVBhcnRzKGFsbEtleXMuam9pbignLicpKTtcbiAgcGFyZW50S2V5cy5wb3AoKTtcbiAgY29uc3QgcGFyZW50ID0gKHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpOiBhbnkgPT4ge1xuICAgIGNvbnN0IHByb3AgPSBwcmV2LmZpbmQodiA9PiB2LmtleSA9PT0gY3Vycik7XG4gICAgcmV0dXJuIGN1cnJJbmRleCA9PT0gcGFyZW50S2V5cy5sZW5ndGggLSAxID8gKHByb3AgfHwge30gYXMgSU5vZGVQcm9wZXJ0eSkgOiAocHJvcCEucHJvcGVydGllcyB8fCBbXSk7XG4gIH0sIHByb3BlcnRpZXMpIGFzIGFueSkgYXMgSU5vZGVQcm9wZXJ0eTtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkocGFyZW50KSA/IHByb3BlcnR5IDogcGFyZW50O1xufTtcblxuZXhwb3J0IGNvbnN0IG5lc3RlZFByb3BlcnR5ID0gKHsgcHJvcGVydGllcyB9OiBJTm9kZVByb3BlcnR5LCBuZXN0ZWRLZXk6IHN0cmluZykgPT5cbiAgcHJvcGVydGllcy5maW5kKCh7IGtleSB9KSA9PiBrZXkgPT09IG5lc3RlZEtleSk7XG5cbmV4cG9ydCBjb25zdCBzaWJsaW5nUHJvcGVydHkgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSwgc2libGluZ0tleTogc3RyaW5nKSA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IHBhcmVudFByb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5KTtcbiAgY29uc3QgcGFyZW50UHJvcGVydGllcyA9IHBhcmVudCA9PT0gcHJvcGVydHkgPyBwcm9wZXJ0aWVzIDogcGFyZW50LnByb3BlcnRpZXM7XG4gIHJldHVybiBwYXJlbnRQcm9wZXJ0aWVzLmZpbmQocHJvcCA9PiBwcm9wLmtleSA9PT0gc2libGluZ0tleSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ3JvdXBDaGFuZ2VkID0gKHByb3BlcnRpZXM6IElOb2RlUHJvcGVydHlbXSwga2V5OiBzdHJpbmcsIHZhbHVlPzogYW55KSA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFyZW50S2V5cyA9IGZ1bGxLZXlQYXJ0cyhrZXkpO1xuICAgIHBhcmVudEtleXMucmVkdWNlKChwcmV2LCBjdXJyLCBjdXJySW5kZXgpID0+IHtcbiAgICAgIGlmIChjdXJySW5kZXggPT09IHBhcmVudEtleXMubGVuZ3RoIC0gMSAmJiB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcHJldi5zcGxpY2UocHJldi5maW5kSW5kZXgodiA9PiB2LmtleSA9PT0gY3VyciksIDEpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb3AgPSBwcmV2LmZpbmQodiA9PiB2LmtleSA9PT0gY3VycikhO1xuICAgICAgICBwcm9wLmNoYW5nZWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gcHJvcC5wcm9wZXJ0aWVzO1xuICAgICAgfVxuICAgIH0sIHByb3BlcnRpZXMpO1xuICB9XG4gIGNhdGNoIChfZXJyKSB7fVxufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9wZXJ0eUtleXMgPSAocHJvcGVydHk6IElOb2RlUHJvcGVydHkpID0+XG4gIHByb3BlcnR5LnByb3BlcnRpZXMubWFwKChwcm9wLCBpKSA9PiB7XG4gICAgcHJvcC5mdWxsS2V5ID0gYCR7cHJvcGVydHkuZnVsbEtleX0ke3Byb3BlcnR5LmlzQXJyYXkgPyBgWyR7aX1dYCA6IGAuJHtwcm9wLmtleX1gfWA7XG4gICAgcHJvcC5rZXkgPSBwcm9wZXJ0eS5pc0FycmF5ID8gYCR7aX1gIDogcHJvcC5rZXk7XG4gICAgcmV0dXJuIHJlZnJlc2hQcm9wZXJ0eUtleXMocHJvcCk7XG4gIH0pO1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVEdXJhdGlvbkVuYWJsZWQgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBzdGFydERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdzdGFydERhdGUnKTtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKTtcbiAgcmV0dXJuICEhc3RhcnREYXRlPy52YWx1ZSAmJiAhIWVuZERhdGU/LnZhbHVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlRHVyYXRpb24gPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBzdGFydERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdzdGFydERhdGUnKSE7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJykhO1xuICByZXR1cm4gZGlmZkluRGF5cyhzdGFydERhdGUudmFsdWUsIGVuZERhdGUudmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUN5Y2xlU3RhcnREYXRlRW5hYmxlZCA9IChwcm9wZXJ0aWVzOiBJTm9kZVByb3BlcnR5W10sIHByb3BlcnR5OiBJTm9kZVByb3BlcnR5KSA9PiB7XG4gIGNvbnN0IGN5Y2xlRHVyYXRpb24gPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdjeWNsZUR1cmF0aW9uJyk7XG4gIGNvbnN0IGVuZERhdGUgPSBzaWJsaW5nUHJvcGVydHkocHJvcGVydGllcywgcHJvcGVydHksICdlbmREYXRlJyk7XG4gIHJldHVybiAhIWN5Y2xlRHVyYXRpb24/LnZhbHVlICYmICEhZW5kRGF0ZT8udmFsdWU7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQ3ljbGVTdGFydERhdGUgPSAocHJvcGVydGllczogSU5vZGVQcm9wZXJ0eVtdLCBwcm9wZXJ0eTogSU5vZGVQcm9wZXJ0eSkgPT4ge1xuICBjb25zdCBjeWNsZUR1cmF0aW9uID0gc2libGluZ1Byb3BlcnR5KHByb3BlcnRpZXMsIHByb3BlcnR5LCAnY3ljbGVEdXJhdGlvbicpITtcbiAgY29uc3QgZW5kRGF0ZSA9IHNpYmxpbmdQcm9wZXJ0eShwcm9wZXJ0aWVzLCBwcm9wZXJ0eSwgJ2VuZERhdGUnKSE7XG4gIHJldHVybiBtb21lbnQoZW5kRGF0ZS52YWx1ZSkubG9jYWxlKCdlbi1nYicpLnN1YnRyYWN0KGN5Y2xlRHVyYXRpb24udmFsdWUsICdkYXlzJykuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG59O1xuIl19
|