@dsivd/prestations-ng 17.8.0-beta.2 → 17.8.0-beta.3
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.
|
Binary file
|
|
@@ -272,7 +272,8 @@ export class UploaderHelper {
|
|
|
272
272
|
return fileSizeInBytes > limitInBytes;
|
|
273
273
|
}
|
|
274
274
|
replaceErrorMessageKeys(name, errorMsg, fileName, errorCode, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
|
|
275
|
-
const
|
|
275
|
+
const safeFileName = encodeURI(fileName);
|
|
276
|
+
const formattedErrorMsg = errorMsg.replace('%1$s', safeFileName);
|
|
276
277
|
if (errorCode.startsWith('413')) {
|
|
277
278
|
// REQUEST_ENTITY_TOO_LARGE_ERROR_MSG
|
|
278
279
|
const fileMaxSize = (this.getMaxFileSizeInBytesForFormKey(name) /
|
|
@@ -305,7 +306,7 @@ export class UploaderHelper {
|
|
|
305
306
|
getDefaultUnknownErrorMessage(fileName) {
|
|
306
307
|
const msg = 'Impossible de transmettre le fichier';
|
|
307
308
|
if (!!fileName && !!fileName.length) {
|
|
308
|
-
return `${msg} ${fileName}.`;
|
|
309
|
+
return `${msg} ${encodeURI(fileName)}.`;
|
|
309
310
|
}
|
|
310
311
|
return `${msg}.`;
|
|
311
312
|
}
|
|
@@ -317,4 +318,4 @@ export class UploaderHelper {
|
|
|
317
318
|
return key ? key.toLowerCase().replace(this.CHAR_TO_REPLACE, '') : null;
|
|
318
319
|
}
|
|
319
320
|
}
|
|
320
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC91cGxvYWRlci5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakUsOENBQThDO0FBQzlDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUzQyxNQUFNLE9BQU8sY0FBYztJQVN2QixZQUNZLGlCQUF1QyxFQUN2QyxzQkFBOEM7UUFEOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBVmxELFlBQU8sR0FBRyxNQUFNLENBQUM7UUFFakIsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLHdCQUF3QixDQUFDO1FBQzlDLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUVoQixvQkFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQU0vRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDdEMsQ0FBQyxPQUF3QixFQUFFLEVBQUU7WUFDekIsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FDM0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQ25ELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLDRCQUE0QjtvQkFDN0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUM7Z0JBQy9E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LE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWSxDQUFDLEdBQVc7UUFDNUIsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVFLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZvcm1FcnJvciB9IGZyb20gJy4uL2Zvcm0tZXJyb3InO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvIH0gZnJvbSAnLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mbyc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWFwcGluZm8vYXBwbGljYXRpb24taW5mby5zZXJ2aWNlJztcbmltcG9ydCB7IFNka0RpY3Rpb25hcnlTZXJ2aWNlIH0gZnJvbSAnLi4vc2RrLWRpY3Rpb25hcnkvc2RrLWRpY3Rpb25hcnkuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudFJlZmVyZW5jZVdpdGhGaWxlIH0gZnJvbSAnLi9kb2N1bWVudC1yZWZlcmVuY2UnO1xuXG4vLyBpbGxlZ2FsIGNoYXJhY3RlcnMgdGhhdCBjYW5ub3QgYmUgb3ZlcnJpZGVuXG5jb25zdCBQRVJNQU5FTlRfSUxMRUdBTF9DSEFSQUNURVJTID0gWycsJ107XG5cbmV4cG9ydCBjbGFzcyBVcGxvYWRlckhlbHBlciB7XG4gICAgcHJpdmF0ZSBfYWNjZXB0ID0gJy5wZGYnO1xuICAgIHByaXZhdGUgX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleTogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfTtcbiAgICBwcml2YXRlIF9tYXhGaWxlTmFtZUxlbmd0aCA9IDY0O1xuICAgIHByaXZhdGUgX2lsbGVnYWxDaGFyYWN0ZXJzID0gJy8sXFxcXCw/LCUsKiw6LHwsXCIsPCw+LMKwJztcbiAgICBwcml2YXRlIF9maWxlTWluU2l6ZUluQnl0ZXMgPSAyMDtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgQ0hBUl9UT19SRVBMQUNFID0gbmV3IFJlZ0V4cCgnW15hLXpBLVowLTldJywgJ2cnKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGRpY3Rpb25hcnlTZXJ2aWNlOiBTZGtEaWN0aW9uYXJ5U2VydmljZSxcbiAgICAgICAgcHJpdmF0ZSBhcHBsaWNhdGlvbkluZm9TZXJ2aWNlOiBBcHBsaWNhdGlvbkluZm9TZXJ2aWNlXG4gICAgKSB7XG4gICAgICAgIHRoaXMuYXBwbGljYXRpb25JbmZvU2VydmljZS5kYXRhLnN1YnNjcmliZShcbiAgICAgICAgICAgIChhcHBJbmZvOiBBcHBsaWNhdGlvbkluZm8pID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYWNjZXB0ID0gYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50LmZpbGVFeHRlbnNpb25zO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm1heEZpbGVOYW1lTGVuZ3RoID0gTnVtYmVyKFxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50Lm1heEZpbGVOYW1lTGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBJbmZvLmNvbmZpZ3VyYXRpb24uZG9jdW1lbnQuZmlsZU1heFNpemVJbkJ5dGVzQnlGb3JtS2V5O1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlsbGVnYWxDaGFyYWN0ZXJzID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluZm8uY29uZmlndXJhdGlvbi5kb2N1bWVudC5pbGxlZ2FsQ2hhcmFjdGVycztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0IGZpbGVNaW5TaXplSW5CeXRlcygpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsZU1pblNpemVJbkJ5dGVzO1xuICAgIH1cblxuICAgIHNldCBmaWxlTWluU2l6ZUluQnl0ZXModmFsdWU6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9maWxlTWluU2l6ZUluQnl0ZXMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBpbGxlZ2FsQ2hhcmFjdGVycygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faWxsZWdhbENoYXJhY3RlcnM7XG4gICAgfVxuXG4gICAgc2V0IGlsbGVnYWxDaGFyYWN0ZXJzKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5faWxsZWdhbENoYXJhY3RlcnMgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBtYXhGaWxlTmFtZUxlbmd0aCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWF4RmlsZU5hbWVMZW5ndGg7XG4gICAgfVxuXG4gICAgc2V0IG1heEZpbGVOYW1lTGVuZ3RoKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fbWF4RmlsZU5hbWVMZW5ndGggPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L21lbWJlci1vcmRlcmluZ1xuICAgIGdldCBhY2NlcHQoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2FjY2VwdDtcbiAgICB9XG5cbiAgICBzZXQgYWNjZXB0KHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fYWNjZXB0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgZ2V0TWF4RmlsZVNpemVJbkJ5dGVzRm9yRm9ybUtleShmb3JtS2V5OiBzdHJpbmcpOiBudW1iZXIge1xuICAgICAgICBjb25zdCBieUZvcm1LZXkgPSB0aGlzLl9maWxlTWF4U2l6ZUluQnl0ZXNCeUZvcm1LZXlbZm9ybUtleV07XG5cbiAgICAgICAgaWYgKCFpc05hTihieUZvcm1LZXkpKSB7XG4gICAgICAgICAgICByZXR1cm4gYnlGb3JtS2V5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qga2V5QXNSZWdleCA9IE9iamVjdC5rZXlzKFxuICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleVxuICAgICAgICAgICAgKS5maW5kKGNhbkJlQVJlZ2V4ID0+IGZvcm1LZXkubWF0Y2goY2FuQmVBUmVnZXgpKTtcblxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleVtrZXlBc1JlZ2V4XTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGlzRmlsZVRvb0JpZyhmb3JtS2V5OiBzdHJpbmcsIGZpbGVTaXplSW5CeXRlczogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlzVG9vQmlnKFxuICAgICAgICAgICAgZmlsZVNpemVJbkJ5dGVzLFxuICAgICAgICAgICAgdGhpcy5nZXRNYXhGaWxlU2l6ZUluQnl0ZXNGb3JGb3JtS2V5KGZvcm1LZXkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNGaWxlVG9vU21hbGwoZmlsZVNpemVJbkJ5dGVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLmZpbGVNaW5TaXplSW5CeXRlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmaWxlU2l6ZUluQnl0ZXMgPCB0aGlzLmZpbGVNaW5TaXplSW5CeXRlcztcbiAgICB9XG5cbiAgICBpc0ZpbGVOYW1lTGVuZ3RoVmFsaWQoXG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlclxuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtYXhGaWxlTGVuZ2h0ID1cbiAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGggfHwgdGhpcy5tYXhGaWxlTmFtZUxlbmd0aDtcblxuICAgICAgICByZXR1cm4gZmlsZW5hbWUubGVuZ3RoIDw9IG1heEZpbGVMZW5naHQ7XG4gICAgfVxuXG4gICAgaXNGaWxlTmFtZU5hbWVWYWxpZChcbiAgICAgICAgZmlsZW5hbWU6IHN0cmluZyxcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGlsbGVnYWxDaGFyYWN0ZXJzID0gISFvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICA/IG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnMuc3BsaXQoJywnKVxuICAgICAgICAgICAgOiB0aGlzLmlsbGVnYWxDaGFyYWN0ZXJzLnNwbGl0KCcsJyk7XG5cbiAgICAgICAgUEVSTUFORU5UX0lMTEVHQUxfQ0hBUkFDVEVSUy5mb3JFYWNoKGMgPT4gaWxsZWdhbENoYXJhY3RlcnMucHVzaChjKSk7XG5cbiAgICAgICAgbGV0IGlzVmFsaWQgPSB0cnVlO1xuICAgICAgICBmb3IgKGNvbnN0IGlsbGVnYWxDaGFyYWN0ZXIgb2YgaWxsZWdhbENoYXJhY3RlcnMpIHtcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZS5pbmNsdWRlcyhpbGxlZ2FsQ2hhcmFjdGVyKSkge1xuICAgICAgICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBpc1ZhbGlkO1xuICAgIH1cblxuICAgIGdldEZpbGVFeHRlbnNpb24oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgLiR7ZmlsZW5hbWUuc3BsaXQoJy4nKS5wb3AoKX1gO1xuICAgIH1cblxuICAgIGlzRmlsZUV4dGVuc2lvblZhbGlkKFxuICAgICAgICBmaWxlRXh0ZW5zaW9uOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmdcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYWNjZXB0ZWRFeHRlbnNpb25zID0gb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMgfHwgdGhpcy5hY2NlcHQ7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICEhZmlsZUV4dGVuc2lvbiAmJlxuICAgICAgICAgICAgYWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgLnRvVXBwZXJDYXNlKClcbiAgICAgICAgICAgICAgICAuc3BsaXQoJywnKVxuICAgICAgICAgICAgICAgIC5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uLnRvVXBwZXJDYXNlKCkpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUVycm9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnM6IHN0cmluZyxcbiAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aDogbnVtYmVyLFxuICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzOiBzdHJpbmdcbiAgICApOiBGb3JtRXJyb3Ige1xuICAgICAgICBjb25zdCB1bmlxU3VmZml4ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgY29kZTogYCR7ZXJyb3JDb2RlfV8ke3VuaXFTdWZmaXh9YCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMucmVwbGFjZUVycm9yTWVzc2FnZUtleXMoXG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnNbZXJyb3JDb2RlXSxcbiAgICAgICAgICAgICAgICBmaWxlTmFtZSxcbiAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICApXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgYWRkQ3VzdG9tRXJyb3JPckRlZmF1bHQoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZGVzdGluYXRpb25FcnJvcnM6IEZvcm1FcnJvcltdLFxuICAgICAgICBlcnJvckNvZGU6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgY3VzdG9tRXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uczogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnM6IHN0cmluZ1xuICAgICk6IHZvaWQge1xuICAgICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIGEgY3VzdG9tIGVycm9yIHRvIG1hbmFnZVxuICAgICAgICBpZiAoY3VzdG9tRXJyb3JzW2Vycm9yQ29kZV0pIHtcbiAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICBkZXN0aW5hdGlvbkVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yQ29kZSxcbiAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZGVzdGluYXRpb25FcnJvcnMucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICBjb2RlOiBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5nZXREZWZhdWx0VW5rbm93bkVycm9yTWVzc2FnZShmaWxlTmFtZSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY3JlYXRlRGVmYXVsdEN1c3RvbUVycm9ycyhjdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICAgICAgY3VzdG9tRXJyb3JzLklNQUdFX05PVF9SRUFEQUJMRSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuSU1BR0VfTk9UX1JFQURBQkxFJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRklMRU5BTUVfVE9PX0xPTkcgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLkZJTEVOQU1FX1RPT19MT05HJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRklMRV9UT09fU01BTEwgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLkZJTEVfVE9PX1NNQUxMJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuUERGX1BBU1NXT1JEX0xPQ0tFRCA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX1BBU1NXT1JEX0xPQ0tFRCdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9DT05UQUlOU19TQ1JJUFQgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLlBERl9DT05UQUlOU19TQ1JJUFQnXG4gICAgICAgICk7XG4gICAgICAgIGN1c3RvbUVycm9ycy5QREZfSEFTX0FUVEFDSE1FTlRTID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5QREZfSEFTX0FUVEFDSE1FTlRTJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuRU1QVFlfUERGID1cbiAgICAgICAgICAgIHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLkVNUFRZX1BERicpO1xuICAgICAgICBjdXN0b21FcnJvcnMuUERGX0dFTkVSQUxfUFJPQkxFTSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX0dFTkVSQUxfUFJPQkxFTSdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9IQVNfUkVTVFJJQ1RJT05TID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5QREZfSEFTX1JFU1RSSUNUSU9OUydcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLkZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTiA9XG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAgICAgJ2Vycm9ycy5GSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4nXG4gICAgICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzQwNiddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNDA2Jyk7XG4gICAgICAgIGN1c3RvbUVycm9yc1snNDEzJ10gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy40MTMnKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzWyc0MTUnXSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLjQxNScpO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzQyMiddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNDIyJyk7XG4gICAgICAgIGN1c3RvbUVycm9yc1snNTAwJ10gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy41MDAnKTtcblxuICAgICAgICAvLyBNdWx0aVBhcnRFeGNlcHRpb24gZnJvbSBadXVsIHJldHVybnMgSFRUUCAwXG4gICAgICAgIGN1c3RvbUVycm9yc1snMCddID0gY3VzdG9tRXJyb3JzWyc0MTMnXTtcbiAgICB9XG5cbiAgICBnZXRMb2NhbEVycm9ycyhcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlczogRmlsZVtdLFxuICAgICAgICBjdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlcixcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogRm9ybUVycm9yW10ge1xuICAgICAgICBjb25zdCBlcnJvcnM6IEZvcm1FcnJvcltdID0gW107XG5cbiAgICAgICAgZmlsZXMuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgICAgICAgIC8vIEZpbGUgYmFkIGV4dGVuc2lvblxuICAgICAgICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IHRoaXMuZ2V0RmlsZUV4dGVuc2lvbihmaWxlLm5hbWUpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICF0aGlzLmlzRmlsZUV4dGVuc2lvblZhbGlkKFxuICAgICAgICAgICAgICAgICAgICBmaWxlRXh0ZW5zaW9uLFxuICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIDQxNSBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICc0MTUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbGUgbmFtZSBjb250YWlucyBpbGxlZ2FsIGNoYXJhY3RlcnNcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ZpbGVOYW1lTmFtZVZhbGlkKGZpbGUubmFtZSwgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVycylcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTiBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdGSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4nLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEZpbGVzIHRvbyBiaWdcbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVRvb0JpZyhuYW1lLCBmaWxlLnNpemUpKSB7XG4gICAgICAgICAgICAgICAgLy8gRGVmYXVsdCBjdXN0b20gZXJyb3IgNDEzIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJzQxMycsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRoaXMuaXNGaWxlVG9vU21hbGwoZmlsZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVfVE9PX1NNQUxMIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJTEVfVE9PX1NNQUxMJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaWxlIG5hbWUgdG9vIGxvbmcgKDY0IGNoYXJzIG1heClcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ZpbGVOYW1lTGVuZ3RoVmFsaWQoXG4gICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIEZJTEVOQU1FX1RPT19MT05HIGV4aXN0IChzZWUgZnVuY3Rpb24gJ2NyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMnKVxuICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY3JlYXRlIHVuaXF1ZSBlcnJvciB0byBlbnN1cmUgYWJpbGl0eSB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzXG4gICAgICAgICAgICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0VW5pcXVlRXJyb3JCeUNvZGUoXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0ZJTEVOQU1FX1RPT19MT05HJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgfVxuXG4gICAgaGFzTGl2ZVVwbG9hZEVycm9ycyhlcnJvcnM6IEZvcm1FcnJvcltdKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIWVycm9ycyAmJlxuICAgICAgICAgICAgISEoZXJyb3JzIGFzIEZvcm1FcnJvcltdKS5maW5kKFxuICAgICAgICAgICAgICAgIGUgPT5cbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJzQxMycpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCc0MTUnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnUERGX1BBU1NXT1JEX0xPQ0tFRCcpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCdQREZfQ09OVEFJTlNfU0NSSVBUJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9IQVNfQVRUQUNITUVOVFMnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRU1QVFlfUERGJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9HRU5FUkFMX1BST0JMRU0nKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnUERGX0hBU19SRVNUUklDVElPTlMnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfVE9PX0xPTkcnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRV9UT09fU01BTEwnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJylcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHByZXZlbnRBbmRTdG9wKGV2ZW50OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXRBbGxGaWxlc0NvdW50KGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYCR7ZGF0YS5sZW5ndGh9YDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGdldEFsbEZpbGVzU2l6ZUluTW8oZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbGVTaXplSW5CeXRlcyA9IGRhdGEucmVkdWNlKFxuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgICAgICh0b3RhbERvY1NpemU6IG51bWJlciwgZG9jdW1lbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5oYXNPd25Qcm9wZXJ0eSgnZmlsZVNpemUnKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxEb2NTaXplICsgZG9jdW1lbnQuZmlsZVNpemU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0b3RhbERvY1NpemUgKyBkb2N1bWVudC5zaXplO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIDBcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gdGhpcy50b01lZ2FPY3RldHMoZmlsZVNpemVJbkJ5dGVzKTtcbiAgICB9XG5cbiAgICB0b01lZ2FPY3RldHMoc2l6ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAkeyhzaXplIC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKX1gO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0VHJhbnNmZXIoZXZlbnQ6IGFueSk6IEZpbGVMaXN0IHtcbiAgICAgICAgaWYgKCEhZXZlbnQuZGF0YVRyYW5zZmVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZXZlbnQuZGF0YVRyYW5zZmVyLmZpbGVzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0R2xvYmFsSW5mb3MoZGF0YTogYW55KTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGAke3RoaXMuZ2V0QWxsRmlsZXNDb3VudChcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKX0gZmljaGllcnMgcG91ciB1biB0b3RhbCBkZSAke3RoaXMuZ2V0QWxsRmlsZXNTaXplSW5NbyhcbiAgICAgICAgICAgIGRhdGFcbiAgICAgICAgKX0gPGFiYnIgdGl0bGU9XCJNZWdhb2N0ZXRcIj5NbzwvYWJicj5gO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgc2hvd0dsb2JhbEluZm9zKGRhdGE6IGFueSwgaGlkZUdsb2JhbEluZm9zOiBib29sZWFuKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhaGlkZUdsb2JhbEluZm9zICYmICEhZGF0YSAmJiAhIWRhdGEubGVuZ3RoICYmIGRhdGEubGVuZ3RoID4gMTtcbiAgICB9XG5cbiAgICBtYXBUb0RvY3VtZW50UmVmZXJlbmNlKFxuICAgICAgICBmaWxlOiBGaWxlLFxuICAgICAgICBsYWJlbDogc3RyaW5nLFxuICAgICAgICBrZXk6IHN0cmluZyxcbiAgICAgICAgaXNNdWx0aXBsZTogYm9vbGVhbixcbiAgICAgICAgdW5pcVByZWZpeDogbnVtYmVyLFxuICAgICAgICBnbG9iYWxTZXF1ZW5jZTogbnVtYmVyXG4gICAgKTogRG9jdW1lbnRSZWZlcmVuY2VXaXRoRmlsZSB7XG4gICAgICAgIGNvbnN0IGRvY3VtZW50ID0gbmV3IERvY3VtZW50UmVmZXJlbmNlV2l0aEZpbGUoKTtcblxuICAgICAgICBpZiAoaXNNdWx0aXBsZSkge1xuICAgICAgICAgICAgLy8gT3ZlcnJpZGUga2V5IHRvIGVuc3VyZXMgdGhhdCBHZXNEZW0gY2FuIGFjY2VwdCB0aGUgZG9jdW1lbnQga2V5IChsZW5ndGggb2YgNjQgY2hhci4gbWF4LilcbiAgICAgICAgICAgIGtleSA9IGBkb2Mke3VuaXFQcmVmaXh9JHtnbG9iYWxTZXF1ZW5jZX1gO1xuICAgICAgICAgICAgZG9jdW1lbnQua2V5ID0gdGhpcy5ub3JtYWxpemVLZXkoa2V5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRvY3VtZW50LmtleSA9IGtleTtcbiAgICAgICAgZG9jdW1lbnQuZmlsZW5hbWUgPSBmaWxlLm5hbWU7XG4gICAgICAgIGRvY3VtZW50Lm1pbWVUeXBlID0gZmlsZS50eXBlO1xuICAgICAgICBkb2N1bWVudC5maWxlU2l6ZSA9IGZpbGUuc2l6ZTtcbiAgICAgICAgZG9jdW1lbnQubGFiZWwgPSBsYWJlbDtcbiAgICAgICAgZG9jdW1lbnQuZmlsZSA9IGZpbGU7XG5cbiAgICAgICAgcmV0dXJuIGRvY3VtZW50O1xuICAgIH1cblxuICAgIG1hcFRvRm9ybURhdGEoXG4gICAgICAgIGRvY3VtZW50czogRG9jdW1lbnRSZWZlcmVuY2VXaXRoRmlsZVtdLFxuICAgICAgICBmb3JtS2V5OiBzdHJpbmcsXG4gICAgICAgIGxhbmd1YWdlOiBzdHJpbmdcbiAgICApOiBGb3JtRGF0YSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XG5cbiAgICAgICAgZG9jdW1lbnRzLmZvckVhY2goKHsgZmlsZSwga2V5LCBsYWJlbCB9KSA9PiB7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2tleXMnLCBrZXkpO1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdsYWJlbHMnLCB0aGlzLnJlbW92ZUNvbW1hc0luTGFiZWwobGFiZWwpKTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnZmlsZXMnLCBmaWxlLCBmaWxlLm5hbWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2Zvcm1LZXknLCBmb3JtS2V5KTtcbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdsYW5ndWFnZScsIGxhbmd1YWdlKTtcblxuICAgICAgICByZXR1cm4gZm9ybURhdGE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29tbWFzIGFyZSByZW1vdmVkIHRvIGF2b2lkIGEgd3JvbmcgaW50ZXJwcmV0YXRpb24gYXMgYW4gYXJyYXkgb2Ygc3RyaW5nIGluIGZvcm1EYXRhLlxuICAgICAqIEBwYXJhbSBsYWJlbCB0byBiZSBjbGVhbmVkIGZyb20gY29tbWFcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICByZW1vdmVDb21tYXNJbkxhYmVsKGxhYmVsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gbGFiZWwuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVG9vQmlnKGZpbGVTaXplSW5CeXRlczogbnVtYmVyLCBsaW1pdEluQnl0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gZmlsZVNpemVJbkJ5dGVzID4gbGltaXRJbkJ5dGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZUVycm9yTWVzc2FnZUtleXMoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JNc2c6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlcixcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRXJyb3JNc2cgPSBlcnJvck1zZy5yZXBsYWNlKCclMSRzJywgZmlsZU5hbWUpO1xuXG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnNDEzJykpIHtcbiAgICAgICAgICAgIC8vIFJFUVVFU1RfRU5USVRZX1RPT19MQVJHRV9FUlJPUl9NU0dcbiAgICAgICAgICAgIGNvbnN0IGZpbGVNYXhTaXplID0gKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0TWF4RmlsZVNpemVJbkJ5dGVzRm9yRm9ybUtleShuYW1lKSAvXG4gICAgICAgICAgICAgICAgKDEwMjQgKiAxMDI0KVxuICAgICAgICAgICAgKS50b1N0cmluZygpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEVycm9yTXNnLnJlcGxhY2UoJyUyJHMnLCBmaWxlTWF4U2l6ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yQ29kZS5zdGFydHNXaXRoKCc0MTUnKSkge1xuICAgICAgICAgICAgLy8gVU5TVVBQT1JURURfTUVESUFfVFlQRV9FUlJPUl9NU0dcbiAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb25zID0gKFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgID8gb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICAgICAgOiB0aGlzLmFjY2VwdFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoLywvZywgJyBvdSAnKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZy5yZXBsYWNlKCclMiRzJywgZmlsZUV4dGVuc2lvbnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfVE9PX0xPTkcnKSkge1xuICAgICAgICAgICAgY29uc3QgbWF4RmlsZU5hbWVMZW5ndGggPSAoXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCB8fCB0aGlzLm1heEZpbGVOYW1lTGVuZ3RoXG4gICAgICAgICAgICApLnRvU3RyaW5nKCk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZSgnJTIkcycsIG1heEZpbGVOYW1lTGVuZ3RoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JDb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVfVE9PX1NNQUxMJykpIHtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZy5yZXBsYWNlKFxuICAgICAgICAgICAgICAgICclMiRzJyxcbiAgICAgICAgICAgICAgICB0aGlzLmZpbGVNaW5TaXplSW5CeXRlcy50b1N0cmluZygpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJykpIHtcbiAgICAgICAgICAgIGxldCBmaWxlTmFtZUlsbGVnYWxDaGFyYWN0ZXJzID0gKFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnMgfHwgdGhpcy5pbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgKS5yZXBsYWNlKC8sL2csICcnKTtcblxuICAgICAgICAgICAgZmlsZU5hbWVJbGxlZ2FsQ2hhcmFjdGVycyArPSBQRVJNQU5FTlRfSUxMRUdBTF9DSEFSQUNURVJTLmpvaW4oJycpO1xuXG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZSgnJTIkcycsIGZpbGVOYW1lSWxsZWdhbENoYXJhY3RlcnMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldERlZmF1bHRVbmtub3duRXJyb3JNZXNzYWdlKGZpbGVOYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBtc2cgPSAnSW1wb3NzaWJsZSBkZSB0cmFuc21ldHRyZSBsZSBmaWNoaWVyJztcbiAgICAgICAgaWYgKCEhZmlsZU5hbWUgJiYgISFmaWxlTmFtZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBgJHttc2d9ICR7ZmlsZU5hbWV9LmA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke21zZ30uYDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ga2V5IHRvIGJlIG5vcm1hbGl6ZWRcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIG5vcm1hbGl6ZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBrZXkgPyBrZXkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHRoaXMuQ0hBUl9UT19SRVBMQUNFLCAnJykgOiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
|
|
321
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBsb2FkZXIuaGVscGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvcHJlc3RhdGlvbnMtbmcvc3JjL2ZvZWhuLXVwbG9hZC91cGxvYWRlci5oZWxwZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakUsOENBQThDO0FBQzlDLE1BQU0sNEJBQTRCLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUUzQyxNQUFNLE9BQU8sY0FBYztJQVN2QixZQUNZLGlCQUF1QyxFQUN2QyxzQkFBOEM7UUFEOUMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFzQjtRQUN2QywyQkFBc0IsR0FBdEIsc0JBQXNCLENBQXdCO1FBVmxELFlBQU8sR0FBRyxNQUFNLENBQUM7UUFFakIsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBQ3hCLHVCQUFrQixHQUFHLHdCQUF3QixDQUFDO1FBQzlDLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUVoQixvQkFBZSxHQUFHLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQU0vRCxJQUFJLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDdEMsQ0FBQyxPQUF3QixFQUFFLEVBQUU7WUFDekIsSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQztnQkFDNUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FDM0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQ25ELENBQUM7Z0JBQ0YsSUFBSSxDQUFDLDRCQUE0QjtvQkFDN0IsT0FBTyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsMkJBQTJCLENBQUM7Z0JBQy9E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LEdBQUcsR0FBRyxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDckIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVksQ0FBQyxHQUFXO1FBQzVCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUM1RSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtRXJyb3IgfSBmcm9tICcuLi9mb3JtLWVycm9yJztcbmltcG9ydCB7IEFwcGxpY2F0aW9uSW5mbyB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8nO1xuaW1wb3J0IHsgQXBwbGljYXRpb25JbmZvU2VydmljZSB9IGZyb20gJy4uL3Nkay1hcHBpbmZvL2FwcGxpY2F0aW9uLWluZm8uc2VydmljZSc7XG5pbXBvcnQgeyBTZGtEaWN0aW9uYXJ5U2VydmljZSB9IGZyb20gJy4uL3Nkay1kaWN0aW9uYXJ5L3Nkay1kaWN0aW9uYXJ5LnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9jdW1lbnRSZWZlcmVuY2VXaXRoRmlsZSB9IGZyb20gJy4vZG9jdW1lbnQtcmVmZXJlbmNlJztcblxuLy8gaWxsZWdhbCBjaGFyYWN0ZXJzIHRoYXQgY2Fubm90IGJlIG92ZXJyaWRlblxuY29uc3QgUEVSTUFORU5UX0lMTEVHQUxfQ0hBUkFDVEVSUyA9IFsnLCddO1xuXG5leHBvcnQgY2xhc3MgVXBsb2FkZXJIZWxwZXIge1xuICAgIHByaXZhdGUgX2FjY2VwdCA9ICcucGRmJztcbiAgICBwcml2YXRlIF9maWxlTWF4U2l6ZUluQnl0ZXNCeUZvcm1LZXk6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH07XG4gICAgcHJpdmF0ZSBfbWF4RmlsZU5hbWVMZW5ndGggPSA2NDtcbiAgICBwcml2YXRlIF9pbGxlZ2FsQ2hhcmFjdGVycyA9ICcvLFxcXFwsPywlLCosOix8LFwiLDwsPizCsCc7XG4gICAgcHJpdmF0ZSBfZmlsZU1pblNpemVJbkJ5dGVzID0gMjA7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IENIQVJfVE9fUkVQTEFDRSA9IG5ldyBSZWdFeHAoJ1teYS16QS1aMC05XScsICdnJyk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSBkaWN0aW9uYXJ5U2VydmljZTogU2RrRGljdGlvbmFyeVNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgYXBwbGljYXRpb25JbmZvU2VydmljZTogQXBwbGljYXRpb25JbmZvU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmFwcGxpY2F0aW9uSW5mb1NlcnZpY2UuZGF0YS5zdWJzY3JpYmUoXG4gICAgICAgICAgICAoYXBwSW5mbzogQXBwbGljYXRpb25JbmZvKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGFwcEluZm8uY29uZmlndXJhdGlvbi5kb2N1bWVudCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmFjY2VwdCA9IGFwcEluZm8uY29uZmlndXJhdGlvbi5kb2N1bWVudC5maWxlRXh0ZW5zaW9ucztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhGaWxlTmFtZUxlbmd0aCA9IE51bWJlcihcbiAgICAgICAgICAgICAgICAgICAgICAgIGFwcEluZm8uY29uZmlndXJhdGlvbi5kb2N1bWVudC5tYXhGaWxlTmFtZUxlbmd0aFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9maWxlTWF4U2l6ZUluQnl0ZXNCeUZvcm1LZXkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgYXBwSW5mby5jb25maWd1cmF0aW9uLmRvY3VtZW50LmZpbGVNYXhTaXplSW5CeXRlc0J5Rm9ybUtleTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbGxlZ2FsQ2hhcmFjdGVycyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBhcHBJbmZvLmNvbmZpZ3VyYXRpb24uZG9jdW1lbnQuaWxsZWdhbENoYXJhY3RlcnM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldCBmaWxlTWluU2l6ZUluQnl0ZXMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVNaW5TaXplSW5CeXRlcztcbiAgICB9XG5cbiAgICBzZXQgZmlsZU1pblNpemVJbkJ5dGVzKHZhbHVlOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fZmlsZU1pblNpemVJbkJ5dGVzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBnZXQgaWxsZWdhbENoYXJhY3RlcnMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lsbGVnYWxDaGFyYWN0ZXJzO1xuICAgIH1cblxuICAgIHNldCBpbGxlZ2FsQ2hhcmFjdGVycyh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2lsbGVnYWxDaGFyYWN0ZXJzID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBnZXQgbWF4RmlsZU5hbWVMZW5ndGgoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21heEZpbGVOYW1lTGVuZ3RoO1xuICAgIH1cblxuICAgIHNldCBtYXhGaWxlTmFtZUxlbmd0aCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX21heEZpbGVOYW1lTGVuZ3RoID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9tZW1iZXItb3JkZXJpbmdcbiAgICBnZXQgYWNjZXB0KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY2NlcHQ7XG4gICAgfVxuXG4gICAgc2V0IGFjY2VwdCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2FjY2VwdCA9IHZhbHVlO1xuICAgIH1cblxuICAgIGdldE1heEZpbGVTaXplSW5CeXRlc0ZvckZvcm1LZXkoZm9ybUtleTogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgYnlGb3JtS2V5ID0gdGhpcy5fZmlsZU1heFNpemVJbkJ5dGVzQnlGb3JtS2V5W2Zvcm1LZXldO1xuXG4gICAgICAgIGlmICghaXNOYU4oYnlGb3JtS2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuIGJ5Rm9ybUtleTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IGtleUFzUmVnZXggPSBPYmplY3Qua2V5cyhcbiAgICAgICAgICAgICAgICB0aGlzLl9maWxlTWF4U2l6ZUluQnl0ZXNCeUZvcm1LZXlcbiAgICAgICAgICAgICkuZmluZChjYW5CZUFSZWdleCA9PiBmb3JtS2V5Lm1hdGNoKGNhbkJlQVJlZ2V4KSk7XG5cbiAgICAgICAgICAgIHJldHVybiB0aGlzLl9maWxlTWF4U2l6ZUluQnl0ZXNCeUZvcm1LZXlba2V5QXNSZWdleF07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpc0ZpbGVUb29CaWcoZm9ybUtleTogc3RyaW5nLCBmaWxlU2l6ZUluQnl0ZXM6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc1Rvb0JpZyhcbiAgICAgICAgICAgIGZpbGVTaXplSW5CeXRlcyxcbiAgICAgICAgICAgIHRoaXMuZ2V0TWF4RmlsZVNpemVJbkJ5dGVzRm9yRm9ybUtleShmb3JtS2V5KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGlzRmlsZVRvb1NtYWxsKGZpbGVTaXplSW5CeXRlczogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5maWxlTWluU2l6ZUluQnl0ZXMpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsZVNpemVJbkJ5dGVzIDwgdGhpcy5maWxlTWluU2l6ZUluQnl0ZXM7XG4gICAgfVxuXG4gICAgaXNGaWxlTmFtZUxlbmd0aFZhbGlkKFxuICAgICAgICBmaWxlbmFtZTogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoOiBudW1iZXJcbiAgICApOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbWF4RmlsZUxlbmdodCA9XG4gICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoIHx8IHRoaXMubWF4RmlsZU5hbWVMZW5ndGg7XG5cbiAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmxlbmd0aCA8PSBtYXhGaWxlTGVuZ2h0O1xuICAgIH1cblxuICAgIGlzRmlsZU5hbWVOYW1lVmFsaWQoXG4gICAgICAgIGZpbGVuYW1lOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnM6IHN0cmluZ1xuICAgICk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBpbGxlZ2FsQ2hhcmFjdGVycyA9ICEhb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgPyBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzLnNwbGl0KCcsJylcbiAgICAgICAgICAgIDogdGhpcy5pbGxlZ2FsQ2hhcmFjdGVycy5zcGxpdCgnLCcpO1xuXG4gICAgICAgIFBFUk1BTkVOVF9JTExFR0FMX0NIQVJBQ1RFUlMuZm9yRWFjaChjID0+IGlsbGVnYWxDaGFyYWN0ZXJzLnB1c2goYykpO1xuXG4gICAgICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChjb25zdCBpbGxlZ2FsQ2hhcmFjdGVyIG9mIGlsbGVnYWxDaGFyYWN0ZXJzKSB7XG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUuaW5jbHVkZXMoaWxsZWdhbENoYXJhY3RlcikpIHtcbiAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXNWYWxpZDtcbiAgICB9XG5cbiAgICBnZXRGaWxlRXh0ZW5zaW9uKGZpbGVuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYC4ke2ZpbGVuYW1lLnNwbGl0KCcuJykucG9wKCl9YDtcbiAgICB9XG5cbiAgICBpc0ZpbGVFeHRlbnNpb25WYWxpZChcbiAgICAgICAgZmlsZUV4dGVuc2lvbjogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uczogc3RyaW5nXG4gICAgKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGFjY2VwdGVkRXh0ZW5zaW9ucyA9IG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zIHx8IHRoaXMuYWNjZXB0O1xuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAhIWZpbGVFeHRlbnNpb24gJiZcbiAgICAgICAgICAgIGFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAgICAgICAgICAgLnNwbGl0KCcsJylcbiAgICAgICAgICAgICAgICAuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbi50b1VwcGVyQ2FzZSgpKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGVycm9yQ29kZTogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBjdXN0b21FcnJvcnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zOiBzdHJpbmcsXG4gICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGg6IG51bWJlcixcbiAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyczogc3RyaW5nXG4gICAgKTogRm9ybUVycm9yIHtcbiAgICAgICAgY29uc3QgdW5pcVN1ZmZpeCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgIGNvZGU6IGAke2Vycm9yQ29kZX1fJHt1bmlxU3VmZml4fWAsXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnJlcGxhY2VFcnJvck1lc3NhZ2VLZXlzKFxuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzW2Vycm9yQ29kZV0sXG4gICAgICAgICAgICAgICAgZmlsZU5hbWUsXG4gICAgICAgICAgICAgICAgZXJyb3JDb2RlLFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIGFkZEN1c3RvbUVycm9yT3JEZWZhdWx0KFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGRlc3RpbmF0aW9uRXJyb3JzOiBGb3JtRXJyb3JbXSxcbiAgICAgICAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGN1c3RvbUVycm9yczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnM6IHN0cmluZyxcbiAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aDogbnVtYmVyLFxuICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzOiBzdHJpbmdcbiAgICApOiB2b2lkIHtcbiAgICAgICAgLy8gQ2hlY2sgaWYgd2UgaGF2ZSBhIGN1c3RvbSBlcnJvciB0byBtYW5hZ2VcbiAgICAgICAgaWYgKGN1c3RvbUVycm9yc1tlcnJvckNvZGVdKSB7XG4gICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgZGVzdGluYXRpb25FcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICAgICAgICBlcnJvckNvZGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lLFxuICAgICAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGRlc3RpbmF0aW9uRXJyb3JzLnB1c2goe1xuICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgY29kZTogZXJyb3JDb2RlLFxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZ2V0RGVmYXVsdFVua25vd25FcnJvck1lc3NhZ2UoZmlsZU5hbWUpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNyZWF0ZURlZmF1bHRDdXN0b21FcnJvcnMoY3VzdG9tRXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KTogdm9pZCB7XG4gICAgICAgIGN1c3RvbUVycm9ycy5JTUFHRV9OT1RfUkVBREFCTEUgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLklNQUdFX05PVF9SRUFEQUJMRSdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLkZJTEVOQU1FX1RPT19MT05HID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5GSUxFTkFNRV9UT09fTE9ORydcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLkZJTEVfVE9PX1NNQUxMID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5GSUxFX1RPT19TTUFMTCdcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9QQVNTV09SRF9MT0NLRUQgPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLlBERl9QQVNTV09SRF9MT0NLRUQnXG4gICAgICAgICk7XG4gICAgICAgIGN1c3RvbUVycm9ycy5QREZfQ09OVEFJTlNfU0NSSVBUID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgJ2Vycm9ycy5QREZfQ09OVEFJTlNfU0NSSVBUJ1xuICAgICAgICApO1xuICAgICAgICBjdXN0b21FcnJvcnMuUERGX0hBU19BVFRBQ0hNRU5UUyA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX0hBU19BVFRBQ0hNRU5UUydcbiAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLkVNUFRZX1BERiA9XG4gICAgICAgICAgICB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy5FTVBUWV9QREYnKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzLlBERl9HRU5FUkFMX1BST0JMRU0gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoXG4gICAgICAgICAgICAnZXJyb3JzLlBERl9HRU5FUkFMX1BST0JMRU0nXG4gICAgICAgICk7XG4gICAgICAgIGN1c3RvbUVycm9ycy5QREZfSEFTX1JFU1RSSUNUSU9OUyA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYyhcbiAgICAgICAgICAgICdlcnJvcnMuUERGX0hBU19SRVNUUklDVElPTlMnXG4gICAgICAgICk7XG4gICAgICAgIGN1c3RvbUVycm9ycy5GSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4gPVxuICAgICAgICAgICAgdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKFxuICAgICAgICAgICAgICAgICdlcnJvcnMuRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzWyc0MDYnXSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLjQwNicpO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzQxMyddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNDEzJyk7XG4gICAgICAgIGN1c3RvbUVycm9yc1snNDE1J10gPSB0aGlzLmRpY3Rpb25hcnlTZXJ2aWNlLmdldEtleVN5bmMoJ2Vycm9ycy40MTUnKTtcbiAgICAgICAgY3VzdG9tRXJyb3JzWyc0MjInXSA9IHRoaXMuZGljdGlvbmFyeVNlcnZpY2UuZ2V0S2V5U3luYygnZXJyb3JzLjQyMicpO1xuICAgICAgICBjdXN0b21FcnJvcnNbJzUwMCddID0gdGhpcy5kaWN0aW9uYXJ5U2VydmljZS5nZXRLZXlTeW5jKCdlcnJvcnMuNTAwJyk7XG5cbiAgICAgICAgLy8gTXVsdGlQYXJ0RXhjZXB0aW9uIGZyb20gWnV1bCByZXR1cm5zIEhUVFAgMFxuICAgICAgICBjdXN0b21FcnJvcnNbJzAnXSA9IGN1c3RvbUVycm9yc1snNDEzJ107XG4gICAgfVxuXG4gICAgZ2V0TG9jYWxFcnJvcnMoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgZmlsZXM6IEZpbGVbXSxcbiAgICAgICAgY3VzdG9tRXJyb3JzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9LFxuICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uczogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnM6IHN0cmluZ1xuICAgICk6IEZvcm1FcnJvcltdIHtcbiAgICAgICAgY29uc3QgZXJyb3JzOiBGb3JtRXJyb3JbXSA9IFtdO1xuXG4gICAgICAgIGZpbGVzLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICAgICAgICAvLyBGaWxlIGJhZCBleHRlbnNpb25cbiAgICAgICAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSB0aGlzLmdldEZpbGVFeHRlbnNpb24oZmlsZS5uYW1lKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAhdGhpcy5pc0ZpbGVFeHRlbnNpb25WYWxpZChcbiAgICAgICAgICAgICAgICAgICAgZmlsZUV4dGVuc2lvbixcbiAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnNcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IGN1c3RvbSBlcnJvciA0MTUgZXhpc3QgKHNlZSBmdW5jdGlvbiAnY3JlYXRlRGVmYXVsdEN1c3RvbUVycm9ycycpXG4gICAgICAgICAgICAgICAgLy8gTmVlZCB0byBjcmVhdGUgdW5pcXVlIGVycm9yIHRvIGVuc3VyZSBhYmlsaXR5IHRvIGRpc3BsYXkgbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRVbmlxdWVFcnJvckJ5Q29kZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAnNDE1JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaWxlIG5hbWUgY29udGFpbnMgaWxsZWdhbCBjaGFyYWN0ZXJzXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMuaXNGaWxlTmFtZU5hbWVWYWxpZChmaWxlLm5hbWUsIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnMpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IGN1c3RvbSBlcnJvciBGSUxFTkFNRV9TSE9VTERfTk9UX0NPTlRBSU4gZXhpc3QgKHNlZSBmdW5jdGlvbiAnY3JlYXRlRGVmYXVsdEN1c3RvbUVycm9ycycpXG4gICAgICAgICAgICAgICAgLy8gTmVlZCB0byBjcmVhdGUgdW5pcXVlIGVycm9yIHRvIGVuc3VyZSBhYmlsaXR5IHRvIGRpc3BsYXkgbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXNcbiAgICAgICAgICAgICAgICBlcnJvcnMucHVzaChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRVbmlxdWVFcnJvckJ5Q29kZShcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAnRklMRU5BTUVfU0hPVUxEX05PVF9DT05UQUlOJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbUVycm9ycyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVNYXhGaWxlTmFtZUxlbmd0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBGaWxlcyB0b28gYmlnXG4gICAgICAgICAgICBpZiAodGhpcy5pc0ZpbGVUb29CaWcobmFtZSwgZmlsZS5zaXplKSkge1xuICAgICAgICAgICAgICAgIC8vIERlZmF1bHQgY3VzdG9tIGVycm9yIDQxMyBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICc0MTMnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS5uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tRXJyb3JzLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVBY2NlcHRlZEV4dGVuc2lvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcnJpZGVJbGxlZ2FsQ2hhcmFjdGVyc1xuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmlzRmlsZVRvb1NtYWxsKGZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IGN1c3RvbSBlcnJvciBGSUxFX1RPT19TTUFMTCBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdGSUxFX1RPT19TTUFMTCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gRmlsZSBuYW1lIHRvbyBsb25nICg2NCBjaGFycyBtYXgpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMuaXNGaWxlTmFtZUxlbmd0aFZhbGlkKFxuICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGhcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAvLyBEZWZhdWx0IGN1c3RvbSBlcnJvciBGSUxFTkFNRV9UT09fTE9ORyBleGlzdCAoc2VlIGZ1bmN0aW9uICdjcmVhdGVEZWZhdWx0Q3VzdG9tRXJyb3JzJylcbiAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGNyZWF0ZSB1bmlxdWUgZXJyb3IgdG8gZW5zdXJlIGFiaWxpdHkgdG8gZGlzcGxheSBtdWx0aXBsZSBlcnJvciBtZXNzYWdlc1xuICAgICAgICAgICAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFVuaXF1ZUVycm9yQnlDb2RlKFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICdGSUxFTkFNRV9UT09fTE9ORycsXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21FcnJvcnMsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGgsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gZXJyb3JzO1xuICAgIH1cblxuICAgIGhhc0xpdmVVcGxvYWRFcnJvcnMoZXJyb3JzOiBGb3JtRXJyb3JbXSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgISFlcnJvcnMgJiZcbiAgICAgICAgICAgICEhKGVycm9ycyBhcyBGb3JtRXJyb3JbXSkuZmluZChcbiAgICAgICAgICAgICAgICBlID0+XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCc0MTMnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnNDE1JykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9QQVNTV09SRF9MT0NLRUQnKSB8fFxuICAgICAgICAgICAgICAgICAgICBlLmNvZGUuc3RhcnRzV2l0aCgnUERGX0NPTlRBSU5TX1NDUklQVCcpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCdQREZfSEFTX0FUVEFDSE1FTlRTJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ0VNUFRZX1BERicpIHx8XG4gICAgICAgICAgICAgICAgICAgIGUuY29kZS5zdGFydHNXaXRoKCdQREZfR0VORVJBTF9QUk9CTEVNJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ1BERl9IQVNfUkVTVFJJQ1RJT05TJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVOQU1FX1RPT19MT05HJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVfVE9PX1NNQUxMJykgfHxcbiAgICAgICAgICAgICAgICAgICAgZS5jb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTicpXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBwcmV2ZW50QW5kU3RvcChldmVudDogYW55KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgZ2V0QWxsRmlsZXNDb3VudChkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGAke2RhdGEubGVuZ3RofWA7XG4gICAgfVxuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICBnZXRBbGxGaWxlc1NpemVJbk1vKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmaWxlU2l6ZUluQnl0ZXMgPSBkYXRhLnJlZHVjZShcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgICAgICAodG90YWxEb2NTaXplOiBudW1iZXIsIGRvY3VtZW50OiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQuaGFzT3duUHJvcGVydHkoJ2ZpbGVTaXplJykpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRvdGFsRG9jU2l6ZSArIGRvY3VtZW50LmZpbGVTaXplO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdG90YWxEb2NTaXplICsgZG9jdW1lbnQuc2l6ZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAwXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMudG9NZWdhT2N0ZXRzKGZpbGVTaXplSW5CeXRlcyk7XG4gICAgfVxuXG4gICAgdG9NZWdhT2N0ZXRzKHNpemU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHsoc2l6ZSAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMil9YDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGdldFRyYW5zZmVyKGV2ZW50OiBhbnkpOiBGaWxlTGlzdCB7XG4gICAgICAgIGlmICghIWV2ZW50LmRhdGFUcmFuc2Zlcikge1xuICAgICAgICAgICAgcmV0dXJuIGV2ZW50LmRhdGFUcmFuc2Zlci5maWxlcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIGdldEdsb2JhbEluZm9zKGRhdGE6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHt0aGlzLmdldEFsbEZpbGVzQ291bnQoXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICl9IGZpY2hpZXJzIHBvdXIgdW4gdG90YWwgZGUgJHt0aGlzLmdldEFsbEZpbGVzU2l6ZUluTW8oXG4gICAgICAgICAgICBkYXRhXG4gICAgICAgICl9IDxhYmJyIHRpdGxlPVwiTWVnYW9jdGV0XCI+TW88L2FiYnI+YDtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIHNob3dHbG9iYWxJbmZvcyhkYXRhOiBhbnksIGhpZGVHbG9iYWxJbmZvczogYm9vbGVhbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIWhpZGVHbG9iYWxJbmZvcyAmJiAhIWRhdGEgJiYgISFkYXRhLmxlbmd0aCAmJiBkYXRhLmxlbmd0aCA+IDE7XG4gICAgfVxuXG4gICAgbWFwVG9Eb2N1bWVudFJlZmVyZW5jZShcbiAgICAgICAgZmlsZTogRmlsZSxcbiAgICAgICAgbGFiZWw6IHN0cmluZyxcbiAgICAgICAga2V5OiBzdHJpbmcsXG4gICAgICAgIGlzTXVsdGlwbGU6IGJvb2xlYW4sXG4gICAgICAgIHVuaXFQcmVmaXg6IG51bWJlcixcbiAgICAgICAgZ2xvYmFsU2VxdWVuY2U6IG51bWJlclxuICAgICk6IERvY3VtZW50UmVmZXJlbmNlV2l0aEZpbGUge1xuICAgICAgICBjb25zdCBkb2N1bWVudCA9IG5ldyBEb2N1bWVudFJlZmVyZW5jZVdpdGhGaWxlKCk7XG5cbiAgICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcbiAgICAgICAgICAgIC8vIE92ZXJyaWRlIGtleSB0byBlbnN1cmVzIHRoYXQgR2VzRGVtIGNhbiBhY2NlcHQgdGhlIGRvY3VtZW50IGtleSAobGVuZ3RoIG9mIDY0IGNoYXIuIG1heC4pXG4gICAgICAgICAgICBrZXkgPSBgZG9jJHt1bmlxUHJlZml4fSR7Z2xvYmFsU2VxdWVuY2V9YDtcbiAgICAgICAgICAgIGRvY3VtZW50LmtleSA9IHRoaXMubm9ybWFsaXplS2V5KGtleSk7XG4gICAgICAgIH1cblxuICAgICAgICBkb2N1bWVudC5rZXkgPSBrZXk7XG4gICAgICAgIGRvY3VtZW50LmZpbGVuYW1lID0gZmlsZS5uYW1lO1xuICAgICAgICBkb2N1bWVudC5taW1lVHlwZSA9IGZpbGUudHlwZTtcbiAgICAgICAgZG9jdW1lbnQuZmlsZVNpemUgPSBmaWxlLnNpemU7XG4gICAgICAgIGRvY3VtZW50LmxhYmVsID0gbGFiZWw7XG4gICAgICAgIGRvY3VtZW50LmZpbGUgPSBmaWxlO1xuXG4gICAgICAgIHJldHVybiBkb2N1bWVudDtcbiAgICB9XG5cbiAgICBtYXBUb0Zvcm1EYXRhKFxuICAgICAgICBkb2N1bWVudHM6IERvY3VtZW50UmVmZXJlbmNlV2l0aEZpbGVbXSxcbiAgICAgICAgZm9ybUtleTogc3RyaW5nLFxuICAgICAgICBsYW5ndWFnZTogc3RyaW5nXG4gICAgKTogRm9ybURhdGEge1xuICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgIGRvY3VtZW50cy5mb3JFYWNoKCh7IGZpbGUsIGtleSwgbGFiZWwgfSkgPT4ge1xuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdrZXlzJywga2V5KTtcbiAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbGFiZWxzJywgdGhpcy5yZW1vdmVDb21tYXNJbkxhYmVsKGxhYmVsKSk7XG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzJywgZmlsZSwgZmlsZS5uYW1lKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZm9ybURhdGEuYXBwZW5kKCdmb3JtS2V5JywgZm9ybUtleSk7XG4gICAgICAgIGZvcm1EYXRhLmFwcGVuZCgnbGFuZ3VhZ2UnLCBsYW5ndWFnZSk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1EYXRhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbW1hcyBhcmUgcmVtb3ZlZCB0byBhdm9pZCBhIHdyb25nIGludGVycHJldGF0aW9uIGFzIGFuIGFycmF5IG9mIHN0cmluZyBpbiBmb3JtRGF0YS5cbiAgICAgKiBAcGFyYW0gbGFiZWwgdG8gYmUgY2xlYW5lZCBmcm9tIGNvbW1hXG4gICAgICogQHJldHVybnMgc3RyaW5nXG4gICAgICovXG4gICAgcmVtb3ZlQ29tbWFzSW5MYWJlbChsYWJlbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGxhYmVsLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1Rvb0JpZyhmaWxlU2l6ZUluQnl0ZXM6IG51bWJlciwgbGltaXRJbkJ5dGVzOiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGZpbGVTaXplSW5CeXRlcyA+IGxpbWl0SW5CeXRlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIHJlcGxhY2VFcnJvck1lc3NhZ2VLZXlzKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIGVycm9yTXNnOiBzdHJpbmcsXG4gICAgICAgIGZpbGVOYW1lOiBzdHJpbmcsXG4gICAgICAgIGVycm9yQ29kZTogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uczogc3RyaW5nLFxuICAgICAgICBvdmVycmlkZU1heEZpbGVOYW1lTGVuZ3RoOiBudW1iZXIsXG4gICAgICAgIG92ZXJyaWRlSWxsZWdhbENoYXJhY3RlcnM6IHN0cmluZ1xuICAgICk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHNhZmVGaWxlTmFtZSA9IGVuY29kZVVSSShmaWxlTmFtZSk7XG5cbiAgICAgICAgY29uc3QgZm9ybWF0dGVkRXJyb3JNc2cgPSBlcnJvck1zZy5yZXBsYWNlKCclMSRzJywgc2FmZUZpbGVOYW1lKTtcblxuICAgICAgICBpZiAoZXJyb3JDb2RlLnN0YXJ0c1dpdGgoJzQxMycpKSB7XG4gICAgICAgICAgICAvLyBSRVFVRVNUX0VOVElUWV9UT09fTEFSR0VfRVJST1JfTVNHXG4gICAgICAgICAgICBjb25zdCBmaWxlTWF4U2l6ZSA9IChcbiAgICAgICAgICAgICAgICB0aGlzLmdldE1heEZpbGVTaXplSW5CeXRlc0ZvckZvcm1LZXkobmFtZSkgL1xuICAgICAgICAgICAgICAgICgxMDI0ICogMTAyNClcbiAgICAgICAgICAgICkudG9TdHJpbmcoKTtcbiAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWRFcnJvck1zZy5yZXBsYWNlKCclMiRzJywgZmlsZU1heFNpemUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChlcnJvckNvZGUuc3RhcnRzV2l0aCgnNDE1JykpIHtcbiAgICAgICAgICAgIC8vIFVOU1VQUE9SVEVEX01FRElBX1RZUEVfRVJST1JfTVNHXG4gICAgICAgICAgICBjb25zdCBmaWxlRXh0ZW5zaW9ucyA9IChcbiAgICAgICAgICAgICAgICBvdmVycmlkZUFjY2VwdGVkRXh0ZW5zaW9uc1xuICAgICAgICAgICAgICAgICAgICA/IG92ZXJyaWRlQWNjZXB0ZWRFeHRlbnNpb25zXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5hY2NlcHRcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAudG9VcHBlckNhc2UoKVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICcgb3UgJyk7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZSgnJTIkcycsIGZpbGVFeHRlbnNpb25zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JDb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVOQU1FX1RPT19MT05HJykpIHtcbiAgICAgICAgICAgIGNvbnN0IG1heEZpbGVOYW1lTGVuZ3RoID0gKFxuICAgICAgICAgICAgICAgIG92ZXJyaWRlTWF4RmlsZU5hbWVMZW5ndGggfHwgdGhpcy5tYXhGaWxlTmFtZUxlbmd0aFxuICAgICAgICAgICAgKS50b1N0cmluZygpO1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEVycm9yTXNnLnJlcGxhY2UoJyUyJHMnLCBtYXhGaWxlTmFtZUxlbmd0aCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yQ29kZS5zdGFydHNXaXRoKCdGSUxFX1RPT19TTUFMTCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2cucmVwbGFjZShcbiAgICAgICAgICAgICAgICAnJTIkcycsXG4gICAgICAgICAgICAgICAgdGhpcy5maWxlTWluU2l6ZUluQnl0ZXMudG9TdHJpbmcoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3JDb2RlLnN0YXJ0c1dpdGgoJ0ZJTEVOQU1FX1NIT1VMRF9OT1RfQ09OVEFJTicpKSB7XG4gICAgICAgICAgICBsZXQgZmlsZU5hbWVJbGxlZ2FsQ2hhcmFjdGVycyA9IChcbiAgICAgICAgICAgICAgICBvdmVycmlkZUlsbGVnYWxDaGFyYWN0ZXJzIHx8IHRoaXMuaWxsZWdhbENoYXJhY3RlcnNcbiAgICAgICAgICAgICkucmVwbGFjZSgvLC9nLCAnJyk7XG5cbiAgICAgICAgICAgIGZpbGVOYW1lSWxsZWdhbENoYXJhY3RlcnMgKz0gUEVSTUFORU5UX0lMTEVHQUxfQ0hBUkFDVEVSUy5qb2luKCcnKTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZEVycm9yTXNnLnJlcGxhY2UoJyUyJHMnLCBmaWxlTmFtZUlsbGVnYWxDaGFyYWN0ZXJzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybWF0dGVkRXJyb3JNc2c7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0VW5rbm93bkVycm9yTWVzc2FnZShmaWxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgbXNnID0gJ0ltcG9zc2libGUgZGUgdHJhbnNtZXR0cmUgbGUgZmljaGllcic7XG4gICAgICAgIGlmICghIWZpbGVOYW1lICYmICEhZmlsZU5hbWUubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gYCR7bXNnfSAke2VuY29kZVVSSShmaWxlTmFtZSl9LmA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAke21zZ30uYDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ga2V5IHRvIGJlIG5vcm1hbGl6ZWRcbiAgICAgKiBAcmV0dXJucyBzdHJpbmdcbiAgICAgKi9cbiAgICBwcml2YXRlIG5vcm1hbGl6ZUtleShrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBrZXkgPyBrZXkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKHRoaXMuQ0hBUl9UT19SRVBMQUNFLCAnJykgOiBudWxsO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -2900,7 +2900,8 @@ class UploaderHelper {
|
|
|
2900
2900
|
return fileSizeInBytes > limitInBytes;
|
|
2901
2901
|
}
|
|
2902
2902
|
replaceErrorMessageKeys(name, errorMsg, fileName, errorCode, overrideAcceptedExtensions, overrideMaxFileNameLength, overrideIllegalCharacters) {
|
|
2903
|
-
const
|
|
2903
|
+
const safeFileName = encodeURI(fileName);
|
|
2904
|
+
const formattedErrorMsg = errorMsg.replace('%1$s', safeFileName);
|
|
2904
2905
|
if (errorCode.startsWith('413')) {
|
|
2905
2906
|
// REQUEST_ENTITY_TOO_LARGE_ERROR_MSG
|
|
2906
2907
|
const fileMaxSize = (this.getMaxFileSizeInBytesForFormKey(name) /
|
|
@@ -2933,7 +2934,7 @@ class UploaderHelper {
|
|
|
2933
2934
|
getDefaultUnknownErrorMessage(fileName) {
|
|
2934
2935
|
const msg = 'Impossible de transmettre le fichier';
|
|
2935
2936
|
if (!!fileName && !!fileName.length) {
|
|
2936
|
-
return `${msg} ${fileName}.`;
|
|
2937
|
+
return `${msg} ${encodeURI(fileName)}.`;
|
|
2937
2938
|
}
|
|
2938
2939
|
return `${msg}.`;
|
|
2939
2940
|
}
|