ezlibrary_v2 0.1.68 → 0.1.69
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.
|
@@ -2058,7 +2058,7 @@ export class SubformComponent {
|
|
|
2058
2058
|
// });
|
|
2059
2059
|
// });
|
|
2060
2060
|
// }
|
|
2061
|
-
uploadFile(file, fileName) {
|
|
2061
|
+
async uploadFile(file, fileName) {
|
|
2062
2062
|
const s3Client = new S3Client({
|
|
2063
2063
|
region: this.s3details["docS3region"],
|
|
2064
2064
|
credentials: {
|
|
@@ -2066,10 +2066,11 @@ export class SubformComponent {
|
|
|
2066
2066
|
secretAccessKey: this.s3details["docS3secretKey"]
|
|
2067
2067
|
}
|
|
2068
2068
|
});
|
|
2069
|
+
const fileBuffer = await file.arrayBuffer();
|
|
2069
2070
|
const params = {
|
|
2070
2071
|
Bucket: this.s3details["docbucket"],
|
|
2071
2072
|
Key: `${this.s3details["docfolder"]}/${fileName}`,
|
|
2072
|
-
Body:
|
|
2073
|
+
Body: fileBuffer,
|
|
2073
2074
|
ContentType: file.type
|
|
2074
2075
|
};
|
|
2075
2076
|
return s3Client.send(new PutObjectCommand(params))
|
|
@@ -2722,4 +2723,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
|
2722
2723
|
type: ViewChild,
|
|
2723
2724
|
args: [SortableComponent]
|
|
2724
2725
|
}] } });
|
|
2725
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL3N5c3RlbS1tb2R1bGUvc3ViZm9ybS9zdWJmb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvc3lzdGVtLW1vZHVsZS9zdWJmb3JtL3N1YmZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGFBQWEsRUFBRyxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNN0QsTUFBTSxPQUFPLGdCQUFnQjtJQWtIM0IsWUFDUyxNQUFjLEVBQ2IsS0FBcUIsRUFDckIsTUFBcUIsRUFDckIsRUFBd0IsRUFDeEIsYUFBZ0MsRUFDaEMsY0FBaUMsRUFDbEMsRUFBeUIsRUFDekIsRUFBd0I7UUFQeEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNiLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsT0FBRSxHQUFGLEVBQUUsQ0FBc0I7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQW1CO1FBQ2hDLG1CQUFjLEdBQWQsY0FBYyxDQUFtQjtRQUNsQyxPQUFFLEdBQUYsRUFBRSxDQUF1QjtRQUN6QixPQUFFLEdBQUYsRUFBRSxDQUFzQjtRQWxIakMsMENBQTBDO1FBQzFDLFFBQUcsR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRWpCLGNBQVMsR0FBRyxFQUFFLENBQUM7UUFDZixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixXQUFNLEdBQVEsRUFBRSxDQUFDO1FBQ2pCLFNBQUksR0FBRyxFQUFFLENBQUM7UUFDVixZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQXFCWixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUNsQixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQUlsQixnQkFBVyxHQUFHLEtBQUssQ0FBQztRQUVwQixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFDYixvQkFBZSxHQUFRLEVBQUUsQ0FBQztRQU0xQixvQkFBZSxHQUFHLEVBQUUsQ0FBQztRQUNyQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsZUFBVSxHQUFHLEVBQUUsQ0FBQztRQUNoQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ2QsdUJBQWtCLEdBQUcsRUFBRSxDQUFDO1FBRXhCLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxZQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2IsWUFBTyxHQUFHLEVBQUUsQ0FBQztRQUNiLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxjQUFTLEdBQUcsRUFBRSxDQUFDO1FBR2YsT0FBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDOUMsT0FBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUMsWUFBTyxHQUFHLGdCQUFnQixDQUFDO1FBQzNCLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUNqQixhQUFRLEdBQUcsRUFBRSxDQUFDO1FBS2QsZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFDakIsTUFBQyxHQUFHLENBQUMsQ0FBQztRQUNOLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxVQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ1gsU0FBSSxHQUFHLGNBQWMsQ0FBQztRQUN0QixVQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ2QsY0FBUyxHQUFHLFVBQVUsQ0FBQztRQUV2QixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ2YsWUFBTyxHQUFHLEtBQUssQ0FBQztRQUNoQixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBR25CLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBQ25CLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxFQUFFLENBQUM7UUFFYixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFFbEIsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFDbEIsV0FBTSxHQUFHLEVBQUUsQ0FBQztRQUNaLGdCQUFXLEdBQUcsRUFBRSxDQUFDO1FBTWpCLG1CQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUF5YmQsb0JBQWUsR0FBRyxFQUFFLENBQUM7UUFpQ3JCLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUVqQixXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosZ0JBQVcsR0FBRyxTQUFTLENBQUE7UUF5RHZCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHdCQUFtQixHQUFHLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQUcsRUFBRSxDQUFDO1FBNENoQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFrRXRCLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBcU9sQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUFpR3RCLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBNHpCckIsZUFBVSxHQUFHLEVBQUUsQ0FBQTtRQW9ZZixpQkFBWSxHQUFHLEVBQUUsQ0FBQztRQXllbEIsVUFBSyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixjQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDO1FBQ3ZDLFlBQU8sR0FBRyxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDO0lBN21GbEMsQ0FBQztJQUVMLGlCQUFpQjtRQUNmLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO1FBQ25CLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUV4RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksSUFBSSxDQUFDLEVBQUUsSUFBSSxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUU7WUFDNUMscUNBQXFDO1lBQ3JDLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxLQUFLLEVBQUU7Z0JBQzFCLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzthQUNoRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7YUFDMUM7WUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQzlDO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDcEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1NBQ2xDO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDbkMsK0JBQStCO1FBQy9CLDBDQUEwQztRQUMxQyx5Q0FBeUM7UUFDekMsZ0NBQWdDO1FBQ2hDLDhEQUE4RDtRQUM5RCw2RUFBNkU7UUFDN0UsTUFBTTtRQUNOLElBQUk7UUFHSiw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2FBQzlCLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBR2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztnQkFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLEdBQUcsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO2dCQUMvQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQztnQkFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUV0QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksU0FBUyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksWUFBWSxFQUFFO29CQUN2RixJQUNFLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxZQUFZLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxjQUFjLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxlQUFlLENBQUM7d0JBQ3BJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxJQUFJLENBQUMsRUFDekI7d0JBQ0EsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDN0IsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDN0IsSUFBSSxJQUFJLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQzt3QkFDckMsSUFBSSxHQUFHLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUU7NEJBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUM7NEJBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsQ0FBQzt5QkFDbkQ7cUJBQ0Y7aUJBQ0Y7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7aUJBQ3ZCO2dCQUVELElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRTtvQkFDaEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7b0JBQ3pCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFO3dCQUN6QyxJQUFJLE9BQU8sQ0FBQyxVQUFVLElBQUksZ0JBQWdCLEVBQUU7NEJBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO3lCQUNwQztvQkFDSCxDQUFDLENBQUMsQ0FBQTtpQkFDSDthQUNGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVcsQ0FBQyxjQUFjO1FBQ3hCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxvQkFBb0IsQ0FBQztRQUM3Qyw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLENBQUM7YUFDaEQsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQzthQUNsRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWSxDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsT0FBTztRQUMzQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDMUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLE9BQU8sQ0FBQztRQUMvQixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcscUJBQXFCLENBQUM7UUFDOUMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDO2FBQ2hELElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2FBQ25CO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNELGVBQWUsQ0FBQyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsS0FBSyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDdEMsSUFDRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUU7Z0JBQ3BDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksU0FBUztnQkFDM0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxXQUFXO2dCQUU3QyxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUNyRCxJQUNFLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRTt3QkFDdkMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxTQUFTO3dCQUM5QyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLFdBQVc7d0JBRWhELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDeEQ7U0FDSjtRQUNELElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxhQUFhLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxlQUFlLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1FBQ3hCLEtBQUssSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3RDLElBQ0UsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFO2dCQUNwQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxJQUFJLFNBQVM7Z0JBQzNDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLElBQUksV0FBVztnQkFFN0MsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsRUFBRTtvQkFDckQsSUFDRSxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7d0JBQ3ZDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLElBQUksU0FBUzt3QkFDOUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssSUFBSSxXQUFXO3dCQUVoRCxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ3hEO1NBQ0o7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsZUFBZSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBQ0QsYUFBYTtRQUNYLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7UUFDaEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3BDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUd0Qyw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2FBQy9CLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDcEMsT0FBTzthQUNSO1lBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDL0IsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTt3QkFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztxQkFDNUQ7b0JBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLEdBQUcsRUFBRTt3QkFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztxQkFDNUQ7b0JBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTt3QkFDbEMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDM0Q7b0JBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTt3QkFDbEMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO3FCQUNsRTtvQkFDRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFO3dCQUNsQyxPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO3FCQUMzRDtvQkFDRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFO3dCQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUMzQjtvQkFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO3dCQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3FCQUM1RDtvQkFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO3dCQUMzQixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO3FCQUM1RDtnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRXBCLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1NBQ3RCO2FBQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLE1BQU0sRUFBRTtZQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDckIsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7U0FDdkI7YUFBTSxJQUNMLEVBQUU7WUFDRixDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksU0FBUztZQUNyQixDQUFDLENBQUMsZ0JBQWdCLElBQUksYUFBYSxFQUNuQztZQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNEO2FBQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLGFBQWEsRUFBRTtZQUUxQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLFFBQVEsRUFBRTtZQUVyQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ3pCO2FBQU0sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLFlBQVksRUFBRTtZQUN6QyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNaLFFBQVEsQ0FBQyxjQUFjLENBQUMsV0FBVyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzVCO2FBQU0sSUFDTCxFQUFFO1lBQ0YsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLFNBQVM7WUFDckIsQ0FBQyxDQUFDLGdCQUFnQixJQUFJLGFBQWEsRUFDbkM7WUFDQSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQztZQUN6QyxJQUFJLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7U0FDakQ7SUFDSCxDQUFDO0lBRUQsd0JBQXdCLENBQUMsWUFBWTtRQUNuQyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztRQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDOUIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLFlBQVksQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLHNCQUFzQixDQUFDO1FBQy9DLDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUU7YUFDSixJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQzthQUNyQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUVoQyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQztnQkFDNUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELHdCQUF3QjtRQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxZQUFZLENBQUM7UUFDOUIsR0FBRyxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDeEMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztRQUU1Qyw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDckMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFFaEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsc0JBQXNCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO2FBQ25EO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWEsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUVsQixJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNmLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUM1QyxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksR0FBRztZQUN0QixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDbEMsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsRUFBRTtZQUN2QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztZQUNyQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztTQUN0QjtRQUNELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLG9CQUFvQixFQUFFO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLElBQUksR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ3RCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLENBQUMsQ0FBQzthQUN2QztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksMEJBQTBCLEVBQUU7Z0JBQ3JELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNqRDtpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksMkJBQTJCLEVBQUU7Z0JBQ3RELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxjQUFjLENBQUMsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUNyRDtpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksb0JBQW9CLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQzthQUN4RDtpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksb0JBQW9CLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxhQUFhLENBQUMsQ0FBQzthQUN4RDtpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNqRDtpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksdUJBQXVCLEVBQUU7Z0JBQ2xELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN0RDtpQkFDSSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksc0JBQXNCLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDeEI7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLGtCQUFrQixFQUFFO2dCQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLCtCQUErQjtnQkFDL0IsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO2lCQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxxQkFBcUIsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM5QiwrQkFBK0I7Z0JBQy9CLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2FBQzNCO2lCQUNJLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxvQkFBb0IsRUFBRTtnQkFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUM5QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUMxQjtpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksb0JBQW9CLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUN4QztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksaUJBQWlCLEVBQUU7Z0JBQzVDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDOUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7YUFDekI7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLG1CQUFtQixFQUFFO2dCQUM5QyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQzlCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2FBQzlCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7YUFDMUI7U0FDRjtJQUNILENBQUM7SUFFRCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsc0JBQXNCLENBQUM7UUFDL0MsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDekUsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxNQUFNLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQztnQkFDaEQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7Z0JBQ2pCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO2dCQUNwQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsRUFBRSxDQUFDO2dCQUM5QixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZixJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztnQkFDbkIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7YUFDdkI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3BDO1FBQ0gsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUE7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFFTCxDQUFDO0lBT0QsaUJBQWlCLENBQUMsR0FBRztRQUNuQiw4QkFBOEI7UUFDOUIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztRQUN4QyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBQ3hDLDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3pFLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUM3QyxLQUFLLEVBQUUsTUFBTTtvQkFDYixLQUFLLEVBQUUsTUFBTTtpQkFDZCxDQUFDLENBQUMsQ0FBQzthQUNMO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGFBQWEsQ0FBQyxJQUFJO1FBQ2hCLElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDckIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxpQkFBaUIsQ0FBQztRQUMxQyw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN6RSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2FBQzdDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUlELFlBQVksQ0FBQyxNQUFNO1FBQ2pCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzdFLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3BELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdEIsSUFBSSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzVCLElBQUksSUFBSSxHQUFHLFVBQVUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDcEMsSUFBSSxJQUFJLElBQUksTUFBTTtnQkFDaEIsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNaLElBQUksTUFBTSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEMsSUFBSSxNQUFNLElBQUksTUFBTTtnQkFDbEIsTUFBTSxHQUFHLEVBQUUsQ0FBQztZQUNkLElBQUksT0FBTyxHQUFHLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDMUMsSUFBSSxPQUFPLElBQUksTUFBTTtnQkFDbkIsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNmLElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDNUMsSUFBSSxRQUFRLElBQUksTUFBTTtnQkFDcEIsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLFFBQVEsR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzVDLElBQUksUUFBUSxJQUFJLE1BQU07Z0JBQ3BCLFFBQVEsR0FBRyxFQUFFLENBQUM7WUFDaEIsSUFBSSxHQUFHLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNsQyxJQUFJLEdBQUcsSUFBSSxNQUFNO2dCQUNmLEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzFDLElBQUksT0FBTyxJQUFJLE1BQU07Z0JBQ25CLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDZixJQUFJLFVBQVUsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hELElBQUksVUFBVSxJQUFJLE1BQU07Z0JBQ3RCLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDbEIsSUFBSSxRQUFRLEdBQUcsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM1QyxJQUFJLFFBQVEsSUFBSSxNQUFNO2dCQUNwQixRQUFRLEdBQUcsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsT0FBTyxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLE1BQU0sR0FBRyxHQUFHLEdBQUcsSUFBSSxHQUFHLEdBQUcsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLE9BQU8sR0FBRyxHQUFHLEdBQUcsUUFBUSxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUE7U0FFOUk7SUFFSCxDQUFDO0lBRUQsY0FBYztJQUVkLENBQUM7SUFFRCxlQUFlLENBQUMsT0FBTztRQUVyQixJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsQ0FBQztnQkFDZixLQUFLLEVBQUUsUUFBUTtnQkFDZixLQUFLLEVBQUUsUUFBUTthQUNoQixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxHQUFHLFFBQVEsQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO1FBQzNDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztRQUN2QyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7UUFDbkMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7UUFDM0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUNuQyxDQUFDO0lBQ0QsY0FBYztRQUNaLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztRQUN4QyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoRSxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQyxNQUFNLENBQUMsY0FBYyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMxQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLENBQUM7YUFDdEI7WUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7U0FDaEQ7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO1FBRW5ELDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ2hGLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxNQUFNLEdBQUcsRUFBRSxDQUFDO2dCQUNqQixJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLG1CQUFtQixHQUFHLEVBQUUsQ0FBQztnQkFDOUIsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFO29CQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO3FCQUM5QztvQkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO29CQUM3QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO2lCQUM1QjthQUVGO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQTthQUNwQztRQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELHVCQUF1QixDQUFDLE9BQU87UUFDN0IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUN6QyxDQUFDO0lBRUQsZ0JBQWdCO1FBQ2QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDNUIsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7UUFFM0MsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRywwQkFBMEIsQ0FBQztRQUVuRCw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUNoRixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO2dCQUM3QixJQUFJLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO2dCQUNoRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsMEJBQTBCLENBQUMsQ0FBQzthQUVqRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxhQUFhLENBQUMsUUFBUSxFQUFFLEdBQUcsRUFBRSxJQUFJO1FBRS9CLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDeEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBRXpDLDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsQ0FBQzthQUN2RCxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUN4QyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDMUMsSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDaEssTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO29CQUNqRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsY0FBYyxDQUFBO2lCQUUzRDtnQkFDRCxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFFMUMsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO2FBQ2pDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGNBQWMsQ0FBQyxRQUFRLEVBQUUsR0FBRyxFQUFFLElBQUk7UUFFaEMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDN0IsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4QixNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7UUFFMUMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixDQUFDO2FBQ3ZELElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBRXRCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDcEMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFDaEQsSUFBRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDaEssTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO29CQUNqRyxJQUFJLENBQUMsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsY0FBYyxDQUFBO2lCQUUzRDtnQkFDRCxJQUFJLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDdEQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2xELElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQztnQkFDMUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNyRCxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO29CQUM5QixJQUFJLElBQUksR0FBRyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQy9CLElBQUksSUFBSSxJQUFJLElBQUksRUFBRTt3QkFDaEIsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQ3RDLElBQUksSUFBSSxHQUFHLENBQUMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRCxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztxQkFDM0I7Z0JBRUgsQ0FBQyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxnQkFBZ0I7UUFDZCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcseUJBQXlCLENBQUM7UUFDOUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztRQUN6QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUM3Qiw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLENBQUM7YUFDbkQsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDO2dCQUN0QyxJQUFJLENBQUMscUJBQXFCLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQzthQUNwRDtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxVQUFVLENBQUMsQ0FBQyxFQUFFLE9BQU87UUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxPQUFPLENBQUM7UUFDNUIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFN0IsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDO2FBQzVDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLEdBQUc7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGlCQUFpQixDQUFDO1FBQ3RDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDO1FBQ2hDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7UUFFN0IsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDO2FBQzVDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDdEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBS0Qsd0JBQXdCLENBQUMsTUFBTTtRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM3RCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsbUJBQW1CLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxnQ0FBZ0MsQ0FBQztRQUMzRCxnRUFBZ0U7UUFDOUQsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLENBQUM7YUFDNUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFFdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztnQkFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQztnQkFDbEMsSUFBSSxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztnQkFDdkMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQy9CLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQyxXQUFXLElBQUksRUFBRSxDQUFDO29CQUM1QyxXQUFXLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUM1QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUM5QyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4QyxDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLGVBQWUsR0FBRyxFQUFFLENBQUE7Z0JBQ3hCLFlBQVksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7b0JBQzdCLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUNoRCxlQUFlLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDL0IsSUFBSSxXQUFXLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7b0JBQzVDLElBQUksWUFBWSxHQUFHLGVBQWUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRCxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7d0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO3FCQUNoQixDQUFDLENBQUMsQ0FBQztvQkFDSixJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO3dCQUMxQixZQUFZLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFOzRCQUM3QixJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO2dDQUN4QyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDOzZCQUMvRDt3QkFFSCxDQUFDLENBQUMsQ0FBQztxQkFFSjtvQkFDRCxPQUFPLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztnQkFFdEMsQ0FBQyxDQUFDLENBQUM7Z0JBRUgsNENBQTRDO2dCQUM1QyxxQkFBcUI7Z0JBQ3JCLHVCQUF1QjtnQkFDdkIsc0NBQXNDO2dCQUN0QyxJQUFJO2dCQUNKLHFDQUFxQztnQkFDckMsZ0NBQWdDO2dCQUNoQyxtREFBbUQ7Z0JBQ25ELHlDQUF5QztnQkFDekMsTUFBTTtnQkFDTixpQ0FBaUM7Z0JBQ2pDLGdCQUFnQjtnQkFDaEIsOEJBQThCO2dCQUM5QixNQUFNO2dCQUNOLHdDQUF3QztnQkFDeEMsdUJBQXVCO2dCQUN2QixvQ0FBb0M7Z0JBQ3BDLGlEQUFpRDtnQkFDakQscUNBQXFDO2dCQUNyQyxNQUFNO2dCQUdOLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNuRCxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFHSixxQkFBcUI7Z0JBRXJCLFlBQVk7Z0JBRVosSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxlQUFlO0lBRWYsQ0FBQztJQUVELFlBQVksQ0FBQyxHQUFHLEVBQUUsYUFBYSxFQUFFLFVBQVU7UUFDekMsSUFBSSxHQUFHLElBQUksU0FBUyxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTztRQUM1RCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxvQkFBb0IsQ0FBQztRQUNqRixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQ3hDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyw2QkFBNkIsQ0FBQztRQUV0RCw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUVELEdBQUc7UUFDSCxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHNCQUFzQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFFM0UsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUM3QixJQUFJLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLEVBQUUsQ0FBQztZQUNqRCxJQUFJLElBQUksR0FBRyxjQUFjLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2dCQUNmLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQzthQUNoQixDQUFDLENBQUMsQ0FBQztZQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsSUFBSSxDQUFDO1FBQ25DLENBQUMsQ0FBQyxDQUFBO0lBRUosQ0FBQztJQUVELGVBQWUsQ0FBQyxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUc7UUFDaEMsSUFBSSxHQUFHLElBQUksU0FBUyxJQUFJLEdBQUcsSUFBSSxFQUFFLElBQUksR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDO1lBQUUsT0FBTztRQUM1RCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxvQkFBb0IsQ0FBQztRQUNqRixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDcEIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLDZCQUE2QixDQUFDO1FBRXRELDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBRUQsR0FBRztRQUNILElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsb0JBQW9CLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUV6RSxJQUFJLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQzdCLElBQUksY0FBYyxHQUFHLE1BQU0sQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFDO1lBQ2pELElBQUksSUFBSSxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUN2QyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7Z0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ2hCLENBQUMsQ0FBQyxDQUFDO1lBQ0osSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUE7SUFFSixDQUFDO0lBRUQsV0FBVyxDQUFDLENBQUMsRUFBRSxRQUFRLEVBQUUsZUFBZTtRQUN0QyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLFFBQVEsQ0FBQztRQUMxQyxJQUFJLGVBQWUsSUFBSSxTQUFTO1lBQzlCLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsZUFBZSxDQUFDO1FBRS9DLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakQsSUFDRyxRQUFnQixDQUFDLE9BQU8sSUFBSSxJQUFJO1lBQ2pDLGVBQWUsSUFBSSxTQUFTO1lBQzVCLGVBQWUsSUFBSSxFQUFFLEVBQ3JCO1lBQ0EsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQ3JDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGVBQWUsSUFBSSxRQUFRLENBQ25DLENBQUM7WUFDRixJQUFJLEtBQUssR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDZCxNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FDMUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsZUFBZSxLQUFLLFFBQVEsQ0FDMUMsQ0FBQztnQkFDRixJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQzthQUNqQztZQUNELElBQUk7WUFDSixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7U0FDbEI7YUFBTTtZQUNMLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUMxQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxlQUFlLEtBQUssUUFBUSxDQUMxQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFlBQVksR0FBRyxXQUFXLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsQ0FBQyxFQUFFLE1BQU07UUFDMUIsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO1FBQ2xCLEdBQUcsR0FBRyxFQUFFLEdBQUcsTUFBTSxFQUFFLENBQUM7UUFFcEIsOENBQThDO1FBQzlDLGlEQUFpRDtRQUNqRCxvQ0FBb0M7UUFDcEMsSUFBSTtRQUVKLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1NBQzVDO2FBQU07WUFDTCxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEM7UUFDRCxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBRWYsQ0FBQztJQUNELG9CQUFvQixDQUFDLENBQUMsRUFBRSxNQUFNO1FBRTVCLElBQUksR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNsQixHQUFHLEdBQUcsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3BCLEdBQUcsQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1RCxNQUFNLEdBQUcsR0FBRyxDQUFDO0lBRWYsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsR0FBRztRQUU3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsaUJBQWlCLENBQUMsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQzdCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDdkIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLG1CQUFtQixDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFDM0MsZ0VBQWdFO1FBQzlELE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDO2FBQzVDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBRXRCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBRWhDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQzthQUM1QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUdQLENBQUM7SUFDRCxnQkFBZ0I7UUFDZCxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDL0IsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDaEUsSUFBSyxRQUFnQixDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUU7Z0JBQ3JDLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztnQkFDYixHQUFHLENBQUMsaUJBQWlCLENBQUMsR0FBRyxPQUFPLENBQUMsZUFBZSxDQUFDO2dCQUNqRCxHQUFHLENBQUMsYUFBYSxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztnQkFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNsQjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzdELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGdDQUFnQyxDQUFDO1FBQ3pELE1BQU0sQ0FBQyxjQUFjLENBQUMsR0FBRyxNQUFNLENBQUM7UUFLbEMsZ0VBQWdFO1FBQzlELE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLHFCQUFxQixDQUFDO2FBQzVDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBRXRCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBRWhDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxXQUFXLENBQUMsSUFBSTtRQUNkLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3BCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUNwQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFDdkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7UUFDMUQsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksRUFBRTtZQUN2QixNQUFNLENBQUMsa0JBQWtCLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzFDO1FBQ0QsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDL0IsSUFBSSxNQUFNLElBQUksVUFBVSxFQUFFO1lBQ3hCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQztZQUNqRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1NBQ2pFO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxhQUFhLENBQUM7UUFDdEMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQ3pCLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBRXRCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLElBQUksUUFBUSxDQUFDLE9BQU8sSUFBSSxTQUFTLEVBQUU7Z0JBQ2pFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDcEMsT0FBTzthQUNSO1lBQ0QsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsVUFBVSxDQUFDO2dCQUNyQyxJQUFJLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxFQUFFO29CQUN2QixRQUFRLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO2lCQUM5QztnQkFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRTtvQkFDeEMsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTt3QkFDbEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztxQkFDNUQ7b0JBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLEdBQUcsRUFBRTt3QkFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztxQkFDNUQ7b0JBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTt3QkFFbEMsSUFBSSxHQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7d0JBQzdCLElBQUksR0FBRyxJQUFJLEVBQUUsSUFBSSxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsRUFBRTs0QkFFNUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxlQUFlLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksa0JBQWtCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUksbUJBQW1CLEVBQUU7Z0NBQzlJLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLElBQUksRUFBRSxDQUFDO2dDQUM5QixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQztnQ0FDaEMsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsSUFBSSxFQUFFLENBQUM7Z0NBQ3BDLElBQUksSUFBSSxJQUFJLEVBQUUsSUFBSSxPQUFPLElBQUksRUFBRSxFQUFFO29DQUMvQixJQUFJLEdBQUcsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQztvQ0FDL0IsR0FBRyxHQUFHLEdBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQ0FDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDLENBQUM7aUNBQ25DOzZCQUNGO2lDQUFNO2dDQUNMLEdBQUcsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsT0FBTyxDQUFDLGFBQWEsR0FBRyxHQUFHLENBQUMsQ0FBQTtnQ0FDNUQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQzs2QkFDOUI7eUJBQ0Y7cUJBQ0Y7b0JBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTt3QkFDbEMsT0FBTyxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztxQkFDM0Q7b0JBQ0QsSUFBSSxPQUFPLENBQUMsY0FBYyxJQUFJLElBQUksRUFBRTt3QkFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDM0I7b0JBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTt3QkFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztxQkFDNUQ7b0JBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksRUFBRTt3QkFDM0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQzt3QkFDM0QsSUFBSSxDQUFDLEdBQUcsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDO3FCQUNsQztvQkFDRCxJQUFJLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFO3dCQUNsQyxPQUFPLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUM7cUJBQ3pDO29CQUNELHVDQUF1QztvQkFDdkMsZ0NBQWdDO29CQUNoQyx1QkFBdUI7b0JBQ3ZCLHNCQUFzQjtvQkFDdEIsU0FBUztvQkFDVCxJQUFJO2dCQUNOLENBQUMsQ0FBQyxDQUFDO2dCQUNILElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQU87UUFDakIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsUUFBUSxDQUFDO1FBQ2pDLDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUU7YUFDSixPQUFPLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQzthQUN4QixJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUN2QixPQUFPLENBQUMsYUFBYSxHQUFHLEdBQUcsQ0FBQzthQUM3QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsWUFBWSxDQUFDLE1BQU07UUFDakIsSUFBSSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBRWIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQ3hCLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLEdBQUcsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO2dCQUNuQixPQUFPLEdBQUcsQ0FBQzthQUNaO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRCxjQUFjLENBQUMsSUFBSTtRQUNqQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDN0MsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztRQUM5Qyw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7YUFDeEIsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ3JDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztvQkFDZixLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7aUJBQ2hCLENBQUMsQ0FBQyxDQUFDO2dCQUVKLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBRTNDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO29CQUFFLE9BQU87Z0JBQzdCLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtvQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUMxQixJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFO2dDQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQ3JDLE9BQU87NkJBQ1I7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQUksRUFBRSxhQUFhO1FBQzVCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsYUFBYSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsa0JBQWtCLENBQUM7UUFDM0MsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQ3hCLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFFSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBRWhDLElBQUksSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJO29CQUFFLE9BQU87Z0JBQzdCLElBQUksSUFBSSxJQUFJLE1BQU0sRUFBRTtvQkFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEVBQUU7d0JBQzdDLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFOzRCQUMxQixJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksUUFBUSxFQUFFO2dDQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0NBQ3JDLE9BQU87NkJBQ1I7d0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBQ0wsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsY0FBYyxDQUFDLElBQUksRUFBRSxHQUFHO1FBRXRCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztRQUM3QyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcscUJBQXFCLENBQUM7UUFFOUMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQ3hCLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBR2hDLElBQUksQ0FBQyxJQUFJLEdBQUcsUUFBUSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUNyQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7b0JBQ2YsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2lCQUNoQixDQUFDLENBQUMsQ0FBQztnQkFHSixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO2dCQUMzQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUM7b0JBQ3RCLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFHM0M7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxDQUFDLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztRQUU3QyxnRUFBZ0U7UUFDOUQsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUMxRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ3ZDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO2dCQUN6QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUUzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFFM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYztRQUVaLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxDQUFDLFlBQVksQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsaUJBQWlCLENBQUM7UUFDdkQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDL0IsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDOUIsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRTtZQUNsQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM5QixNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUM7U0FDcEM7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUUvQiw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osVUFBVSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7YUFDM0IsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLG1DQUFtQztnQkFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsRUFBRSxLQUFLO1FBQ2QsSUFBSSxFQUFFLENBQUMsV0FBVyxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtZQUNsRCxPQUFPO1NBQ1I7YUFBTTtZQUNMLElBQUksRUFBRSxDQUFDLFdBQVcsSUFBSSxlQUFlLEVBQUU7Z0JBQ3JDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQy9CO2lCQUFNLElBQUksRUFBRSxDQUFDLFdBQVcsSUFBSSxVQUFVLEVBQUU7Z0JBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzFCO2lCQUFNLElBQUksRUFBRSxDQUFDLFdBQVcsSUFBSSxjQUFjLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzlCO2lCQUFNLElBQUksRUFBRSxDQUFDLFdBQVcsSUFBSSxXQUFXLEVBQUU7Z0JBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO2FBQzNCO2lCQUFNLElBQUksRUFBRSxDQUFDLGNBQWMsSUFBSSxHQUFHLEVBQUU7Z0JBQ25DLElBQUksRUFBRSxDQUFDLFdBQVcsSUFBSSxJQUFJLEVBQUU7b0JBQzFCLE9BQU87aUJBQ1I7Z0JBQ0QsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNqRCx5Q0FBeUM7YUFDMUM7aUJBQ0ksSUFBSSxFQUFFLENBQUMsV0FBVyxJQUFJLFNBQVMsRUFBRTtnQkFDcEMsSUFBSSxFQUFFLENBQUMsV0FBVyxJQUFJLElBQUksRUFBRTtvQkFDMUIsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQzthQUN6QjtTQUNGO0lBQ0gsQ0FBQztJQUVELFlBQVksQ0FBQyxFQUFFLEVBQUUsS0FBSztRQUVwQixJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzlDLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyRCxJQUFJLE1BQU0sSUFBSSxFQUFFLEVBQUU7WUFDaEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQy9CLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxLQUFLO29CQUM3QixPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUE7Z0JBQ3RDLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxXQUFXO29CQUNuQyxPQUFPLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUE7WUFFeEMsQ0FBQyxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFRCxTQUFTLENBQUMsRUFBRSxFQUFFLEtBQUs7UUFDakIsSUFBSSxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDZCxJQUFJLEtBQUssSUFBSSxRQUFRLElBQUksS0FBSyxJQUFJLFFBQVE7WUFDeEMsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQy9CLElBQUksT0FBTyxDQUFDLFVBQVUsSUFBSSxNQUFNO2dCQUM5QixPQUFPLENBQUMsYUFBYSxHQUFHLElBQUksQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLENBQUMsTUFBTSxFQUFFLEtBQUs7UUFFbkIsSUFBSSxLQUFLLElBQUksRUFBRSxJQUFJLEtBQUssSUFBSSxJQUFJO1lBQUUsT0FBTztRQUN6QyxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUN0Qyw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLENBQUM7YUFDaEQsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsT0FBTyxJQUFJLEVBQUUsRUFBRTtnQkFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO2dCQUNuQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQy9CLGlHQUFpRzthQUNsRztpQkFBTTtnQkFDTCxNQUFNLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ3ZCLElBQUksQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHO1FBQ25CLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDekQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDeEMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEVBQUU7WUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQ2xDO2FBQU07WUFDTCxPQUFPO1NBQ1I7SUFDSCxDQUFDO0lBRUQsT0FBTyxDQUFDLENBQUMsRUFBRSxHQUFHO1FBRVosSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxJQUFJLGVBQWUsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxrQkFBa0IsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsSUFBSSxtQkFBbUIsRUFBRTtZQUM5SSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztZQUM5QixJQUFJLFVBQVUsR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3BDLElBQUksVUFBVSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7Z0JBQzFCLENBQUMsQ0FBQyxVQUFVLEdBQUcsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUM3QixDQUFDLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDM0IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDM0I7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQztnQkFDekMsT0FBTzthQUNSO1lBQ0QsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUs7Z0JBQ3ZCLENBQUMsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQy9CO1FBRUQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNDLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMzQyxNQUFNLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQztRQUN2RCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFDM0MsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztRQUMxRCxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDakUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDO1FBQy9DLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDNUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMxQixJQUFJLE1BQU0sSUFBSSxVQUFVLEVBQUU7WUFDeEIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDO1lBQ2pELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDakU7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMvQiw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7YUFDeEIsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFFdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7Z0JBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO2dCQUNuQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztnQkFDcEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BDLCtCQUErQjtnQkFDL0IscUNBQXFDO2dCQUNyQyxtQ0FBbUM7Z0JBQ25DLGtDQUFrQztnQkFDbEMsUUFBUTtnQkFDUixNQUFNO2dCQUNOLFdBQVc7Z0JBQ1gsd0NBQXdDO2dCQUN4QyxrQ0FBa0M7Z0JBQ2xDLHVDQUF1QztnQkFDdkMsTUFBTTtnQkFDTixpQ0FBaUM7Z0JBQ2pDLGdDQUFnQztnQkFDaEMsTUFBTTtnQkFDTixJQUFJO2dCQUNKLG1DQUFtQztnQkFDbkMsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7Z0JBQ3pCLElBQUk7Z0JBQ0osSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLEdBQUcsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2dCQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQztnQkFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsR0FBRyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7WUFDbkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksSUFBSTtZQUFFLE9BQU87UUFDakMsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxlQUFlLENBQUM7UUFDeEMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLFFBQVEsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixDQUFDO2FBQzVDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBQ3RCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO2FBQ2pCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPO1FBQ3RCLElBQUksT0FBTyxJQUFJLEVBQUUsSUFBSSxPQUFPLElBQUksSUFBSTtZQUFFLE9BQU87UUFDN0MsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztRQUMvQyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUN4QyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQUcsT0FBTyxDQUFDO1FBQzlCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDO1FBQ3ZELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsWUFBWSxDQUFDO1FBQ3JDLDZEQUE2RDtRQUM3RCxJQUFJLE9BQU8sR0FBRztZQUNaLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUU7YUFDSixRQUFRLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsQ0FBQzthQUM1QyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUN0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQzthQUNqQjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7Z0JBQy9CLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGdCQUFnQixDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLElBQUksS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztTQUN0QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsUUFBUSxDQUFDLEtBQWEsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxLQUFLLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7U0FDOUI7UUFDRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQsUUFBUSxDQUFDLENBQUMsRUFBRSxHQUFHO1FBQ2IsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7UUFDaEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUM7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxXQUFXLENBQUMsTUFBTSxFQUFFLEdBQUc7UUFDckIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDM0IsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4QixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGFBQWEsQ0FBQztRQUV0Qyw2REFBNkQ7UUFDN0QsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osUUFBUSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUsaUJBQWlCLENBQUM7YUFDNUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFFaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUMsU0FBUyxDQUFDO2dCQUNwQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7Z0JBQzFDLElBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7b0JBQ2hLLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsc0JBQXNCLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztvQkFDakcsSUFBSSxDQUFDLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLGNBQWMsQ0FBQTtpQkFFM0Q7Z0JBRUQsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDO2dCQUMxQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxZQUFZLENBQUM7Z0JBQzFDLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQzthQUVqQztpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUM7YUFDRCxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFNRCxLQUFLLENBQUMsYUFBYTtRQUNqQixJQUFJLE9BQU8sR0FBRyxFQUFFLENBQUE7UUFDaEIsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDeEQsSUFBSSxPQUFPLEdBQUc7WUFDWixNQUFNLEVBQUUsZUFBZTtTQUN4QixDQUFBO1FBQ0QsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDNUUsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFBO2dCQUNqQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2FBRTVCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNwQztRQUNKLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELHFCQUFxQjtJQUVyQixnQ0FBZ0M7SUFDaEMsZ0NBQWdDO0lBQ2hDLGtDQUFrQztJQUNsQyx1QkFBdUI7SUFDdkIsZ0RBQWdEO0lBQ2hELCtCQUErQjtJQUMvQix3Q0FBd0M7SUFDeEMsbUVBQW1FO0lBQ25FLHNCQUFzQjtJQUN0QixvQ0FBb0M7SUFDcEMsTUFBTTtJQUVOLHFGQUFxRjtJQUNyRiwwQ0FBMEM7SUFFMUMsb0NBQW9DO0lBQ3BDLG1EQUFtRDtJQUNuRCxpRUFBaUU7SUFDakUsMENBQTBDO0lBRTFDLDRDQUE0QztJQUM1Qyx1Q0FBdUM7SUFDdkMsOENBQThDO0lBQzlDLHlDQUF5QztJQUN6QyxZQUFZO0lBQ1osNERBQTREO0lBQzVELDREQUE0RDtJQUM1RCxvQ0FBb0M7SUFDcEMsK0VBQStFO0lBQy9FLGtEQUFrRDtJQUNsRCxrRUFBa0U7SUFDbEUsa0VBQWtFO0lBQ2xFLDREQUE0RDtJQUM1RCw0QkFBNEI7SUFDNUIsZ0NBQWdDO0lBQ2hDLDJCQUEyQjtJQUMzQiwwREFBMEQ7SUFDMUQsVUFBVTtJQUNWLGdDQUFnQztJQUNoQywyQkFBMkI7SUFDM0IsMERBQTBEO0lBQzFELFVBQVU7SUFDVixpQ0FBaUM7SUFDakMsMkJBQTJCO0lBQzNCLCtEQUErRDtJQUMvRCxVQUFVO0lBQ1YsaUNBQWlDO0lBQ2pDLDJCQUEyQjtJQUMzQiwrREFBK0Q7SUFDL0QsVUFBVTtJQUNWLDhCQUE4QjtJQUM5QiwyQkFBMkI7SUFDM0IsNERBQTREO0lBQzVELFVBQVU7SUFDVix1QkFBdUI7SUFDdkIsaURBQWlEO0lBQ2pELG1GQUFtRjtJQUNuRiwwQ0FBMEM7SUFDMUMsa0RBQWtEO0lBQ2xELHVEQUF1RDtJQUV2RCxtRUFBbUU7SUFDbkUsNEJBQTRCO0lBQzVCLG1DQUFtQztJQUVuQywrREFBK0Q7SUFFL0Qsc0NBQXNDO0lBQ3RDLDJEQUEyRDtJQUMzRCwrREFBK0Q7SUFDL0QsNkJBQTZCO0lBQzdCLGNBQWM7SUFFZCx1REFBdUQ7SUFDdkQsc0RBQXNEO0lBQ3RELHFEQUFxRDtJQUNyRCxrQ0FBa0M7SUFDbEMsdURBQXVEO0lBQ3ZELDBFQUEwRTtJQUMxRSxtQkFBbUI7SUFDbkIsa0ZBQWtGO0lBRWxGLHdDQUF3QztJQUN4QyxvQkFBb0I7SUFDcEIsa0JBQWtCO0lBQ2xCLGNBQWM7SUFDZCxjQUFjO0lBQ2QsaUJBQWlCO0lBQ2pCLHdDQUF3QztJQUN4QyxVQUFVO0lBQ1YsUUFBUTtJQUNSLE9BQU87SUFDUCw2QkFBNkI7SUFDN0Isb0NBQW9DO0lBQ3BDLHdDQUF3QztJQUN4QyxVQUFVO0lBRVYsSUFBSTtJQUVKLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtRQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzNCLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLE1BQU0sTUFBTSxHQUFHO1lBQ2IsT0FBTyxFQUFFLHNCQUFzQjtZQUMvQixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUM7UUFDRixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQztRQUNuQyxNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFDO1FBRUYsSUFBSTtZQUNGLE1BQU0sUUFBUSxHQUFRLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQzdFLElBQUksUUFBUSxDQUFDLE1BQU0sS0FBSyxTQUFTLEVBQUU7Z0JBQ2pDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUM7Z0JBQzFDLElBQUksWUFBWSxHQUFHLFFBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQztnQkFDeEQsWUFBWSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtvQkFDN0IsSUFBSSxPQUFPLENBQUMsVUFBVSxLQUFLLE1BQU07d0JBQUUsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7b0JBQzdELElBQUksT0FBTyxDQUFDLFVBQVUsS0FBSyxRQUFRO3dCQUFFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDO2dCQUNuRSxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25ELE1BQU0sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO2dCQUMzQixVQUFVLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFFekMsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ25ELElBQUksT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLFVBQVUsSUFBSSxVQUFVLElBQUksV0FBVyxJQUFJLFdBQVcsSUFBSSxRQUFRLENBQUMsQ0FBQztnQkFFckYsSUFBSSxDQUFDLE9BQU8sRUFBRTtvQkFDWixJQUFJLENBQUMsVUFBVTt3QkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO29CQUNoRSxJQUFJLENBQUMsVUFBVTt3QkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO29CQUNoRSxJQUFJLENBQUMsV0FBVzt3QkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO29CQUN0RSxJQUFJLENBQUMsV0FBVzt3QkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO29CQUN0RSxJQUFJLENBQUMsUUFBUTt3QkFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO29CQUNoRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFDO29CQUM3QixPQUFPO2lCQUNSO2dCQUVELElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQy9FLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDO29CQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsRixJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN4RCxJQUFJLE1BQU07b0JBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUM7Z0JBRXBELE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDO29CQUM1QixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsV0FBVyxFQUFFO3dCQUNYLFdBQVcsRUFBRSxXQUFXO3dCQUN4QixlQUFlLEVBQUUsV0FBVztxQkFDN0I7aUJBQ0YsQ0FBQyxDQUFDO2dCQUVILEtBQUssTUFBTSxPQUFPLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO29CQUM3QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7d0JBQ3pCLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTs0QkFDdkMsTUFBTSxTQUFTLEdBQUc7Z0NBQ2hCLE1BQU0sRUFBRSxVQUFVO2dDQUNsQixHQUFHLEVBQUUsR0FBRyxVQUFVLElBQUksR0FBRyxDQUFDLFNBQVMsQ0FBQyxFQUFFOzZCQUN2QyxDQUFDOzRCQUNGLElBQUk7Z0NBQ0YsTUFBTSxPQUFPLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztnQ0FDaEQsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLE1BQU0sWUFBWSxDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQzs2QkFDN0U7NEJBQUMsT0FBTyxHQUFHLEVBQUU7Z0NBQ1osT0FBTyxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxHQUFHLENBQUMsQ0FBQzs2QkFDbkQ7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtTQUNGO1FBQUMsT0FBTyxHQUFHLEVBQUU7WUFDWixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUNoQztJQUNILENBQUM7SUFHRCxRQUFRLENBQUMsR0FBRztRQUNWLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUM7UUFDdEIsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBSztRQUVwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEQsSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFjLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDakMsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUQsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksU0FBUyxFQUFFO1lBQ2pDLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QixJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO1lBQ3hDLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdkMsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDOUIsSUFBSSxHQUFHLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQzVELFFBQVEsR0FBRyxNQUFNLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQy9ELElBQUksVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUVsRSxJQUFJLFVBQVUsSUFBSSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztnQkFDaEIsSUFBSSxRQUFRLEdBQUcsRUFBRSxDQUFDO2dCQUNsQixRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQ3JDLFFBQVEsQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO2dCQUNuQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUMzQixRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUMvQixRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDO2dCQUN0QixNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsS0FBSyxDQUFDO2dCQUMzQixNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsUUFBUSxDQUFDO2dCQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFFbkMsNkRBQTZEO2dCQUM3RCxJQUFJLE9BQU8sR0FBRztvQkFDWixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7aUJBQzlCLENBQUE7Z0JBQ0QsSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO29CQUNyRSxJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO3dCQUNoQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsNEJBQTRCO3dCQUM3RCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO3dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3ZDO3lCQUFNO3dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7d0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztxQkFDckM7Z0JBQ0gsQ0FBQyxDQUFDO3FCQUNDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO2FBRU47aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQzthQUN6QztTQUdGO2FBQU07WUFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0lBS0QsK0JBQStCO0lBQy9CLGdDQUFnQztJQUNoQyxxREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDRDQUE0QztJQUM1QyxRQUFRO0lBQ1IscUJBQXFCO0lBQ3JCLDJDQUEyQztJQUMzQyx5REFBeUQ7SUFDekQsa0JBQWtCO0lBQ2xCLDZCQUE2QjtJQUM3QixPQUFPO0lBRVAsb0RBQW9EO0lBQ3BELHVEQUF1RDtJQUN2RCxxQkFBcUI7SUFFckIseUJBQXlCO0lBQ3pCLFVBQVU7SUFFVix5QkFBeUI7SUFDekIsVUFBVTtJQUNWLFFBQVE7SUFDUixJQUFJO0lBRUosVUFBVSxDQUFDLElBQUksRUFBRSxRQUFRO1FBQ3ZCLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQztZQUNyQyxXQUFXLEVBQUU7Z0JBQ1gsV0FBVyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7Z0JBQzdDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixDQUFDO2FBQ2xEO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUc7WUFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUM7WUFDbkMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxRQUFRLEVBQUU7WUFDakQsSUFBSSxFQUFFLElBQUk7WUFDVixXQUFXLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDdkIsQ0FBQztRQUVGLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQy9DLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQzthQUMxQixLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFHRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3pDLHdFQUF3RTtRQUN4RSx5QkFBeUI7UUFDekIsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDOUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxVQUFVLENBQUM7UUFFbkMsZ0VBQWdFO1FBQ2hFLElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDckUsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyw0QkFBNEI7Z0JBQ3JGLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUN2QztpQkFBTTtnQkFDTCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNqQyxDQUFDLENBQUMsQ0FBQztRQUNILFdBQVc7UUFDWCxnQ0FBZ0M7UUFDaEMsMkdBQTJHO1FBQzNHLElBQUk7SUFDTixDQUFDO0lBR0QsS0FBSyxDQUFDLGdCQUFnQixDQUFDLE1BQU07UUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxRQUFRLENBQUM7WUFDNUIsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDO1lBQ3JDLFdBQVcsRUFBRTtnQkFDWCxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDN0MsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7YUFDbEQ7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLE1BQU0sR0FBRztZQUNiLE1BQU0sRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQztZQUNuQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRTtTQUMzRCxDQUFDO1FBRUYsSUFBSTtZQUNGLE1BQU0sT0FBTyxHQUFHLElBQUksbUJBQW1CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDaEQsTUFBTSxNQUFNLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzVDLE9BQU8sTUFBTSxDQUFDO1NBQ2Y7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDekQsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO1NBQzlDO0lBQ0gsQ0FBQztJQUdELGdCQUFnQixDQUFDLE1BQU07UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLENBQUM7UUFDM0IsUUFBUSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsS0FBSztRQUVoQyxJQUFJLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1FBRXJFLElBQUksU0FBUyxJQUFJLEVBQUUsRUFBRTtZQUNuQixNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN4QyxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQ3JDLGdFQUFnRTtZQUM5RCxNQUFNLE9BQU8sR0FBRztnQkFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7YUFDOUIsQ0FBQTtZQUNELElBQUksV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRXhFLElBQUksV0FBVyxDQUFDLFFBQVEsQ0FBQyxJQUFJLFNBQVMsRUFBRTtnQkFDdEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQTthQUN2QjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO2FBQ3pDO1NBRUY7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztRQUN4QyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGtCQUFrQixDQUFDO1FBQzdDLGdFQUFnRTtRQUM5RCxNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUU7YUFDSixJQUFJLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxxQkFBcUIsQ0FBQzthQUM1QyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUV0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsZUFBZSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBSUQsa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxtQkFBbUIsQ0FBQztRQUN4QyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxLQUFLLENBQUM7UUFDakMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxnRUFBZ0U7UUFDOUQsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0osSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLENBQUM7YUFDNUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFFdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDO2dCQUNoRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7aUJBQ25DO2dCQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsVUFBVSxDQUFDLE1BQU07UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNmLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDMUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsbUJBQW1CLENBQUM7UUFFOUMsZ0VBQWdFO1FBQzlELE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7YUFDdkMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFFdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO2dCQUNsQyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDNUIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2lCQUMxQztnQkFDRCxJQUFJLENBQUMsVUFBVSxHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUM7Z0JBQ3RDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO29CQUM5QixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUM7aUJBQ2hEO2dCQUNELElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7YUFDNUI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRO1FBQzVCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxRQUFRLENBQUM7UUFDaEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO1FBRWhELGdFQUFnRTtRQUM5RCxNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUU7YUFDSixzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQ3ZDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBRXRCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO2dCQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7Z0JBQ2xDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxRQUFRLENBQUMsa0JBQWtCLENBQUM7Z0JBQ3RELElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUM5QixJQUFJLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUN6QyxDQUFDLENBQUMsQ0FBQztnQkFFSCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2FBQzVCO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGVBQWUsQ0FBQyxDQUFDLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUTtRQUNwRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDbEIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMxQixNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvRCxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztRQUNyRCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcscUJBQXFCLENBQUM7UUFDMUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztRQUUzQyxnRUFBZ0U7UUFDOUQsTUFBTSxPQUFPLEdBQUc7WUFDZCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUM7U0FDOUIsQ0FBQTtRQUNELElBQUksQ0FBQyxFQUFFO2FBQ0oseUJBQXlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQzthQUMxQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUV0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztnQkFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRO1FBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2pDLFVBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUMsQ0FBQyxDQUFDLENBQUM7U0FDSjtRQUNELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ3JDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBRTNDLGdFQUFnRTtRQUM5RCxNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUU7YUFDSix5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQzFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBRXRCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3ZDO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQzNCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzthQUNyQztRQUNILENBQUMsQ0FBQzthQUNELEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUdELGtCQUFrQixDQUFDLENBQUMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRO1FBQ3ZELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsTUFBTSxDQUFDO1FBQzFCLE1BQU0sQ0FBQyxTQUFTLENBQUM7WUFDZixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQy9ELE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1FBQ3JELE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLGdCQUFnQixDQUFDO1FBRTNDLGdFQUFnRTtRQUM5RCxNQUFNLE9BQU8sR0FBRztZQUNkLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQztTQUM5QixDQUFBO1FBQ0QsSUFBSSxDQUFDLEVBQUU7YUFDSix5QkFBeUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDO2FBQzFDLElBQUksQ0FBQyxDQUFDLFFBQWEsRUFBRSxFQUFFO1lBRXRCLElBQUksUUFBUSxDQUFDLE1BQU0sSUFBSSxTQUFTLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO2dCQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsZUFBZSxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVE7UUFDekMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUMzQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFOUIsSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDakMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUMxQyxDQUFDLENBQUMsQ0FBQztTQUNKO1FBQ0QsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDMUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDckQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFFM0MsZ0VBQWdFO1FBQzlELE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7YUFDMUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFFdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0QsV0FBVyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsUUFBUTtRQUM3QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBRTNCLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQzlCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUN4QyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDOUIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7b0JBQ25DLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLENBQUM7YUFDSjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxNQUFNLENBQUM7UUFDMUIsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDckQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLHFCQUFxQixDQUFDO1FBQzFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7UUFFM0MsZ0VBQWdFO1FBQzlELE1BQU0sT0FBTyxHQUFHO1lBQ2QsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFDRCxJQUFJLENBQUMsRUFBRTthQUNKLHlCQUF5QixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUM7YUFDMUMsSUFBSSxDQUFDLENBQUMsUUFBYSxFQUFFLEVBQUU7WUFDdEIsSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTtnQkFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQ3JDLElBQUksQ0FBQyxXQUFXLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsSUFBSTtRQUNoQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQzNCLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztRQUNoQixJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxHQUFHLEdBQUcsaUJBQWlCLENBQUM7UUFDNUIsSUFBSSxJQUFJLElBQUksR0FBRztZQUNiLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDM0MsSUFBSSxJQUFJLElBQUksR0FBRztZQUNiLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNsQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDbkMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLE1BQU0sQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksb0JBQW9CLEVBQUU7WUFDMUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxZQUFZO1lBQ3pFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsYUFBYSxDQUFDO1NBQ3ZDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLDJCQUEyQixFQUFFO1lBQ2pELE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUM3RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDekMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLDBCQUEwQixFQUFFO1lBQ2hELE1BQU0sQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUM3RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsZ0JBQWdCLENBQUM7WUFDekMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLG9CQUFvQixFQUFFO1lBQzFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUM5RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDO1lBQ2hDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7WUFDMUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLG9CQUFvQixFQUFFO1lBQzFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUM5RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7WUFDMUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLGlCQUFpQixFQUFFO1lBQ3ZDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUM5RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7WUFDMUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO1NBQzVCO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLHVCQUF1QixFQUFFO1lBQzdDLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsWUFBWTtZQUM5RSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDO1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsaUJBQWlCLENBQUM7WUFDMUMsR0FBRyxHQUFHLG9CQUFvQixDQUFDO1NBQzVCO1FBQ0QsNkRBQTZEO1FBQzdELElBQUksT0FBTyxHQUFHO1lBQ1osTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO1NBQzlCLENBQUE7UUFFRCxJQUFJLENBQUMsRUFBRTthQUNKLElBQUksQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsQ0FBQzthQUMxQixJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtZQUV0QixJQUFJLFFBQVEsQ0FBQyxNQUFNLElBQUksU0FBUyxFQUFFO2dCQUNoQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDdkM7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDM0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2FBQ3JDO1FBQ0gsQ0FBQyxDQUFDO2FBQ0QsS0FBSyxDQUFDLENBQUMsR0FBUSxFQUFFLEVBQUU7WUFDbEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBR0QsNkJBQTZCO0lBQzdCLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDZCxJQUFJLENBQUMsSUFBSSxTQUFTO1lBQUUsT0FBTztRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDZCxJQUFJLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbkMsT0FBTztTQUNSO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUM3QixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ1gsa0JBQWtCO1lBQ2xCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDdkM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbEIsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ3hCLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksR0FBRyxRQUFRLENBQUM7WUFDckIsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUM7U0FDekI7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDO1lBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1NBQzdCO0lBQ0gsQ0FBQztJQUNELFlBQVk7UUFDVixJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLG9DQUFvQyxDQUFDLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBSUQsdUJBQXVCLENBQUMsSUFBSSxFQUFFLElBQUk7UUFDaEMsSUFBSSxJQUFJLElBQUksU0FBUyxJQUFJLElBQUksSUFBSSxFQUFFLEVBQUU7WUFFbkMsSUFBSSxDQUFDLEdBQUcsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQ3BCLEtBQUssR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUMsRUFDM0IsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQ3RCLElBQUksR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDekIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFNUIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsS0FBSyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7WUFDMUMsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUM7Z0JBQUUsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUM7WUFFcEMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUUzQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQztTQUM5QjtJQUNILENBQUM7SUFLRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRztZQUNyQixFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRTtZQUN4QixFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRTtTQUM3QixDQUFDO1FBQ0YsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7UUFDdEQsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUvQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixTQUFTLEVBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUM7WUFDNUIsY0FBYyxFQUFFLGtCQUFrQjtZQUNsQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztZQUM3QixNQUFNLEVBQUUsSUFBSTtTQUNiLENBQUM7UUFDRixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDN0QsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksVUFBVSxHQUFHLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzdELElBQUksWUFBWSxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlELElBQUksVUFBVSxJQUFJLEVBQUUsRUFBRTtZQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztZQUN0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFlBQVksQ0FBQztTQUN2QztRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQWMsRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBRXBCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQ2pDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQzNDLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLG9CQUFvQixFQUFFO2dCQUM3QyxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDMUIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxjQUFjLENBQUMsQ0FBQzthQUMxRDtpQkFBTSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxvQkFBb0IsRUFBRTtnQkFDcEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQ25DLElBQUksR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUM7YUFDbEQ7aUJBQU0sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksaUJBQWlCLEVBQUU7Z0JBQ2pELElBQUksQ0FBQyxTQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUNuQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFDO2FBQ2xEO2lCQUFNLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLHVCQUF1QixFQUFFO2dCQUN2RCxJQUFJLENBQUMsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztnQkFDbkMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsQ0FBQzthQUN0RDtpQkFDSTtnQkFDSCxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDWjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVksQ0FBQyxLQUFvQixFQUFFLEtBQUs7UUFDdEMsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRTtZQUMzRCxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssT0FBTyxFQUFFO2dCQUMxQixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDeEI7U0FDRjtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsS0FBWSxFQUFDLEtBQUs7UUFDL0IsSUFBRyxLQUFLLENBQUMsVUFBVSxLQUFLLEtBQUssRUFBRTtZQUM3QixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztZQUMvQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBRTFCLG9DQUFvQztZQUNwQyxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7Z0JBRXhCLGlDQUFpQztnQkFDakMsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDM0MsS0FBSyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDO2FBQ25DO2lCQUFNO2dCQUNOLE9BQU07YUFDTjtTQUNGO2FBQ0k7WUFDSCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQztZQUMvQyxLQUFLLENBQUMsYUFBYSxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUM7U0FDbkM7SUFFSCxDQUFDO0lBQ0QsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLEtBQUs7UUFDNUIsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLEtBQUssRUFBRTtZQUM3QixJQUFHLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGFBQWEsSUFBSSxFQUFFLEVBQUU7Z0JBQ25ELElBQUksTUFBTSxHQUFFLEVBQUUsQ0FBQTtnQkFDZCxNQUFNLENBQUMsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQTtnQkFDdkMsSUFBRyxJQUFJLENBQUMsT0FBTyxJQUFLLE1BQU0sRUFBRTtvQkFDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUE7aUJBQzVCO3FCQUNJO29CQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUE7aUJBQ3RCO2dCQUNELElBQUksT0FBTyxHQUFHO29CQUNaLE1BQU0sRUFBRSxjQUFjO2lCQUN2QixDQUFBO2dCQUNELElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxPQUFPLEVBQUUscUJBQXFCLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFhLEVBQUUsRUFBRTtvQkFDMUUsSUFBRyxRQUFRLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRTt3QkFDL0IsSUFBRyxRQUFRLENBQUMsT0FBTyxJQUFJLFNBQVMsRUFBRTt5QkFDakM7NkJBQ0k7NEJBQ0gsS0FBSyxDQUFDLGFBQWEsR0FBRyxFQUFFLENBQUM7NEJBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQzt5QkFDckM7cUJBQ0Y7eUJBQ0k7d0JBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3FCQUNyQztnQkFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFRLEVBQUUsRUFBRTtvQkFDcEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNqQyxDQUFDLENBQUMsQ0FBQzthQUNKO1NBRUY7SUFDSCxDQUFDOztnSUFoMkZVLGdCQUFnQjtvSEFBaEIsZ0JBQWdCLDRrQkFNaEIsaUJBQWlCLGdEQ3pCOUIsKy90RUFxc0NROzJGRGxyQ0ssZ0JBQWdCO2tCQUw1QixTQUFTOytCQUNFLGFBQWE7Z1VBS0EsUUFBUTtzQkFBOUIsU0FBUzt1QkFBQyxVQUFVO2dCQUNZLGtCQUFrQjtzQkFBbEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ00sc0JBQXNCO3NCQUExRCxTQUFTO3VCQUFDLHdCQUF3QjtnQkFDUixZQUFZO3NCQUF0QyxTQUFTO3VCQUFDLGNBQWM7Z0JBQ0osS0FBSztzQkFBekIsU0FBUzt1QkFBQyxRQUFRO2dCQUNXLGlCQUFpQjtzQkFBOUMsU0FBUzt1QkFBQyxpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgVmlld0NoaWxkLCBFbGVtZW50UmVmIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cEhlYWRlcnMgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSwgUGFyYW1zIH0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IFRvYXN0clNlcnZpY2UgIH0gZnJvbSBcIm5neC10b2FzdHJcIjtcclxuaW1wb3J0IHsgQ29va2llIH0gZnJvbSBcIm5nMi1jb29raWVzL25nMi1jb29raWVzXCI7XHJcbmltcG9ydCB7IE5neFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSBcIm5neC1zcGlubmVyXCI7XHJcbmltcG9ydCB7IFN5c3RlbVNlcnZpY2VTZXJ2aWNlIH0gZnJvbSBcIi4uL3N5c3RlbS1zZXJ2aWNlL3N5c3RlbS1zZXJ2aWNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgVXBsb2FkRmlsZVNlcnZpY2UgfSBmcm9tIFwiLi4vc3lzdGVtLXNlcnZpY2UvdXBsb2FkLWZpbGUuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBDb250YWN0U2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29udGFjdC1zZXJ2aWNlL2NvbnRhY3Qtc2VydmljZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFNvcnRhYmxlQ29tcG9uZW50IH0gZnJvbSBcIm5neC1ib290c3RyYXAvc29ydGFibGVcIjtcclxuaW1wb3J0IHsgQ29tbWFuU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29tbWFuLXNlcnZpY2UvY29tbWFuLXNlcnZpY2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBTM0NsaWVudCwgUHV0T2JqZWN0Q29tbWFuZCwgR2V0T2JqZWN0Q29tbWFuZCwgRGVsZXRlT2JqZWN0Q29tbWFuZCB9IGZyb20gXCJAYXdzLXNkay9jbGllbnQtczNcIjtcclxuaW1wb3J0IHsgZ2V0U2lnbmVkVXJsIH0gZnJvbSBcIkBhd3Mtc2RrL3MzLXJlcXVlc3QtcHJlc2lnbmVyXCI7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImFwcC1zdWJmb3JtXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9zdWJmb3JtLmNvbXBvbmVudC5odG1sXCIsXHJcbiAgc3R5bGVVcmxzOiBbXCIuL3N1YmZvcm0uY29tcG9uZW50LmNzc1wiXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU3ViZm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZChcImNsb3NlYnRuXCIpIGNsb3NlYnRuOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJmaWxlT3B0TWFwTURjbHNidG5cIikgZmlsZU9wdE1hcE1EY2xzYnRuOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoXCJwcm9kdWN0RGV0YWlsTWFwY2xzYnRuXCIpIHByb2R1Y3REZXRhaWxNYXBjbHNidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImRlbGV0ZWNsc2J0blwiKSBkZWxldGVjbHNidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImlucHV0c1wiKSBpbnB1dDogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFNvcnRhYmxlQ29tcG9uZW50KSBzb3J0YWJsZUNvbXBvbmVudDogU29ydGFibGVDb21wb25lbnQ7XHJcblxyXG4gIC8vI3JlZ2lvbiB2YXJzIGFuZCBvYmogZGVjbGFyYXRpb24gc2VjdGlvblxyXG4gIGNEdCA9IG5ldyBEYXRlKCk7XHJcblxyXG4gIGZvcm1GaWxkcyA9IFtdO1xyXG4gIGRhdGFsaXN0ID0gW107XHJcbiAgYWN0aW9ucyA9IFtdO1xyXG4gIGxvdnMgPSBbXTtcclxuICBhZGROZXc6IGFueSA9IFtdO1xyXG4gIHRibEggPSBbXTtcclxuICB0YmxEZXNjID0gW107XHJcbiAgbmF2aWdhdGlvbiA9IFtdO1xyXG4gIGNMaW5rID0gMDtcclxuICBnbGJPYmogPSB7fTtcclxuXHJcbiAgc2hvd2FycjtcclxuICBwYWdlSW5mbztcclxuICBoZWFkZXI7XHJcbiAgYnRuTmFtZTtcclxuICBwaWQ7XHJcbiAgc2VhcmNoRjtcclxuICB3aHJLO1xyXG4gIHdoclY7XHJcbiAgc3ViRnJtV2s7XHJcbiAgc3ViRnJtV3Y7XHJcbiAgbmF2Zm9ybTtcclxuICBvbkVycjtcclxuICBob3ZlcmVkSTtcclxuICB0YkNlbGw7XHJcbiAgdGl0bGU7XHJcbiAgcGtmO1xyXG4gIGN1cmw7XHJcbiAgdWlHcnBMaXN0O1xyXG4gIHVpR3JwTGlzdER0bDtcclxuICBhdHRyQ0xpc3REdGwgPSBbXTtcclxuICBhdHRyUUxpc3REdGwgPSBbXTtcclxuXHJcbiAgZGZ2O1xyXG4gIGNpO1xyXG4gIGRpc2FibGVzZWxjID0gZmFsc2U7XHJcblxyXG4gIGRhdGFEdGxpc3QgPSBbXTtcclxuICBkYXRhRHRsID0gW107XHJcbiAgaXRlbVN0cmluZ3NMZWZ0OiBhbnkgPSBbXTtcclxuXHJcbiAgYWRkRnJtTm1lO1xyXG4gIGRvY3VtZW50VXBsb2FkTGlzdDtcclxuICBkb2N1bWVudFVwbG9hZER0bDtcclxuICBzZWxlY3RlZEZpbGVzO1xyXG4gIGFwcGxpY2F0aW9uTGlzdCA9IFtdO1xyXG4gIHVzZXJEdGxzID0gW107XHJcbiAgbW9kdWxlRHRscyA9IFtdO1xyXG4gIG1lbnVMaXN0ID0gW107XHJcbiAgdXNlclJpZ2h0c01lbnVMaXN0ID0gW107XHJcbiAgdG90TWVudTtcclxuICBzdWJNZW51SWRucyA9IFtdO1xyXG4gIHdoZXJlTWFwID0ge307XHJcbiAgcGFyYU9iaiA9IHt9O1xyXG4gIGN1cnJPYmogPSB7fTtcclxuICBzcWxBcnJheSA9IHt9O1xyXG4gIHMzZGV0YWlscyA9IHt9O1xyXG5cclxuICBkb2N0eXBlO1xyXG4gIHBrID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJrXCIpO1xyXG4gIHB2ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpO1xyXG5cclxuICBHRk9MREVSID0gXCJlemJpei8yMDUvZG9jL1wiO1xyXG4gIEdCVUNLRVQgPSBcInFzXCI7XHJcbiAgZmlsZVVwbG9hZHMgPSBbXTtcclxuICBuYW1lQXR0ciA9IFtdO1xyXG5cclxuICBmaWxlO1xyXG5cclxuICByZXNGaWxlcztcclxuICBpbWFnZVVybExzdCA9IFtdO1xyXG4gIHAgPSAxO1xyXG4gIHBhZ2VTaXplID0gMTA7XHJcbiAgb3JkZXIgPSBcIlwiO1xyXG4gIGV2ZUMgPSBcImZhLWV5ZS1zbGFzaFwiO1xyXG4gIGVzdHN0ID0gZmFsc2U7XHJcbiAgaW5wdXR0eXBlID0gXCJwYXNzd29yZFwiO1xyXG5cclxuICByZXZlcnNlID0gdHJ1ZTtcclxuICBzdWJmb3JtID0gZmFsc2U7XHJcbiAgdXNyaXNFeGlzdCA9IGZhbHNlO1xyXG4gIGljbztcclxuXHJcbiAgZGlzcGxheV9ncm91cCA9IFtdO1xyXG4gIGRpc3BsYXlfcm93ID0gW107XHJcbiAgZGlzcGxheV9hdHRyID0gW107XHJcbiAgY29sVmFscyA9IFtdO1xyXG5cclxuICB0ZXJtc0xpc3QgPSBbXTtcclxuICBhcHBsVXNlckxpc3QgPSBbXTtcclxuICByb3V0aGVyRG9jXHJcbiAgZGF0YVRybnNMaXN0ID0gW107XHJcbiAgYnlyT2JqID0ge307XHJcbiAgdXNlckRldGFpbHMgPSBbXTtcclxuICBwYWdlRGVmaW5hdGlvblBzd2RDbmc7XHJcbiAgcGFnZV90eXA7XHJcbiAgYXR0ckR0bDtcclxuICBhdHRyTWFwcGluZ0R0bDtcclxuICBhdHRyX2R0bF9pZG47XHJcbiAgb3V0TWFwcGluZ0xpc3QgPSBbXTtcclxuICBhdHRyTGlzdCA9IFtdO1xyXG4gIGNvbnRhY3ROYW1lO1xyXG4gIHByb2R1Y0RldGFpbE1vZGVsVGl0bGU7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgdG9hc3RyOiBUb2FzdHJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzczogU3lzdGVtU2VydmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHVwbG9hZFNlcnZpY2U6IFVwbG9hZEZpbGVTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBzcGlubmVyU2VydmljZTogTmd4U3Bpbm5lclNlcnZpY2UgLFxyXG4gICAgcHVibGljIGNzOiBDb250YWN0U2VydmljZVNlcnZpY2UsXHJcbiAgICBwdWJsaWMgY206IENvbW1hblNlcnZpY2VTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgZ2V0UGFnZURlZmluYXRpb24oKSB7XHJcbiAgICB0aGlzLnJvdXRoZXJEb2MgPSBcIlwiO1xyXG4gICAgdGhpcy5kYXRhbGlzdCA9IFtdO1xyXG4gICAgdGhpcy53aGVyZU1hcCA9IFtdO1xyXG4gICAgbGV0IGZybW5tZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zW1wiaXRtZm9ybVwiXSB8fCBcIlwiO1xyXG4gICAgbGV0IGRvY3R5cCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zW1wiZG9jdHlwXCJdIHx8IFwiXCI7XHJcbiAgICAgXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGlmICh0aGlzLnBrICE9IG51bGwgJiYgdGhpcy5zdWJGcm1XayAhPSBudWxsKSB7XHJcbiAgICAgIC8vc3ViRnJtV2sgPT0gbmF2aWdhdGlvbiBwYW5lbCdzIG1lbnVcclxuICAgICAgaWYgKHRoaXMuc3ViRnJtV3YgIT0gXCJBTExcIikge1xyXG4gICAgICAgIHRoaXMucGFyYU9ialtcIndoZXJlS2V5c1wiXSA9IHRoaXMucGsgKyBcIn5cIiArIHRoaXMuc3ViRnJtV2s7XHJcbiAgICAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVWbHVzXCJdID0gXCJcIiArIHRoaXMucHYgKyBcIn5cIiArIHRoaXMuc3ViRnJtV3Y7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5waztcclxuICAgICAgICB0aGlzLnBhcmFPYmpbXCJ3aGVyZVZsdXNcIl0gPSBcIlwiICsgdGhpcy5wdjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLndoZXJlTWFwW3RoaXMuc3ViRnJtV2tdID0gdGhpcy5zdWJGcm1XdjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFyYU9ialtcIndoZXJlS2V5c1wiXSA9IHRoaXMucGs7XHJcbiAgICAgIHRoaXMucGFyYU9ialtcIndoZXJlVmx1c1wiXSA9IFwiXCIgKyB0aGlzLnB2O1xyXG4gICAgICB0aGlzLndoZXJlTWFwW3RoaXMucGtdID0gdGhpcy5wdjtcclxuICAgIH1cclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkTGlzdFwiO1xyXG4gICAgLy8gaWYgKHRoaXMucGFnZUluZm8gIT0gbnVsbCkge1xyXG4gICAgLy8gICB0aGlzLnBhZ2VfdHlwPXRoaXMucGFnZUluZm8ucGFnZV90eXA7XHJcbiAgICAvLyAgIHZhciBwYWdlVFAgPSB0aGlzLnBhZ2VJbmZvLnBhZ2VfdHlwO1xyXG4gICAgLy8gICBpZiAocGFnZVRQID09IFwianNvbkZvcm1cIikge1xyXG4gICAgLy8gICAgIHRoaXMucGFyYU9ialtcIndoZXJlS2V5c1wiXSA9IHRoaXMucGFnZUluZm8ud2hlcmVfY2xhdXNlO1xyXG4gICAgLy8gICAgIHRoaXMucGFyYU9ialtcIndoZXJlVmx1c1wiXSA9IHRoaXMud2hlcmVNYXBbdGhpcy5wYWdlSW5mby53aGVyZV9jbGF1c2VdO1xyXG4gICAgLy8gICB9XHJcbiAgICAvLyB9XHJcbiAgICBcclxuICAgIFxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldERhdGEodGhpcy5wYXJhT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgICBcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRibEggPSByZXNwb25zZS5kYXRhSGVhZGVyO1xyXG4gICAgICAgICAgdGhpcy50YmxEZXNjID0gcmVzcG9uc2UuZGF0YUhlYWRlclByaW50O1xyXG4gICAgICAgICAgdGhpcy5hZGROZXcgPSByZXNwb25zZS5idXR0b25zWzBdO1xyXG4gICAgICAgICAgdGhpcy5wYWdlSW5mbyA9IHJlc3BvbnNlLnBhZ2VJbmZvO1xyXG4gICAgICAgICAgdGhpcy5wa2YgPSByZXNwb25zZS5wYWdlSW5mby5wcmltYXJ5X2tleV9maWVsZDtcclxuICAgICAgICAgIHRoaXMuZGF0YWxpc3QgPSByZXNwb25zZS5kYXRhTGlzdDtcclxuICAgICAgICAgIHRoaXMuYWN0aW9ucyA9IHJlc3BvbnNlLmFjdGlvbnM7XHJcbiAgICAgICAgICB0aGlzLm5hdmlnYXRpb24gPSByZXNwb25zZS5uYXZpZ2F0aW9uO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLnBhcmFPYmpbXCJ3aGVyZUtleXNcIl0gPT0gXCJubWVfaWRuXCIgfHwgdGhpcy5wYXJhT2JqW1wid2hlcmVLZXlzXCJdID09IFwibGVkZ2VyX2lkblwiKSB7XHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAodGhpcy5wYXJhT2JqW1wiZm9ybU5tZVwiXSA9PSBcIm5hbWVNYXN0ZXJcIiB8fCB0aGlzLnBhcmFPYmpbXCJmb3JtTm1lXCJdID09IFwibGVkZ2VyTWFzdGVyXCIgfHwgdGhpcy5wYXJhT2JqW1wiZm9ybU5tZVwiXSA9PSBcImFjY05hbWVNYXN0ZXJcIikgJiZcclxuICAgICAgICAgICAgICB0aGlzLmRhdGFsaXN0Lmxlbmd0aCA9PSAxXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGxldCBkdER0bCA9IHRoaXMuZGF0YWxpc3RbMF07XHJcbiAgICAgICAgICAgICAgbGV0IG5tZSA9IGR0RHRsW1wibm1lXCJdIHx8IFwiXCI7XHJcbiAgICAgICAgICAgICAgbGV0IHBubWUgPSBkdER0bFtcInBlcnNvbl9ubWVcIl0gfHwgXCJcIjtcclxuICAgICAgICAgICAgICBpZiAobm1lICE9IFwiXCIgfHwgcG5tZSAhPSBcIlwiKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhY3ROYW1lID0gbm1lICsgXCIvXCIgKyBwbm1lO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jb250YWN0TmFtZSA9IHRoaXMuY29udGFjdE5hbWUudG9VcHBlckNhc2UoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udGFjdE5hbWUgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGlmIChkb2N0eXAgIT0gJycpIHtcclxuICAgICAgICAgICAgdGhpcy5yb3V0aGVyRG9jID0gZG9jdHlwO1xyXG4gICAgICAgICAgICB0aGlzLm5hdmlnYXRpb24uZm9yRWFjaCgoZWxlbWVudCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkID09ICd1cGxvYWREb2N1bWVudCcpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbkZ1bihlbGVtZW50LCBpbmRleCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRSb3dHcm91cChkaXNwbGF5QXR0cklkbikge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZGlzcGxheUF0dHJJZG5cIl0gPSBkaXNwbGF5QXR0cklkbjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJnZXRQYWdlRGlzcGxheUF0dHJcIjtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5nZXRSb3dHcm91cChyZXFPYmosIG9wdGlvbnMsIFwiYWRtaW4vbWVudVJpZ2h0c1wiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMuZGlzcGxheV9ncm91cCA9IHJlc3BvbnNlLnJlc3VsdC5kaXNwbGF5X2dyb3VwO1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5X3JvdyA9IHJlc3BvbnNlLnJlc3VsdC5kaXNwbGF5X3JvdztcclxuICAgICAgICAgIHRoaXMuZGlzcGxheV9hdHRyID0gcmVzcG9uc2UucmVzdWx0LmRpc3BsYXlfYXR0cjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIFNhdmVSb3dHcm91cChkaXNwbGF5QXR0cklkbiwgY29sbmFtZSwgY29sVmFscykge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJkaXNwbGF5QXR0cklkblwiXSA9IGRpc3BsYXlBdHRySWRuO1xyXG4gICAgcmVxT2JqW1wiY29sdW1uTmFtZVwiXSA9IGNvbG5hbWU7XHJcbiAgICByZXFPYmpbXCJjb2x1bW5WYWx1ZVwiXSA9IGNvbFZhbHM7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZVBhZ2VEaXNwbGF5QXR0clwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldFJvd0dyb3VwKHJlcU9iaiwgb3B0aW9ucywgXCJhZG1pbi9tZW51UmlnaHRzXCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5kaXNhYmxlc2VsYyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5jb2xWYWxzID0gW107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgb25DaGFuZ2VEaXNwUm93KGUpIHtcclxuICAgIHRoaXMuZGlzYWJsZXNlbGMgPSB0cnVlO1xyXG4gICAgZm9yICh2YXIga2V5IGluIGUudGFyZ2V0LmZvcm0uZWxlbWVudHMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS5pZCAhPSBcIlwiICYmXHJcbiAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS5pZCAhPSBcInVuZGVmaW5lZFwiXHJcbiAgICAgIClcclxuICAgICAgICBpZiAoZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkLnN0YXJ0c1dpdGgoXCJyb3dfXCIpKSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS52YWx1ZSAhPSBcIlwiICYmXHJcbiAgICAgICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS52YWx1ZSAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlICE9IFwidW5kZWZpbmVkXCJcclxuICAgICAgICAgIClcclxuICAgICAgICAgICAgdGhpcy5jb2xWYWxzLnB1c2goZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLlNhdmVSb3dHcm91cCh0aGlzLnBpZCwgXCJkaXNwbGF5X3Jvd1wiLCB0aGlzLmNvbFZhbHMpO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VEaXNwR3JwKGUpIHtcclxuICAgIHRoaXMuZGlzYWJsZXNlbGMgPSB0cnVlO1xyXG4gICAgZm9yICh2YXIga2V5IGluIGUudGFyZ2V0LmZvcm0uZWxlbWVudHMpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS5pZCAhPSBcIlwiICYmXHJcbiAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS5pZCAhPSBcInVuZGVmaW5lZFwiXHJcbiAgICAgIClcclxuICAgICAgICBpZiAoZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkLnN0YXJ0c1dpdGgoXCJncnBfXCIpKSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS52YWx1ZSAhPSBcIlwiICYmXHJcbiAgICAgICAgICAgIGUudGFyZ2V0LmZvcm0uZWxlbWVudHNba2V5XS52YWx1ZSAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlICE9IFwidW5kZWZpbmVkXCJcclxuICAgICAgICAgIClcclxuICAgICAgICAgICAgdGhpcy5jb2xWYWxzLnB1c2goZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLlNhdmVSb3dHcm91cCh0aGlzLnBpZCwgXCJkaXNwbGF5X2dyb3VwXCIsIHRoaXMuY29sVmFscyk7XHJcbiAgfVxyXG4gIGdldEZvcm1GaWVsZHMoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIHRoaXMuZGZ2ID0gbnVsbDtcclxuICAgIHRoaXMucGFyYU9ialtcIndoZXJlS2V5c1wiXSA9IHRoaXMucGs7XHJcbiAgICB0aGlzLnBhcmFPYmpbXCJ3aGVyZVZsdXNcIl0gPSB0aGlzLnB2O1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRBZGRFZGl0XCI7XHJcbiAgICBcclxuICAgIFxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldEZvcm1GKHRoaXMucGFyYU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiICYmIHJlc3BvbnNlLm1lc3NhZ2UgIT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMuZm9ybUZpbGRzID0gcmVzcG9uc2UuZm9ybUZpZWxkcztcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtRmlsZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZF90eXAgPT0gXCJ0YlwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRMb3ZMaXN0KGVsZW1lbnQuZm9ybV9maWVsZCwgZWxlbWVudC5wYWdlX2l0ZW1faWRuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcInNcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TG92TGlzdChlbGVtZW50LmZvcm1fZmllbGQsIGVsZW1lbnQucGFnZV9pdGVtX2lkbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZF90eXAgPT0gXCJoZFwiKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5kZWZhdWx0X3ZhbHVlID0gdGhpcy53aGVyZU1hcFtlbGVtZW50LmZvcm1fZmllbGRdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwiZmtcIikge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcImNrXCIpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LmRlZmF1bHRfdmFsdWUgPSB0aGlzLndoZXJlTWFwW2VsZW1lbnQuY29sdW1uX2tleV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZF90eXAgPT0gXCJzcVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRTZXF1ZW5jZShlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kdGFfdHlwID09IFwic2FcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TG92TGlzdChlbGVtZW50LmZvcm1fZmllbGQsIGVsZW1lbnQucGFnZV9pdGVtX2lkbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZHRhX3R5cCA9PSBcInNyXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldExvdkxpc3QoZWxlbWVudC5mb3JtX2ZpZWxkLCBlbGVtZW50LnBhZ2VfaXRlbV9pZG4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdXNlckFjdGlvbih1YSwgYywgYSwgaSkge1xyXG4gICAgIFxyXG4gICAgaWYgKGMudHJpbSgpID09IFwiYWRkXCIpIHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICAgIHRoaXMuZm9ybUZpbGRzID0gW107XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZGF0YW1kYnRuXCIpLmNsaWNrKCk7XHJcbiAgICAgIHRoaXMuZ2V0Rm9ybUZpZWxkcygpO1xyXG4gICAgICB0aGlzLmJ0bk5hbWUgPSBcIkFkZFwiO1xyXG4gICAgfSBlbHNlIGlmICh1YSAmJiBjLnRyaW0oKSA9PSBcImVkaXRcIikge1xyXG4gICAgICB0aGlzLmdsYk9iaiA9IHVhO1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgICAgdGhpcy5mb3JtRmlsZHMgPSBbXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkYXRhbWRidG5cIikuY2xpY2soKTtcclxuICAgICAgdGhpcy5waWQgPSB1YVt0aGlzLnBrZl07XHJcbiAgICAgIHRoaXMuZ2V0RWRpdERhdGEodWEpO1xyXG4gICAgICB0aGlzLmJ0bk5hbWUgPSBcIkVkaXRcIjtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHVhICYmXHJcbiAgICAgIGMudHJpbSgpID09IFwiYWRkSXRlbVwiICYmXHJcbiAgICAgIGEuZm9ybV9maWVsZF90aXRsZSAhPSBcIkFkZCBNYXBwaW5nXCJcclxuICAgICkge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgICAgdGhpcy5mb3JtRmlsZHMgPSBbXTtcclxuICAgICAgdGhpcy5jdXJsID0gYS5sb3ZfcXJ5O1xyXG4gICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbYS5sb3ZfcXJ5LCB0aGlzLnBrZiwgdWFbdGhpcy5wa2ZdXSk7XHJcbiAgICB9IGVsc2UgaWYgKHVhICYmIGMudHJpbSgpID09IFwiZGVsZXRldGVybXNcIikge1xyXG5cclxuICAgICAgdGhpcy5jaSA9IGk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZGVsZXRlVGVybXNcIikuY2xpY2soKTtcclxuICAgICAgdGhpcy5waWQgPSB1YVt0aGlzLnBrZl07XHJcbiAgICB9IGVsc2UgaWYgKHVhICYmIGMudHJpbSgpID09IFwiZGVsZXRlXCIpIHtcclxuXHJcbiAgICAgIHRoaXMuY2kgPSBpO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRlbGV0ZWJ0blwiKS5jbGljaygpO1xyXG4gICAgICB0aGlzLnBpZCA9IHVhW3RoaXMucGtmXTtcclxuICAgIH0gZWxzZSBpZiAodWEgJiYgYy50cmltKCkgPT0gXCJkZWZpbmF0aW9uXCIpIHtcclxuICAgICAgdGhpcy5jaSA9IGk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicm93R3JwYnRuXCIpLmNsaWNrKCk7XHJcbiAgICAgIHRoaXMucGlkID0gdWFbdGhpcy5wa2ZdO1xyXG4gICAgICB0aGlzLmdldFJvd0dyb3VwKHRoaXMucGlkKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHVhICYmXHJcbiAgICAgIGMudHJpbSgpID09IFwiYWRkSXRlbVwiICYmXHJcbiAgICAgIGEuZm9ybV9maWVsZF90aXRsZSA9PSBcIkFkZCBNYXBwaW5nXCJcclxuICAgICkge1xyXG4gICAgICB0aGlzLnByb2R1Y0RldGFpbE1vZGVsVGl0bGUgPSB1YS5kaXNwbGF5O1xyXG4gICAgICB0aGlzLmxvYWRQcm9kdWN0RGV0YWlsTWFwcGluZyh1YVtcImF0dHJfZF9pZG5cIl0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFByb2R1Y3REZXRhaWxNYXBwaW5nKGF0dHJEdGFpbElkbikge1xyXG4gICAgdGhpcy5hdHRyX2R0bF9pZG4gPSBhdHRyRHRhaWxJZG47XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCBvYmogPSB7fTtcclxuICAgIG9ialtcImZvcm1ObWVcIl0gPSBcImZpbGVVcGxvYWRcIjtcclxuICAgIG9ialtcImF0dHJfZHRsX2lkblwiXSA9IGF0dHJEdGFpbElkbjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkUHJkTWFzdGVyTWFwcGluZ1wiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLlNhdmUob2JqLCBvcHRpb25zLCBcImZpbGVVcGxvYWQvbG9hZFwiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuYXR0ckR0bCA9IHJlc3VsdC5hdHRyRHRsO1xyXG4gICAgICAgICAgdGhpcy5hdHRyTWFwcGluZ0R0bCA9IHJlc3VsdC5hdHRyTWFwcGluZ0R0bDtcclxuICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiYnRucHJvZHVjdERldGFpbE1hcE1EXCIpLmNsaWNrKCk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZVByb2R1Y3REZXRhaWxNYXBwaW5nKCkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgb2JqID0ge307XHJcbiAgICBvYmpbXCJmb3JtTm1lXCJdID0gXCJmaWxlVXBsb2FkXCI7XHJcbiAgICBvYmpbXCJhdHRyX2R0bF9pZG5cIl0gPSB0aGlzLmF0dHJfZHRsX2lkbjtcclxuICAgIG9ialtcImF0dHJEdGxNYXBcIl0gPSB0aGlzLmF0dHJNYXBwaW5nRHRsO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInVwZGF0ZVByb2R1Y3RBdHRyXCI7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5TYXZlKG9iaiwgb3B0aW9ucywgXCJmaWxlVXBsb2FkL2xvYWRcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMucHJvZHVjdERldGFpbE1hcGNsc2J0bi5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG5hdmlnYXRpb25GdW4obmF2LCBpKSB7XHJcbiAgICAgXHJcbiAgICB0aGlzLmNMaW5rID0gaTtcclxuICAgIHRoaXMuc3ViRnJtV2sgPSBuYXYuY29sdW1uX2tleS50cmltKCkgfHwgJyc7XHJcbiAgICB0aGlzLnN1YkZybVd2ID0gbmF2LmZvcm1fZmllbGQudHJpbSgpIHx8ICcnO1xyXG4gICAgaWYgKHRoaXMuc3ViRnJtV3YgPT0gXCIwXCIpXHJcbiAgICAgIHRoaXMuc3ViRnJtV3YgPSBcIlwiO1xyXG4gICAgdGhpcy5uYXZmb3JtID0gbmF2Lmxvdl9xcnkudHJpbSgpO1xyXG4gICAgaWYgKHRoaXMuc3ViRnJtV3YgPT0gXCJcIikge1xyXG4gICAgICB0aGlzLnN1YkZybVdrID0gbnVsbDtcclxuICAgICAgdGhpcy5zdWJGcm1XdiA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5uYXZmb3JtICE9IFwiXCIpIHtcclxuICAgICAgaWYgKHRoaXMubmF2Zm9ybSA9PSBcImFkZHRpb25hbER0bE1hc3RlclwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgbGV0IG1kbCA9IFsnY29udGFjdCddO1xyXG4gICAgICAgIHRoaXMuZ2V0TmFtZUF0dHIodGhpcy5hZGRGcm1ObWUsIG1kbCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwibGVkZ2VyQWRkdGlvbmFsRHRsTWFzdGVyXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICBsZXQgbWRsID0gWydsZWRnX2F0dHInXTtcclxuICAgICAgICB0aGlzLmdldExlZGdlckF0dHIodGhpcy5hZGRGcm1ObWUsIG1kbCwgJ2F0dHInKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm5hdmZvcm0gPT0gXCJsZWRnZXJBY2NBZGRpdGluYWxEZXRhaWxzXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICBsZXQgbWRsID0gWydsZWRnYWNjX2F0dHInXTtcclxuICAgICAgICB0aGlzLmdldExlZGdlckF0dHIodGhpcy5hZGRGcm1ObWUsIG1kbCwgJ2FjY19hdHRyJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwiYWNjRGVsZXRlUnVsZXNGb3JtXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICBsZXQgbWRsID0gWydkZWxldGVfcnVsZSddO1xyXG4gICAgICAgIHRoaXMuZ2V0TGVkZ2VyQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsLCAnZGVsZXRlX3J1bGUnKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm5hdmZvcm0gPT0gXCJhY2NKb3VybmFsQXR0ckZvcm1cIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2pubGFjY19hdHRyJ107XHJcbiAgICAgICAgdGhpcy5nZXRMZWRnZXJBdHRyKHRoaXMuYWRkRnJtTm1lLCBtZGwsICdqbmxhY2NfYXR0cicpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcImFjY0xvYW5BdHRyRm9ybVwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgbGV0IG1kbCA9IFsnbG9hbiddO1xyXG4gICAgICAgIHRoaXMuZ2V0TGVkZ2VyQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsLCAnbG9hbicpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcImFjY0pvdXJuYWxTZXR0aW5nRm9ybVwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgbGV0IG1kbCA9IFsnam5sX3NldHQnXTtcclxuICAgICAgICB0aGlzLmdldEpvdXJuYWxBdHRyKHRoaXMuYWRkRnJtTm1lLCBtZGwsICdqbmxfc2V0dCcpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcImRvY3VtZW50VXBsb2FkTWFzdGVyXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICB0aGlzLmdldEZpbGVzKHRoaXMucHYpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcIm1lbnVBY2Nlc3NNYXN0ZXJcIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIC8vICB0aGlzLmxvYWRVc3JNZGwodGhpcy5wdik7Ly9cclxuICAgICAgICB0aGlzLmxvYWRBcHBsaWNhdGlvbigpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcIndlYk1lbnVBY2Nlc3NNYXN0ZXJcIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIC8vICB0aGlzLmxvYWRVc3JNZGwodGhpcy5wdik7Ly9cclxuICAgICAgICB0aGlzLmxvYWRXZWJBcHBsaWNhdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcIm1vZHVsZUFjY2Vzc01hc3RlclwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgdGhpcy5sb2FkVXNyTWRsKHRoaXMucHYpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcInRlcm1Vc2VyQXNzaWduRm9ybVwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgdGhpcy5sb2FkQXBwbGljYXRpb25Vc2VyVGVybXModGhpcy5wdik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwic2V0UGFzc3dvcmRGb3JtXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICB0aGlzLmxvYWRVc2VyUGFzc3dvcmQoKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm5hdmZvcm0gPT0gXCJsZWRnZXJCYW5rRGV0YWlsc1wiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgdGhpcy5sb2FkbGVkZ2VyQmFua0RldGFpbHMoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhcmFPYmpbXCJmb3JtTm1lXCJdID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIHRoaXMuZ2V0UGFnZURlZmluYXRpb24oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBleGl0QmFua0R0bExpc3QgPSBbXTtcclxuICBsb2FkbGVkZ2VyQmFua0RldGFpbHMoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2xlZGdlckJhbmtEZXRhaWxzJztcclxuICAgIHJlcU9ialsnbGVkZ2VyX2lkbiddID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3N1YnYnKTtcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2FkbGVkZ2VyQmFua0RldGFpbCc7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2FjY291bnRzL2FjY0xlZGdlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuZXhpdEJhbmtEdGxMaXN0ID0gcmVzdWx0LmJhbmtEdGxMaXN0IHx8IFtdO1xyXG4gICAgICAgIHRoaXMuZWRpdGJhbmtfZHRsX2lkbiA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5icmFuY2ggPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYWNjb3VudG5vID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNlbGVjdEJyYW5jaEFkZHJlc3MgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYmFuayA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5iYW5rTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuYmFua0R0bExpc3QgPSBbXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKVxyXG4gICAgICB9XHJcbiAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuICBiYW5rTGlzdCA9IFtdO1xyXG4gIGJhbmtEdGxMaXN0ID0gW107XHJcbiAgYmFuaztcclxuICBicmFuY2ggPSBcIlwiO1xyXG4gIGFjY291bnRubztcclxuICBhY2NvdW50VHlwZSA9IFwic2F2aW5nc1wiXHJcbiAgbGVkZ2VyQmFua0RldGFpbHMoc3RyKSB7XHJcbiAgICAvLyB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2xlZGdlckJhbmtEZXRhaWxzJztcclxuICAgIHJlcU9ialsnbGlrZVN0ciddID0gc3RyO1xyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ2xvYWRQYXJ0eUJhbmsnO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdhY2NvdW50cy9hY2NMZWRnZXInKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmJhbmtMaXN0ID0gcmVzdWx0LmJhbmtMaXN0Lm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgIHZhbHVlOiBvcHRpb24sXHJcbiAgICAgICAgICBsYWJlbDogb3B0aW9uXHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEJhbmtCcmFuY2goYmFuaykge1xyXG4gICAgdGhpcy5icmFuY2ggPSBcIlwiO1xyXG4gICAgdGhpcy5zZWxlY3RCcmFuY2hBZGRyZXNzID0gXCJcIjtcclxuICAgIHRoaXMuc2VsZWN0SWZzYyA9IFwiXCI7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2xlZGdlckJhbmtEZXRhaWxzJztcclxuICAgIHJlcU9ialsnYmFua05tZSddID0gYmFuaztcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdnZXRQYXJ0eUJhbmtEdGwnO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdhY2NvdW50cy9hY2NMZWRnZXInKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmJhbmtEdGxMaXN0ID0gcmVzdWx0LmJhbmtEdGxMaXN0IHx8IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIHNlbGVjdEJyYW5jaER0bCA9IHt9O1xyXG4gIHNlbGVjdEJyYW5jaEFkZHJlc3MgPSBcIlwiO1xyXG4gIHNlbGVjdElmc2MgPSBcIlwiO1xyXG4gIHNlbGVjdEJyYW5jaChicmFuY2gpIHtcclxuICAgIHRoaXMuc2VsZWN0QnJhbmNoQWRkcmVzcyA9IFwiXCI7XHJcbiAgICB0aGlzLnNlbGVjdEJyYW5jaER0bCA9IHRoaXMuYmFua0R0bExpc3QuZmluZCh4ID0+IHgubm1lX2lkbiA9PSBicmFuY2gpIHx8ICcnO1xyXG4gICAgbGV0IGFkZHJlc3MgPSB0aGlzLnNlbGVjdEJyYW5jaER0bFsnYWRkcmVzcyddIHx8IFtdO1xyXG4gICAgaWYgKGFkZHJlc3MubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgYWRkcmVzc0R0bCA9IGFkZHJlc3NbMF07XHJcbiAgICAgIGxldCBhcmVhID0gYWRkcmVzc0R0bFsnYXJlYSddIHx8IFwiXCI7XHJcbiAgICAgIGlmIChhcmVhID09IFwibnVsbFwiKVxyXG4gICAgICAgIGFyZWEgPSBcIlwiO1xyXG4gICAgICBsZXQgc3RyZWV0ID0gYWRkcmVzc0R0bFsnc3RyZWV0J10gfHwgXCJcIjtcclxuICAgICAgaWYgKHN0cmVldCA9PSBcIm51bGxcIilcclxuICAgICAgICBzdHJlZXQgPSBcIlwiO1xyXG4gICAgICBsZXQgdW5pdF9ubyA9IGFkZHJlc3NEdGxbJ3VuaXRfbm8nXSB8fCBcIlwiO1xyXG4gICAgICBpZiAodW5pdF9ubyA9PSBcIm51bGxcIilcclxuICAgICAgICB1bml0X25vID0gXCJcIjtcclxuICAgICAgbGV0IGJ1aWxkaW5nID0gYWRkcmVzc0R0bFsnYnVpbGRpbmcnXSB8fCBcIlwiO1xyXG4gICAgICBpZiAoYnVpbGRpbmcgPT0gXCJudWxsXCIpXHJcbiAgICAgICAgYnVpbGRpbmcgPSBcIlwiO1xyXG4gICAgICBsZXQgbGFuZG1hcmsgPSBhZGRyZXNzRHRsWydsYW5kbWFyayddIHx8IFwiXCI7XHJcbiAgICAgIGlmIChsYW5kbWFyayA9PSBcIm51bGxcIilcclxuICAgICAgICBsYW5kbWFyayA9IFwiXCI7XHJcbiAgICAgIGxldCB6aXAgPSBhZGRyZXNzRHRsWyd6aXAnXSB8fCBcIlwiO1xyXG4gICAgICBpZiAoemlwID09IFwibnVsbFwiKVxyXG4gICAgICAgIHppcCA9IFwiXCI7XHJcbiAgICAgIGxldCBjaXR5X25tID0gYWRkcmVzc0R0bFsnY2l0eV9ubSddIHx8IFwiXCI7XHJcbiAgICAgIGlmIChjaXR5X25tID09IFwibnVsbFwiKVxyXG4gICAgICAgIGNpdHlfbm0gPSBcIlwiO1xyXG4gICAgICBsZXQgY291bnRyeV9ubSA9IGFkZHJlc3NEdGxbJ2NvdW50cnlfbm0nXSB8fCBcIlwiO1xyXG4gICAgICBpZiAoY291bnRyeV9ubSA9PSBcIm51bGxcIilcclxuICAgICAgICBjb3VudHJ5X25tID0gXCJcIjtcclxuICAgICAgbGV0IHN0YXRlX25tID0gYWRkcmVzc0R0bFsnc3RhdGVfbm0nXSB8fCBcIlwiO1xyXG4gICAgICBpZiAoc3RhdGVfbm0gPT0gXCJudWxsXCIpXHJcbiAgICAgICAgc3RhdGVfbm0gPSBcIlwiO1xyXG4gICAgICB0aGlzLnNlbGVjdElmc2MgPSB0aGlzLnNlbGVjdEJyYW5jaER0bFsnYXR0ciddWydpZnNjJ107XHJcbiAgICAgIHRoaXMuc2VsZWN0QnJhbmNoQWRkcmVzcyA9IHVuaXRfbm8gKyBcIiBcIiArIGJ1aWxkaW5nICsgXCIgXCIgKyBzdHJlZXQgKyBcIiBcIiArIGFyZWEgKyBcIiBcIiArIGxhbmRtYXJrICsgXCIgXCIgKyBjaXR5X25tICsgXCIgXCIgKyBzdGF0ZV9ubSArIFwiIFwiICsgemlwXHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGxvYWRMZWRnZXJCYW5rKCkge1xyXG5cclxuICB9XHJcbiAgZWRpdGJhbmtfZHRsX2lkbiA9IFwiXCI7XHJcbiAgbG9hZEVkaXRCYW5rRHRsKGJhbmtkdGwpIHtcclxuICAgICBcclxuICAgIGxldCBiYW5rTmFtZSA9IGJhbmtkdGwuYmFua25hbWU7XHJcbiAgICB0aGlzLmJhbmtMaXN0ID0gW3tcclxuICAgICAgdmFsdWU6IGJhbmtOYW1lLFxyXG4gICAgICBsYWJlbDogYmFua05hbWVcclxuICAgIH1dO1xyXG4gICAgdGhpcy5iYW5rID0gYmFua05hbWU7XHJcbiAgICB0aGlzLmdldEJhbmtCcmFuY2goYmFua05hbWUpO1xyXG4gICAgdGhpcy5lZGl0YmFua19kdGxfaWRuID0gYmFua2R0bC5iYW5rZHRsSWRuO1xyXG4gICAgdGhpcy5hY2NvdW50VHlwZSA9IGJhbmtkdGwuYWNjb3VudFR5cGU7XHJcbiAgICB0aGlzLmFjY291bnRubyA9IGJhbmtkdGwuYWNjb3VudE5vO1xyXG4gICAgdGhpcy5zZWxlY3RCcmFuY2hBZGRyZXNzID0gYmFua2R0bC5hZGRyZXNzO1xyXG4gICAgdGhpcy5zZWxlY3RJZnNjID0gYmFua2R0bC5pZnNjO1xyXG4gICAgdGhpcy5icmFuY2ggPSBiYW5rZHRsLmJhbmtSZWZJZG47XHJcbiAgfVxyXG4gIFNhdmVMZWRnZXJCYW5rKCkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdsZWRnZXJCYW5rRGV0YWlscyc7XHJcbiAgICByZXFPYmpbJ2xlZGdlcl9pZG4nXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdzdWJ2Jyk7XHJcbiAgICByZXFPYmpbJ2JhbmtfcmVmX2lkbiddID0gdGhpcy5icmFuY2g7XHJcbiAgICByZXFPYmpbJ2FjY291bnRfdHlwZSddID0gdGhpcy5hY2NvdW50VHlwZTtcclxuICAgIHJlcU9ialsnYWNjb3VudF9ubyddID0gdGhpcy5hY2NvdW50bm87XHJcbiAgICBpZiAodGhpcy5lZGl0YmFua19kdGxfaWRuID09ICcnKVxyXG4gICAgICByZXFPYmpbJ2FjdGlvbiddID0gJ2FkZCc7XHJcbiAgICBlbHNlIHtcclxuICAgICAgcmVxT2JqWydhY3Rpb24nXSA9ICdlZGl0JztcclxuICAgICAgcmVxT2JqWydiYW5rX2R0bF9pZG4nXSA9IHRoaXMuZWRpdGJhbmtfZHRsX2lkbjtcclxuICAgIH1cclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdzYXZlQmFua0R0bEludG9BY2NMZWRnZXInO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zcy5zdWJGZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMsICdhY2NvdW50cy9hY2NMZWRnZXInKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmV4aXRCYW5rRHRsTGlzdCA9IHJlc3VsdC5iYW5rRHRsTGlzdCB8fCBbXTtcclxuICAgICAgICB0aGlzLmJyYW5jaCA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5hY2NvdW50bm8gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QnJhbmNoQWRkcmVzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5iYW5rID0gXCJcIjtcclxuICAgICAgICB0aGlzLmJhbmtMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5iYW5rRHRsTGlzdCA9IFtdO1xyXG4gICAgICAgIHRoaXMuZWRpdGJhbmtfZHRsX2lkbiA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZWRpdGJhbmtfZHRsX2lkbiA9PSBcIlwiKVxyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIk5ldyBCYW5rIGFkZCBzdWNjZXNzZnVsbHlcIik7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiQmFuayBlZGl0IHN1Y2Nlc3NmdWx5XCIpO1xyXG4gICAgICAgICAgdGhpcy5lZGl0YmFua19kdGxfaWRuID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGRlbGV0QmFua0lkbiA9IFwiXCI7XHJcbiAgQ29uZmlybURlbGV0ZUxlZGdlckJhbmsoYmFua2R0bCkge1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Jua2RlbGV0ZW1vZGFsYnRuJykuY2xpY2soKTtcclxuICAgIHRoaXMuZGVsZXRCYW5rSWRuID0gYmFua2R0bC5iYW5rZHRsSWRuO1xyXG4gIH1cclxuXHJcbiAgRGVsZXRlTGVkZ2VyQmFuaygpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnbGVkZ2VyQmFua0RldGFpbHMnO1xyXG4gICAgcmVxT2JqWydsZWRnZXJfaWRuJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnc3VidicpO1xyXG4gICAgcmVxT2JqWydhY3Rpb24nXSA9ICdkZWxldGUnO1xyXG4gICAgcmVxT2JqWydiYW5rX2R0bF9pZG4nXSA9IHRoaXMuZGVsZXRCYW5rSWRuO1xyXG5cclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdzYXZlQmFua0R0bEludG9BY2NMZWRnZXInO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zcy5zdWJGZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMsICdhY2NvdW50cy9hY2NMZWRnZXInKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICB0aGlzLmV4aXRCYW5rRHRsTGlzdCA9IHJlc3VsdC5iYW5rRHRsTGlzdCB8fCBbXTtcclxuICAgICAgICB0aGlzLmRlbGV0QmFua0lkbiA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIkJhbmsgRGVsZXRlIHN1Y2Nlc3NmdWxseVwiKTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMZWRnZXJBdHRyKGZvcm1uYW1lLCBtZGwsIHR5cGUpIHtcclxuICAgICBcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBmb3JtbmFtZTtcclxuICAgIHJlcU9ialtcImxlZGdlcl9pZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcbiAgICByZXFPYmpbJ21kbExpc3QnXSA9IG1kbDtcclxuICAgIHJlcU9ialsndHlwZSddID0gdHlwZTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkTGVkZ2VyQXR0clwiO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zcy5zdWJGZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMsIFwiYWNjb3VudHMvYWNjTGVkZ2VyXCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5wYWdlSW5mbyA9IHJlc3BvbnNlLnBhZ2VJbmZvIHx8IHt9O1xyXG4gICAgICAgICAgdGhpcy51aUdycExpc3QgPSByZXNwb25zZS51aUdycExpc3Q7XHJcbiAgICAgICAgICB0aGlzLnVpR3JwTGlzdER0bCA9IHJlc3BvbnNlLnVpR3JwTGlzdER0bDtcclxuICAgICAgICAgIGlmKHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddICYmIEFycmF5LmlzQXJyYXkodGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10pICYmIHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbG93ZXJDYXNlQXJyYXkgPSB0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXS5tYXAoaXRlbSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXSA9IGxvd2VyQ2FzZUFycmF5XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5hdHRyQ0xpc3REdGwgPSByZXNwb25zZS5hdHRyQ0xpc3REdGw7XHJcbiAgICAgICAgICB0aGlzLmF0dHJRTGlzdER0bCA9IHJlc3BvbnNlLmF0dHJRTGlzdER0bDtcclxuXHJcbiAgICAgICAgICB0aGlzLmRhdGFEdGwgPSByZXNwb25zZS5kYXRhRHRsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRKb3VybmFsQXR0cihmb3JtbmFtZSwgbWRsLCB0eXBlKSB7XHJcbiAgICAgXHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gZm9ybW5hbWU7XHJcbiAgICByZXFPYmpbXCJqb3VybmFsX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIHJlcU9ialsnbWRsTGlzdCddID0gbWRsO1xyXG4gICAgcmVxT2JqWyd0eXBlJ10gPSB0eXBlO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRKb3VybmFsQXR0clwiO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zcy5zdWJGZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMsIFwiYWNjb3VudHMvYWNjTGVkZ2VyXCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5wYWdlSW5mbyA9IHJlc3BvbnNlLnBhZ2VJbmZvIHx8IHt9O1xyXG4gICAgICAgICAgdGhpcy51aUdycExpc3QgPSByZXNwb25zZS51aUdycExpc3Q7XHJcbiAgICAgICAgICB0aGlzLnVpR3JwTGlzdER0bCA9IHJlc3BvbnNlLnVpR3JwTGlzdER0bCB8fCB7fTtcclxuICAgICAgICAgIGlmKHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddICYmIEFycmF5LmlzQXJyYXkodGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10pICYmIHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbG93ZXJDYXNlQXJyYXkgPSB0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXS5tYXAoaXRlbSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXSA9IGxvd2VyQ2FzZUFycmF5XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGRhdGF0eXBlbGlzdCA9IHRoaXMudWlHcnBMaXN0RHRsW1wiYmFzaWMjVFwiXSB8fCBbXTtcclxuICAgICAgICAgIGxldCBhdHRybGlzdCA9IHRoaXMudWlHcnBMaXN0RHRsW1wiYmFzaWMjVlwiXSB8fCBbXTtcclxuICAgICAgICAgIHRoaXMuYXR0ckNMaXN0RHRsID0gcmVzcG9uc2UuYXR0ckNMaXN0RHRsO1xyXG4gICAgICAgICAgdGhpcy5hdHRyUUxpc3REdGwgPSByZXNwb25zZS5hdHRyUUxpc3REdGw7XHJcbiAgICAgICAgICB0aGlzLmRhdGFEdGwgPSByZXNwb25zZS5kYXRhRHRsIHx8IHt9O1xyXG4gICAgICAgICAgdGhpcy5jb250YWN0TmFtZSA9IHRoaXMuZGF0YUR0bFtcImNvbnRhY3ROYW1lXCJdIHx8IFwiXCI7XHJcbiAgICAgICAgICBhdHRybGlzdC5mb3JFYWNoKChrZXksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB0eXBlID0gZGF0YXR5cGVsaXN0W2luZGV4XTtcclxuICAgICAgICAgICAgaWYgKHR5cGUgPT0gJ3NhJykge1xyXG4gICAgICAgICAgICAgIGxldCBhdHRyVmFsID0gdGhpcy5kYXRhRHRsW2tleV0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgbGV0IGxpc3QgPSBbeyB2YWx1ZTogYXR0clZhbCwgbGFiZWw6IGF0dHJWYWwgfV07XHJcbiAgICAgICAgICAgICAgdGhpcy5zcWxBcnJheVtrZXldID0gbGlzdDtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGxvYWRVc2VyUGFzc3dvcmQoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcImFwcGxpY2F0aW9uQWNjZXNzTWFzdGVyXCI7XHJcbiAgICByZXFPYmpbXCJubWVJZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZENoYW5nZVBhc3NcIjtcclxuICAgIHRoaXMuaGVhZGVyW1wic291cmNlXCJdID0gXCJxc1wiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLnN1YkZnZXREYXRhKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy51c2VyRGV0YWlscyA9IHJlc3VsdC51c2VyRGV0YWlscztcclxuICAgICAgICAgIHRoaXMucGFnZURlZmluYXRpb25Qc3dkQ25nID0gcmVzdWx0LnBhZ2VEZWZpbmF0aW9uO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQc3dkKGUsIHVzZXJJZG4pIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwic2V0UGFzc3dvcmRGb3JtXCI7XHJcbiAgICByZXFPYmpbXCJ1c2VySWRuXCJdID0gdXNlcklkbjtcclxuICAgIHJlcU9ialtcInBhc3N3b3JkXCJdID0gZS50YXJnZXQudmFsdWU7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiY2hhbmdlUGFzc3dvcmRcIjtcclxuICAgIHRoaXMuaGVhZGVyW1wic291cmNlXCJdID0gXCJxc1wiO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuU2F2ZShyZXFPYmosIG9wdGlvbnMsIFwiY29udGFjdC9sb2FkQ29udGFjdFwiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gcmVzdWx0LnVzZXJEZXRhaWxzO1xyXG4gICAgICAgICAgdGhpcy5wYWdlRGVmaW5hdGlvblBzd2RDbmcgPSByZXN1bHQucGFnZURlZmluYXRpb247XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkVXNlclBhc3N3b3JkKCk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlUGFzc3dvcmQob2JqKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcInNldFBhc3N3b3JkRm9ybVwiO1xyXG4gICAgcmVxT2JqW1widXNlcklkblwiXSA9IG9iai51c2VySWRuO1xyXG4gICAgcmVxT2JqW1wicGFzc3dvcmRcIl0gPSBvYmoucGFzc3dvcmQ7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiY2hhbmdlUGFzc3dvcmRcIjtcclxuICAgIHRoaXMuaGVhZGVyW1wic291cmNlXCJdID0gXCJxc1wiO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuU2F2ZShyZXFPYmosIG9wdGlvbnMsIFwiY29udGFjdC9sb2FkQ29udGFjdFwiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gcmVzdWx0LnVzZXJEZXRhaWxzO1xyXG4gICAgICAgICAgdGhpcy5wYWdlRGVmaW5hdGlvblBzd2RDbmcgPSByZXN1bHQucGFnZURlZmluYXRpb247XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgdGhpcy5sb2FkVXNlclBhc3N3b3JkKCk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIGdibE9iajtcclxuICBleGl0c2luZ1VzZXJMaXN0ID0gW107XHJcbiAgbG9hZEFwcGxpY2F0aW9uVXNlclRlcm1zKG5tZWlkbikge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcIm5tZV9pZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJjb250YWN0U2VhcmNoRm9ybVwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRBc3NpZ25BcHBsaWNhdGlvblVzZXJ0ZXJtc1wiO1xyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5sb2FkKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMuZ2JsT2JqID0gcmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy50ZXJtc0xpc3QgPSByZXN1bHQudGVybXNMaXN0O1xyXG4gICAgICAgICAgbGV0IGFwcGxVc2VyTGlzdCA9IHJlc3VsdC5hcHBsVXNlckxpc3Q7XHJcbiAgICAgICAgICB0aGlzLmV4aXRzaW5nVXNlckxpc3QgPSBbXTtcclxuICAgICAgICAgIHRoaXMudGVybXNMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGxldCB1c2VySWRuTGlzdCA9IGVsZW1lbnQudXNlcklkbkxpc3QgfHwgW107XHJcbiAgICAgICAgICAgIHVzZXJJZG5MaXN0LmZvckVhY2godXNlcklkbiA9PiB7XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuZXhpdHNpbmdVc2VyTGlzdC5pbmRleE9mKHVzZXJJZG4pID09IC0xKVxyXG4gICAgICAgICAgICAgICAgdGhpcy5leGl0c2luZ1VzZXJMaXN0LnB1c2godXNlcklkbik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgcGVuZGluZ1VzZXJMaXN0ID0gW11cclxuICAgICAgICAgIGFwcGxVc2VyTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5leGl0c2luZ1VzZXJMaXN0LmluZGV4T2YoZWxlbWVudC5rKSA9PSAtMSlcclxuICAgICAgICAgICAgICBwZW5kaW5nVXNlckxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMudGVybXNMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGxldCB1c2VySWRuTGlzdCA9IGVsZW1lbnQudXNlcklkbkxpc3QgfHwgW107XHJcbiAgICAgICAgICAgIGxldCBUZXJtVXNlckxpc3QgPSBwZW5kaW5nVXNlckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24uayxcclxuICAgICAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICBpZiAodXNlcklkbkxpc3QubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIGFwcGxVc2VyTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHVzZXJJZG5MaXN0LmluZGV4T2YoZWxlbWVudC5rKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICBUZXJtVXNlckxpc3QucHVzaCh7IFwidmFsdWVcIjogZWxlbWVudC5rLCBcImxhYmVsXCI6IGVsZW1lbnQudiB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsZW1lbnQuVGVybVVzZXJMaXN0ID0gVGVybVVzZXJMaXN0O1xyXG5cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICAvLyAgdGhpcy5hcHBsVXNlckxpc3QgPSByZXN1bHQuYXBwbFVzZXJMaXN0O1xyXG4gICAgICAgICAgLy8gIGxldCB0ZW1wYXJyID0gW107XHJcbiAgICAgICAgICAvL3RoaXMuZXhpdHNpbmdVc2VyPVtdO1xyXG4gICAgICAgICAgLy8gdGhpcy50ZXJtc0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIC8vICBcclxuICAgICAgICAgIC8vIGVsZW1lbnQudXNlcklkbkxpc3QuZm9yRWFjaChhID0+IHtcclxuICAgICAgICAgIC8vICAgdGVtcGFyci5wdXNoKGEudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAvLyAgaWYodGhpcy5leGl0c2luZ1VzZXIuaW5kZXhPZihhLnRvU3RyaW5nKCkpPT0tMSlcclxuICAgICAgICAgIC8vICB0aGlzLmV4aXRzaW5nVXNlci5wdXNoKGEudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIC8vIGVsZW1lbnQudXNlcklkbkxpc3QgPSB0ZW1wYXJyO1xyXG4gICAgICAgICAgLy8gdGVtcGFyciA9IFtdO1xyXG4gICAgICAgICAgLy8gIGVsZW1lbnQuc2VsZWN0ZWRWYWxzID0gW107XHJcbiAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIC8vIGxldCBhcHBsVXNlckxpc3Q9cmVzdWx0LmFwcGxVc2VyTGlzdDtcclxuICAgICAgICAgIC8vIHRoaXMuYXBwbFVzZXJMaXN0PVtdXHJcbiAgICAgICAgICAvLyBhcHBsVXNlckxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIC8vICAgaWYodGhpcy5leGl0c2luZ1VzZXIuaW5kZXhPZihlbGVtZW50LmspPT0tMSlcclxuICAgICAgICAgIC8vICAgdGhpcy5hcHBsVXNlckxpc3QucHVzaChlbGVtZW50KTtcclxuICAgICAgICAgIC8vIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICB0aGlzLmFwcGxVc2VyTGlzdCA9IHRoaXMuYXBwbFVzZXJMaXN0Lm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cclxuICAgICAgICAgIC8vIH0sIDEwMDApO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIHNlbGVjdGVkUGVvcGxlMyA9IFtdO1xyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgbG9hZFN1Z2dkYXRhKHN0ciwgcGFnZV9pdGVtX2lkbiwgZm9ybV9maWVsZCkge1xyXG4gICAgaWYgKHN0ciA9PSB1bmRlZmluZWQgfHwgc3RyID09ICcnIHx8IHN0ci5sZW5ndGggPCAzKSByZXR1cm47XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJmcm1ubWVcIl0gfHwgJ2xvYWRTdWdnZXN0aW9uRGF0YSc7XHJcbiAgICByZXFPYmpbJ3BhZ2VfaXRlbV9pZG4nXSA9IHBhZ2VfaXRlbV9pZG47XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IHN0cjtcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2FkU3VnZ2VzdGlvbkRhdGFCeUl0ZW1JZG4nO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBcclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsIFwiY29udGFjdC9yZWdpc3RlckRhdGFcIikudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBcclxuICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgbGV0IHN1Z2dlc3Rpb25EYXRhID0gcmVzdWx0LnN1Z2dlc3Rpb25EYXRhIHx8IFtdO1xyXG4gICAgICBsZXQgbGlzdCA9IHN1Z2dlc3Rpb25EYXRhLm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgIH0pKTtcclxuICAgICAgdGhpcy5zcWxBcnJheVtmb3JtX2ZpZWxkXSA9IGxpc3Q7XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIGxvYWRKbmxTdWdnZGF0YShzdHIsIGF0dHJfbm1lLCBtZGwpIHtcclxuICAgIGlmIChzdHIgPT0gdW5kZWZpbmVkIHx8IHN0ciA9PSAnJyB8fCBzdHIubGVuZ3RoIDwgMykgcmV0dXJuO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zW1wiZnJtbm1lXCJdIHx8ICdsb2FkU3VnZ2VzdGlvbkRhdGEnO1xyXG4gICAgcmVxT2JqWydhdHRyX25tZSddID0gYXR0cl9ubWU7XHJcbiAgICByZXFPYmpbJ21kbCddID0gbWRsO1xyXG4gICAgcmVxT2JqWydsaWtlU3RyJ10gPSBzdHI7XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9hZFN1Z2dlc3Rpb25EYXRhQnlBdHRyTm1lJztcclxuICAgIFxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIFxyXG4gICAgLy8gXHJcbiAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCBcImFjY291bnRzL2FjY0xlZGdlclwiKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIFxyXG4gICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICBsZXQgc3VnZ2VzdGlvbkRhdGEgPSByZXN1bHQuc3VnZ2VzdGlvbkRhdGEgfHwgW107XHJcbiAgICAgIGxldCBsaXN0ID0gc3VnZ2VzdGlvbkRhdGEubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgIHZhbHVlOiBvcHRpb24udixcclxuICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLnNxbEFycmF5W2F0dHJfbm1lXSA9IGxpc3Q7XHJcbiAgICB9KVxyXG5cclxuICB9XHJcblxyXG4gIG9uY2hhbmVWYWxzKGUsIGJ5cnRybWlkLCBzZWxlY3RlZFVzZXJJZG4pIHtcclxuICAgIHRoaXMuZGF0YVRybnNMaXN0ID0gWy4uLnRoaXMudGVybXNMaXN0XTtcclxuICAgIHRoaXMuYnlyT2JqW1wiYnV5ZXJfdGVybXNfaWRuXCJdID0gYnlydHJtaWQ7XHJcbiAgICBpZiAoc2VsZWN0ZWRVc2VySWRuICE9IHVuZGVmaW5lZClcclxuICAgICAgdGhpcy5ieXJPYmpbXCJ1c2VySWRuTGlzdFwiXSA9IHNlbGVjdGVkVXNlcklkbjtcclxuXHJcbiAgICBsZXQgY2hlY2tCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChieXJ0cm1pZCk7XHJcbiAgICBpZiAoXHJcbiAgICAgIChjaGVja0JveCBhcyBhbnkpLmNoZWNrZWQgPT0gdHJ1ZSAmJlxyXG4gICAgICBzZWxlY3RlZFVzZXJJZG4gIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgIHNlbGVjdGVkVXNlcklkbiAhPSBcIlwiXHJcbiAgICApIHtcclxuICAgICAgdmFyIGluZGV4ID0gdGhpcy5kYXRhVHJuc0xpc3QuZmluZEluZGV4KFxyXG4gICAgICAgIHggPT4geC5idXllcl90ZXJtc19pZG4gPT0gYnlydHJtaWRcclxuICAgICAgKTtcclxuICAgICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgICBjb25zdCBmaWx0ZXJlZEFyciA9IHRoaXMuZGF0YVRybnNMaXN0LmZpbHRlcihcclxuICAgICAgICAgIGl0ZW0gPT4gaXRlbS5idXllcl90ZXJtc19pZG4gIT09IGJ5cnRybWlkXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmRhdGFUcm5zTGlzdCA9IGZpbHRlcmVkQXJyO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIH1cclxuICAgICAgdGhpcy5kYXRhVHJuc0xpc3QucHVzaCh0aGlzLmJ5ck9iaik7XHJcbiAgICAgIHRoaXMuYnlyT2JqID0ge307XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCBmaWx0ZXJlZEFyciA9IHRoaXMuZGF0YVRybnNMaXN0LmZpbHRlcihcclxuICAgICAgICBpdGVtID0+IGl0ZW0uYnV5ZXJfdGVybXNfaWRuICE9PSBieXJ0cm1pZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGFUcm5zTGlzdCA9IGZpbHRlcmVkQXJyO1xyXG4gICAgfVxyXG4gIH1cclxuICBvbmNoYW5nZVVzZXJTZWxlY3QoZSwgdHJtb2JqKSB7XHJcbiAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuICAgIG9iaiA9IHsgLi4udHJtb2JqIH07XHJcblxyXG4gICAgLy8gb2JqLnNlbGVjdGVkVmFscyA9IFsuLi50cm1vYmoudXNlcklkbkxpc3RdO1xyXG4gICAgLy8gaWYgKG9iai5zZWxlY3RlZFZhbHMuaW5kZXhPZihlLnZhbHVlKSAhPSAtMSkge1xyXG4gICAgLy8gICBvYmouc2VsZWN0ZWRWYWxzLnB1c2goZS52YWx1ZSk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgaWYgKG9iai5zZWxlY3RlZFZhbHMuaW5kZXhPZihlLnZhbHVlKSAhPSAtMSkge1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb2JqLnNlbGVjdGVkVmFscy5wdXNoKGUudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgdHJtb2JqID0gb2JqO1xyXG4gICAgXHJcbiAgfVxyXG4gIG9uY2hhbmdlVXNlckRlc2VsZWN0KGUsIHRybW9iaikge1xyXG4gICAgIFxyXG4gICAgbGV0IG9iajogYW55ID0ge307XHJcbiAgICBvYmogPSB7IC4uLnRybW9iaiB9O1xyXG4gICAgb2JqLnNlbGVjdGVkVmFscy5zcGxpY2UodGhpcy50ZXJtc0xpc3QuaW5kZXhPZihlLnZhbHVlKSwgMSk7XHJcbiAgICB0cm1vYmogPSBvYmo7XHJcbiAgICBcclxuICB9XHJcblxyXG4gIG9uY2hhbmdlVXNlckxpc3QoZSwgdHJtb2JqLCB0eXApIHtcclxuXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiYnV5ZXJfdGVybXNfaWRuXCJdID0gdHJtb2JqLmJ1eWVyX3Rlcm1zX2lkbjtcclxuICAgIHJlcU9ialtcInVzZXJfaWRuXCJdID0gZS52YWx1ZTtcclxuICAgIHJlcU9ialsnYWN0aW9uJ10gPSB0eXA7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJjb250YWN0U2VhcmNoRm9ybVwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImFzc2lnblVzZXJUZXJtXCI7XHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jc1xyXG4gICAgICAubG9hZChyZXFPYmosIG9wdGlvbnMsIFwiY29udGFjdC9sb2FkQ29udGFjdFwiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuXHJcbiAgICAgICAgICB0aGlzLmxvYWRBcHBsaWNhdGlvblVzZXJUZXJtcygnJyk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG5cclxuXHJcbiAgfVxyXG4gIHNhdmVBcHBVc2VydGVybXMoKSB7XHJcbiAgICBsZXQgdmFsQXJyID0gW107XHJcbiAgICB0aGlzLnRlcm1zTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICBsZXQgY2hlY2tCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlbGVtZW50LmJ1eWVyX3Rlcm1zX2lkbik7XHJcbiAgICAgIGlmICgoY2hlY2tCb3ggYXMgYW55KS5jaGVja2VkID09IHRydWUpIHtcclxuICAgICAgICBsZXQgb2JqID0ge307XHJcbiAgICAgICAgb2JqW1wiYnV5ZXJfdGVybXNfaWRuXCJdID0gZWxlbWVudC5idXllcl90ZXJtc19pZG47XHJcbiAgICAgICAgb2JqW1widXNlcklkbkxpc3RcIl0gPSBlbGVtZW50LnVzZXJJZG5MaXN0O1xyXG4gICAgICAgIHZhbEFyci5wdXNoKG9iaik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wibm1lX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcImNvbnRhY3RTZWFyY2hGb3JtXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZUFzc2lnbkFwcGxpY2F0aW9uVXNlcnRlcm1zXCI7XHJcbiAgICByZXFPYmpbXCJkYXRhVHJuc0xpc3RcIl0gPSB2YWxBcnI7XHJcblxyXG4gICAgXHJcbiAgICBcclxuXHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuU2F2ZShyZXFPYmosIG9wdGlvbnMsIFwiY29udGFjdC9sb2FkQ29udGFjdFwiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0RGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLmZvcm1GaWxkcyA9IFtdO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgdmFyIHBhZ2VUUCA9IHRoaXMucGFnZUluZm8ucGFnZV90eXA7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gdGhpcy5wYWdlSW5mby5mb3JtX25tZTtcclxuICAgIHJlcU9ialtcInByaW1hcnlLZXlcIl0gPSB0aGlzLnBhZ2VJbmZvLnByaW1hcnlfa2V5X2ZpZWxkO1xyXG4gICAgcmVxT2JqW1wicGFnZVR5cFwiXSA9IHRoaXMucGFnZUluZm8ucGFnZV90eXA7XHJcbiAgICByZXFPYmpbXCJzZWNvbmRLZXlGaWVsZFwiXSA9IHRoaXMucGFnZUluZm8uc2Vjb25kX2tleV9maWVsZDtcclxuICAgIGlmICh0aGlzLnRiQ2VsbCAhPSBudWxsKSB7XHJcbiAgICAgIHJlcU9ialtcImluTGluZUVkaXRDb2x1bW5cIl0gPSB0aGlzLnRiQ2VsbDtcclxuICAgIH1cclxuICAgIHJlcU9ialtcInByaW1hcnlJZFwiXSA9IHRoaXMucGlkO1xyXG4gICAgaWYgKHBhZ2VUUCA9PSBcImpzb25Gb3JtXCIpIHtcclxuICAgICAgcmVxT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5wYWdlSW5mby53aGVyZV9jbGF1c2U7XHJcbiAgICAgIHJlcU9ialtcIndoZXJlVmx1c1wiXSA9IHRoaXMud2hlcmVNYXBbdGhpcy5wYWdlSW5mby53aGVyZV9jbGF1c2VdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZEFkZEVkaXRcIjtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5nZXRFZGl0RChyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIiAmJiByZXNwb25zZS5tZXNzYWdlICE9IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMuZm9ybUZpbGRzID0gcmVzcG9uc2UuZm9ybUZpZWxkcztcclxuICAgICAgICAgIGlmICh0aGlzLnRiQ2VsbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZGF0YW1kYnRuXCIpLmNsaWNrKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZvcm1GaWxkcy5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcInRiXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldExvdkxpc3QoZWxlbWVudC5mb3JtX2ZpZWxkLCBlbGVtZW50LnBhZ2VfaXRlbV9pZG4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwic1wiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRMb3ZMaXN0KGVsZW1lbnQuZm9ybV9maWVsZCwgZWxlbWVudC5wYWdlX2l0ZW1faWRuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcInNiXCIpIHtcclxuXHJcbiAgICAgICAgICAgICAgbGV0IHFyeSA9IGVsZW1lbnQuaGVscCB8fCAnJztcclxuICAgICAgICAgICAgICBpZiAocXJ5ICE9ICcnICYmIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSAhPSBcIlwiKSB7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFnZUluZm8uZm9ybV9ubWUgPT0gJ2FkZHJlc3NNYXN0ZXInIHx8IHRoaXMucGFnZUluZm8uZm9ybV9ubWUgPT0gJ2FjY0FkZHJlc3NNYXN0ZXInIHx8IHRoaXMucGFnZUluZm8uZm9ybV9ubWUgPT0gJ2FjY0FkZHJlc3NEZXRhaWxzJykge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY2l0eSA9IGRhdGEuY2l0eV9ubSB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgbGV0IHN0YXRlID0gZGF0YS5zdGF0ZV9ubSB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgbGV0IGNvdW50cnkgPSBkYXRhLmNvdW50cnlfbm0gfHwgJyc7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChjaXR5ICE9ICcnICYmIGNvdW50cnkgIT0gJycpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgc3RyID0gY2l0eSArIFwiI1wiICsgY291bnRyeTtcclxuICAgICAgICAgICAgICAgICAgICBzdHIgPSBzdHIudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldExvdkNpdHlMaXN0KGVsZW1lbnQsIHN0cik7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHFyeSA9IHFyeS5yZXBsYWNlKFwiI0lETlwiLCBcIidcIiArIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSArIFwiJ1wiKVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmdldExvdkxpc3RkYXRhKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcImhkXCIpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LmRlZmF1bHRfdmFsdWUgPSB0aGlzLndoZXJlTWFwW2VsZW1lbnQuZm9ybV9maWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZF90eXAgPT0gXCJzcVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRTZXF1ZW5jZShlbGVtZW50KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kdGFfdHlwID09IFwic2FcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TG92TGlzdChlbGVtZW50LmZvcm1fZmllbGQsIGVsZW1lbnQucGFnZV9pdGVtX2lkbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZHRhX3R5cCA9PSBcInNyXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldExvdkxpc3QoZWxlbWVudC5mb3JtX2ZpZWxkLCBlbGVtZW50LnBhZ2VfaXRlbV9pZG4pO1xyXG4gICAgICAgICAgICAgIHRoaXMuZGZ2ID0gZWxlbWVudC5kZWZhdWx0X3ZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwiaGNcIikge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSA9IGVsZW1lbnQubG92X3FyeTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvLyBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSAnbCcpIHtcclxuICAgICAgICAgICAgLy8gICBlbGVtZW50Lmt2Lm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgICAgLy8gICAgIHZhbHVlOiBvcHRpb24uayxcclxuICAgICAgICAgICAgLy8gICAgIGxhYmVsOiBvcHRpb24udlxyXG4gICAgICAgICAgICAvLyAgIH0pKTtcclxuICAgICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U2VxdWVuY2UoZWxlbWVudCkge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wic2VxXCJdID0gZWxlbWVudC5sb3ZfcXJ5O1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImdldFNlcVwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldERhdGEocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHZhciBzZXEgPSByZXNwb25zZS5zZXE7XHJcbiAgICAgICAgICBlbGVtZW50LmRlZmF1bHRfdmFsdWUgPSBzZXE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZXF1ZW5jZTEoc2Vxbm1lKSB7XHJcbiAgICB2YXIgc2VxID0gXCJcIjtcclxuICAgICBcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInNlcVwiXSA9IHNlcW5tZTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJnZXRTZXFcIjtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5nZXREYXRhKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICBzZXEgPSByZXNwb25zZS5zZXE7XHJcbiAgICAgICAgICByZXR1cm4gc2VxO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0TG92TGlzdGRhdGEodGJsRikge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wicGFnZV9pdGVtX2lkblwiXSA9IHRibEYucGFnZV9pdGVtX2lkbjtcclxuICAgIHJlcU9ialtcInN0clwiXSA9IHRibEYuZGVmYXVsdF92YWx1ZTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkQ2l0eUNvdW50cnlEYXRhXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5sb3ZzID0gcmVzcG9uc2Uua3YubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICAgIGxhYmVsOiBvcHRpb24udlxyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3FsQXJyYXlbdGJsRi5mb3JtX2ZpZWxkXSA9IHRoaXMubG92cztcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5kZnYgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgICAgICAgaWYgKHRibEYgPT0gXCJhdHRyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5zcWxBcnJheVt0YmxGXS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGZ2LmZvckVhY2goZWxlbWVudDIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudiA9PSBlbGVtZW50Mikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNxbEFycmF5W3RibEZdLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb3ZMaXN0KHRibEYsIHBhZ2VfaXRlbV9pZG4pIHtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInBhZ2VfaXRlbV9pZG5cIl0gPSBwYWdlX2l0ZW1faWRuO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImdldERhdGFCeUl0ZW1JZG5cIjtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5nZXREYXRhKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmxvdnMgPSByZXNwb25zZS5rdi5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24uayxcclxuICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5zcWxBcnJheVt0YmxGXSA9IHRoaXMubG92cztcclxuXHJcbiAgICAgICAgICBpZiAodGhpcy5kZnYgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgICAgICAgaWYgKHRibEYgPT0gXCJhdHRyXCIpIHtcclxuICAgICAgICAgICAgdGhpcy5zcWxBcnJheVt0YmxGXS5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMuZGZ2LmZvckVhY2goZWxlbWVudDIgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQudiA9PSBlbGVtZW50Mikge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNxbEFycmF5W3RibEZdLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb3ZDaXR5TGlzdCh0YmxGLCBzdHIpIHtcclxuICAgICBcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInBhZ2VfaXRlbV9pZG5cIl0gPSB0YmxGLnBhZ2VfaXRlbV9pZG47XHJcbiAgICByZXFPYmpbXCJzdHJcIl0gPSBzdHI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZENpdHlDb3VudHJ5RGF0YVwiO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgIFxyXG5cclxuICAgICAgICAgIHRoaXMubG92cyA9IHJlc3BvbnNlLmt2Lm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICBcclxuXHJcbiAgICAgICAgICB0aGlzLnNxbEFycmF5W3RibEYuZm9ybV9maWVsZF0gPSB0aGlzLmxvdnM7XHJcbiAgICAgICAgICBpZiAodGhpcy5sb3ZzLmxlbmd0aCA+IDEpXHJcbiAgICAgICAgICAgIHRibEYuZGVmYXVsdF92YWx1ZSA9IHRoaXMubG92c1sxXS52YWx1ZTtcclxuXHJcblxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgRGVsZXRlVGVybXMoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLnBhZ2VJbmZvLmZvcm1fbm1lO1xyXG4gICAgcmVxT2JqW1wiYnV5ZXJUZXJtc0lkblwiXSA9IHRoaXMucGlkO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImRlbGV0ZUJ1eWVyVGVybXNcIjtcclxuICAgIFxyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsIFwiY29udGFjdC9sb2FkQ29udGFjdFwiKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICB0aGlzLnBhcmFPYmpbXCJmb3JtTm1lXCJdID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIHRoaXMuZ2V0UGFnZURlZmluYXRpb24oKTtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuXHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlRGF0YUxpc3QoKSB7XHJcbiAgICAgXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLnBhZ2VJbmZvLmZvcm1fbm1lO1xyXG4gICAgcmVxT2JqW1wicGFnZVR5cFwiXSA9IHRoaXMucGFnZUluZm8ucGFnZV90eXA7XHJcbiAgICByZXFPYmpbXCJwcmltYXJ5S2V5XCJdID0gdGhpcy5wYWdlSW5mby5wcmltYXJ5X2tleV9maWVsZDtcclxuICAgIHJlcU9ialtcInByaW1hcnlJZFwiXSA9IHRoaXMucGlkO1xyXG4gICAgcmVxT2JqW1widGFibGVOYW1lXCJdID0gdGhpcy5wYWdlSW5mby50YWJsZV9uYW1lO1xyXG4gICAgcmVxT2JqW1widHJuc1R5cGVcIl0gPSBcIkRFTEVURVwiO1xyXG4gICAgaWYgKHRoaXMucGsgIT0gXCJcIiAmJiB0aGlzLnB2ICE9IFwiXCIpIHtcclxuICAgICAgcmVxT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5waztcclxuICAgICAgcmVxT2JqW1wid2hlcmVWbHVzXCJdID0gXCJcIiArIHRoaXMucHY7XHJcbiAgICB9XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZVwiO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuZGVsZXRlRGF0YShyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5nZXRQYWdlRGVmaW5hdGlvbigpO1xyXG4gICAgICAgICAgLy8gdGhpcy5kYXRhbGlzdC5zbGljZSh0aGlzLmNpLCAxKTtcclxuICAgICAgICAgIHRoaXMuZGVsZXRlY2xzYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGtGdW4oZmwsIGZEYXRhKSB7XHJcbiAgICBpZiAoZmwudmFsaWRhdGlvbnMgPT0gXCJcIiB8fCBmbC52YWxpZGF0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChmbC52YWxpZGF0aW9ucyA9PSBcInZhbGlkYXRlUXVlcnlcIikge1xyXG4gICAgICAgIHRoaXMudmFsaWRhdGVRdWVyeShmbCwgZkRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZsLnZhbGlkYXRpb25zID09IFwiaXNVbmlxdWVcIikge1xyXG4gICAgICAgIHRoaXMuaXNVbmlxdWUoZmwsIGZEYXRhKTtcclxuICAgICAgfSBlbHNlIGlmIChmbC52YWxpZGF0aW9ucyA9PSAnc2V0bmFtZXByaW50Jykge1xyXG4gICAgICAgIHRoaXMuc2V0bmFtZXByaW50KGZsLCBmRGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmwudmFsaWRhdGlvbnMgPT0gJ3NldGZhY3RvcicpIHtcclxuICAgICAgICB0aGlzLnNldGZhY3RvcihmbCwgZkRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZsLmZvcm1fZmllbGRfdHlwID09IFwic1wiKSB7XHJcbiAgICAgICAgaWYgKGZsLnZhbGlkYXRpb25zID09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHNxID0gZmwudmFsaWRhdGlvbnMucmVwbGFjZSgvI1FWQUwvZywgZkRhdGEpO1xyXG4gICAgICAgIC8vdGhpcy5nZXRMb3ZMaXN0ZGF0YShmbC5jb2x1bW5fa2V5LCBzcSk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZmwudmFsaWRhdGlvbnMgPT0gXCJpc0V4aXN0XCIpIHtcclxuICAgICAgICBpZiAoZmwudmFsaWRhdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmlzRXhpc3QoZmwsIGZEYXRhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0bmFtZXByaW50KGZsLCBmRGF0YSkge1xyXG4gICAgIFxyXG4gICAgbGV0IG5tZUlkbiA9IGZEYXRhO1xyXG4gICAgbGV0IGxpc3QgPSB0aGlzLnNxbEFycmF5W2ZsLmZvcm1fZmllbGRdIHx8IFtdO1xyXG4gICAgbGV0IG5td0R0bCA9IGxpc3QuZmluZCh4ID0+IHgudmFsdWUgPT0gbm1lSWRuKSB8fCAnJztcclxuICAgIGlmIChubXdEdGwgIT0gJycpIHtcclxuICAgICAgdGhpcy5mb3JtRmlsZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkID09ICdubWUnKVxyXG4gICAgICAgICAgZWxlbWVudC5kZWZhdWx0X3ZhbHVlID0gbm13RHRsLmxhYmVsXHJcbiAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZCA9PSAncHJpbnRfbm1lJylcclxuICAgICAgICAgIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSA9IG5td0R0bC5sYWJlbFxyXG5cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRmYWN0b3IoZmwsIGZEYXRhKSB7XHJcbiAgICBsZXQgZmN0ciA9IC0xO1xyXG4gICAgaWYgKGZEYXRhID09ICdpbmNvbWUnIHx8IGZEYXRhID09ICdhc3NldHMnKVxyXG4gICAgICBmY3RyID0gMTtcclxuICAgIHRoaXMuZm9ybUZpbGRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGQgPT0gJ2ZjdHInKVxyXG4gICAgICAgIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSA9IGZjdHJcclxuICAgIH0pO1xyXG4gIH1cclxuICBpc0V4aXN0KGR0YU9iaiwgZkRhdGEpIHtcclxuICAgIFxyXG4gICAgaWYgKGZEYXRhID09IFwiXCIgfHwgZkRhdGEgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1widXNlcm5hbWVcIl0gPSBmRGF0YTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJpc1VzZXJFeGlzdFwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLnZhbGlkYXRlKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLm1lc3NhZ2UgPT0gXCJcIikge1xyXG4gICAgICAgICAgdGhpcy51c3Jpc0V4aXN0ID0gdHJ1ZTtcclxuICAgICAgICAgIHRoaXMuaWNvID0gXCJjaGVja1wiO1xyXG4gICAgICAgICAgdGhpcy5vbkVyciA9IGR0YU9iai5mb3JtX2ZpZWxkO1xyXG4gICAgICAgICAgLy8gdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KHJlc3BvbnNlLm1lc3NhZ2UsIHsgY3NzQ2xhc3M6ICdhbGVydC1kYW5nZXInLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBkdGFPYmouZGVmYXVsdF92YWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgICB0aGlzLnVzcmlzRXhpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pY28gPSBcInRpbWVzXCI7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMub25FcnIgPSBkdGFPYmouZm9ybV9maWVsZDtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKGZvcm1WYWwsIGJ0bikge1xyXG4gICAgdGhpcy5vblN1Ym1pdChmb3JtVmFsLCBidG4pO1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoZm9ybVZhbCwgYnRuKSB7XHJcbiAgICB2YXIgdCA9IE9iamVjdC5rZXlzKGZvcm1WYWwuZm9ybS5jb250cm9scykuZm9yRWFjaChmaWVsZCA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSBmb3JtVmFsLmZvcm0uZ2V0KGZpZWxkKTtcclxuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKHsgb25seVNlbGY6IHRydWUgfSk7XHJcbiAgICB9KTtcclxuICAgIGlmIChmb3JtVmFsLmZvcm0udmFsaWQgPT0gdHJ1ZSkge1xyXG4gICAgICB0aGlzLmFkZGVkaXQoZm9ybVZhbC52YWx1ZSwgYnRuKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFkZGVkaXQodiwgYnRuKSB7XHJcblxyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBpZiAodGhpcy5wYWdlSW5mby5mb3JtX25tZSA9PSAnYWRkcmVzc01hc3RlcicgfHwgdGhpcy5wYWdlSW5mby5mb3JtX25tZSA9PSAnYWNjQWRkcmVzc01hc3RlcicgfHwgdGhpcy5wYWdlSW5mby5mb3JtX25tZSA9PSAnYWNjQWRkcmVzc0RldGFpbHMnKSB7XHJcbiAgICAgIGxldCBjaXR5U3RyID0gdi5jaXR5X25tIHx8ICcnO1xyXG4gICAgICBsZXQgY2l0eVN0ckxzdCA9IGNpdHlTdHIuc3BsaXQoJyMnKTtcclxuICAgICAgaWYgKGNpdHlTdHJMc3QubGVuZ3RoID09IDMpIHtcclxuICAgICAgICB2LmNvdW50cnlfbm0gPSBjaXR5U3RyTHN0WzJdO1xyXG4gICAgICAgIHYuc3RhdGVfbm0gPSBjaXR5U3RyTHN0WzFdO1xyXG4gICAgICAgIHYuY2l0eV9ubSA9IGNpdHlTdHJMc3RbMF07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIlBsZWFzZSBjaGVjayBjaXR5XCIpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5idG5OYW1lICE9IFwiQWRkXCIpXHJcbiAgICAgICAgdlsnYWRkcmVzc19pZG4nXSA9IHRoaXMucGlkO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHZhciBwYWdlVFAgPSB0aGlzLnBhZ2VJbmZvLnBhZ2VfdHlwLnRyaW0oKTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLnBhZ2VJbmZvLmZvcm1fbm1lO1xyXG4gICAgcmVxT2JqW1wicHJpbWFyeUtleVwiXSA9IHRoaXMucGFnZUluZm8ucHJpbWFyeV9rZXlfZmllbGQ7XHJcbiAgICByZXFPYmpbXCJwYWdlVHlwXCJdID0gdGhpcy5wYWdlSW5mby5wYWdlX3R5cDtcclxuICAgIHJlcU9ialtcInNlY29uZEtleUZpZWxkXCJdID0gdGhpcy5wYWdlSW5mby5zZWNvbmRfa2V5X2ZpZWxkO1xyXG4gICAgcmVxT2JqW1wicHJpbWFyeUlkXCJdID0gdGhpcy5idG5OYW1lID09IFwiQWRkXCIgPyBcIlwiIDogXCJcIiArIHRoaXMucGlkO1xyXG4gICAgcmVxT2JqW1widGFibGVOYW1lXCJdID0gdGhpcy5wYWdlSW5mby50YWJsZV9uYW1lO1xyXG4gICAgcmVxT2JqW1widHJuc1R5cGVcIl0gPSB0aGlzLmJ0bk5hbWUgPT0gXCJBZGRcIiA/IFwiQUREXCIgOiBcIkVESVRcIjtcclxuICAgIHJlcU9ialtcImRhdGFUcm5zRHRsXCJdID0gdjtcclxuICAgIGlmIChwYWdlVFAgPT0gXCJqc29uRm9ybVwiKSB7XHJcbiAgICAgIHJlcU9ialtcIndoZXJlS2V5c1wiXSA9IHRoaXMucGFnZUluZm8ud2hlcmVfY2xhdXNlO1xyXG4gICAgICByZXFPYmpbXCJ3aGVyZVZsdXNcIl0gPSB0aGlzLndoZXJlTWFwW3RoaXMucGFnZUluZm8ud2hlcmVfY2xhdXNlXTtcclxuICAgIH1cclxuICAgIFxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVcIjtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5hZGREYXRhKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICBidG4uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudGJDZWxsID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc2VhcmNoRiA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmNsb3NlYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICAgIC8vIGlmICh0aGlzLmJ0bk5hbWUgIT0gJ0FkZCcpIHtcclxuICAgICAgICAgIC8vICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5nbGJPYmopIHtcclxuICAgICAgICAgIC8vICAgICBpZiAodi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAvLyAgICAgICB0aGlzLmdsYk9ialtrZXldID0gdltrZXldXHJcbiAgICAgICAgICAvLyAgICAgfVxyXG4gICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAvLyB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kYXRhbGlzdFswXSkge1xyXG4gICAgICAgICAgLy8gICBpZiAoIXYuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMuZ2xiT2JqW2tleV0gPSByZXNwb25zZS5faWQ7XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vICAgaWYgKHYuaGFzT3duUHJvcGVydHkoa2V5KSkge1xyXG4gICAgICAgICAgLy8gICAgIHRoaXMuZ2xiT2JqW2tleV0gPSB2W2tleV1cclxuICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgLy8gdGhpcy5kYXRhbGlzdC5wdXNoKHRoaXMuZ2xiT2JqKTtcclxuICAgICAgICAgIHRoaXMuZ2V0UGFnZURlZmluYXRpb24oKTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgYnRuLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnRiQ2VsbCA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIGJ0bi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGJDZWxsID0gbnVsbDtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVRdWVyeSh0YmxPYmosIGYpIHtcclxuICAgIGlmIChmID09IFwiXCIgfHwgZiA9PSBudWxsKSByZXR1cm47XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJzcWxcIl0gPSBmO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInZhbGlkYXRlUXVlcnlcIjtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC52YWxpZGF0ZShyZXFPYmosIG9wdGlvbnMsIFwic3lzdGVtL2FwcHBhZ2VzXCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5vbkVyciA9IFwiXCI7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5vbkVyciA9IHRibE9iai5mb3JtX2ZpZWxkO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGlzVW5pcXVlKGR0YU9iaiwgaW5wdVZhbCkge1xyXG4gICAgaWYgKGlucHVWYWwgPT0gXCJcIiB8fCBpbnB1VmFsID09IG51bGwpIHJldHVybjtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInRhYmxlTmFtZVwiXSA9IHRoaXMucGFnZUluZm8udGFibGVfbmFtZTtcclxuICAgIHJlcU9ialtcIndoZXJlS2V5c1wiXSA9IGR0YU9iai5mb3JtX2ZpZWxkO1xyXG4gICAgcmVxT2JqW1wid2hlcmVWbHVzXCJdID0gaW5wdVZhbDtcclxuICAgIHJlcU9ialtcInByaW1hcnlLZXlcIl0gPSB0aGlzLnBhZ2VJbmZvLnByaW1hcnlfa2V5X2ZpZWxkO1xyXG4gICAgcmVxT2JqW1wicHJpbWFyeUlkXCJdID0gdGhpcy5idG5OYW1lID09IFwiQWRkXCIgPyBcIlwiIDogdGhpcy5waWQ7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwidW5pcXVlQ29uUVwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLnZhbGlkYXRlKHJlcU9iaiwgb3B0aW9ucywgXCJzeXN0ZW0vYXBwcGFnZXNcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyID0gXCJcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyID0gZHRhT2JqLmZvcm1fZmllbGQ7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25QYWdlU2l6ZUNoYW5nZShwKSB7XHJcbiAgICBpZiAocCA9PSBcIkFsbFwiKSB7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSB0aGlzLmRhdGFsaXN0Lmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMucGFnZVNpemUgPSBwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc2V0T3JkZXIodmFsdWU6IHN0cmluZywgaSkge1xyXG4gICAgdGhpcy5zaG93YXJyID0gaTtcclxuICAgIGlmICh0aGlzLm9yZGVyID09PSB2YWx1ZSkge1xyXG4gICAgICB0aGlzLnJldmVyc2UgPSAhdGhpcy5yZXZlcnNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5vcmRlciA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZWRpdENlbGwoZCwgdGJoKSB7XHJcbiAgICB0aGlzLmdsYk9iaiA9IGQ7XHJcbiAgICB0aGlzLnRiQ2VsbCA9IHRiaDtcclxuICAgIHRoaXMudGl0bGUgPSBkLnRpdGxlO1xyXG4gICAgdGhpcy5idG5OYW1lID0gXCJFZGl0XCI7XHJcbiAgICB0aGlzLnBpZCA9IGRbdGhpcy5wa2ZdO1xyXG4gICAgdGhpcy5nZXRFZGl0RGF0YShkKTtcclxuICB9XHJcblxyXG4gIGdldE5hbWVBdHRyKGZybW5tZSwgbWRsKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gZnJtbm1lO1xyXG4gICAgcmVxT2JqW1wibm1lSWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpO1xyXG4gICAgcmVxT2JqWydtZGxMaXN0J10gPSBtZGw7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZE5tZUF0dHJcIjtcclxuICAgIFxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLnZhbGlkYXRlKHJlcU9iaiwgb3B0aW9ucywgXCJzeXN0ZW0vYXBwcGFnZXNcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIHRoaXMudWlHcnBMaXN0ID0gcmVzcG9uc2UudWlHcnBMaXN0O1xyXG4gICAgICAgICAgdGhpcy51aUdycExpc3REdGwgPSByZXNwb25zZS51aUdycExpc3REdGw7XHJcbiAgICAgICAgICBpZih0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXSAmJiBBcnJheS5pc0FycmF5KHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddKSAmJiB0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxvd2VyQ2FzZUFycmF5ID0gdGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10ubWFwKGl0ZW0gPT4gaXRlbS50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgdGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10gPSBsb3dlckNhc2VBcnJheVxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5hdHRyQ0xpc3REdGwgPSByZXNwb25zZS5hdHRyQ0xpc3REdGw7XHJcbiAgICAgICAgICB0aGlzLmF0dHJRTGlzdER0bCA9IHJlc3BvbnNlLmF0dHJRTGlzdER0bDtcclxuICAgICAgICAgIHRoaXMuZGF0YUR0bCA9IHJlc3BvbnNlLmRhdGFEdGw7XHJcbiAgICAgICAgICBcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZG9jZWRpdEFjdGlvbjtcclxuICBkb2NkZWxldGVBY3Rpb247XHJcblxyXG4gIG93bmVyRFNEdGwgPSAnJ1xyXG4gIGFzeW5jIGdldE93bmVyRFNEdGwoKTogUHJvbWlzZTxhbnk+IHtcclxuICAgIGxldCBkc1ZhbHVlID0gJydcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbJ2ZybW5tZSddXHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiAnZ2V0T3duZXJEU0R0bCdcclxuICAgIH1cclxuICAgIGF3YWl0IHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdzeXN0ZW0vYXBwcGFnZXMnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgdGhpcy5vd25lckRTRHRsID0gcmVzcG9uc2UucmVzdWx0XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICBcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8gZ2V0RmlsZXMobm1lSWRuKSB7XHJcblxyXG4gIC8vICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgLy8gICB0aGlzLmRvY2VkaXRBY3Rpb24gPSBmYWxzZTtcclxuICAvLyAgIHRoaXMuZG9jZGVsZXRlQWN0aW9uID0gZmFsc2U7XHJcbiAgLy8gICBjb25zdCByZXFPYmogPSB7fTtcclxuICAvLyAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcImRvY3VtZW50VXBsb2FkTWFzdGVyXCI7XHJcbiAgLy8gICByZXFPYmpbXCJubWVJZG5cIl0gPSBubWVJZG47XHJcbiAgLy8gICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZERvY3NcIjtcclxuICAvLyAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgLy8gICBjb25zdCBvcHRpb25zID0ge1xyXG4gIC8vICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgLy8gICB9XHJcbiAgICBcclxuICAvLyAgIHRoaXMudXBsb2FkU2VydmljZS5nZXRGaWxlc0xpc3QocmVxT2JqLCBvcHRpb25zKS50aGVuKGFzeW5jIChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgLy8gICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICBcclxuICAvLyAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgICB0aGlzLnMzZGV0YWlscyA9IHJlc3BvbnNlLnMzZGV0YWlscyB8fCB7fTtcclxuICAvLyAgICAgICBsZXQgZG9jQWN0aW9uYnRuID0gcmVzcG9uc2UucGFnZURlZmluYXRpb24uYWN0aW9uIHx8IFtdO1xyXG4gIC8vICAgICAgIGRvY0FjdGlvbmJ0bi5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgIFxyXG4gIC8vICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZCA9PSAnZWRpdCcpXHJcbiAgLy8gICAgICAgICAgIHRoaXMuZG9jZWRpdEFjdGlvbiA9IHRydWU7XHJcbiAgLy8gICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkID09ICdkZWxldGUnKVxyXG4gIC8vICAgICAgICAgICB0aGlzLmRvY2RlbGV0ZUFjdGlvbiA9IHRydWU7XHJcbiAgLy8gICAgICAgfSk7XHJcbiAgLy8gICAgICAgbGV0IGJ1Y2tldE5hbWUgPSB0aGlzLnMzZGV0YWlsc1tcImRvY2J1Y2tldFwiXSB8fCBcIlwiO1xyXG4gIC8vICAgICAgIGxldCBmb2xkZXJOYW1lID0gdGhpcy5zM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl0gfHwgXCJcIjtcclxuICAvLyAgICAgICBhd2FpdCB0aGlzLmdldE93bmVyRFNEdGwoKTtcclxuICAvLyAgICAgICBmb2xkZXJOYW1lID0gZm9sZGVyTmFtZS5yZXBsYWNlKFwiI0RTXCIsIHRoaXMub3duZXJEU0R0bC50b1VwcGVyQ2FzZSgpKTtcclxuICAvLyAgICAgICB0aGlzLnMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXSA9IGZvbGRlck5hbWU7XHJcbiAgLy8gICAgICAgbGV0IHMzQWNjZXNzS2V5ID0gdGhpcy5zM2RldGFpbHNbXCJkb2NTM2FjY2Vzc0tleVwiXSB8fCBcIlwiO1xyXG4gIC8vICAgICAgIGxldCBzM1NlY3JldEtleSA9IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNzZWNyZXRLZXlcIl0gfHwgXCJcIjtcclxuICAvLyAgICAgICBsZXQgczNyZWdpb24gPSB0aGlzLnMzZGV0YWlsc1tcImRvY1MzcmVnaW9uXCJdIHx8IFwiXCI7XHJcbiAgLy8gICAgICAgbGV0IGlzdmFpbGQgPSB0cnVlO1xyXG4gIC8vICAgICAgIGlmIChidWNrZXROYW1lID09IFwiXCIpIHtcclxuICAvLyAgICAgICAgIGlzdmFpbGQgPSBmYWxzZTtcclxuICAvLyAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiRG9jdW1lbnQgQnVja2V0IG5vdCBmb3VuZFwiKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgaWYgKGZvbGRlck5hbWUgPT0gXCJcIikge1xyXG4gIC8vICAgICAgICAgaXN2YWlsZCA9IGZhbHNlO1xyXG4gIC8vICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJEb2N1bWVudCBGbG9kZXIgbm90IGZvdW5kXCIpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBpZiAoczNBY2Nlc3NLZXkgPT0gXCJcIikge1xyXG4gIC8vICAgICAgICAgaXN2YWlsZCA9IGZhbHNlO1xyXG4gIC8vICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJEb2N1bWVudCBzM0FjY2Vzc0tleSBub3QgZm91bmRcIik7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIGlmIChzM1NlY3JldEtleSA9PSBcIlwiKSB7XHJcbiAgLy8gICAgICAgICBpc3ZhaWxkID0gZmFsc2U7XHJcbiAgLy8gICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIkRvY3VtZW50IHMzU2VjcmV0S2V5IG5vdCBmb3VuZFwiKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgaWYgKHMzcmVnaW9uID09IFwiXCIpIHtcclxuICAvLyAgICAgICAgIGlzdmFpbGQgPSBmYWxzZTtcclxuICAvLyAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiRG9jdW1lbnQgczNyZWdpb24gbm90IGZvdW5kXCIpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBpZiAoaXN2YWlsZCkge1xyXG4gIC8vICAgICAgICAgdGhpcy5kYXRhRHRsID0gcmVzcG9uc2UuZGF0YUR0bCB8fCB7fTtcclxuICAvLyAgICAgICAgIHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0ID0gcmVzcG9uc2UuZG9jdW1lbnRVcGxvYWREdGwuZG9jdW1lbnRVcGxvYWRMaXN0O1xyXG4gIC8vICAgICAgICAgdGhpcy5kb2N1bWVudFVwbG9hZExpc3Quc29ydCgpO1xyXG4gIC8vICAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0Lmxlbmd0aCA+IDApXHJcbiAgLy8gICAgICAgICAgIHRoaXMuZG9jdHlwZSA9IHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0WzBdO1xyXG5cclxuICAvLyAgICAgICAgIGxldCBkb2N0eXAgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tcImRvY3R5cFwiXSB8fCBcIlwiO1xyXG4gIC8vICAgICAgICAgaWYgKGRvY3R5cCAhPSAnJylcclxuICAvLyAgICAgICAgICAgdGhpcy5kb2N0eXBlID0gZG9jdHlwO1xyXG5cclxuICAvLyAgICAgICAgIHRoaXMuZG9jdW1lbnRVcGxvYWREdGwgPSByZXNwb25zZS5kb2N1bWVudFVwbG9hZER0bDtcclxuXHJcbiAgLy8gICAgICAgICBjb25zdCBidWNrZXQgPSBuZXcgQVdTLlMzKHtcclxuICAvLyAgICAgICAgICAgYWNjZXNzS2V5SWQ6IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNhY2Nlc3NLZXlcIl0sXHJcbiAgLy8gICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogdGhpcy5zM2RldGFpbHNbXCJkb2NTM3NlY3JldEtleVwiXSxcclxuICAvLyAgICAgICAgICAgcmVnaW9uOiBzM3JlZ2lvblxyXG4gIC8vICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgXHJcbiAgLy8gICAgICAgICB0aGlzLmRvY3VtZW50VXBsb2FkTGlzdC5mb3JFYWNoKGRvY3R5cGUgPT4ge1xyXG4gIC8vICAgICAgICAgICBpZiAodGhpcy5kYXRhRHRsW2RvY3R5cGVdICE9IHVuZGVmaW5lZCkge1xyXG4gIC8vICAgICAgICAgICAgIHRoaXMuZGF0YUR0bFtkb2N0eXBlXS5mb3JFYWNoKGR0bCA9PiB7XHJcbiAgLy8gICAgICAgICAgICAgICBsZXQgdXJsUGFyYW1zID0ge1xyXG4gIC8vICAgICAgICAgICAgICAgICBCdWNrZXQ6IHRoaXMuczNkZXRhaWxzW1wiZG9jYnVja2V0XCJdLFxyXG4gIC8vICAgICAgICAgICAgICAgICBLZXk6IHRoaXMuczNkZXRhaWxzW1wiZG9jZm9sZGVyXCJdICsgXCIvXCIgKyBkdGxbXCJkb2Nfbm1lXCJdXHJcbiAgLy8gICAgICAgICAgICAgICB9O1xyXG4gIC8vICAgICAgICAgICAgICAgYnVja2V0LmdldFNpZ25lZFVybChcImdldE9iamVjdFwiLCB1cmxQYXJhbXMsIGZ1bmN0aW9uIChlcnIsIHVybCkge1xyXG4gICAgICAgICAgICAgICAgICAgXHJcbiAgLy8gICAgICAgICAgICAgICAgIGR0bFtcInNpZ25VcmxcIl0gPSB1cmw7XHJcbiAgLy8gICAgICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgICAgICB9KTtcclxuICAvLyAgICAgICAgICAgfVxyXG4gIC8vICAgICAgICAgfSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIHtcclxuICAvLyAgICAgICAgIHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0ID0gW107XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KVxyXG4gIC8vICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgLy8gICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgLy8gICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gIC8vICAgICB9KTtcclxuICAgIFxyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgZ2V0RmlsZXMobm1lSWRuKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIHRoaXMuZG9jZWRpdEFjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5kb2NkZWxldGVBY3Rpb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHtcclxuICAgICAgZm9ybU5tZTogXCJkb2N1bWVudFVwbG9hZE1hc3RlclwiLFxyXG4gICAgICBubWVJZG46IG5tZUlkblxyXG4gICAgfTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkRG9jc1wiO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfTtcclxuICBcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IHJlc3BvbnNlOiBhbnkgPSBhd2FpdCB0aGlzLnVwbG9hZFNlcnZpY2UuZ2V0RmlsZXNMaXN0KHJlcU9iaiwgb3B0aW9ucyk7XHJcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy5zM2RldGFpbHMgPSByZXNwb25zZS5zM2RldGFpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGRvY0FjdGlvbmJ0biA9IHJlc3BvbnNlLnBhZ2VEZWZpbmF0aW9uLmFjdGlvbiB8fCBbXTtcclxuICAgICAgICBkb2NBY3Rpb25idG4uZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGQgPT09ICdlZGl0JykgdGhpcy5kb2NlZGl0QWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGQgPT09ICdkZWxldGUnKSB0aGlzLmRvY2RlbGV0ZUFjdGlvbiA9IHRydWU7XHJcbiAgICAgICAgfSk7XHJcbiAgXHJcbiAgICAgICAgbGV0IGJ1Y2tldE5hbWUgPSB0aGlzLnMzZGV0YWlsc1tcImRvY2J1Y2tldFwiXSB8fCBcIlwiO1xyXG4gICAgICAgIGxldCBmb2xkZXJOYW1lID0gdGhpcy5zM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl0gfHwgXCJcIjtcclxuICAgICAgICBhd2FpdCB0aGlzLmdldE93bmVyRFNEdGwoKTtcclxuICAgICAgICBmb2xkZXJOYW1lID0gZm9sZGVyTmFtZS5yZXBsYWNlKFwiI0RTXCIsIHRoaXMub3duZXJEU0R0bC50b1VwcGVyQ2FzZSgpKTtcclxuICAgICAgICB0aGlzLnMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXSA9IGZvbGRlck5hbWU7XHJcbiAgXHJcbiAgICAgICAgbGV0IHMzQWNjZXNzS2V5ID0gdGhpcy5zM2RldGFpbHNbXCJkb2NTM2FjY2Vzc0tleVwiXSB8fCBcIlwiO1xyXG4gICAgICAgIGxldCBzM1NlY3JldEtleSA9IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNzZWNyZXRLZXlcIl0gfHwgXCJcIjtcclxuICAgICAgICBsZXQgczNyZWdpb24gPSB0aGlzLnMzZGV0YWlsc1tcImRvY1MzcmVnaW9uXCJdIHx8IFwiXCI7XHJcbiAgICAgICAgbGV0IGlzVmFsaWQgPSAhIShidWNrZXROYW1lICYmIGZvbGRlck5hbWUgJiYgczNBY2Nlc3NLZXkgJiYgczNTZWNyZXRLZXkgJiYgczNyZWdpb24pO1xyXG4gIFxyXG4gICAgICAgIGlmICghaXNWYWxpZCkge1xyXG4gICAgICAgICAgaWYgKCFidWNrZXROYW1lKSB0aGlzLnRvYXN0ci5lcnJvcihcIkRvY3VtZW50IEJ1Y2tldCBub3QgZm91bmRcIik7XHJcbiAgICAgICAgICBpZiAoIWZvbGRlck5hbWUpIHRoaXMudG9hc3RyLmVycm9yKFwiRG9jdW1lbnQgRm9sZGVyIG5vdCBmb3VuZFwiKTtcclxuICAgICAgICAgIGlmICghczNBY2Nlc3NLZXkpIHRoaXMudG9hc3RyLmVycm9yKFwiRG9jdW1lbnQgczNBY2Nlc3NLZXkgbm90IGZvdW5kXCIpO1xyXG4gICAgICAgICAgaWYgKCFzM1NlY3JldEtleSkgdGhpcy50b2FzdHIuZXJyb3IoXCJEb2N1bWVudCBzM1NlY3JldEtleSBub3QgZm91bmRcIik7XHJcbiAgICAgICAgICBpZiAoIXMzcmVnaW9uKSB0aGlzLnRvYXN0ci5lcnJvcihcIkRvY3VtZW50IHMzcmVnaW9uIG5vdCBmb3VuZFwiKTtcclxuICAgICAgICAgIHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0ID0gW107XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gIFxyXG4gICAgICAgIHRoaXMuZGF0YUR0bCA9IHJlc3BvbnNlLmRhdGFEdGwgfHwge307XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVwbG9hZExpc3QgPSByZXNwb25zZS5kb2N1bWVudFVwbG9hZER0bC5kb2N1bWVudFVwbG9hZExpc3Quc29ydCgpO1xyXG4gICAgICAgIGlmICh0aGlzLmRvY3VtZW50VXBsb2FkTGlzdC5sZW5ndGggPiAwKSB0aGlzLmRvY3R5cGUgPSB0aGlzLmRvY3VtZW50VXBsb2FkTGlzdFswXTtcclxuICAgICAgICBsZXQgZG9jdHlwID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJkb2N0eXBcIl0gfHwgXCJcIjtcclxuICAgICAgICBpZiAoZG9jdHlwKSB0aGlzLmRvY3R5cGUgPSBkb2N0eXA7XHJcbiAgICAgICAgdGhpcy5kb2N1bWVudFVwbG9hZER0bCA9IHJlc3BvbnNlLmRvY3VtZW50VXBsb2FkRHRsO1xyXG4gIFxyXG4gICAgICAgIGNvbnN0IHMzQ2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcclxuICAgICAgICAgIHJlZ2lvbjogczNyZWdpb24sXHJcbiAgICAgICAgICBjcmVkZW50aWFsczoge1xyXG4gICAgICAgICAgICBhY2Nlc3NLZXlJZDogczNBY2Nlc3NLZXksXHJcbiAgICAgICAgICAgIHNlY3JldEFjY2Vzc0tleTogczNTZWNyZXRLZXlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICBcclxuICAgICAgICBmb3IgKGNvbnN0IGRvY3R5cGUgb2YgdGhpcy5kb2N1bWVudFVwbG9hZExpc3QpIHtcclxuICAgICAgICAgIGlmICh0aGlzLmRhdGFEdGxbZG9jdHlwZV0pIHtcclxuICAgICAgICAgICAgZm9yIChjb25zdCBkdGwgb2YgdGhpcy5kYXRhRHRsW2RvY3R5cGVdKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgdXJsUGFyYW1zID0ge1xyXG4gICAgICAgICAgICAgICAgQnVja2V0OiBidWNrZXROYW1lLFxyXG4gICAgICAgICAgICAgICAgS2V5OiBgJHtmb2xkZXJOYW1lfS8ke2R0bFtcImRvY19ubWVcIl19YFxyXG4gICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgR2V0T2JqZWN0Q29tbWFuZCh1cmxQYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgZHRsW1wic2lnblVybFwiXSA9IGF3YWl0IGdldFNpZ25lZFVybChzM0NsaWVudCwgY29tbWFuZCwgeyBleHBpcmVzSW46IDM2MDAgfSk7XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZ2VuZXJhdGluZyBzaWduZWQgVVJMXCIsIGVycik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIFxyXG4gIG9wZW5kb2NzKGR0bCkge1xyXG4gICAgbGV0IHVybCA9IGR0bC5zaWduVXJsO1xyXG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGxvYWREb2NzKGV2ZW50KSB7XHJcbiAgICAgXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCBubWVJZG4gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJzZXFcIl0gPSBcIm5tZV9kb2NzX3NlcVwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImdldFNlcVwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIGxldCBzZXFEdGwgPSBhd2FpdCB0aGlzLnNzLmdldERhdGEocmVxT2JqLCBvcHRpb25zKSB8fCB7fTtcclxuICAgIGlmIChzZXFEdGxbJ3N0YXR1cyddID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgIHZhciBzZXEgPSBzZXFEdGxbJ3NlcSddO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRmlsZXMgPSBldmVudC50YXJnZXQuZmlsZXM7XHJcbiAgICAgIHRoaXMuZmlsZSA9IHRoaXMuc2VsZWN0ZWRGaWxlcy5pdGVtKDApO1xyXG4gICAgICBsZXQgZmlsZU5hbWUgPSB0aGlzLmZpbGUubmFtZTtcclxuICAgICAgbGV0IGV4dCA9IGZpbGVOYW1lLnN1YnN0cmluZyhmaWxlTmFtZS5sYXN0SW5kZXhPZihcIi5cIikgKyAxKTtcclxuICAgICAgZmlsZU5hbWUgPSBubWVJZG4gKyBcIl9cIiArIHNlcSArIFwiX1wiICsgdGhpcy5kb2N0eXBlICsgXCIuXCIgKyBleHQ7XHJcbiAgICAgIGxldCB1cGxvYWRGaWxlID0gYXdhaXQgdGhpcy51cGxvYWRGaWxlKHRoaXMuZmlsZSwgZmlsZU5hbWUpIHx8ICcnO1xyXG4gICAgICAgXHJcbiAgICAgIGlmICh1cGxvYWRGaWxlICE9ICcnKSB7XHJcbiAgICAgICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgICAgIGxldCB0cmFuc2R0bCA9IHt9O1xyXG4gICAgICAgIHRyYW5zZHRsW1wiZG9jX2V4dFwiXSA9IHRoaXMuZmlsZS50eXBlO1xyXG4gICAgICAgIHRyYW5zZHRsW1wiZG9jX3R5cFwiXSA9IHRoaXMuZG9jdHlwZTtcclxuICAgICAgICB0cmFuc2R0bFtcImRvY3NfaWRuXCJdID0gc2VxO1xyXG4gICAgICAgIHRyYW5zZHRsW1wiZG9jX25tZVwiXSA9IGZpbGVOYW1lO1xyXG4gICAgICAgIHRyYW5zZHRsW1wic3R0XCJdID0gXCIxXCI7XHJcbiAgICAgICAgcmVxT2JqW1widHJuc1R5cGVcIl0gPSBcIkFERFwiO1xyXG4gICAgICAgIHJlcU9ialtcImRhdGFUcm5zRHRsXCJdID0gdHJhbnNkdGw7XHJcbiAgICAgICAgcmVxT2JqW1wibm1lSWRuXCJdID0gbm1lSWRuO1xyXG4gICAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlRG9jc1wiO1xyXG4gICAgICAgIFxyXG4gICAgICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgICAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGxvYWRTZXJ2aWNlLnNhdmVEb2N0b0RCKHJlcU9iaiwgb3B0aW9ucykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgICB0aGlzLmdldEZpbGVzKHJlcU9ialsnbm1lSWRuJ10pOyAvLy8vIHJlZnJhc2ggYWZ0ZXIgZG9jIHNhdmVkXHJcbiAgICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJGaWxlIHVwbG9hZCBmYWlsZWRcIik7XHJcbiAgICAgIH1cclxuXHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiZG9jdW1lbnQgU2VxLiBnZW5hcmF0aW9uIGVycm9yXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgLy8gdXBsb2FkRmlsZShmaWxlLCBmaWxlTmFtZSkge1xyXG4gIC8vICAgY29uc3QgYnVja2V0ID0gbmV3IEFXUy5TMyh7XHJcbiAgLy8gICAgIGFjY2Vzc0tleUlkOiB0aGlzLnMzZGV0YWlsc1tcImRvY1MzYWNjZXNzS2V5XCJdLFxyXG4gIC8vICAgICBzZWNyZXRBY2Nlc3NLZXk6IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNzZWNyZXRLZXlcIl0sXHJcbiAgLy8gICAgIHJlZ2lvbjogdGhpcy5zM2RldGFpbHNbXCJkb2NTM3JlZ2lvblwiXVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgLy8gICAgIEJ1Y2tldDogdGhpcy5zM2RldGFpbHNbXCJkb2NidWNrZXRcIl0sXHJcbiAgLy8gICAgIEtleTogdGhpcy5zM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl0gKyBcIi9cIiArIGZpbGVOYW1lLFxyXG4gIC8vICAgICBCb2R5OiBmaWxlLFxyXG4gIC8vICAgICBDb250ZW50VHlwZTogZmlsZS50eXBlXHJcbiAgLy8gICB9O1xyXG4gICAgIFxyXG4gIC8vICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAvLyAgICAgYnVja2V0LnVwbG9hZChwYXJhbXMsIGZ1bmN0aW9uIChlcnJvciwgcmVzdWx0KSB7XHJcbiAgLy8gICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICBcclxuICAvLyAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgLy8gICAgICAgfVxyXG4gICAgICAgIFxyXG4gIC8vICAgICAgIHJlc29sdmUocmVzdWx0KTtcclxuICAvLyAgICAgfSk7XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIHVwbG9hZEZpbGUoZmlsZSwgZmlsZU5hbWUpIHtcclxuICAgIGNvbnN0IHMzQ2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcclxuICAgICAgcmVnaW9uOiB0aGlzLnMzZGV0YWlsc1tcImRvY1MzcmVnaW9uXCJdLFxyXG4gICAgICBjcmVkZW50aWFsczoge1xyXG4gICAgICAgIGFjY2Vzc0tleUlkOiB0aGlzLnMzZGV0YWlsc1tcImRvY1MzYWNjZXNzS2V5XCJdLFxyXG4gICAgICAgIHNlY3JldEFjY2Vzc0tleTogdGhpcy5zM2RldGFpbHNbXCJkb2NTM3NlY3JldEtleVwiXVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICBcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgQnVja2V0OiB0aGlzLnMzZGV0YWlsc1tcImRvY2J1Y2tldFwiXSxcclxuICAgICAgS2V5OiBgJHt0aGlzLnMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXX0vJHtmaWxlTmFtZX1gLFxyXG4gICAgICBCb2R5OiBmaWxlLFxyXG4gICAgICBDb250ZW50VHlwZTogZmlsZS50eXBlXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgcmV0dXJuIHMzQ2xpZW50LnNlbmQobmV3IFB1dE9iamVjdENvbW1hbmQocGFyYW1zKSlcclxuICAgICAgLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UpXHJcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7IHRocm93IGVycm9yOyB9KTtcclxuICB9XHJcblxyXG5cclxuICBkZWxldGVEb2MoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIHRoaXMuRGVsZXRlRG9jc0Zyb21TMyh0aGlzLmRvY0RlbGV0ZUR0bCk7XHJcbiAgICAvLyBsZXQgZGVsZXRlRHRsID0gYXdhaXQgdGhpcy5EZWxldGVEb2NzRnJvbVMzKHRoaXMuZG9jRGVsZXRlRHRsKSB8fCAnJztcclxuICAgIC8vIGlmIChkZWxldGVEdGwgIT0gJycpIHtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZG9jc19pZG5cIl0gPSB0aGlzLmRvY0RlbGV0ZUR0bFsnZG9jc19pZG4nXTtcclxuICAgIHJlcU9ialtcInRybnNUeXBlXCJdID0gXCJERUxFVEVcIjtcclxuICAgIHJlcU9ialtcIm5tZUlkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlRG9jc1wiO1xyXG4gICAgXHJcbiAgICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy51cGxvYWRTZXJ2aWNlLnNhdmVEb2N0b0RCKHJlcU9iaiwgb3B0aW9ucykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgdGhpcy5nZXRGaWxlcyh0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIikpOyAvLy8vIHJlZnJhc2ggYWZ0ZXIgZG9jIHNhdmVkXHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICAgIC8vIH0gZWxzZSB7XHJcbiAgICAvLyAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgLy8gICB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3coXCJFcnJvciBpbiBmaWxlIGRlbGV0aW9uXCIsIHsgY3NzQ2xhc3M6IFwiYWxlcnQtZGFuZ2VyXCIsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuXHJcbiAgYXN5bmMgRGVsZXRlRG9jc0Zyb21TMyhkb2NEdGwpIHtcclxuICAgIGNvbnN0IHMzQ2xpZW50ID0gbmV3IFMzQ2xpZW50KHtcclxuICAgICAgcmVnaW9uOiB0aGlzLnMzZGV0YWlsc1tcImRvY1MzcmVnaW9uXCJdLFxyXG4gICAgICBjcmVkZW50aWFsczoge1xyXG4gICAgICAgIGFjY2Vzc0tleUlkOiB0aGlzLnMzZGV0YWlsc1tcImRvY1MzYWNjZXNzS2V5XCJdLFxyXG4gICAgICAgIHNlY3JldEFjY2Vzc0tleTogdGhpcy5zM2RldGFpbHNbXCJkb2NTM3NlY3JldEtleVwiXVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICBcclxuICAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAgICAgQnVja2V0OiB0aGlzLnMzZGV0YWlsc1tcImRvY2J1Y2tldFwiXSxcclxuICAgICAgS2V5OiBgJHt0aGlzLnMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXX0vJHtkb2NEdGxbJ2RvY19ubWUnXX1gXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBEZWxldGVPYmplY3RDb21tYW5kKHBhcmFtcyk7XHJcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHMzQ2xpZW50LnNlbmQoY29tbWFuZCk7XHJcbiAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZGVsZXRpbmcgZG9jdW1lbnQgZnJvbSBTMzpcIiwgZXJyb3IpO1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gZGVsZXRlIGRvY3VtZW50XCIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICBkb2NEZWxldGVEdGwgPSB7fTtcclxuICBDb25maXJtZGVsZXRlRG9jKGRvY0R0bCkge1xyXG4gICAgdGhpcy5kb2NEZWxldGVEdGwgPSBkb2NEdGw7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZG9jZGVsZXRlYnRuJykuY2xpY2soKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIEVkaXRVcGxvYWREb2NzKGRvY0R0bCwgZXZlbnQpIHtcclxuICAgICBcclxuICAgIGxldCBkZWxldGVEdGwgPSBhd2FpdCB0aGlzLkRlbGV0ZURvY3NGcm9tUzModGhpcy5kb2NEZWxldGVEdGwpIHx8ICcnO1xyXG4gICAgIFxyXG4gICAgaWYgKGRlbGV0ZUR0bCAhPSAnJykge1xyXG4gICAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgICAgcmVxT2JqW1wiZG9jc19pZG5cIl0gPSBkb2NEdGxbJ2RvY3NfaWRuJ107XHJcbiAgICAgIHJlcU9ialtcInRybnNUeXBlXCJdID0gXCJERUxFVEVcIjtcclxuICAgICAgcmVxT2JqW1wibm1lSWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZURvY3NcIjtcclxuICAgIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICAgIH1cclxuICAgICAgbGV0IGRlbGV0ZURiRHRsID0gYXdhaXQgdGhpcy51cGxvYWRTZXJ2aWNlLnNhdmVEb2N0b0RCKHJlcU9iaiwgb3B0aW9ucyk7XHJcbiAgICAgICBcclxuICAgICAgaWYgKGRlbGV0ZURiRHRsWydzdGF0dXMnXSA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIHRoaXMudXBsb2FkRG9jcyhldmVudClcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIkVycm9yIGluIGZpbGUgRWRpdFwiKTtcclxuICAgICAgfVxyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRBcHBsaWNhdGlvbigpIHtcclxuICAgIHRoaXMuYXBwbGljYXRpb24gPSBcIlwiO1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcImNvbnRhY3RTZWFyY2hGb3JtXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZEFwcGxpY2F0aW9uc1wiO1xyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3NcclxuICAgICAgLmxvYWQocmVxT2JqLCBvcHRpb25zLCBcImNvbnRhY3QvbG9hZENvbnRhY3RcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmFwcGxpY2F0aW9uTGlzdCA9IHJlc3BvbnNlLmFwcGxpY2F0aW9uTGlzdDtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGFwcGxpY2F0aW9uO1xyXG4gIE1vZHVsZTtcclxuICBVc2VyO1xyXG4gIGxvYWRXZWJBcHBsaWNhdGlvbigpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJjb250YWN0U2VhcmNoRm9ybVwiO1xyXG4gICAgcmVxT2JqW1wiYXBwbGljYXRpb25TdHJcIl0gPSBcIldXV1wiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRBcHBsaWNhdGlvbnNcIjtcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5sb2FkKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkxpc3QgPSByZXNwb25zZS5hcHBsaWNhdGlvbkxpc3Q7XHJcbiAgICAgICAgICBpZiAodGhpcy5hcHBsaWNhdGlvbkxpc3QubGVuZ3RoID09IDIpIHtcclxuICAgICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbiA9IHRoaXMuYXBwbGljYXRpb25MaXN0WzFdLms7XHJcbiAgICAgICAgICAgIHRoaXMubG9hZFVzck1kbCh0aGlzLmFwcGxpY2F0aW9uKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIGxvYWRVc3JNZGwoYXBwbElkKSB7XHJcbiAgICB0aGlzLk1vZHVsZSA9IFwiXCI7XHJcbiAgICB0aGlzLlVzZXIgPSBcIlwiO1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcIm5tZUlkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIHJlcU9ialtcImFwcGxJZFwiXSA9IGFwcGxJZDtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcIlVzZXJNb2R1bGVMaXN0XCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiZ2V0VXNlck1vZHVsZUxpc3RcIjtcclxuICAgIFxyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3NcclxuICAgICAgLmxvYWRNZW51UmlnaHRzVXNlcldpc2UocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMudXNlckR0bHMgPSByZXNwb25zZS51c2VyRHRscztcclxuICAgICAgICAgIGlmICh0aGlzLnVzZXJEdGxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5Vc2VyID0gdGhpcy51c2VyRHRsc1swXVsndXNlcl9pZG4nXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMubW9kdWxlRHRscyA9IHJlc3BvbnNlLm1vZHVsZUR0bHM7XHJcbiAgICAgICAgICBpZiAodGhpcy5tb2R1bGVEdGxzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5Nb2R1bGUgPSB0aGlzLm1vZHVsZUR0bHNbMF1bJ21vZHVsZV9pZG4nXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRVc2VyUmlnaHRzKHVzZXJJZCwgTW9kdWxlSWQpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJtb2R1bGVJZG5zXCJdID0gTW9kdWxlSWQ7XHJcbiAgICByZXFPYmpbXCJ1c2VySWRcIl0gPSB1c2VySWQ7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiZ2V0TWVudUxpc3RCeU1vZHVsZVwiO1xyXG4gICAgXHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jc1xyXG4gICAgICAubG9hZE1lbnVSaWdodHNVc2VyV2lzZShyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy50b3RNZW51ID0gMDtcclxuICAgICAgICAgIHRoaXMubWVudUxpc3QgPSByZXNwb25zZS5tZW51TGlzdDtcclxuICAgICAgICAgIHRoaXMudXNlclJpZ2h0c01lbnVMaXN0ID0gcmVzcG9uc2UudXNlclJpZ2h0c01lbnVMaXN0O1xyXG4gICAgICAgICAgdGhpcy5tZW51TGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnRvdE1lbnUgKz0gZWxlbWVudC5TdWJNZW51Lmxlbmd0aDtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZVN1Yk1lbnUoZSwgc3ViTWVudUlkLCBNZW51SWQsIFVzZXJJZCwgbW9kdWxlSWQpIHtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1widXNlcklkXCJdID0gVXNlcklkO1xyXG4gICAgcmVxT2JqW1wibWVudUlkblwiXSA9XHJcbiAgICAgIGUudGFyZ2V0LmNoZWNrZWQgPT0gdHJ1ZSA/IFtzdWJNZW51SWQsIE1lbnVJZF0gOiBbc3ViTWVudUlkXTtcclxuICAgIHJlcU9ialtcInN0dFwiXSA9IGUudGFyZ2V0LmNoZWNrZWQgPT0gdHJ1ZSA/IFwiMVwiIDogXCIwXCI7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJzYXZlVXNlclJpZ2h0TWFzdGVyXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZVVzZXJSaWdodHNcIjtcclxuICAgIFxyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3NcclxuICAgICAgLnNhdmVVc2VyTWVudVJpZ2h0c0NvbnRhY3QocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0VXNlclJpZ2h0cyhVc2VySWQsIG1vZHVsZUlkKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VNZW51KGUsIG1lbnVJZCwgVXNlcklkLCBtb2R1bGVJZCkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgc3ViTWVudU9iaiA9IHRoaXMubWVudUxpc3QuZmluZChvID0+IG8ubWVudV9pZG4gPT09IG1lbnVJZCk7XHJcbiAgICB0aGlzLnN1Yk1lbnVJZG5zLnB1c2gobWVudUlkKTtcclxuXHJcbiAgICBpZiAoc3ViTWVudU9iai5TdWJNZW51Lmxlbmd0aCA+IDApIHtcclxuICAgICAgc3ViTWVudU9iai5TdWJNZW51LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5zdWJNZW51SWRucy5wdXNoKGVsZW1lbnQubWVudV9pZG4pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1widXNlcklkXCJdID0gVXNlcklkO1xyXG4gICAgcmVxT2JqW1wibWVudUlkblwiXSA9IHRoaXMuc3ViTWVudUlkbnM7XHJcbiAgICByZXFPYmpbXCJzdHRcIl0gPSBlLnRhcmdldC5jaGVja2VkID09IHRydWUgPyBcIjFcIiA6IFwiMFwiO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwic2F2ZVVzZXJSaWdodE1hc3RlclwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVVc2VyUmlnaHRzXCI7XHJcbiAgICBcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5zYXZlVXNlck1lbnVSaWdodHNDb250YWN0KHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJSaWdodHMoVXNlcklkLCBtb2R1bGVJZCk7XHJcbiAgICAgICAgICB0aGlzLnN1Yk1lbnVJZG5zID0gW107XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICBvbkNoYW5nZVdlYlN1Yk1lbnUoZSwgc3ViTWVudUlkLCBNZW51SWQsIFVzZXJJZCwgbW9kdWxlSWQpIHtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1widXNlcklkXCJdID0gVXNlcklkO1xyXG4gICAgcmVxT2JqW1wibWVudUlkblwiXSA9XHJcbiAgICAgIGUudGFyZ2V0LmNoZWNrZWQgPT0gdHJ1ZSA/IFtzdWJNZW51SWQsIE1lbnVJZF0gOiBbc3ViTWVudUlkXTtcclxuICAgIHJlcU9ialtcInN0dFwiXSA9IGUudGFyZ2V0LmNoZWNrZWQgPT0gdHJ1ZSA/IFwiMFwiIDogXCIxXCI7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJzYXZlVXNlclJpZ2h0TWFzdGVyXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZVVzZXJSaWdodHNcIjtcclxuICAgIFxyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3NcclxuICAgICAgLnNhdmVVc2VyTWVudVJpZ2h0c0NvbnRhY3QocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0VXNlclJpZ2h0cyhVc2VySWQsIG1vZHVsZUlkKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VXZWJNZW51KGUsIG1lbnVJZCwgVXNlcklkLCBtb2R1bGVJZCkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgc3ViTWVudU9iaiA9IHRoaXMubWVudUxpc3QuZmluZChvID0+IG8ubWVudV9pZG4gPT09IG1lbnVJZCk7XHJcbiAgICB0aGlzLnN1Yk1lbnVJZG5zLnB1c2gobWVudUlkKTtcclxuXHJcbiAgICBpZiAoc3ViTWVudU9iai5TdWJNZW51Lmxlbmd0aCA+IDApIHtcclxuICAgICAgc3ViTWVudU9iai5TdWJNZW51LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5zdWJNZW51SWRucy5wdXNoKGVsZW1lbnQubWVudV9pZG4pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1widXNlcklkXCJdID0gVXNlcklkO1xyXG4gICAgcmVxT2JqW1wibWVudUlkblwiXSA9IHRoaXMuc3ViTWVudUlkbnM7XHJcbiAgICByZXFPYmpbXCJzdHRcIl0gPSBlLnRhcmdldC5jaGVja2VkID09IHRydWUgPyBcIjBcIiA6IFwiMVwiO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwic2F2ZVVzZXJSaWdodE1hc3RlclwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVVc2VyUmlnaHRzXCI7XHJcbiAgICBcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5zYXZlVXNlck1lbnVSaWdodHNDb250YWN0KHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJSaWdodHMoVXNlcklkLCBtb2R1bGVJZCk7XHJcbiAgICAgICAgICB0aGlzLnN1Yk1lbnVJZG5zID0gW107XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgb25DaGFuZ2VBbGwoZSwgVXNlcklkLCBtb2R1bGVJZCkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcblxyXG4gICAgdGhpcy5tZW51TGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICB0aGlzLnN1Yk1lbnVJZG5zLnB1c2goZWxlbWVudC5tZW51X2lkbik7XHJcbiAgICAgIGlmIChlbGVtZW50LlN1Yk1lbnUubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGVsZW1lbnQuU3ViTWVudS5mb3JFYWNoKHN1YmVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgdGhpcy5zdWJNZW51SWRucy5wdXNoKHN1YmVsZW1lbnQubWVudV9pZG4pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInVzZXJJZFwiXSA9IFVzZXJJZDtcclxuICAgIHJlcU9ialtcIm1lbnVJZG5cIl0gPSB0aGlzLnN1Yk1lbnVJZG5zO1xyXG4gICAgcmVxT2JqW1wic3R0XCJdID0gZS50YXJnZXQuY2hlY2tlZCA9PSB0cnVlID8gXCIxXCIgOiBcIjBcIjtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcInNhdmVVc2VyUmlnaHRNYXN0ZXJcIjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlVXNlclJpZ2h0c1wiO1xyXG4gICAgXHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jc1xyXG4gICAgICAuc2F2ZVVzZXJNZW51UmlnaHRzQ29udGFjdChyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJSaWdodHMoVXNlcklkLCBtb2R1bGVJZCk7XHJcbiAgICAgICAgICB0aGlzLnN1Yk1lbnVJZG5zID0gW107XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlRnVuKGssIHYsIHR5cGUpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgbGV0IHN1Yk9iaiA9IHt9O1xyXG4gICAgbGV0IHVybCA9IFwic3lzdGVtL2FwcHBhZ2VzXCI7XHJcbiAgICBpZiAodHlwZSA9PSAnZCcpXHJcbiAgICAgIHYgPSB0aGlzLmNtLkZvcm1hdERhdGUodiwgJ2RkLU1NTS15eXl5Jyk7XHJcbiAgICBpZiAodHlwZSA9PSAnbicpXHJcbiAgICAgIHYgPSBcIlwiICsgdiArIFwiXCI7XHJcbiAgICBzdWJPYmpba10gPSB2O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IHRoaXMuYWRkRnJtTm1lO1xyXG4gICAgcmVxT2JqW1wiZGF0YVRybnNEdGxcIl0gPSBzdWJPYmo7XHJcbiAgICBpZiAodGhpcy5hZGRGcm1ObWUgPT0gJ2FkZHRpb25hbER0bE1hc3RlcicpIHtcclxuICAgICAgcmVxT2JqW1wibm1lSWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpOyAvL3RoaXMud2hyVjtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVObWVBdHRyXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hZGRGcm1ObWUgPT0gJ2xlZGdlckFjY0FkZGl0aW5hbERldGFpbHMnKSB7XHJcbiAgICAgIHJlcU9ialtcImxlZGdlcl9pZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7IC8vdGhpcy53aHJWO1xyXG4gICAgICByZXFPYmpbXCJ0eXBlXCJdID0gXCJhY2NfYXR0clwiO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZUxlZGdlckF0dHJcIjtcclxuICAgICAgdXJsID0gXCJhY2NvdW50cy9hY2NMZWRnZXJcIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFkZEZybU5tZSA9PSAnbGVkZ2VyQWRkdGlvbmFsRHRsTWFzdGVyJykge1xyXG4gICAgICByZXFPYmpbXCJsZWRnZXJfaWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpOyAvL3RoaXMud2hyVjtcclxuICAgICAgcmVxT2JqW1widHlwZVwiXSA9IFwiYXR0clwiO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZUxlZGdlckF0dHJcIjtcclxuICAgICAgdXJsID0gXCJhY2NvdW50cy9hY2NMZWRnZXJcIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFkZEZybU5tZSA9PSAnYWNjRGVsZXRlUnVsZXNGb3JtJykge1xyXG4gICAgICByZXFPYmpbXCJqb3VybmFsX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTsgLy90aGlzLndoclY7XHJcbiAgICAgIHJlcU9ialtcInR5cGVcIl0gPSBcImRlbGV0ZV9ydWxlc1wiO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZUpvdXJuYWxBdHRyXCI7XHJcbiAgICAgIHVybCA9IFwiYWNjb3VudHMvYWNjTGVkZ2VyXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hZGRGcm1ObWUgPT0gJ2FjY0pvdXJuYWxBdHRyRm9ybScpIHtcclxuICAgICAgcmVxT2JqW1wiam91cm5hbF9pZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7IC8vdGhpcy53aHJWO1xyXG4gICAgICByZXFPYmpbXCJ0eXBlXCJdID0gXCJhdHRyXCI7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlSm91cm5hbEF0dHJcIjtcclxuICAgICAgdXJsID0gXCJhY2NvdW50cy9hY2NMZWRnZXJcIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFkZEZybU5tZSA9PSAnYWNjTG9hbkF0dHJGb3JtJykge1xyXG4gICAgICByZXFPYmpbXCJqb3VybmFsX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTsgLy90aGlzLndoclY7XHJcbiAgICAgIHJlcU9ialtcInR5cGVcIl0gPSBcImF0dHJcIjtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVKb3VybmFsQXR0clwiO1xyXG4gICAgICB1cmwgPSBcImFjY291bnRzL2FjY0xlZGdlclwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWRkRnJtTm1lID09ICdhY2NKb3VybmFsU2V0dGluZ0Zvcm0nKSB7XHJcbiAgICAgIHJlcU9ialtcImpvdXJuYWxfaWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpOyAvL3RoaXMud2hyVjtcclxuICAgICAgcmVxT2JqW1widHlwZVwiXSA9IFwic2V0dGluZ3NcIjtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVKb3VybmFsQXR0clwiO1xyXG4gICAgICB1cmwgPSBcImFjY291bnRzL2FjY0xlZGdlclwiO1xyXG4gICAgfVxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5sb2FkKHJlcU9iaiwgb3B0aW9ucywgdXJsKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHBhZ2VEaXNwbGF5O1xyXG4gIC8vIEFERCBQQUdFIERJU1BMQVkgQVRUUklCVVRFXHJcbiAgYWRkQXR0cih2LCBhLCBkZikge1xyXG4gICAgaWYgKHYgPT0gdW5kZWZpbmVkKSByZXR1cm47XHJcbiAgICB0aGlzLmFkZFRleHQodiwgYSwgZGYpO1xyXG4gIH1cclxuXHJcbiAgYWRkVGV4dCh2LCBhLCBkZikge1xyXG4gICAgaWYgKGRmLmluZGV4T2YodikgIT0gLTEpIHtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJBbHJlYWR5IEFkZGVkXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiQWRkZWRcIik7XHJcbiAgICAgIGRmLnB1c2godik7XHJcbiAgICAgIC8vIGEuc3BsaWNlKGksIDEpO1xyXG4gICAgICB0aGlzLnNvcnRhYmxlQ29tcG9uZW50LndyaXRlVmFsdWUoZGYpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVtb3ZlKGRmLCBpdCwgaSwgZmYpIHtcclxuICAgIGlmIChkZi5pbmRleE9mKGl0KSAhPSAtMSkge1xyXG4gICAgICBkZi5zcGxpY2UoaSwgMSk7XHJcbiAgICAgIHRoaXMuc3FsQXJyYXlbZmZdLnVuc2hpZnQoeyB2OiBpdCB9KTtcclxuICAgICAgdGhpcy5zb3J0YWJsZUNvbXBvbmVudC53cml0ZVZhbHVlKGRmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNob3dISWRlUGFzcygpIHtcclxuICAgIHRoaXMuZXN0c3QgPSAhdGhpcy5lc3RzdDtcclxuICAgIGlmICh0aGlzLmVzdHN0KSB7XHJcbiAgICAgIHRoaXMuZXZlQyA9IFwiZmEtZXllXCI7XHJcbiAgICAgIHRoaXMuaW5wdXR0eXBlID0gXCJ0ZXh0XCI7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmV2ZUMgPSBcImZhLWV5ZS1zbGFzaFwiO1xyXG4gICAgICB0aGlzLmlucHV0dHlwZSA9IFwicGFzc3dvcmRcIjtcclxuICAgIH1cclxuICB9XHJcbiAgcmVkaWVjdHRva3ljKCkge1xyXG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoWydjb250YWN0L3BlbmRpbmcta3ljL3BlbmRpbmdLeWNGb3JtJ10pO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICBmb3JtYXREYXRlU0NNb250aEJlZm9yZShkYXRlLCBhdHRyKSB7XHJcbiAgICBpZiAoZGF0ZSAhPSB1bmRlZmluZWQgJiYgZGF0ZSAhPSBcIlwiKSB7XHJcblxyXG4gICAgICBsZXQgZCA9IG5ldyBEYXRlKGRhdGUpLFxyXG4gICAgICAgIG1vbnRoID0gJycgKyAoZC5nZXRNb250aCgpKSxcclxuICAgICAgICBkYXkgPSAnJyArIGQuZ2V0RGF0ZSgpLFxyXG4gICAgICAgIHllYXIgPSBkLmdldEZ1bGxZZWFyKCk7XHJcbiAgICAgIGQuc2V0RGF0ZShkLmdldERhdGUoKSAtIDMwKTtcclxuXHJcbiAgICAgIGlmIChtb250aC5sZW5ndGggPCAyKSBtb250aCA9ICcwJyArIG1vbnRoO1xyXG4gICAgICBpZiAoZGF5Lmxlbmd0aCA8IDIpIGRheSA9ICcwJyArIGRheTtcclxuXHJcbiAgICAgIGxldCBuZXdEYXRlID0gW3llYXIsIG1vbnRoLCBkYXldLmpvaW4oJy0nKTtcclxuXHJcbiAgICAgIHRoaXMuZGF0YUR0bFthdHRyXSA9IG5ld0RhdGU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlc2V0ID0gdiA9PiB2LmZvcm0ucmVzZXQoKTtcclxuICBjbG9zZU51bGwgPSAoKSA9PiAodGhpcy50YkNlbGwgPSBudWxsKTtcclxuICBwYWdlQmNrID0gKCkgPT4gd2luZG93Lmhpc3RvcnkuYmFjaygpO1xyXG4gIGNVcmw7XHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnNlbGVjdGVkUGVvcGxlMyA9IFtcclxuICAgICAgeyBrOiBcIjIwNFwiLCB2OiBcIm5pbGFtXCIgfSxcclxuICAgICAgeyBrOiBcIjQ3ODFcIiwgdjogXCJuaWxhbXdlYlwiIH1cclxuICAgIF07XHJcbiAgICBsZXQgbWRsayA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJtZGxLZXlcIikpO1xyXG4gICAgbGV0IG1kbEtleSA9IE9iamVjdC5rZXlzKG1kbGspO1xyXG4gICAgIFxyXG4gICAgdGhpcy5jVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xyXG4gICAgdGhpcy5oZWFkZXIgPSB7XHJcbiAgICAgIGNsaWVudGtleTogQ29va2llLmdldChcIl9ja1wiKSxcclxuICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXHJcbiAgICAgIG1vZHVsZWtleTogbWRsa1t0aGlzLmNVcmwuc3BsaXQoJy8nKVsxXV0sXHJcbiAgICAgIGxvZ2luaWQ6IENvb2tpZS5nZXQoXCJfbG9naWRcIiksXHJcbiAgICAgIHNvdXJjZTogXCJxc1wiXHJcbiAgICB9O1xyXG4gICAgbGV0IGNvbXBhbnlEdGwgPSBKU09OLnBhcnNlKENvb2tpZS5nZXQoJ19hY2NDb21wYW55JykpIHx8IHt9O1xyXG4gICAgbGV0IHllYXJEdGwgPSBKU09OLnBhcnNlKENvb2tpZS5nZXQoJ19hY2N5ZWFyJykpIHx8IHt9O1xyXG4gICAgbGV0IHN1Yl9jb19pZG4gPSAoY29tcGFueUR0bFtcInN1Yl9jb19pZG5cIl0gfHwgJycpLnRvU3RyaW5nKCk7XHJcbiAgICBsZXQgZmluX3llYXJfaWRuID0gKHllYXJEdGxbXCJmaW5feWVhcl9pZG5cIl0gfHwgJycpLnRvU3RyaW5nKCk7XHJcbiAgICBpZiAoc3ViX2NvX2lkbiAhPSAnJykge1xyXG4gICAgICB0aGlzLmhlYWRlclsnc3ViY29taWRuJ10gPSBzdWJfY29faWRuO1xyXG4gICAgICB0aGlzLmhlYWRlclsneWVhcmlkbiddID0gZmluX3llYXJfaWRuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5yb3V0ZS5wYXJhbXMuc3Vic2NyaWJlKChwYXJhbXM6IFBhcmFtcykgPT4ge1xyXG4gICAgICB0aGlzLnN1YkZybVdrID0gbnVsbDtcclxuICAgICAgdGhpcy5zZWFyY2hGID0gbnVsbDtcclxuICAgICAgIFxyXG4gICAgICB0aGlzLm5hdmZvcm0gPSBwYXJhbXNbXCJpdG1mb3JtXCJdO1xyXG4gICAgICB0aGlzLnBhcmFPYmpbXCJmb3JtTm1lXCJdID0gcGFyYW1zW1wiaXRtZm9ybVwiXTtcclxuICAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVLZXlzXCJdID0gcGFyYW1zW1wic3Via1wiXTtcclxuICAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVWbHVzXCJdID0gcGFyYW1zW1wic3VidlwiXTtcclxuICAgICAgaWYgKHBhcmFtc1tcIml0bWZvcm1cIl0gPT0gJ2FjY0RlbGV0ZVJ1bGVzRm9ybScpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHBhcmFtc1tcIml0bWZvcm1cIl07XHJcbiAgICAgICAgbGV0IG1kbCA9IFsnZGVsZXRlX3J1bGUnXTtcclxuICAgICAgICB0aGlzLmdldEpvdXJuYWxBdHRyKHRoaXMuYWRkRnJtTm1lLCBtZGwsICdkZWxldGVfcnVsZXMnKTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJhbXNbXCJpdG1mb3JtXCJdID09ICdhY2NKb3VybmFsQXR0ckZvcm0nKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSBwYXJhbXNbXCJpdG1mb3JtXCJdO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2pubGFjY19hdHRyJ107XHJcbiAgICAgICAgdGhpcy5nZXRKb3VybmFsQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsLCAnYXR0cicpO1xyXG4gICAgICB9IGVsc2UgaWYgKHBhcmFtc1tcIml0bWZvcm1cIl0gPT0gJ2FjY0xvYW5BdHRyRm9ybScpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHBhcmFtc1tcIml0bWZvcm1cIl07XHJcbiAgICAgICAgbGV0IG1kbCA9IFsnbG9hbiddO1xyXG4gICAgICAgIHRoaXMuZ2V0Sm91cm5hbEF0dHIodGhpcy5hZGRGcm1ObWUsIG1kbCwgJ2F0dHInKTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJhbXNbXCJpdG1mb3JtXCJdID09IFwiYWNjSm91cm5hbFNldHRpbmdGb3JtXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHBhcmFtc1tcIml0bWZvcm1cIl07XHJcbiAgICAgICAgbGV0IG1kbCA9IFsnam5sX3NldHQnXTtcclxuICAgICAgICB0aGlzLmdldEpvdXJuYWxBdHRyKHRoaXMuYWRkRnJtTm1lLCBtZGwsICdzZXR0aW5ncycpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZ2V0UGFnZURlZmluYXRpb24oKTtcclxuICAgICAgICB0aGlzLmNMaW5rID0gMDtcclxuICAgICAgICB0aGlzLnAgPSAxO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHByZXZlbnRTcGFjZShldmVudDogS2V5Ym9hcmRFdmVudCwgZmllbGQpOiB2b2lkIHtcclxuICAgIGlmIChmaWVsZC5mb3JtX2ZpZWxkID09IFwiZW1sXCIgfHwgZmllbGQuZm9ybV9maWVsZCA9PT0gJ21ibCcpIHtcclxuICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdTcGFjZScpIHtcclxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZU51bWJlcihldmVudDogRXZlbnQsZmllbGQpOiB2b2lkIHtcclxuICAgIGlmKGZpZWxkLmZvcm1fZmllbGQgPT09ICdtYmwnKSB7XHJcbiAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgIGNvbnN0IHZhbHVlID0gaW5wdXQudmFsdWU7XHJcbiAgXHJcbiAgICAgIC8vIENoZWNrIGlmIHRoZSB2YWx1ZSBpcyBub3QgbnVtZXJpY1xyXG4gICAgICBpZiAoL1teMC05XS8udGVzdCh2YWx1ZSkpIHtcclxuICAgICAgIFxyXG4gICAgICAgIC8vIFJlcGxhY2Ugbm9uLW51bWVyaWMgY2hhcmFjdGVyc1xyXG4gICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUucmVwbGFjZSgvW14wLTldL2csICcnKTtcclxuICAgICAgICBmaWVsZC5kZWZhdWx0X3ZhbHVlID0gaW5wdXQudmFsdWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XHJcbiAgICAgIGZpZWxkLmRlZmF1bHRfdmFsdWUgPSBpbnB1dC52YWx1ZTtcclxuICAgIH1cclxuICAgXHJcbiAgfVxyXG4gIGlucHV0RmllbGRDaGFuZ2UoJGV2ZW50LCBmaWVsZCkge1xyXG4gICAgaWYgKGZpZWxkLmZvcm1fZmllbGQgPT0gXCJlbWxcIikge1xyXG4gICAgICBpZihmaWVsZC5kZWZhdWx0X3ZhbHVlICYmIGZpZWxkLmRlZmF1bHRfdmFsdWUgIT0gJycpIHtcclxuICAgICAgICBsZXQgcmVxT2JqPSB7fSBcclxuICAgICAgICByZXFPYmpbXCJlbWFpbElkXCJdID0gZmllbGQuZGVmYXVsdF92YWx1ZVxyXG4gICAgICAgIGlmKHRoaXMuYnRuTmFtZSAgPT0gJ0VkaXQnKSB7XHJcbiAgICAgICAgICByZXFPYmpbXCJubWVJZG5cIl0gPSB0aGlzLnBpZFxyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHJlcU9ialtcIm5tZUlkblwiXSA9IFwiXCJcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgICBtZXRob2Q6IFwiaXNFbWFpbEV4aXN0XCJcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2NvbnRhY3QvbG9hZENvbnRhY3QnKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZihyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgICAgaWYocmVzcG9uc2UubWVzc2FnZSA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICBmaWVsZC5kZWZhdWx0X3ZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KS5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBcclxuICAgIH1cclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cIm10XCI+XHJcbiAgPGRpdiBjbGFzcz1cInBhbmVsIHBhbmVsLWRlZmF1bHRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkaW5nXCI+XHJcbiAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1jaGV2cm9uLWxlZnQgY3BcIiAoY2xpY2spPVwicGFnZUJjaygpO1wiPiBCYWNrPC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyB7e3BhZ2VJbmZvPy50aXRsZX19XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjb250YWN0TmFtZT09JydcIiBjbGFzcz1cImYtMTJcIj4oe3tjRHQgfCBkYXRlOidtZWRpdW0nfX0pPC9zcGFuPlxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29udGFjdE5hbWUhPScnXCIgY2xhc3M9XCJmLTEyXCI+Jm5ic3A7Zm9yIDxiPiB7e2NvbnRhY3ROYW1lfX08L2I+IDwvc3Bhbj5cclxuICAgICAgPC9oMz5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJhZGRCdG5cIiBjbGFzcz1cImJ0biBidG4taW5mbyBwdWxsLXJpZ2h0XCIgKm5nSWY9XCJhZGROZXc/LmlzX2NvbXB1bHNvcnkgPT0gMVwiXHJcbiAgICAgICAgYXBwQXBwTm9EYmxDbGljayAoY2xpY2spPVwidXNlckFjdGlvbignJywgJ2FkZCcsICcnLCAnJyk7Zi5yZXNldCgpO1wiPnt7YWRkTmV3Py5mb3JtX2ZpZWxkX3RpdGxlfX08L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiICpuZ0lmPVwibmF2aWdhdGlvbi5sZW5ndGggPiAwXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0LWdyb3VwIGJvcmRlci1ib3R0b21cIj5cclxuICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIGNsYXNzPVwibGlzdC1ncm91cC1pdGVtXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnIDppID09IGNMaW5rfVwiXHJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG5hdiBvZiBuYXZpZ2F0aW9uO2xldCBpPWluZGV4XCIgKGNsaWNrKT1cIm5hdmlnYXRpb25GdW4obmF2LGkpO1wiPnt7bmF2LmZvcm1fZmllbGRfdGl0bGV9fTwvYT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBbbmdDbGFzc109XCJuYXZpZ2F0aW9uLmxlbmd0aCA+IDAgPyAnY29sLW1kLTEwJyA6ICdjb2wtbWQtMTInXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XHJcbiAgICAgICAgPCEtLSBwcmltZXJ5IGZvcm0gLS0+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIiBzdHlsZT1cIm92ZXJmbG93LXg6IHNjcm9sbFwiXHJcbiAgICAgICAgICAqbmdJZj1cIm5hdmZvcm0gIT0gJ2FkZHRpb25hbER0bE1hc3RlcicgJiYgbmF2Zm9ybSAhPSAnZG9jdW1lbnRVcGxvYWRNYXN0ZXInICAmJiBuYXZmb3JtICE9ICdtZW51QWNjZXNzTWFzdGVyJyAgJiYgbmF2Zm9ybSAhPSAndGVybVVzZXJBc3NpZ25Gb3JtJyAmJiBuYXZmb3JtICE9ICdzZXRQYXNzd29yZEZvcm0nICYmIG5hdmZvcm0hPSdsZWRnZXJCYW5rRGV0YWlscycgJiYgbmF2Zm9ybSE9J2xlZGdlckFjY0FkZGl0aW5hbERldGFpbHMnICYmIG5hdmZvcm0hPSdsZWRnZXJBZGR0aW9uYWxEdGxNYXN0ZXInICYmIG5hdmZvcm0hPSdhY2NEZWxldGVSdWxlc0Zvcm0nICYmIG5hdmZvcm0hPSdhY2NKb3VybmFsQXR0ckZvcm0nICYmIG5hdmZvcm0hPSdhY2NMb2FuQXR0ckZvcm0nICYmIG5hdmZvcm0hPSdhY2NKb3VybmFsU2V0dGluZ0Zvcm0nICYmIG5hdmZvcm0hPSd3ZWJNZW51QWNjZXNzTWFzdGVyJyBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZSBwdWxsLWxlZnRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJkZGxQYWdlc2l6ZVwiPlBhZ2UgU2l6ZSAmbmJzcDsgJm5ic3A7PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJwYWdlU2l6ZVwiIFsobmdNb2RlbCldPVwicGFnZVNpemVcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZShwYWdlU2l6ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiQWxsXCI+QWxsPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjEwXCI+MTA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiMjVcIj4yNTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCI1MFwiPjUwPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjEwMFwiPjEwMDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgc3R5bGU9XCJwYWRkaW5nOiA0cHggMTVweCA0cHggMjBweDttYXJnaW4tbGVmdDogMTBweDtcIlxyXG4gICAgICAgICAgICAgICAgZGF0YS10b2dnbGU9XCJ0b29sdGlwXCIgZGF0YS1wbGFjZW1lbnQ9XCJyaWdodFwiIHRpdGxlPVwiUmVmcmVzaFwiIChjbGljayk9XCJuZ09uSW5pdCgpO1wiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS1yZWZyZXNoXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS02XCI+XHJcbiAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZSBwdWxsLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZXhhbXBsZUlucHV0TmFtZTJcIj5TZWFyY2ggJm5ic3A7Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImV4YW1wbGVJbnB1dE5hbWUyXCIgbmFtZT1cInNjaHR4dFwiIFsobmdNb2RlbCldPVwic2VhcmNoRlwiIC8+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiIFtuZ0NsYXNzXT1cInsndGFibGUtcmVzcG9uc2l2ZScgOm5hdmlnYXRpb24ubGVuZ3RoID4gMH1cIj5cclxuICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgdGFibGUtYm9yZGVyZWQgdGFibGUtaG92ZXIgdGFibGUtaG92ZXItY2VsbHNcIj5cclxuICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5TUiBObzwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb248L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGggKm5nRm9yPVwibGV0IHRiaCBvZiB0YmxIOyBsZXQgaSA9IGluZGV4XCIgKGNsaWNrKT1cInNldE9yZGVyKHRiaCxpKVwiPnt7dGJsRGVzY1t0YmhdfX1cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaGlkZGVuXT1cInJldmVyc2VcIiAqbmdJZj1cInNob3dhcnIgPT09IGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctZG93blwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCIhcmV2ZXJzZVwiICpuZ0lmPVwic2hvd2FyciA9PT0gaVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1hcnJvdy11cFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkYXRhbGlzdCB8IHNlYXJjaFBpcGU6c2VhcmNoRiB8IG9yZGVyQnk6IG9yZGVyOnJldmVyc2UgfCBwYWdpbmF0ZTogeyBpdGVtc1BlclBhZ2U6IHBhZ2VTaXplLCBjdXJyZW50UGFnZTogcCB9OyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ciBbbmdDbGFzc109XCJ7J0luYWN0aXZlJzpkYXRhLnN0dD09J0luQWN0aXZlJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+e3tpICsgMX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYnRuLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCIjXCIgZGF0YS10b2dnbGU9XCJkcm9wZG93blwiIGNsYXNzPVwiYnRuIGJ0bi1pbmZvIGRyb3Bkb3duLXRvZ2dsZVwiPkFjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2FyZXRcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwiZHJvcGRvd24tbWVudVwiIHJvbGU9XCJtZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBhY3Rpb24gb2YgYWN0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6dm9pZCgwKVwiIChjbGljayk9XCJ1c2VyQWN0aW9uKGRhdGEsYWN0aW9uLmZvcm1fZmllbGQsYWN0aW9uLCBpKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3thY3Rpb24uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0Zvcj1cImxldCB0Ymggb2YgdGJsSDsgbGV0IGk9aW5kZXhcIiBvbi1tb3VzZW92ZXI9XCJob3ZlcmVkST1pXCIgb24tbW91c2VsZWF2ZT1cImhvdmVyZWRJPS0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwibWF4LXdpZHRoOiAzMDBweDsgd29yZC1icmVhazogYnJlYWstd29yZDtcIj57e2RhdGFbdGJoXX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwib25Ib3ZlckRpdlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaT09aG92ZXJlZEkgJiYgcGFnZV90eXAhPSdqc29uRm9ybScgJiYgbmF2Zm9ybSE9J2J1eWVydGVybXNNYXN0ZXInXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKGNsaWNrKT1cImVkaXRDZWxsKGRhdGEsdGJoKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtcGVuY2lsXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPHBhZ2luYXRpb24tY29udHJvbHMgKHBhZ2VDaGFuZ2UpPVwicCA9ICRldmVudFwiIGNsYXNzPVwicHVsbC1yaWdodFwiPjwvcGFnaW5hdGlvbi1jb250cm9scz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8IS0tIGN1c3RvbSBmb3JtIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCJcclxuICAgICAgICAgICpuZ0lmPVwibmF2Zm9ybSA9PSAnYWRkdGlvbmFsRHRsTWFzdGVyJyB8fCBuYXZmb3JtID09ICdsZWRnZXJBZGR0aW9uYWxEdGxNYXN0ZXInIHx8IG5hdmZvcm0gPT0gJ2xlZGdlckFjY0FkZGl0aW5hbERldGFpbHMnIHx8IG5hdmZvcm09PSdhY2NEZWxldGVSdWxlc0Zvcm0nIHx8IG5hdmZvcm09PSdhY2NKb3VybmFsQXR0ckZvcm0nIHx8IG5hdmZvcm09PSdhY2NMb2FuQXR0ckZvcm0nIHx8IG5hdmZvcm09PSdhY2NKb3VybmFsU2V0dGluZ0Zvcm0nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdGb3I9XCJsZXQgdWdsZCBvZiB1aUdycExpc3RcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWRpbmdDbHNcIj57e3VpR3JwTGlzdER0bFt1Z2xkXX19PC9wPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiICpuZ0Zvcj1cImxldCBmb3JtRiBvZiB1aUdycExpc3REdGxbdWdsZCsnI1QnXTtsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogNDVweCAhaW1wb3J0YW50O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNCBjb250cm9sLWxhYmVsXCI+e3t1aUdycExpc3REdGxbdWdsZCsnI0QnXVtpXX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCIgKm5nSWY9XCJmb3JtRiA9PSAnbidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3t1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCIgWyhuZ01vZGVsKV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2F2ZUZ1bih1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSxkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXSxmb3JtRilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidWlHcnBMaXN0RHRsW3VnbGQrJyNFJ11baV0gPT0gMCA/IGZhbHNlIDogdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCIgKm5nSWY9XCJmb3JtRiA9PSAndCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInt7dWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiIFsobmdNb2RlbCldPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0sZm9ybUYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVpR3JwTGlzdER0bFt1Z2xkKycjRSddW2ldID09IDAgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDwhLS0gYWRkZWQgZm9yIHRlc3Rpbmcgb25seSAtLT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCIgKm5nSWY9XCJmb3JtRiA9PSAnYydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzYXZlRnVuKHVpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldLGRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dLGZvcm1GKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBrZXkgb2YgYXR0ckNMaXN0RHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldICsnI0QnXTtsZXQgaj1pbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7e2F0dHJDTGlzdER0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSArJyNWJ11bal19fVwiPnt7a2V5fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8cCAqbmdGb3I9XCJsZXQgYSBvZiBhdHRyQ0xpc3REdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0gKycjViddXCI+e3thIHxqc29ufX06XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7YXR0ckNMaXN0RHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldICsnI1YnXSB8anNvbn19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3A+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldfX1cIiBbdmFsdWVdPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCIgKGJsdXIpPVwic2F2ZUZ1bih1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSxkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidWlHcnBMaXN0RHRsW3VnbGQrJyNFJ11baV0gPT0gMCA/IGZhbHNlIDogdHJ1ZVwiPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiICpuZ0lmPVwiZm9ybUYgPT0gJ3EnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3t1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2F2ZUZ1bih1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSxkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXSxmb3JtRilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQga2V5IG9mIGF0dHJRTGlzdER0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSArJyNEJ107bGV0IGo9aW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3thdHRyUUxpc3REdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0gKycjRCddW2pdfX1cIj57e2tleX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHAgKm5nRm9yPVwibGV0IGEgb2YgYXR0ckNMaXN0RHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldICsnI1YnXVwiPnt7YSB8anNvbn19OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2F0dHJDTGlzdER0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSArJyNWJ10gfGpzb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3t1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXX19XCIgW3ZhbHVlXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiIChibHVyKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVpR3JwTGlzdER0bFt1Z2xkKycjRSddW2ldID09IDAgPyBmYWxzZSA6IHRydWVcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCIgKm5nSWY9XCJmb3JtRiA9PSAnc2EnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IHN0eWxlPVwiei1pbmRleDogNTtcIiBbb3B0aW9uc109XCJzcWxBcnJheVt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIiAjc2ZpPVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIiBuYW1lPVwie3t1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0sZm9ybUYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGZpbHRlcklucHV0Q2hhbmdlZCk9XCJsb2FkSm5sU3VnZ2RhdGEoJGV2ZW50LHVpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldLHVpR3JwTGlzdER0bFt1Z2xkKycjTSddW2ldKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiICpuZ0lmPVwiZm9ybUYgPT0gJ2QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImRhdGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0sZm9ybUYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCIgWyhuZ01vZGVsKV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1aUdycExpc3REdGxbdWdsZCsnI0UnXVtpXSA9PSAwID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIiAqbmdJZj1cImZvcm1GID09ICdlJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJlbWFpbFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInt7dWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2F2ZUZ1bih1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSxkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXSxmb3JtRilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIiBbKG5nTW9kZWwpXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwic2F2ZUZ1bih1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSxkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXSxmb3JtRilcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidWlHcnBMaXN0RHRsW3VnbGQrJyNFJ11baV0gPT0gMCA/IGZhbHNlIDogdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5IGZvcm1cIlxyXG4gICAgICAgICAgKm5nSWY9XCJuYXZmb3JtID09ICdkb2N1bWVudFVwbG9hZE1hc3RlcicgICYmIG5hdmZvcm0gIT0gJ21lbnVBY2Nlc3NNYXN0ZXInICAmJiBuYXZmb3JtICE9ICd0ZXJtVXNlckFzc2lnbkZvcm0nICYmIG5hdmZvcm0gIT0gJ3NldFBhc3N3b3JkRm9ybSdcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGZvcm0gYWN0aW9uPVwiI1wiIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsIGZvcm0tYm9yZGVyZWRcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ib2R5XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJkb2N0eXBlXCIgWyhuZ01vZGVsKV09XCJkb2N0eXBlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZG9jcyBvZiBkb2N1bWVudFVwbG9hZExpc3RcIiB2YWx1ZT1cInt7ZG9jc319XCI+e3tkb2N1bWVudFVwbG9hZER0bFtkb2NzXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVpbnB1dCBmaWxlaW5wdXQtbmV3XCIgZGF0YS1wcm92aWRlcz1cImZpbGVpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuIGdyZWVuIGJ0bi1maWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gVXBsb2FkIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBuYW1lPVwiLi4uXCIgKGNoYW5nZSk9XCJ1cGxvYWREb2NzKCRldmVudClcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZWlucHV0LWZpbGVuYW1lXCI+IDwvc3Bhbj4gJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiY2xvc2UgZmlsZWlucHV0LWV4aXN0c1wiIGRhdGEtZGlzbWlzcz1cImZpbGVpbnB1dFwiPiA8L2E+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cInJvdXRoZXJEb2MhPScnXCIgc3R5bGU9XCJjdXJzb3I6cG9pbnRlciBcIiAoY2xpY2spPVwicmVkaWVjdHRva3ljKClcIj48Yj5cclxuICAgICAgICAgICAgICAgICAgICAgIDw8IGJhY2s8L2I+PC9hPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkaW5nQ2xzXCI+RXhpc3RpbmcgRG9jdW1lbnRzPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInN1YkRpc3BsYXlUYWJsZVwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG9jcyBvZiBkb2N1bWVudFVwbG9hZExpc3Q7bGV0IGkgPSBpbmRleCBcIj5cclxuICAgICAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiZGF0YUR0bFtkb2NzXSE9dW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwid2lkdGg6IDEwJVwiPnt7ZG9jdW1lbnRVcGxvYWREdGxbZG9jc119fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPVwid2lkdGg6IDkwJTt0ZXh0LWFsaWduOiBsZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBkb2NkdGwgb2YgZGF0YUR0bFtkb2NzXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZWlucHV0IGZpbGVpbnB1dC1uZXdcIiAqbmdJZj1cImRvY2VkaXRBY3Rpb25cIiBkYXRhLXByb3ZpZGVzPVwiZmlsZWlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJidG4tZmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lZGl0XCIgdG9vbHRpcD1cIkVkaXQgRG9jdW1lbnRcIiBzdHlsZT1cImZvbnQtc2l6ZToyMHB4XCI+IDwvaT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBuYW1lPVwiLi4uXCIgKGNoYW5nZSk9XCJFZGl0VXBsb2FkRG9jcyhkb2NkdGwsJGV2ZW50KVwiPiA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmaWxlaW5wdXQtZmlsZW5hbWVcIj4gPC9zcGFuPiAmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJjbG9zZSBmaWxlaW5wdXQtZXhpc3RzXCIgZGF0YS1kaXNtaXNzPVwiZmlsZWlucHV0XCI+IDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGE+PGkgY2xhc3M9XCJmYSBmYS10cmFzaC1vXCIgKm5nSWY9XCJkb2NkZWxldGVBY3Rpb25cIiAoY2xpY2spPVwiQ29uZmlybWRlbGV0ZURvYyhkb2NkdGwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOjIwcHg7Y3Vyc29yOiBwb2ludGVyXCI+IDwvaT4gPC9hPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSAoY2xpY2spPVwib3BlbmRvY3MoZG9jZHRsKVwiPiA8aSBjbGFzcz1cImZhIGZhLWZpbGUtb1wiIHN0eWxlPVwiZm9udC1zaXplOjIwcHhcIj4gPC9pPiA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICZuYnNwOyZuYnNwO3wmbmJzcDsmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCJcclxuICAgICAgICAgICpuZ0lmPVwibmF2Zm9ybSAhPSAnZG9jdW1lbnRVcGxvYWRNYXN0ZXInICYmIG5hdmZvcm0gPT0gJ21lbnVBY2Nlc3NNYXN0ZXInICAmJiBuYXZmb3JtICE9ICd0ZXJtVXNlckFzc2lnbkZvcm0nICYmIG5hdmZvcm0gIT0gJ3NldFBhc3N3b3JkRm9ybScgXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj5BcHBsaWNhdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhcHBsaWNhdGlvblwiIG5hbWU9XCJVc2VyXCIgKGNoYW5nZSk9XCJsb2FkVXNyTWRsKGFwcGxpY2F0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBhcHAgb2YgYXBwbGljYXRpb25MaXN0XCIgdmFsdWU9XCJ7e2FwcC5rfX1cIj57e2FwcC52fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCIgKm5nSWY9XCJ1c2VyRHRscy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj5Vc2VyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cIlVzZXJcIiBuYW1lPVwiVXNlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb3Ygb2YgdXNlckR0bHNcIiB2YWx1ZT1cInt7bG92LnVzZXJfaWRufX1cIj57e2xvdi51c2VybmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiICpuZ0lmPVwibW9kdWxlRHRscy5sZW5ndGg+MCAmJiB1c2VyRHRscy5sZW5ndGggPjAgXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMnB4O1wiPk1vZHVsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJNb2R1bGVcIiBuYW1lPVwiTW9kdWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGxvdiBvZiBtb2R1bGVEdGxzXCIgdmFsdWU9XCJ7e2xvdi5tb2R1bGVfaWRufX1cIj57e2xvdi5wcmludH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImFkZEJ0blwiIGNsYXNzPVwiYnRuIGJ0bi1pbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyM3B4O1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0VXNlclJpZ2h0cyhVc2VyLE1vZHVsZSlcIj5Bc3NpZ25cclxuICAgICAgICAgICAgICAgIFJpZ2h0c1xyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDAgMTBweDtcIiAqbmdJZj1cIm1lbnVMaXN0Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTU7bWFyZ2luLXRvcDogMzBweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7IGZvbnQtc2l6ZTogMTRweDtcIj5Vc2VyczwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNoa0FsbFwiIHN0eWxlPVwibWFyZ2luOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzd2l0Y2hcIiBuYW1lPVwiY2hrQWxsXCIgaWQ9XCJjaGtBbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlQWxsKCRldmVudCxVc2VyLE1vZHVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCIoZmFsc2UgIT09ICh1c2VyUmlnaHRzTWVudUxpc3QubGVuZ3RoID09IChtZW51TGlzdC5sZW5ndGggKyB0b3RNZW51KSkgPyAnY2hlY2tlZCcgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTQgY29udHJvbC1sYWJlbCB0ZXh0LWxlZnRcIiBzdHlsZT1cInBhZGRpbmctdG9wOiA4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1wiPkFsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0Zvcj1cImxldCBtZGwgb2YgbWVudUxpc3Q7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInN3aXRjaFwiIG5hbWU9XCJjaGtNZW51XCIgaWQ9XCJjaGtNZW51e3ttZGwubWVudV9pZG59fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlTWVudSgkZXZlbnQsbWRsLm1lbnVfaWRuLFVzZXIsTW9kdWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCIoZmFsc2UgIT09IHVzZXJSaWdodHNNZW51TGlzdC5pbmNsdWRlcyhtZGw/Lm1lbnVfaWRuKSA/ICdjaGVja2VkJyA6ICcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbCB0ZXh0LWxlZnRcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAzcHg7XCI+e3ttZGwubWVudX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nSWY9XCJtZGwuU3ViTWVudS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCBzbWRsIG9mIG1kbC5TdWJNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MTBweDtwYWRkaW5nLWxlZnQ6IDYwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzd2l0Y2hcIiBuYW1lPVwiY2hrU3ViTWVudVwiIGlkPVwiY2hrU3ViTWVudXt7c21kbC5tZW51X2lkbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVN1Yk1lbnUoJGV2ZW50LHNtZGwubWVudV9pZG4sbWRsLm1lbnVfaWRuLFVzZXIsTW9kdWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIiggZmFsc2UgIT09IHVzZXJSaWdodHNNZW51TGlzdC5pbmNsdWRlcyhzbWRsPy5tZW51X2lkbikgPyAnY2hlY2tlZCcgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTQgY29udHJvbC1sYWJlbCB0ZXh0LWxlZnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwicGFkZGluZy10b3A6IDhweDsgZm9udC13ZWlnaHQ6IDEwMDtwYWRkaW5nLWxlZnQ6IDQwcHg7XCI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7e3tzbWRsLmhkcn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIiAqbmdJZj1cIm5hdmZvcm0gPT0gJ3dlYk1lbnVBY2Nlc3NNYXN0ZXInXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj5BcHBsaWNhdGlvbjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhcHBsaWNhdGlvblwiIG5hbWU9XCJVc2VyXCIgKGNoYW5nZSk9XCJsb2FkVXNyTWRsKGFwcGxpY2F0aW9uKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBhcHAgb2YgYXBwbGljYXRpb25MaXN0XCIgdmFsdWU9XCJ7e2FwcC5rfX1cIj57e2FwcC52fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCIgKm5nSWY9XCJ1c2VyRHRscy5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj5Vc2VyPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cIlVzZXJcIiBuYW1lPVwiVXNlclwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb3Ygb2YgdXNlckR0bHNcIiB2YWx1ZT1cInt7bG92LnVzZXJfaWRufX1cIj57e2xvdi51c2VybmFtZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiICpuZ0lmPVwibW9kdWxlRHRscy5sZW5ndGg+MCAmJiB1c2VyRHRscy5sZW5ndGggPjAgXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctbGVmdDogMnB4O1wiPk1vZHVsZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJNb2R1bGVcIiBuYW1lPVwiTW9kdWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGxvdiBvZiBtb2R1bGVEdGxzXCIgdmFsdWU9XCJ7e2xvdi5tb2R1bGVfaWRufX1cIj57e2xvdi5wcmludH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZD1cImFkZEJ0blwiIGNsYXNzPVwiYnRuIGJ0bi1pbmZvXCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAyM3B4O1wiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiZ2V0VXNlclJpZ2h0cyhVc2VyLE1vZHVsZSlcIj5Bc3NpZ25cclxuICAgICAgICAgICAgICAgIFJpZ2h0c1xyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBzdHlsZT1cInBhZGRpbmc6IDAgMTBweDtcIiAqbmdJZj1cIm1lbnVMaXN0Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJib3JkZXI6MXB4IHNvbGlkICNlNWU1ZTU7bWFyZ2luLXRvcDogMzBweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCIgc3R5bGU9XCJtYXJnaW4tYm90dG9tOiAyNXB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiIHN0eWxlPVwicGFkZGluZzogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cInBhbmVsLXRpdGxlXCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7IGZvbnQtc2l6ZTogMTRweDtcIj5Vc2VyczwvaDM+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNoa0FsbFwiIHN0eWxlPVwibWFyZ2luOiAwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiIHN0eWxlPVwicGFkZGluZzogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzd2l0Y2hcIiBuYW1lPVwiY2hrQWxsXCIgaWQ9XCJjaGtBbGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlQWxsKCRldmVudCxVc2VyLE1vZHVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCIoZmFsc2UgIT09ICh1c2VyUmlnaHRzTWVudUxpc3QubGVuZ3RoID09IChtZW51TGlzdC5sZW5ndGggKyB0b3RNZW51KSkgPyAnY2hlY2tlZCcgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTQgY29udHJvbC1sYWJlbCB0ZXh0LWxlZnRcIiBzdHlsZT1cInBhZGRpbmctdG9wOiA4cHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiA0MHB4O1wiPkFsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0Zvcj1cImxldCBtZGwgb2YgbWVudUxpc3Q7bGV0IGk9aW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInN3aXRjaFwiIG5hbWU9XCJjaGtNZW51XCIgaWQ9XCJjaGtNZW51e3ttZGwubWVudV9pZG59fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlV2ViTWVudSgkZXZlbnQsbWRsLm1lbnVfaWRuLFVzZXIsTW9kdWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCIoZmFsc2UgPT0gdXNlclJpZ2h0c01lbnVMaXN0LmluY2x1ZGVzKG1kbD8ubWVudV9pZG4pID8gJ2NoZWNrZWQnIDogJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsIHRleHQtbGVmdFwiIHN0eWxlPVwicGFkZGluZy10b3A6IDNweDtcIj57e21kbC5tZW51fX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdJZj1cIm1kbC5TdWJNZW51Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nRm9yPVwibGV0IHNtZGwgb2YgbWRsLlN1Yk1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDoxMHB4O3BhZGRpbmctbGVmdDogNjBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiY2hlY2tib3hcIiBjbGFzcz1cInN3aXRjaFwiIG5hbWU9XCJjaGtTdWJNZW51XCIgaWQ9XCJjaGtTdWJNZW51e3tzbWRsLm1lbnVfaWRufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uQ2hhbmdlV2ViU3ViTWVudSgkZXZlbnQsc21kbC5tZW51X2lkbixtZGwubWVudV9pZG4sVXNlcixNb2R1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiKCBmYWxzZSA9PSB1c2VyUmlnaHRzTWVudUxpc3QuaW5jbHVkZXMoc21kbD8ubWVudV9pZG4pID8gJ2NoZWNrZWQnIDogJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC00IGNvbnRyb2wtbGFiZWwgdGV4dC1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctdG9wOiA4cHg7IGZvbnQtd2VpZ2h0OiAxMDA7cGFkZGluZy1sZWZ0OiA0MHB4O1wiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3t7c21kbC5oZHJ9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIiBzdHlsZT1cImJhY2tncm91bmQ6ICNmZmY7bWluLWhlaWdodDogNTUwcHg7XCJcclxuICAgICAgICAgICpuZ0lmPVwibmF2Zm9ybSAhPSAnYWRkdGlvbmFsRHRsTWFzdGVyJyAmJiAgbmF2Zm9ybSAhPSAnZG9jdW1lbnRVcGxvYWRNYXN0ZXInICYmIG5hdmZvcm0gIT0gJ21lbnVBY2Nlc3NNYXN0ZXInICYmIG5hdmZvcm0gPT0gJ3Rlcm1Vc2VyQXNzaWduRm9ybScgJiYgbmF2Zm9ybSAhPSAnc2V0UGFzc3dvcmRGb3JtJyAgXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4tdG9wOiAxMHB4O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiPlRlcm1zPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDg1cHg7XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj5Vc2VyczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0ZXJtIG9mIHRlcm1zTGlzdDsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwie3t0ZXJtLmJ1eWVyX3Rlcm1zX2lkbn19XCIgY2xhc3M9XCJjb250cm9sLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+e3t0ZXJtLmRzY319PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiICpuZ0lmPVwidGVybS51c2VySWRuTGlzdCAhPSB1bmRlZmluZWRcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1zZWxlY3QgW2l0ZW1zXT1cImFwcGxVc2VyTGlzdFwiIFttdWx0aXBsZV09XCJ0cnVlXCIgW2FkZFRhZ109XCJhZGRUYWdcIiAoY2hhbmdlKT1cIm9uY2hhbmVWYWxzKG51bGwsdGVybS5idXllcl90ZXJtc19pZG4sdGVybS51c2VySWRuTGlzdClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgYmluZExhYmVsPVwidlwiIGJpbmRWYWx1ZT1cImtcIiBuYW1lPVwie3t0ZXJtID8uYnV5ZXJfdGVybXNfaWRufX1cIiBbKG5nTW9kZWwpXT1cInRlcm0udXNlcklkbkxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBwbGFjZWhvbGRlcj1cIlNlbGVjdCB1c2VyXCIgW29wdGlvbnNdPVwidGVybS5UZXJtVXNlckxpc3RcIiBbKG5nTW9kZWwpXT1cInRlcm0udXNlcklkbkxpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGRlc2VsZWN0ZWQpPVwib25jaGFuZ2VVc2VyTGlzdCgkZXZlbnQsdGVybSwnZGVsZXRlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkKT1cIm9uY2hhbmdlVXNlckxpc3QoJGV2ZW50LHRlcm0sJ2FkZCcpXCIgbmFtZT1cInN0YXR1c1wiIFttdWx0aXBsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFthbGxvd0NsZWFyXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3B0aW9uVGVtcGxhdGUgbGV0LW9wdGlvbj1cIm9wdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFtZmFtZmFtLWZsYWdzIHt7b3B0aW9uPy52YWx1ZX19XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiIHN0eWxlPVwiYmFja2dyb3VuZDogI2ZmZjttaW4taGVpZ2h0OiA1NTBweDtcIlxyXG4gICAgICAgICAgKm5nSWY9XCJuYXZmb3JtICE9ICdhZGR0aW9uYWxEdGxNYXN0ZXInICYmICBuYXZmb3JtICE9ICdkb2N1bWVudFVwbG9hZE1hc3RlcicgJiYgbmF2Zm9ybSAhPSAnbWVudUFjY2Vzc01hc3RlcicgJiYgbmF2Zm9ybSAhPSAndGVybVVzZXJBc3NpZ25Gb3JtJyAmJiBuYXZmb3JtID09ICdzZXRQYXNzd29yZEZvcm0nIFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ0Nsc1wiPkNoYW5nZSBVc2VyIFBhc3N3b3JkPC9wPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmc6IDhweDtcIj5Vc2VybmFtZTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4NXB4O1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+UGFzc3dvcmQ8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdXNlciBvZiB1c2VyRGV0YWlsczsgbGV0IGk9aW5kZXg7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7Zm9udC13ZWlnaHQ6IG5vcm1hbDtcIj57e3VzZXI/LnVzZXJuYW1lfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC02XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiICBbKG5nTW9kZWwpXT1cInVzZXIucGFzc3dvcmRcIiBbdmFsdWVdPVwidXNlcj8ucGFzc3dvcmRcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8IS0tIChibHVyKT1cImNoYW5nZVBzd2QoJGV2ZW50LHVzZXIudXNlcklkbilcIiAtLT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwiY2hhbmdlUGFzc3dvcmQodXNlcilcIj5zYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwhLS0gPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwic2F2ZUFwcFVzZXJ0ZXJtcyhhcHBsVXNyTHN0KVwiPnNhdmU8L2J1dHRvbj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIiBzdHlsZT1cImJhY2tncm91bmQ6ICNmZmY7bWluLWhlaWdodDogNTUwcHg7XCIgKm5nSWY9XCJuYXZmb3JtPT0nbGVkZ2VyQmFua0RldGFpbHMnXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiBzdHlsZT1cIm1hcmdpbjo1cHhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbFwiPkJhbms8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgQmFua1wiIFtvcHRpb25zXT1cImJhbmtMaXN0XCIgWyhuZ01vZGVsKV09XCJiYW5rXCIgbmFtZT1cImJhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJnZXRCYW5rQnJhbmNoKGJhbmspXCIgKGZpbHRlcklucHV0Q2hhbmdlZCk9XCJsZWRnZXJCYW5rRGV0YWlscygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgc3R5bGU9XCJtYXJnaW46NXB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5CcmFuY2ggRGV0YWlsczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPHNlbGVjdCBuYW1lPVwiYnJhbmNoXCIgKGNoYW5nZSk9XCJzZWxlY3RCcmFuY2goYnJhbmNoKVwiIFsobmdNb2RlbCldPVwiYnJhbmNoXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCI+U2VsZWN0IGJyYW5jaDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGJua0R0bCBvZiBiYW5rRHRsTGlzdFwiIFtuZ1ZhbHVlXT1cImJua0R0bC5ubWVfaWRuXCI+e3tibmtEdGwucGVyc29uX25tZX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nSWY9XCJzZWxlY3RCcmFuY2hBZGRyZXNzIT0nJ1wiIHN0eWxlPVwibWFyZ2luOjVweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5BZGRyZXNzOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj57e3NlbGVjdEJyYW5jaEFkZHJlc3N9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5JRlNDIENvZGU6PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPnt7c2VsZWN0SWZzY319PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgc3R5bGU9XCJtYXJnaW46NXB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5BY2NvdW50IFR5cGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cImFjY291bnRUeXBlXCIgWyhuZ01vZGVsKV09XCJhY2NvdW50VHlwZVwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cImN1cnJlbnRcIj5DdXJyZW50PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cInNhdmluZ3NcIj5TYXZpbmdzPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgc3R5bGU9XCJtYXJnaW46NXB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5BY2NvdW50IE5vPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBjb2xzPVwiNDVcIiByb3dzPVwiMlwiIG5hbWU9XCJhY2NvdW50bm9cIiBbKG5nTW9kZWwpXT1cImFjY291bnRub1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiBzdHlsZT1cIm1hcmdpbjo1cHhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+Jm5ic3A7PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJlZGl0YmFua19kdGxfaWRuPT0nJ1wiIChjbGljayk9XCJTYXZlTGVkZ2VyQmFuaygpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPkFkZDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAqbmdJZj1cImVkaXRiYW5rX2R0bF9pZG4hPScnXCIgKGNsaWNrKT1cIlNhdmVMZWRnZXJCYW5rKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCI+RWRpdDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZXhpdEJhbmtEdGxMaXN0Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMSBwdWxsLWxlZnRcIj5cclxuICAgICAgICAgICAgICAmbmJzcDtcclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNiBwdWxsLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZSBwdWxsLXJpZ2h0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZXhhbXBsZUlucHV0TmFtZTJcIj5TZWFyY2ggJm5ic3A7Jm5ic3A7PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImV4YW1wbGVJbnB1dE5hbWUyXCIgbmFtZT1cInNlYXJjaEZcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZXhpdEJhbmtEdGxMaXN0Lmxlbmd0aD4wXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJkaXNwbGF5VGFibGVcIj5cclxuICAgICAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkFjdGlvbnM8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+QWNjb3VudCBUeXBlPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkFjY291bnQgTm88L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+TmFtZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5CcmFuY2g8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+QWRkcmVzczwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5JRlNDIENvZGU8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgYmFua2R0bCBvZiBleGl0QmFua0R0bExpc3QgOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRyIFtuZ0NsYXNzXT1cInsnZXZlbic6aSUyPT0wLCdvZGQnOmklMj09MX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD4gPGkgY2xhc3M9XCJmYSBmYS1lZGl0XCIgKGNsaWNrKT1cImxvYWRFZGl0QmFua0R0bChiYW5rZHRsKVwiIHRvb2x0aXA9XCJFZGl0IEJhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOjE1cHg7Y3Vyc29yOiBwb2ludGVyXCI+IDwvaT4mbmJzcDt8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiIChjbGljayk9XCJDb25maXJtRGVsZXRlTGVkZ2VyQmFuayhiYW5rZHRsKVwiIHRvb2x0aXA9XCJEZWxldGUgQmFua1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6MTVweDtjdXJzb3I6IHBvaW50ZXJcIj4gPC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmFua2R0bC5hY2NvdW50VHlwZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JhbmtkdGwuYWNjb3VudE5vfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHRkPnt7YmFua2R0bC5iYW5rbmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JhbmtkdGwuYnJhbmNobmFtZX19PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JhbmtkdGwuYWRkcmVzc319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JhbmtkdGwuaWZzY319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiZGF0YW1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cImRlZk1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZ1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICA8Zm9ybSBjbGFzcz1cImZvcm0taG9yaXpvbnRhbFwiICNmPVwibmdGb3JtXCIgbmFtZT1cImFwcEZvcm1cIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJjbG9zZU51bGwoKTtcIiAjY2xvc2VidG4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImRlZk1vZGFsSGVhZFwiPnt7YnRuTmFtZX19IFJlY29yZDwvaDQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdGb3I9XCJsZXQgZmwgb2YgZm9ybUZpbGRzIHwgb3JkZXJCeVBpcGU6ICdzcnQnOiAnYXNjJ1wiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ3QnICYmIGZsPy5pc19oaWRkZW4gPT0gMCAmJiBmbD8uZHRhX3R5cCA9PSdjJyB8fCBmbD8uZHRhX3R5cCA9PSd0J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbCBwb3NyZWxcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZsPy5kZWZhdWx0X3ZhbHVlXCIgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgI3RleHRJbnB1dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cImNoa0Z1bihmbCxmbC5kZWZhdWx0X3ZhbHVlKTtcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCIgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwicHJldmVudFNwYWNlKCRldmVudCwgZmwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwidmFsaWRhdGVOdW1iZXIoJGV2ZW50LCBmbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiaW5wdXRGaWVsZENoYW5nZSgkZXZlbnQsIGZsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJmYSBmYS17e2ljb319IGV5ZVwiIFtuZ1N0eWxlXT1cInsnY29sb3InOmljbyA9PSAnY2hlY2snID8gJ2dyZWVuJyA6ICdyZWQnIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidXNyaXNFeGlzdCAmJiBvbkVyciA9PSBmbC5mb3JtX2ZpZWxkIFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRJbnB1dC5pbnZhbGlkICYmICh0ZXh0SW5wdXQuZGlydHkgfHwgdGV4dElucHV0LnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRJbnB1dC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICd0JyAmJiBmbD8uaXNfaGlkZGVuID09IDAgJiYgZmw/LmR0YV90eXAgPT0nbidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmbC5pc19jb21wdWxzb3J5ID09IDFcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiICNudW1iZXJJbnB1dD1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnk9PTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm51bWJlcklucHV0LmludmFsaWQgJiYgKG51bWJlcklucHV0LmRpcnR5IHx8IG51bWJlcklucHV0LnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm51bWJlcklucHV0LmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cIm51bWJlcklucHV0LmludmFsaWQgJiYgKG51bWJlcklucHV0LmRpcnR5IHx8IG51bWJlcklucHV0LnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJudW1iZXJJbnB1dC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICdwdycgJiYgZmw/LmlzX2hpZGRlbiA9PSAwICYmIGZsPy5kdGFfdHlwID09J3B3J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInt7aW5wdXR0eXBlfX1cIiBjbGFzcz1cImZvcm0tY29udHJvbCBwb3NyZWxcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIiBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiAjcGFzc0lucHV0PVwibmdNb2RlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZsPy5pc19jb21wdWxzb3J5ID09ICcxJ1wiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEge3tldmVDfX0gZXllXCIgKGNsaWNrKT1cInNob3dISWRlUGFzcygpO1wiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBhc3NJbnB1dC5pbnZhbGlkICYmIChwYXNzSW5wdXQuZGlydHkgfHwgcGFzc0lucHV0LnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInBhc3NJbnB1dC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ3QnICYmIGZsPy5kdGFfdHlwID09J2EnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1zZWxlY3QgW2l0ZW1zXT1cIltdXCIgW2FkZFRhZ109XCJ0cnVlXCIgYmluZFZhbHVlPVwibGFiZWxcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiIFtpc09wZW5dPVwiZmFsc2VcIiAjYWZpZWxkPVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IHN0eWxlPVwiei1pbmRleDogNTtcIiBbb3B0aW9uc109XCJbXVwiIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICNhZmllbGQ9XCJuZ01vZGVsXCIgW3JlcXVpcmVkXT1cImZsPy5pc19jb21wdWxzb3J5ID09ICcxJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD4gbGFzdCBjb21tZW50ZWQtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0YWctaW5wdXQgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiIFttb2RlbEFzU3RyaW5nc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dEdXBlc109XCJ0cnVlXCIgW2VkaXRhYmxlXT0ndHJ1ZSc+PC90YWctaW5wdXQ+XHJcblxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSA8ZGl2ICpuZ0lmPVwiYWZpZWxkLmludmFsaWQgJiYgKGFmaWVsZC5kaXJ0eSB8fCBhZmllbGQudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYWZpZWxkLmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ3QnICYmIGZsPy5kdGFfdHlwID09J3NyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXVwiIFtkcm9wZG93blBvc2l0aW9uXT1cIidib3R0b20nXCIgYmluZExhYmVsPVwidlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInBhZ2VEaXNwbGF5XCIgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IHN0eWxlPVwiei1pbmRleDogNTtcIiBbb3B0aW9uc109XCJzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXVwiIFsobmdNb2RlbCldPVwicGFnZURpc3BsYXlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWluZm9cIiB0eXBlPVwiYnV0dG9uXCIgc3R5bGU9XCJ3aWR0aDoxMDAlO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFkZEF0dHIocGFnZURpc3BsYXksIHNxbEFycmF5W2ZsLmZvcm1fZmllbGRdLCBmbC5kZWZhdWx0X3ZhbHVlKTtcIj5BZGQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj5TZWxlY3RlZCBNb2R1bGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2NsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1kc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjaXRlbVRlbXBsYXRlIGxldC1pdGVtPVwiaXRlbVwiIGxldC1pbmRleD1cImluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmc6IDRweDtib3JkZXI6IDFweCBzb2xpZCAjYzljOWM5O2JvcmRlci1yYWRpdXM6IDZweDtkaXNwbGF5OiBpbmxpbmUtYmxvY2s7d2lkdGg6IDEwMCU7cG9zaXRpb246IHJlbGF0aXZlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2luZGV4KzF9fTwvc3Bhbj4gLSB7e2l0ZW0udmFsdWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJtXCIgKGNsaWNrKT1cInJlbW92ZShmbC5kZWZhdWx0X3ZhbHVlLGl0ZW0udmFsdWUsaW5kZXgsZmw/LmZvcm1fZmllbGQpO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtdGltZXNcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicy1zb3J0YWJsZSBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbVRlbXBsYXRlXT1cIml0ZW1UZW1wbGF0ZVwiIGl0ZW1DbGFzcz1cInNvcnRhYmxlLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1BY3RpdmVDbGFzcz1cInNvcnRhYmxlLWl0ZW0tYWN0aXZlXCIgcGxhY2Vob2xkZXJDbGFzcz1cInBsYWNlaG9sZGVyU3R5bGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJDbGFzcz1cInNvcnRhYmxlLXdyYXBwZXJcIiAjc3JmPVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9icy1zb3J0YWJsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNyZi5pbnZhbGlkICYmIChzcmYuZGlydHkgfHwgc3JmLnRvdWNoZWQpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNyZi5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICd0JyAmJiBmbD8uZHRhX3R5cCA9PSdzYSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmbC5pc19jb21wdWxzb3J5ID09IDFcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXVwiIFthZGRUYWddPVwiYWRkVGFnXCIgYmluZFZhbHVlPVwia1wiIFtoaWRlU2VsZWN0ZWRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGU9XCJ0cnVlXCIgYmluZExhYmVsPVwidlwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICNzYWZpZWxkPVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBzdHlsZT1cInotaW5kZXg6IDU7XCIgW29wdGlvbnNdPVwic3FsQXJyYXlbZmwuZm9ybV9maWVsZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiIFttdWx0aXBsZV09XCJ0cnVlXCIgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICNzYWZpZWxkPVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlIGxldC1vcHRpb249XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmYW1mYW1mYW0tZmxhZ3Mge3tvcHRpb24/LnZhbHVlfX1cIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uPy5sYWJlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2FmaWVsZC5pbnZhbGlkICYmIChzYWZpZWxkLmRpcnR5IHx8IHNhZmllbGQudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2FmaWVsZC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ3RhJyAmJiBmbD8uaXNfaGlkZGVuID09IDAgJiYgZmw/LmR0YV90eXAgPT0nYydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmbC5pc19jb21wdWxzb3J5ID09IDFcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgcm93cz1cIjNcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgW3ZhbHVlXT1cImZsPy5kZWZhdWx0X3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiAjdGV4dEFyZWE9XCJuZ01vZGVsXCIgKGJsdXIpPVwiY2hrRnVuKGZsLGZsLmRlZmF1bHRfdmFsdWUpO1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyd1bmlxRXJyTXNnJzogZmw/LmZvcm1fZmllbGQgPT0gb25FcnJ9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRBcmVhLmludmFsaWQgJiYgKHRleHRBcmVhLmRpcnR5IHx8IHRleHRBcmVhLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRleHRBcmVhLmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnaGQnIHx8IGZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnaGMnIHx8IGZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnZGYnIHx8IGZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnZmsnIHx8IGZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnY2snICYmIGZsPy5pc19oaWRkZW4gPT0gMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydtdDAnOiBmbD8uZm9ybV9maWVsZF90eXAgPT0gJ2hkJ31cIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiIFt2YWx1ZV09XCJmbD8uZGVmYXVsdF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiAjaGRmPVwibmdNb2RlbFwiIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICdzcScgJiYgZmw/LmlzX2hpZGRlbiA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ3RiJyAmJiBmbD8uaXNfaGlkZGVuID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmbC5pc19jb21wdWxzb3J5ID09IDFcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VsZWN0XCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiIFt2YWx1ZV09XCJmbD8uZGVmYXVsdF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgI3RkZj1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZHluYW1pYyBvZiBzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXVwiIHZhbHVlPVwie3tkeW5hbWljLnZhbHVlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZHluYW1pYy5sYWJlbH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGRmLmludmFsaWQgJiYgKHRkZi5kaXJ0eSB8fCB0ZGYudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwidGRmLmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnbCcgJiYgZmw/LmlzX2hpZGRlbiA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VsZWN0XCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiIFt2YWx1ZV09XCJmbD8uZGVmYXVsdF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgI2xJbnB1dD1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbG92IG9mIGZsLmt2XCIgdmFsdWU9XCJ7e2xvdi5rfX1cIj57e2xvdi52fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsSW5wdXQuaW52YWxpZCAmJiAobElucHV0LmRpcnR5IHx8IGxJbnB1dC50b3VjaGVkKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsSW5wdXQuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICdsZCcgICYmIGZsPy5pc19oaWRkZW4gPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdFwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiICNsZElucHV0PVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkeW5hbWljIG9mIHNxbEFycmF5W2ZsLmZvcm1fZmllbGRdXCIgdmFsdWU9XCJ7e2R5bmFtaWMudmFsdWV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkeW5hbWljLmxhYmVsfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsZElucHV0LmludmFsaWQgJiYgKGxkSW5wdXQuZGlydHkgfHwgbGRJbnB1dC50b3VjaGVkKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJsZElucHV0LmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAncycgJiYgZmw/LmlzX2hpZGRlbiA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgc2VsZWN0XCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiIFt2YWx1ZV09XCJmbD8uZGVmYXVsdF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgKGNoYW5nZSk9XCJjaGtGdW4oZmwsZmwuZGVmYXVsdF92YWx1ZSlcIiBpZD1cInt7ZmwuY29sdW1uX2tleX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAjc2ZpPVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkeW5hbWljIG9mIHNxbEFycmF5W2ZsLmZvcm1fZmllbGRdXCIgdmFsdWU9XCJ7e2R5bmFtaWMudmFsdWV9fVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkeW5hbWljLmxhYmVsfX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZmkuaW52YWxpZCAmJiAoc2ZpLmRpcnR5IHx8IHNmaS50b3VjaGVkKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzZmkuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnc2InXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3Qgc3R5bGU9XCJ6LWluZGV4OiA1O1wiIFtvcHRpb25zXT1cInNxbEFycmF5W2ZsLmZvcm1fZmllbGRdXCIgI3NmaT1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJjaGtGdW4oZmwsZmwuZGVmYXVsdF92YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJJbnB1dENoYW5nZWQpPVwibG9hZFN1Z2dkYXRhKCRldmVudCxmbC5wYWdlX2l0ZW1faWRuLGZsLmZvcm1fZmllbGQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2ZpLmludmFsaWQgJiYgKHNmaS5kaXJ0eSB8fCBzZmkudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2ZpLmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfaWNvbiA9PSAnYWRkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3MgYnRuLXJvdW5kZWRcIj48c3Bhbj48aVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmYSBmYS1wbHVzXCI+PC9pPjwvc3Bhbj48L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIiAoY2xpY2spPVwic3VibWl0Rm9ybShmLHN1Ym1pdEJ0bilcIiBhcHBBcHBOb0RibENsaWNrXHJcbiAgICAgICAgICAgICAgICAjc3VibWl0QnRuPnt7YnRuTmFtZX19PC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwicmVzZXRcIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgKGNsaWNrKT1cInJlc2V0KGYpXCIgKm5nSWY9XCJidG5OYW1lID09ICdBZGQnXCI+UmVzZXQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cImRlbGV0ZVRlcm1zbW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtc21cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgI2RlbGV0ZWNsc2J0bj5cclxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+V2FybmluZzwvaDQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB3YW50IHRvIGRlbGV0ZSB0ZXJtP1xyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiRGVsZXRlVGVybXMoKTtcIj5EZWxldGU8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiZGVsZXRlbW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtc21cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgI2RlbGV0ZWNsc2J0bj5cclxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+V2FybmluZzwvaDQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB3YW50IHRvIGRlbGV0ZT9cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlRGF0YUxpc3QoKTtcIj5EZWxldGU8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cIm1vZGFsX3N5c1wiIHRhYmluZGV4PVwiLTFcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwiZGVmTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5cclxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImRlZk1vZGFsSGVhZFwiPkJhc2ljIE1vZGFsPC9oND5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgU29tZSBjb250ZW50IGluIG1vZGFsIGV4YW1wbGVcclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJyb3dHcnBtb2RhbFwiIHRhYmluZGV4PVwiLTJcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwicm93R3JwbW9kYWxcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiAjZnJnPVwibmdGb3JtXCIgbmFtZT1cImFwcEZvcm1Sb3dHcnBcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJjbG9zZU51bGwoKTtcIiAjY2xvc2VidG4+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInJvd0dycEhlYWRcIj5Sb3cgR3JvdXA8L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgc3R5bGU9XCJwYWRkaW5nLWJvdHRvbTogMTBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbFwiPkF0dHJpYnV0ZXM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNSBjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLXJpZ2h0OiA5MHB4O1wiPlJvdyBEaXNwbGF5PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTUgY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogNzZweDtcIj5Sb3cgR3JvdXAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCBhdHQgb2YgZGlzcGxheV9hdHRyO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj57e2F0dC5hdHRyfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwiZHJfe3thdHQuYXR0cn19XCIgW2Rpc2FibGVkXT1cImRpc2FibGVzZWxjXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cInJvd197e2F0dC5hdHRyfX1cIiBbKG5nTW9kZWwpXT1cImF0dC5kaXNwbGF5X3Jvd1wiIChjaGFuZ2UpPVwib25DaGFuZ2VEaXNwUm93KCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFt2YWx1ZV09XCJhdHQuZGlzcGxheV9yb3dcIiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQgaGlkZGVuPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRyIG9mIGRpc3BsYXlfcm93O1wiIHZhbHVlPVwie3tkci5pZG59fVwiPnt7ZHIucHJpbnR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwiZ3JwX3t7YXR0LmF0dHJ9fVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlc2VsY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJncnBfe3thdHQuYXR0cn19XCIgWyhuZ01vZGVsKV09XCJhdHQuZGlzcGxheV9ncm91cFwiIChjaGFuZ2UpPVwib25DaGFuZ2VEaXNwR3JwKCRldmVudClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiXCIgZGlzYWJsZWQgaGlkZGVuPjwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRnIG9mIGRpc3BsYXlfZ3JvdXA7XCIgdmFsdWU9XCJ7e2RnLmlkbn19XCI+e3tkZy5wcmludH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwicmVzZXRcIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5jbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cInByb2R1Y3REZXRhaWxNYXBNRFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJzbWFsbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1zbSBtd2lkdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgI3Byb2R1Y3RNYXBjbHNidG4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIiBwcm9kdWN0RGV0YWlsTWFwY2xzYnRuPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+UHJvZHVjdCBNYXBwaW5nIG9mJm5ic3A7e3twcm9kdWNEZXRhaWxNb2RlbFRpdGxlfX08L2g0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWhvdmVyIHRhYmxlLWhvdmVyLWNlbGxzXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICBOYW1lXHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgICAgICA8dGg+XHJcbiAgICAgICAgICAgICAgICAgICAgICBWYWx1ZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRib2R5PlxyXG4gICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBrZXkgb2YgYXR0ckR0bD8ucHJwTGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3trZXkucHJpbnR9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBbKG5nTW9kZWwpXT1cImF0dHJNYXBwaW5nRHRsW2tleT8udmFsXVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAjcHJvZHVjdERldGFpbE1hcGNsc2J0bj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVQcm9kdWN0RGV0YWlsTWFwcGluZygpO1wiPlNhdmU8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cImRvY2RlbGV0ZW1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJmYWxzZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXNtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cImNsb3NlTnVsbCgpO1wiICNkZWxldGVjbHNidG4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPldhcm5pbmc8L2g0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGU/XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJkZWxldGVEb2MoKTtcIj5EZWxldGU8L2J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwiYm5rZGVsZXRlbW9kYWxcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtc21cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgI2RlbGV0ZWNsc2J0bj5cclxuICAgICAgICAgICAgICA8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGg0IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cInNtYWxsTW9kYWxIZWFkXCI+V2FybmluZzwvaDQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIEFyZSB5b3Ugc3VyZSB3YW50IHRvIGRlbGV0ZT9cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwiRGVsZXRlTGVkZ2VyQmFuaygpXCI+RGVsZXRlPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxidXR0b24gaWQ9XCJibmtkZWxldGVtb2RhbGJ0blwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNibmtkZWxldGVtb2RhbFwiPjwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gaWQ9XCJkb2NkZWxldGVidG5cIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZG9jZGVsZXRlbW9kYWxcIj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJkZWxldGVidG5cIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZGVsZXRlbW9kYWxcIj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJkZWxldGVUZXJtc1wiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNkZWxldGVUZXJtc21vZGFsXCI+PC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBpZD1cImRhdGFtZGJ0blwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNkYXRhbW9kYWxcIj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJjbHNNZFwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZGF0YW1vZGFsXCI+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwic3lzbWRcIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI21vZGFsX3N5c1wiPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBpZD1cImJ0bnByb2R1Y3REZXRhaWxNYXBNRFwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtdG9nZ2xlPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNwcm9kdWN0RGV0YWlsTWFwTURcIj48L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGlkPVwicm93R3JwYnRuXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjcm93R3JwbW9kYWxcIj48L2J1dHRvbj5cclxuICA8L2Rpdj4iXX0=
|
|
2726
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lemxpYi9zcmMvbGliL3N5c3RlbS1tb2R1bGUvc3ViZm9ybS9zdWJmb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2V6bGliL3NyYy9saWIvc3lzdGVtLW1vZHVsZS9zdWJmb3JtL3N1YmZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpFLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFVLE1BQU0saUJBQWlCLENBQUM7QUFFakUsT0FBTyxFQUFFLGFBQWEsRUFBRyxNQUFNLFlBQVksQ0FBQztBQUM1QyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQ2hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3RGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzNELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUN2RyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNN0QsTUFBTSxPQUFPLGdCQUFnQjtJQWtI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QUksU0FBUyxFQUFFO3dCQUMvQixJQUFHLFFBQVEsQ0FBQyxPQUFPLElBQUksU0FBUyxFQUFFO3lCQUNqQzs2QkFDSTs0QkFDSCxLQUFLLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQzs0QkFDekIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO3lCQUNyQztxQkFDRjt5QkFDSTt3QkFDSCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7cUJBQ3JDO2dCQUNILENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFO29CQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2pDLENBQUMsQ0FBQyxDQUFDO2FBQ0o7U0FFRjtJQUNILENBQUM7O2dJQWwyRlUsZ0JBQWdCO29IQUFoQixnQkFBZ0IsNGtCQU1oQixpQkFBaUIsZ0RDekI5QiwrL3RFQXFzQ1E7MkZEbHJDSyxnQkFBZ0I7a0JBTDVCLFNBQVM7K0JBQ0UsYUFBYTtnVUFLQSxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ1ksa0JBQWtCO3NCQUFsRCxTQUFTO3VCQUFDLG9CQUFvQjtnQkFDTSxzQkFBc0I7c0JBQTFELFNBQVM7dUJBQUMsd0JBQXdCO2dCQUNSLFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFDSixLQUFLO3NCQUF6QixTQUFTO3VCQUFDLFFBQVE7Z0JBQ1csaUJBQWlCO3NCQUE5QyxTQUFTO3VCQUFDLGlCQUFpQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBWaWV3Q2hpbGQsIEVsZW1lbnRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBIdHRwSGVhZGVycyB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIEFjdGl2YXRlZFJvdXRlLCBQYXJhbXMgfSBmcm9tIFwiQGFuZ3VsYXIvcm91dGVyXCI7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgVG9hc3RyU2VydmljZSAgfSBmcm9tIFwibmd4LXRvYXN0clwiO1xyXG5pbXBvcnQgeyBDb29raWUgfSBmcm9tIFwibmcyLWNvb2tpZXMvbmcyLWNvb2tpZXNcIjtcclxuaW1wb3J0IHsgTmd4U3Bpbm5lclNlcnZpY2UgfSBmcm9tIFwibmd4LXNwaW5uZXJcIjtcclxuaW1wb3J0IHsgU3lzdGVtU2VydmljZVNlcnZpY2UgfSBmcm9tIFwiLi4vc3lzdGVtLXNlcnZpY2Uvc3lzdGVtLXNlcnZpY2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBVcGxvYWRGaWxlU2VydmljZSB9IGZyb20gXCIuLi9zeXN0ZW0tc2VydmljZS91cGxvYWQtZmlsZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IENvbnRhY3RTZXJ2aWNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb250YWN0LXNlcnZpY2UvY29udGFjdC1zZXJ2aWNlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgU29ydGFibGVDb21wb25lbnQgfSBmcm9tIFwibmd4LWJvb3RzdHJhcC9zb3J0YWJsZVwiO1xyXG5pbXBvcnQgeyBDb21tYW5TZXJ2aWNlU2VydmljZSB9IGZyb20gXCIuLi8uLi9jb21tYW4tc2VydmljZS9jb21tYW4tc2VydmljZS5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IFMzQ2xpZW50LCBQdXRPYmplY3RDb21tYW5kLCBHZXRPYmplY3RDb21tYW5kLCBEZWxldGVPYmplY3RDb21tYW5kIH0gZnJvbSBcIkBhd3Mtc2RrL2NsaWVudC1zM1wiO1xyXG5pbXBvcnQgeyBnZXRTaWduZWRVcmwgfSBmcm9tIFwiQGF3cy1zZGsvczMtcmVxdWVzdC1wcmVzaWduZXJcIjtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiYXBwLXN1YmZvcm1cIixcclxuICB0ZW1wbGF0ZVVybDogXCIuL3N1YmZvcm0uY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vc3ViZm9ybS5jb21wb25lbnQuY3NzXCJdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdWJmb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKFwiY2xvc2VidG5cIikgY2xvc2VidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcImZpbGVPcHRNYXBNRGNsc2J0blwiKSBmaWxlT3B0TWFwTURjbHNidG46IEVsZW1lbnRSZWY7XHJcbiAgQFZpZXdDaGlsZChcInByb2R1Y3REZXRhaWxNYXBjbHNidG5cIikgcHJvZHVjdERldGFpbE1hcGNsc2J0bjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiZGVsZXRlY2xzYnRuXCIpIGRlbGV0ZWNsc2J0bjogRWxlbWVudFJlZjtcclxuICBAVmlld0NoaWxkKFwiaW5wdXRzXCIpIGlucHV0OiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoU29ydGFibGVDb21wb25lbnQpIHNvcnRhYmxlQ29tcG9uZW50OiBTb3J0YWJsZUNvbXBvbmVudDtcclxuXHJcbiAgLy8jcmVnaW9uIHZhcnMgYW5kIG9iaiBkZWNsYXJhdGlvbiBzZWN0aW9uXHJcbiAgY0R0ID0gbmV3IERhdGUoKTtcclxuXHJcbiAgZm9ybUZpbGRzID0gW107XHJcbiAgZGF0YWxpc3QgPSBbXTtcclxuICBhY3Rpb25zID0gW107XHJcbiAgbG92cyA9IFtdO1xyXG4gIGFkZE5ldzogYW55ID0gW107XHJcbiAgdGJsSCA9IFtdO1xyXG4gIHRibERlc2MgPSBbXTtcclxuICBuYXZpZ2F0aW9uID0gW107XHJcbiAgY0xpbmsgPSAwO1xyXG4gIGdsYk9iaiA9IHt9O1xyXG5cclxuICBzaG93YXJyO1xyXG4gIHBhZ2VJbmZvO1xyXG4gIGhlYWRlcjtcclxuICBidG5OYW1lO1xyXG4gIHBpZDtcclxuICBzZWFyY2hGO1xyXG4gIHdocks7XHJcbiAgd2hyVjtcclxuICBzdWJGcm1XaztcclxuICBzdWJGcm1XdjtcclxuICBuYXZmb3JtO1xyXG4gIG9uRXJyO1xyXG4gIGhvdmVyZWRJO1xyXG4gIHRiQ2VsbDtcclxuICB0aXRsZTtcclxuICBwa2Y7XHJcbiAgY3VybDtcclxuICB1aUdycExpc3Q7XHJcbiAgdWlHcnBMaXN0RHRsO1xyXG4gIGF0dHJDTGlzdER0bCA9IFtdO1xyXG4gIGF0dHJRTGlzdER0bCA9IFtdO1xyXG5cclxuICBkZnY7XHJcbiAgY2k7XHJcbiAgZGlzYWJsZXNlbGMgPSBmYWxzZTtcclxuXHJcbiAgZGF0YUR0bGlzdCA9IFtdO1xyXG4gIGRhdGFEdGwgPSBbXTtcclxuICBpdGVtU3RyaW5nc0xlZnQ6IGFueSA9IFtdO1xyXG5cclxuICBhZGRGcm1ObWU7XHJcbiAgZG9jdW1lbnRVcGxvYWRMaXN0O1xyXG4gIGRvY3VtZW50VXBsb2FkRHRsO1xyXG4gIHNlbGVjdGVkRmlsZXM7XHJcbiAgYXBwbGljYXRpb25MaXN0ID0gW107XHJcbiAgdXNlckR0bHMgPSBbXTtcclxuICBtb2R1bGVEdGxzID0gW107XHJcbiAgbWVudUxpc3QgPSBbXTtcclxuICB1c2VyUmlnaHRzTWVudUxpc3QgPSBbXTtcclxuICB0b3RNZW51O1xyXG4gIHN1Yk1lbnVJZG5zID0gW107XHJcbiAgd2hlcmVNYXAgPSB7fTtcclxuICBwYXJhT2JqID0ge307XHJcbiAgY3Vyck9iaiA9IHt9O1xyXG4gIHNxbEFycmF5ID0ge307XHJcbiAgczNkZXRhaWxzID0ge307XHJcblxyXG4gIGRvY3R5cGU7XHJcbiAgcGsgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YmtcIik7XHJcbiAgcHYgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcblxyXG4gIEdGT0xERVIgPSBcImV6Yml6LzIwNS9kb2MvXCI7XHJcbiAgR0JVQ0tFVCA9IFwicXNcIjtcclxuICBmaWxlVXBsb2FkcyA9IFtdO1xyXG4gIG5hbWVBdHRyID0gW107XHJcblxyXG4gIGZpbGU7XHJcblxyXG4gIHJlc0ZpbGVzO1xyXG4gIGltYWdlVXJsTHN0ID0gW107XHJcbiAgcCA9IDE7XHJcbiAgcGFnZVNpemUgPSAxMDtcclxuICBvcmRlciA9IFwiXCI7XHJcbiAgZXZlQyA9IFwiZmEtZXllLXNsYXNoXCI7XHJcbiAgZXN0c3QgPSBmYWxzZTtcclxuICBpbnB1dHR5cGUgPSBcInBhc3N3b3JkXCI7XHJcblxyXG4gIHJldmVyc2UgPSB0cnVlO1xyXG4gIHN1YmZvcm0gPSBmYWxzZTtcclxuICB1c3Jpc0V4aXN0ID0gZmFsc2U7XHJcbiAgaWNvO1xyXG5cclxuICBkaXNwbGF5X2dyb3VwID0gW107XHJcbiAgZGlzcGxheV9yb3cgPSBbXTtcclxuICBkaXNwbGF5X2F0dHIgPSBbXTtcclxuICBjb2xWYWxzID0gW107XHJcblxyXG4gIHRlcm1zTGlzdCA9IFtdO1xyXG4gIGFwcGxVc2VyTGlzdCA9IFtdO1xyXG4gIHJvdXRoZXJEb2NcclxuICBkYXRhVHJuc0xpc3QgPSBbXTtcclxuICBieXJPYmogPSB7fTtcclxuICB1c2VyRGV0YWlscyA9IFtdO1xyXG4gIHBhZ2VEZWZpbmF0aW9uUHN3ZENuZztcclxuICBwYWdlX3R5cDtcclxuICBhdHRyRHRsO1xyXG4gIGF0dHJNYXBwaW5nRHRsO1xyXG4gIGF0dHJfZHRsX2lkbjtcclxuICBvdXRNYXBwaW5nTGlzdCA9IFtdO1xyXG4gIGF0dHJMaXN0ID0gW107XHJcbiAgY29udGFjdE5hbWU7XHJcbiAgcHJvZHVjRGV0YWlsTW9kZWxUaXRsZTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlcixcclxuICAgIHByaXZhdGUgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxyXG4gICAgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNzOiBTeXN0ZW1TZXJ2aWNlU2VydmljZSxcclxuICAgIHByaXZhdGUgdXBsb2FkU2VydmljZTogVXBsb2FkRmlsZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNwaW5uZXJTZXJ2aWNlOiBOZ3hTcGlubmVyU2VydmljZSAsXHJcbiAgICBwdWJsaWMgY3M6IENvbnRhY3RTZXJ2aWNlU2VydmljZSxcclxuICAgIHB1YmxpYyBjbTogQ29tbWFuU2VydmljZVNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBnZXRQYWdlRGVmaW5hdGlvbigpIHtcclxuICAgIHRoaXMucm91dGhlckRvYyA9IFwiXCI7XHJcbiAgICB0aGlzLmRhdGFsaXN0ID0gW107XHJcbiAgICB0aGlzLndoZXJlTWFwID0gW107XHJcbiAgICBsZXQgZnJtbm1lID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJpdG1mb3JtXCJdIHx8IFwiXCI7XHJcbiAgICBsZXQgZG9jdHlwID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJkb2N0eXBcIl0gfHwgXCJcIjtcclxuICAgICBcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgaWYgKHRoaXMucGsgIT0gbnVsbCAmJiB0aGlzLnN1YkZybVdrICE9IG51bGwpIHtcclxuICAgICAgLy9zdWJGcm1XayA9PSBuYXZpZ2F0aW9uIHBhbmVsJ3MgbWVudVxyXG4gICAgICBpZiAodGhpcy5zdWJGcm1XdiAhPSBcIkFMTFwiKSB7XHJcbiAgICAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5wayArIFwiflwiICsgdGhpcy5zdWJGcm1XaztcclxuICAgICAgICB0aGlzLnBhcmFPYmpbXCJ3aGVyZVZsdXNcIl0gPSBcIlwiICsgdGhpcy5wdiArIFwiflwiICsgdGhpcy5zdWJGcm1XdjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBhcmFPYmpbXCJ3aGVyZUtleXNcIl0gPSB0aGlzLnBrO1xyXG4gICAgICAgIHRoaXMucGFyYU9ialtcIndoZXJlVmx1c1wiXSA9IFwiXCIgKyB0aGlzLnB2O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMud2hlcmVNYXBbdGhpcy5zdWJGcm1Xa10gPSB0aGlzLnN1YkZybVd2O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5waztcclxuICAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVWbHVzXCJdID0gXCJcIiArIHRoaXMucHY7XHJcbiAgICAgIHRoaXMud2hlcmVNYXBbdGhpcy5wa10gPSB0aGlzLnB2O1xyXG4gICAgfVxyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRMaXN0XCI7XHJcbiAgICAvLyBpZiAodGhpcy5wYWdlSW5mbyAhPSBudWxsKSB7XHJcbiAgICAvLyAgIHRoaXMucGFnZV90eXA9dGhpcy5wYWdlSW5mby5wYWdlX3R5cDtcclxuICAgIC8vICAgdmFyIHBhZ2VUUCA9IHRoaXMucGFnZUluZm8ucGFnZV90eXA7XHJcbiAgICAvLyAgIGlmIChwYWdlVFAgPT0gXCJqc29uRm9ybVwiKSB7XHJcbiAgICAvLyAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5wYWdlSW5mby53aGVyZV9jbGF1c2U7XHJcbiAgICAvLyAgICAgdGhpcy5wYXJhT2JqW1wid2hlcmVWbHVzXCJdID0gdGhpcy53aGVyZU1hcFt0aGlzLnBhZ2VJbmZvLndoZXJlX2NsYXVzZV07XHJcbiAgICAvLyAgIH1cclxuICAgIC8vIH1cclxuICAgIFxyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuZ2V0RGF0YSh0aGlzLnBhcmFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgIFxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudGJsSCA9IHJlc3BvbnNlLmRhdGFIZWFkZXI7XHJcbiAgICAgICAgICB0aGlzLnRibERlc2MgPSByZXNwb25zZS5kYXRhSGVhZGVyUHJpbnQ7XHJcbiAgICAgICAgICB0aGlzLmFkZE5ldyA9IHJlc3BvbnNlLmJ1dHRvbnNbMF07XHJcbiAgICAgICAgICB0aGlzLnBhZ2VJbmZvID0gcmVzcG9uc2UucGFnZUluZm87XHJcbiAgICAgICAgICB0aGlzLnBrZiA9IHJlc3BvbnNlLnBhZ2VJbmZvLnByaW1hcnlfa2V5X2ZpZWxkO1xyXG4gICAgICAgICAgdGhpcy5kYXRhbGlzdCA9IHJlc3BvbnNlLmRhdGFMaXN0O1xyXG4gICAgICAgICAgdGhpcy5hY3Rpb25zID0gcmVzcG9uc2UuYWN0aW9ucztcclxuICAgICAgICAgIHRoaXMubmF2aWdhdGlvbiA9IHJlc3BvbnNlLm5hdmlnYXRpb247XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMucGFyYU9ialtcIndoZXJlS2V5c1wiXSA9PSBcIm5tZV9pZG5cIiB8fCB0aGlzLnBhcmFPYmpbXCJ3aGVyZUtleXNcIl0gPT0gXCJsZWRnZXJfaWRuXCIpIHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICh0aGlzLnBhcmFPYmpbXCJmb3JtTm1lXCJdID09IFwibmFtZU1hc3RlclwiIHx8IHRoaXMucGFyYU9ialtcImZvcm1ObWVcIl0gPT0gXCJsZWRnZXJNYXN0ZXJcIiB8fCB0aGlzLnBhcmFPYmpbXCJmb3JtTm1lXCJdID09IFwiYWNjTmFtZU1hc3RlclwiKSAmJlxyXG4gICAgICAgICAgICAgIHRoaXMuZGF0YWxpc3QubGVuZ3RoID09IDFcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGR0RHRsID0gdGhpcy5kYXRhbGlzdFswXTtcclxuICAgICAgICAgICAgICBsZXQgbm1lID0gZHREdGxbXCJubWVcIl0gfHwgXCJcIjtcclxuICAgICAgICAgICAgICBsZXQgcG5tZSA9IGR0RHRsW1wicGVyc29uX25tZVwiXSB8fCBcIlwiO1xyXG4gICAgICAgICAgICAgIGlmIChubWUgIT0gXCJcIiB8fCBwbm1lICE9IFwiXCIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY29udGFjdE5hbWUgPSBubWUgKyBcIi9cIiArIHBubWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhY3ROYW1lID0gdGhpcy5jb250YWN0TmFtZS50b1VwcGVyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jb250YWN0TmFtZSA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGRvY3R5cCAhPSAnJykge1xyXG4gICAgICAgICAgICB0aGlzLnJvdXRoZXJEb2MgPSBkb2N0eXA7XHJcbiAgICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5mb3JFYWNoKChlbGVtZW50LCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGQgPT0gJ3VwbG9hZERvY3VtZW50Jykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uRnVuKGVsZW1lbnQsIGluZGV4KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFJvd0dyb3VwKGRpc3BsYXlBdHRySWRuKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJkaXNwbGF5QXR0cklkblwiXSA9IGRpc3BsYXlBdHRySWRuO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImdldFBhZ2VEaXNwbGF5QXR0clwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldFJvd0dyb3VwKHJlcU9iaiwgb3B0aW9ucywgXCJhZG1pbi9tZW51UmlnaHRzXCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5X2dyb3VwID0gcmVzcG9uc2UucmVzdWx0LmRpc3BsYXlfZ3JvdXA7XHJcbiAgICAgICAgICB0aGlzLmRpc3BsYXlfcm93ID0gcmVzcG9uc2UucmVzdWx0LmRpc3BsYXlfcm93O1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5X2F0dHIgPSByZXNwb25zZS5yZXN1bHQuZGlzcGxheV9hdHRyO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgU2F2ZVJvd0dyb3VwKGRpc3BsYXlBdHRySWRuLCBjb2xuYW1lLCBjb2xWYWxzKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImRpc3BsYXlBdHRySWRuXCJdID0gZGlzcGxheUF0dHJJZG47XHJcbiAgICByZXFPYmpbXCJjb2x1bW5OYW1lXCJdID0gY29sbmFtZTtcclxuICAgIHJlcU9ialtcImNvbHVtblZhbHVlXCJdID0gY29sVmFscztcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlUGFnZURpc3BsYXlBdHRyXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuZ2V0Um93R3JvdXAocmVxT2JqLCBvcHRpb25zLCBcImFkbWluL21lbnVSaWdodHNcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmRpc2FibGVzZWxjID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLmNvbFZhbHMgPSBbXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBvbkNoYW5nZURpc3BSb3coZSkge1xyXG4gICAgdGhpcy5kaXNhYmxlc2VsYyA9IHRydWU7XHJcbiAgICBmb3IgKHZhciBrZXkgaW4gZS50YXJnZXQuZm9ybS5lbGVtZW50cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkICE9IFwiXCIgJiZcclxuICAgICAgICBlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0uaWQgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkICE9IFwidW5kZWZpbmVkXCJcclxuICAgICAgKVxyXG4gICAgICAgIGlmIChlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0uaWQuc3RhcnRzV2l0aChcInJvd19cIikpIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlICE9IFwiXCIgJiZcclxuICAgICAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICBlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0udmFsdWUgIT0gXCJ1bmRlZmluZWRcIlxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgICB0aGlzLmNvbFZhbHMucHVzaChlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0udmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuU2F2ZVJvd0dyb3VwKHRoaXMucGlkLCBcImRpc3BsYXlfcm93XCIsIHRoaXMuY29sVmFscyk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZURpc3BHcnAoZSkge1xyXG4gICAgdGhpcy5kaXNhYmxlc2VsYyA9IHRydWU7XHJcbiAgICBmb3IgKHZhciBrZXkgaW4gZS50YXJnZXQuZm9ybS5lbGVtZW50cykge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkICE9IFwiXCIgJiZcclxuICAgICAgICBlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0uaWQgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLmlkICE9IFwidW5kZWZpbmVkXCJcclxuICAgICAgKVxyXG4gICAgICAgIGlmIChlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0uaWQuc3RhcnRzV2l0aChcImdycF9cIikpIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlICE9IFwiXCIgJiZcclxuICAgICAgICAgICAgZS50YXJnZXQuZm9ybS5lbGVtZW50c1trZXldLnZhbHVlICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgICBlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0udmFsdWUgIT0gXCJ1bmRlZmluZWRcIlxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgICB0aGlzLmNvbFZhbHMucHVzaChlLnRhcmdldC5mb3JtLmVsZW1lbnRzW2tleV0udmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuU2F2ZVJvd0dyb3VwKHRoaXMucGlkLCBcImRpc3BsYXlfZ3JvdXBcIiwgdGhpcy5jb2xWYWxzKTtcclxuICB9XHJcbiAgZ2V0Rm9ybUZpZWxkcygpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgdGhpcy5kZnYgPSBudWxsO1xyXG4gICAgdGhpcy5wYXJhT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5waztcclxuICAgIHRoaXMucGFyYU9ialtcIndoZXJlVmx1c1wiXSA9IHRoaXMucHY7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZEFkZEVkaXRcIjtcclxuICAgIFxyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuZ2V0Rm9ybUYodGhpcy5wYXJhT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIgJiYgcmVzcG9uc2UubWVzc2FnZSAhPSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy5mb3JtRmlsZHMgPSByZXNwb25zZS5mb3JtRmllbGRzO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLmZvcm1GaWxkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcInRiXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldExvdkxpc3QoZWxlbWVudC5mb3JtX2ZpZWxkLCBlbGVtZW50LnBhZ2VfaXRlbV9pZG4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwic1wiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRMb3ZMaXN0KGVsZW1lbnQuZm9ybV9maWVsZCwgZWxlbWVudC5wYWdlX2l0ZW1faWRuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcImhkXCIpIHtcclxuICAgICAgICAgICAgICBlbGVtZW50LmRlZmF1bHRfdmFsdWUgPSB0aGlzLndoZXJlTWFwW2VsZW1lbnQuZm9ybV9maWVsZF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZF90eXAgPT0gXCJma1wiKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5kZWZhdWx0X3ZhbHVlID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwiY2tcIikge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSA9IHRoaXMud2hlcmVNYXBbZWxlbWVudC5jb2x1bW5fa2V5XTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcInNxXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldFNlcXVlbmNlKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmR0YV90eXAgPT0gXCJzYVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRMb3ZMaXN0KGVsZW1lbnQuZm9ybV9maWVsZCwgZWxlbWVudC5wYWdlX2l0ZW1faWRuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kdGFfdHlwID09IFwic3JcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TG92TGlzdChlbGVtZW50LmZvcm1fZmllbGQsIGVsZW1lbnQucGFnZV9pdGVtX2lkbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB1c2VyQWN0aW9uKHVhLCBjLCBhLCBpKSB7XHJcbiAgICAgXHJcbiAgICBpZiAoYy50cmltKCkgPT0gXCJhZGRcIikge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgICAgdGhpcy5mb3JtRmlsZHMgPSBbXTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkYXRhbWRidG5cIikuY2xpY2soKTtcclxuICAgICAgdGhpcy5nZXRGb3JtRmllbGRzKCk7XHJcbiAgICAgIHRoaXMuYnRuTmFtZSA9IFwiQWRkXCI7XHJcbiAgICB9IGVsc2UgaWYgKHVhICYmIGMudHJpbSgpID09IFwiZWRpdFwiKSB7XHJcbiAgICAgIHRoaXMuZ2xiT2JqID0gdWE7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgICB0aGlzLmZvcm1GaWxkcyA9IFtdO1xyXG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcImRhdGFtZGJ0blwiKS5jbGljaygpO1xyXG4gICAgICB0aGlzLnBpZCA9IHVhW3RoaXMucGtmXTtcclxuICAgICAgdGhpcy5nZXRFZGl0RGF0YSh1YSk7XHJcbiAgICAgIHRoaXMuYnRuTmFtZSA9IFwiRWRpdFwiO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdWEgJiZcclxuICAgICAgYy50cmltKCkgPT0gXCJhZGRJdGVtXCIgJiZcclxuICAgICAgYS5mb3JtX2ZpZWxkX3RpdGxlICE9IFwiQWRkIE1hcHBpbmdcIlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgICB0aGlzLmZvcm1GaWxkcyA9IFtdO1xyXG4gICAgICB0aGlzLmN1cmwgPSBhLmxvdl9xcnk7XHJcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFthLmxvdl9xcnksIHRoaXMucGtmLCB1YVt0aGlzLnBrZl1dKTtcclxuICAgIH0gZWxzZSBpZiAodWEgJiYgYy50cmltKCkgPT0gXCJkZWxldGV0ZXJtc1wiKSB7XHJcblxyXG4gICAgICB0aGlzLmNpID0gaTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkZWxldGVUZXJtc1wiKS5jbGljaygpO1xyXG4gICAgICB0aGlzLnBpZCA9IHVhW3RoaXMucGtmXTtcclxuICAgIH0gZWxzZSBpZiAodWEgJiYgYy50cmltKCkgPT0gXCJkZWxldGVcIikge1xyXG5cclxuICAgICAgdGhpcy5jaSA9IGk7XHJcbiAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZGVsZXRlYnRuXCIpLmNsaWNrKCk7XHJcbiAgICAgIHRoaXMucGlkID0gdWFbdGhpcy5wa2ZdO1xyXG4gICAgfSBlbHNlIGlmICh1YSAmJiBjLnRyaW0oKSA9PSBcImRlZmluYXRpb25cIikge1xyXG4gICAgICB0aGlzLmNpID0gaTtcclxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJyb3dHcnBidG5cIikuY2xpY2soKTtcclxuICAgICAgdGhpcy5waWQgPSB1YVt0aGlzLnBrZl07XHJcbiAgICAgIHRoaXMuZ2V0Um93R3JvdXAodGhpcy5waWQpO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdWEgJiZcclxuICAgICAgYy50cmltKCkgPT0gXCJhZGRJdGVtXCIgJiZcclxuICAgICAgYS5mb3JtX2ZpZWxkX3RpdGxlID09IFwiQWRkIE1hcHBpbmdcIlxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucHJvZHVjRGV0YWlsTW9kZWxUaXRsZSA9IHVhLmRpc3BsYXk7XHJcbiAgICAgIHRoaXMubG9hZFByb2R1Y3REZXRhaWxNYXBwaW5nKHVhW1wiYXR0cl9kX2lkblwiXSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkUHJvZHVjdERldGFpbE1hcHBpbmcoYXR0ckR0YWlsSWRuKSB7XHJcbiAgICB0aGlzLmF0dHJfZHRsX2lkbiA9IGF0dHJEdGFpbElkbjtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IG9iaiA9IHt9O1xyXG4gICAgb2JqW1wiZm9ybU5tZVwiXSA9IFwiZmlsZVVwbG9hZFwiO1xyXG4gICAgb2JqW1wiYXR0cl9kdGxfaWRuXCJdID0gYXR0ckR0YWlsSWRuO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRQcmRNYXN0ZXJNYXBwaW5nXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuU2F2ZShvYmosIG9wdGlvbnMsIFwiZmlsZVVwbG9hZC9sb2FkXCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5hdHRyRHRsID0gcmVzdWx0LmF0dHJEdGw7XHJcbiAgICAgICAgICB0aGlzLmF0dHJNYXBwaW5nRHRsID0gcmVzdWx0LmF0dHJNYXBwaW5nRHRsO1xyXG4gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJidG5wcm9kdWN0RGV0YWlsTWFwTURcIikuY2xpY2soKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBzYXZlUHJvZHVjdERldGFpbE1hcHBpbmcoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCBvYmogPSB7fTtcclxuICAgIG9ialtcImZvcm1ObWVcIl0gPSBcImZpbGVVcGxvYWRcIjtcclxuICAgIG9ialtcImF0dHJfZHRsX2lkblwiXSA9IHRoaXMuYXR0cl9kdGxfaWRuO1xyXG4gICAgb2JqW1wiYXR0ckR0bE1hcFwiXSA9IHRoaXMuYXR0ck1hcHBpbmdEdGw7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwidXBkYXRlUHJvZHVjdEF0dHJcIjtcclxuICAgIFxyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLlNhdmUob2JqLCBvcHRpb25zLCBcImZpbGVVcGxvYWQvbG9hZFwiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5wcm9kdWN0RGV0YWlsTWFwY2xzYnRuLm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmF2aWdhdGlvbkZ1bihuYXYsIGkpIHtcclxuICAgICBcclxuICAgIHRoaXMuY0xpbmsgPSBpO1xyXG4gICAgdGhpcy5zdWJGcm1XayA9IG5hdi5jb2x1bW5fa2V5LnRyaW0oKSB8fCAnJztcclxuICAgIHRoaXMuc3ViRnJtV3YgPSBuYXYuZm9ybV9maWVsZC50cmltKCkgfHwgJyc7XHJcbiAgICBpZiAodGhpcy5zdWJGcm1XdiA9PSBcIjBcIilcclxuICAgICAgdGhpcy5zdWJGcm1XdiA9IFwiXCI7XHJcbiAgICB0aGlzLm5hdmZvcm0gPSBuYXYubG92X3FyeS50cmltKCk7XHJcbiAgICBpZiAodGhpcy5zdWJGcm1XdiA9PSBcIlwiKSB7XHJcbiAgICAgIHRoaXMuc3ViRnJtV2sgPSBudWxsO1xyXG4gICAgICB0aGlzLnN1YkZybVd2ID0gbnVsbDtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLm5hdmZvcm0gIT0gXCJcIikge1xyXG4gICAgICBpZiAodGhpcy5uYXZmb3JtID09IFwiYWRkdGlvbmFsRHRsTWFzdGVyXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICBsZXQgbWRsID0gWydjb250YWN0J107XHJcbiAgICAgICAgdGhpcy5nZXROYW1lQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm5hdmZvcm0gPT0gXCJsZWRnZXJBZGR0aW9uYWxEdGxNYXN0ZXJcIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2xlZGdfYXR0ciddO1xyXG4gICAgICAgIHRoaXMuZ2V0TGVkZ2VyQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsLCAnYXR0cicpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcImxlZGdlckFjY0FkZGl0aW5hbERldGFpbHNcIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2xlZGdhY2NfYXR0ciddO1xyXG4gICAgICAgIHRoaXMuZ2V0TGVkZ2VyQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsLCAnYWNjX2F0dHInKTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm5hdmZvcm0gPT0gXCJhY2NEZWxldGVSdWxlc0Zvcm1cIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2RlbGV0ZV9ydWxlJ107XHJcbiAgICAgICAgdGhpcy5nZXRMZWRnZXJBdHRyKHRoaXMuYWRkRnJtTm1lLCBtZGwsICdkZWxldGVfcnVsZScpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcImFjY0pvdXJuYWxBdHRyRm9ybVwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgbGV0IG1kbCA9IFsnam5sYWNjX2F0dHInXTtcclxuICAgICAgICB0aGlzLmdldExlZGdlckF0dHIodGhpcy5hZGRGcm1ObWUsIG1kbCwgJ2pubGFjY19hdHRyJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwiYWNjTG9hbkF0dHJGb3JtXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICBsZXQgbWRsID0gWydsb2FuJ107XHJcbiAgICAgICAgdGhpcy5nZXRMZWRnZXJBdHRyKHRoaXMuYWRkRnJtTm1lLCBtZGwsICdsb2FuJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwiYWNjSm91cm5hbFNldHRpbmdGb3JtXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICBsZXQgbWRsID0gWydqbmxfc2V0dCddO1xyXG4gICAgICAgIHRoaXMuZ2V0Sm91cm5hbEF0dHIodGhpcy5hZGRGcm1ObWUsIG1kbCwgJ2pubF9zZXR0Jyk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwiZG9jdW1lbnRVcGxvYWRNYXN0ZXJcIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIHRoaXMuZ2V0RmlsZXModGhpcy5wdik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwibWVudUFjY2Vzc01hc3RlclwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgLy8gIHRoaXMubG9hZFVzck1kbCh0aGlzLnB2KTsvL1xyXG4gICAgICAgIHRoaXMubG9hZEFwcGxpY2F0aW9uKCk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwid2ViTWVudUFjY2Vzc01hc3RlclwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgLy8gIHRoaXMubG9hZFVzck1kbCh0aGlzLnB2KTsvL1xyXG4gICAgICAgIHRoaXMubG9hZFdlYkFwcGxpY2F0aW9uKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwibW9kdWxlQWNjZXNzTWFzdGVyXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICB0aGlzLmxvYWRVc3JNZGwodGhpcy5wdik7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5uYXZmb3JtID09IFwidGVybVVzZXJBc3NpZ25Gb3JtXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICB0aGlzLmxvYWRBcHBsaWNhdGlvblVzZXJUZXJtcyh0aGlzLnB2KTtcclxuICAgICAgfSBlbHNlIGlmICh0aGlzLm5hdmZvcm0gPT0gXCJzZXRQYXNzd29yZEZvcm1cIikge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gdGhpcy5uYXZmb3JtO1xyXG4gICAgICAgIHRoaXMubG9hZFVzZXJQYXNzd29yZCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMubmF2Zm9ybSA9PSBcImxlZGdlckJhbmtEZXRhaWxzXCIpIHtcclxuICAgICAgICB0aGlzLmFkZEZybU5tZSA9IHRoaXMubmF2Zm9ybTtcclxuICAgICAgICB0aGlzLmxvYWRsZWRnZXJCYW5rRGV0YWlscygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGFyYU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgdGhpcy5nZXRQYWdlRGVmaW5hdGlvbigpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIGV4aXRCYW5rRHRsTGlzdCA9IFtdO1xyXG4gIGxvYWRsZWRnZXJCYW5rRGV0YWlscygpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnbGVkZ2VyQmFua0RldGFpbHMnO1xyXG4gICAgcmVxT2JqWydsZWRnZXJfaWRuJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldCgnc3VidicpO1xyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ2xvYWRsZWRnZXJCYW5rRGV0YWlsJztcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzLmxvYWQocmVxT2JqLCBvcHRpb25zLCAnYWNjb3VudHMvYWNjTGVkZ2VyJykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09ICdTVUNDRVNTJykge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgdGhpcy5leGl0QmFua0R0bExpc3QgPSByZXN1bHQuYmFua0R0bExpc3QgfHwgW107XHJcbiAgICAgICAgdGhpcy5lZGl0YmFua19kdGxfaWRuID0gXCJcIjtcclxuICAgICAgICB0aGlzLmJyYW5jaCA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5hY2NvdW50bm8gPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0QnJhbmNoQWRkcmVzcyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5iYW5rID0gXCJcIjtcclxuICAgICAgICB0aGlzLmJhbmtMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5iYW5rRHRsTGlzdCA9IFtdO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpXHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIGJhbmtMaXN0ID0gW107XHJcbiAgYmFua0R0bExpc3QgPSBbXTtcclxuICBiYW5rO1xyXG4gIGJyYW5jaCA9IFwiXCI7XHJcbiAgYWNjb3VudG5vO1xyXG4gIGFjY291bnRUeXBlID0gXCJzYXZpbmdzXCJcclxuICBsZWRnZXJCYW5rRGV0YWlscyhzdHIpIHtcclxuICAgIC8vIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnbGVkZ2VyQmFua0RldGFpbHMnO1xyXG4gICAgcmVxT2JqWydsaWtlU3RyJ10gPSBzdHI7XHJcbiAgICB0aGlzLmhlYWRlclsnbWV0aG9kJ10gPSAnbG9hZFBhcnR5QmFuayc7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2FjY291bnRzL2FjY0xlZGdlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuYmFua0xpc3QgPSByZXN1bHQuYmFua0xpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgdmFsdWU6IG9wdGlvbixcclxuICAgICAgICAgIGxhYmVsOiBvcHRpb25cclxuICAgICAgICB9KSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSlcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmFua0JyYW5jaChiYW5rKSB7XHJcbiAgICB0aGlzLmJyYW5jaCA9IFwiXCI7XHJcbiAgICB0aGlzLnNlbGVjdEJyYW5jaEFkZHJlc3MgPSBcIlwiO1xyXG4gICAgdGhpcy5zZWxlY3RJZnNjID0gXCJcIjtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSAnbGVkZ2VyQmFua0RldGFpbHMnO1xyXG4gICAgcmVxT2JqWydiYW5rTm1lJ10gPSBiYW5rO1xyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ2dldFBhcnR5QmFua0R0bCc7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ2FjY291bnRzL2FjY0xlZGdlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuYmFua0R0bExpc3QgPSByZXN1bHQuYmFua0R0bExpc3QgfHwgW107XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSlcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSlcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgc2VsZWN0QnJhbmNoRHRsID0ge307XHJcbiAgc2VsZWN0QnJhbmNoQWRkcmVzcyA9IFwiXCI7XHJcbiAgc2VsZWN0SWZzYyA9IFwiXCI7XHJcbiAgc2VsZWN0QnJhbmNoKGJyYW5jaCkge1xyXG4gICAgdGhpcy5zZWxlY3RCcmFuY2hBZGRyZXNzID0gXCJcIjtcclxuICAgIHRoaXMuc2VsZWN0QnJhbmNoRHRsID0gdGhpcy5iYW5rRHRsTGlzdC5maW5kKHggPT4geC5ubWVfaWRuID09IGJyYW5jaCkgfHwgJyc7XHJcbiAgICBsZXQgYWRkcmVzcyA9IHRoaXMuc2VsZWN0QnJhbmNoRHRsWydhZGRyZXNzJ10gfHwgW107XHJcbiAgICBpZiAoYWRkcmVzcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBhZGRyZXNzRHRsID0gYWRkcmVzc1swXTtcclxuICAgICAgbGV0IGFyZWEgPSBhZGRyZXNzRHRsWydhcmVhJ10gfHwgXCJcIjtcclxuICAgICAgaWYgKGFyZWEgPT0gXCJudWxsXCIpXHJcbiAgICAgICAgYXJlYSA9IFwiXCI7XHJcbiAgICAgIGxldCBzdHJlZXQgPSBhZGRyZXNzRHRsWydzdHJlZXQnXSB8fCBcIlwiO1xyXG4gICAgICBpZiAoc3RyZWV0ID09IFwibnVsbFwiKVxyXG4gICAgICAgIHN0cmVldCA9IFwiXCI7XHJcbiAgICAgIGxldCB1bml0X25vID0gYWRkcmVzc0R0bFsndW5pdF9ubyddIHx8IFwiXCI7XHJcbiAgICAgIGlmICh1bml0X25vID09IFwibnVsbFwiKVxyXG4gICAgICAgIHVuaXRfbm8gPSBcIlwiO1xyXG4gICAgICBsZXQgYnVpbGRpbmcgPSBhZGRyZXNzRHRsWydidWlsZGluZyddIHx8IFwiXCI7XHJcbiAgICAgIGlmIChidWlsZGluZyA9PSBcIm51bGxcIilcclxuICAgICAgICBidWlsZGluZyA9IFwiXCI7XHJcbiAgICAgIGxldCBsYW5kbWFyayA9IGFkZHJlc3NEdGxbJ2xhbmRtYXJrJ10gfHwgXCJcIjtcclxuICAgICAgaWYgKGxhbmRtYXJrID09IFwibnVsbFwiKVxyXG4gICAgICAgIGxhbmRtYXJrID0gXCJcIjtcclxuICAgICAgbGV0IHppcCA9IGFkZHJlc3NEdGxbJ3ppcCddIHx8IFwiXCI7XHJcbiAgICAgIGlmICh6aXAgPT0gXCJudWxsXCIpXHJcbiAgICAgICAgemlwID0gXCJcIjtcclxuICAgICAgbGV0IGNpdHlfbm0gPSBhZGRyZXNzRHRsWydjaXR5X25tJ10gfHwgXCJcIjtcclxuICAgICAgaWYgKGNpdHlfbm0gPT0gXCJudWxsXCIpXHJcbiAgICAgICAgY2l0eV9ubSA9IFwiXCI7XHJcbiAgICAgIGxldCBjb3VudHJ5X25tID0gYWRkcmVzc0R0bFsnY291bnRyeV9ubSddIHx8IFwiXCI7XHJcbiAgICAgIGlmIChjb3VudHJ5X25tID09IFwibnVsbFwiKVxyXG4gICAgICAgIGNvdW50cnlfbm0gPSBcIlwiO1xyXG4gICAgICBsZXQgc3RhdGVfbm0gPSBhZGRyZXNzRHRsWydzdGF0ZV9ubSddIHx8IFwiXCI7XHJcbiAgICAgIGlmIChzdGF0ZV9ubSA9PSBcIm51bGxcIilcclxuICAgICAgICBzdGF0ZV9ubSA9IFwiXCI7XHJcbiAgICAgIHRoaXMuc2VsZWN0SWZzYyA9IHRoaXMuc2VsZWN0QnJhbmNoRHRsWydhdHRyJ11bJ2lmc2MnXTtcclxuICAgICAgdGhpcy5zZWxlY3RCcmFuY2hBZGRyZXNzID0gdW5pdF9ubyArIFwiIFwiICsgYnVpbGRpbmcgKyBcIiBcIiArIHN0cmVldCArIFwiIFwiICsgYXJlYSArIFwiIFwiICsgbGFuZG1hcmsgKyBcIiBcIiArIGNpdHlfbm0gKyBcIiBcIiArIHN0YXRlX25tICsgXCIgXCIgKyB6aXBcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgbG9hZExlZGdlckJhbmsoKSB7XHJcblxyXG4gIH1cclxuICBlZGl0YmFua19kdGxfaWRuID0gXCJcIjtcclxuICBsb2FkRWRpdEJhbmtEdGwoYmFua2R0bCkge1xyXG4gICAgIFxyXG4gICAgbGV0IGJhbmtOYW1lID0gYmFua2R0bC5iYW5rbmFtZTtcclxuICAgIHRoaXMuYmFua0xpc3QgPSBbe1xyXG4gICAgICB2YWx1ZTogYmFua05hbWUsXHJcbiAgICAgIGxhYmVsOiBiYW5rTmFtZVxyXG4gICAgfV07XHJcbiAgICB0aGlzLmJhbmsgPSBiYW5rTmFtZTtcclxuICAgIHRoaXMuZ2V0QmFua0JyYW5jaChiYW5rTmFtZSk7XHJcbiAgICB0aGlzLmVkaXRiYW5rX2R0bF9pZG4gPSBiYW5rZHRsLmJhbmtkdGxJZG47XHJcbiAgICB0aGlzLmFjY291bnRUeXBlID0gYmFua2R0bC5hY2NvdW50VHlwZTtcclxuICAgIHRoaXMuYWNjb3VudG5vID0gYmFua2R0bC5hY2NvdW50Tm87XHJcbiAgICB0aGlzLnNlbGVjdEJyYW5jaEFkZHJlc3MgPSBiYW5rZHRsLmFkZHJlc3M7XHJcbiAgICB0aGlzLnNlbGVjdElmc2MgPSBiYW5rZHRsLmlmc2M7XHJcbiAgICB0aGlzLmJyYW5jaCA9IGJhbmtkdGwuYmFua1JlZklkbjtcclxuICB9XHJcbiAgU2F2ZUxlZGdlckJhbmsoKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialsnZm9ybU5tZSddID0gJ2xlZGdlckJhbmtEZXRhaWxzJztcclxuICAgIHJlcU9ialsnbGVkZ2VyX2lkbiddID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoJ3N1YnYnKTtcclxuICAgIHJlcU9ialsnYmFua19yZWZfaWRuJ10gPSB0aGlzLmJyYW5jaDtcclxuICAgIHJlcU9ialsnYWNjb3VudF90eXBlJ10gPSB0aGlzLmFjY291bnRUeXBlO1xyXG4gICAgcmVxT2JqWydhY2NvdW50X25vJ10gPSB0aGlzLmFjY291bnRubztcclxuICAgIGlmICh0aGlzLmVkaXRiYW5rX2R0bF9pZG4gPT0gJycpXHJcbiAgICAgIHJlcU9ialsnYWN0aW9uJ10gPSAnYWRkJztcclxuICAgIGVsc2Uge1xyXG4gICAgICByZXFPYmpbJ2FjdGlvbiddID0gJ2VkaXQnO1xyXG4gICAgICByZXFPYmpbJ2JhbmtfZHRsX2lkbiddID0gdGhpcy5lZGl0YmFua19kdGxfaWRuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ3NhdmVCYW5rRHRsSW50b0FjY0xlZGdlcic7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzLnN1YkZnZXREYXRhKHJlcU9iaiwgb3B0aW9ucywgJ2FjY291bnRzL2FjY0xlZGdlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuZXhpdEJhbmtEdGxMaXN0ID0gcmVzdWx0LmJhbmtEdGxMaXN0IHx8IFtdO1xyXG4gICAgICAgIHRoaXMuYnJhbmNoID0gXCJcIjtcclxuICAgICAgICB0aGlzLmFjY291bnRubyA9IFwiXCI7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RCcmFuY2hBZGRyZXNzID0gXCJcIjtcclxuICAgICAgICB0aGlzLmJhbmsgPSBcIlwiO1xyXG4gICAgICAgIHRoaXMuYmFua0xpc3QgPSBbXTtcclxuICAgICAgICB0aGlzLmJhbmtEdGxMaXN0ID0gW107XHJcbiAgICAgICAgdGhpcy5lZGl0YmFua19kdGxfaWRuID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICBpZiAodGhpcy5lZGl0YmFua19kdGxfaWRuID09IFwiXCIpXHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiTmV3IEJhbmsgYWRkIHN1Y2Nlc3NmdWxseVwiKTtcclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MoXCJCYW5rIGVkaXQgc3VjY2Vzc2Z1bHlcIik7XHJcbiAgICAgICAgICB0aGlzLmVkaXRiYW5rX2R0bF9pZG4gPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSlcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSlcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRCYW5rSWRuID0gXCJcIjtcclxuICBDb25maXJtRGVsZXRlTGVkZ2VyQmFuayhiYW5rZHRsKSB7XHJcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYm5rZGVsZXRlbW9kYWxidG4nKS5jbGljaygpO1xyXG4gICAgdGhpcy5kZWxldEJhbmtJZG4gPSBiYW5rZHRsLmJhbmtkdGxJZG47XHJcbiAgfVxyXG5cclxuICBEZWxldGVMZWRnZXJCYW5rKCkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbJ2Zvcm1ObWUnXSA9ICdsZWRnZXJCYW5rRGV0YWlscyc7XHJcbiAgICByZXFPYmpbJ2xlZGdlcl9pZG4nXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KCdzdWJ2Jyk7XHJcbiAgICByZXFPYmpbJ2FjdGlvbiddID0gJ2RlbGV0ZSc7XHJcbiAgICByZXFPYmpbJ2JhbmtfZHRsX2lkbiddID0gdGhpcy5kZWxldEJhbmtJZG47XHJcblxyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ3NhdmVCYW5rRHRsSW50b0FjY0xlZGdlcic7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzLnN1YkZnZXREYXRhKHJlcU9iaiwgb3B0aW9ucywgJ2FjY291bnRzL2FjY0xlZGdlcicpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgIHRoaXMuZXhpdEJhbmtEdGxMaXN0ID0gcmVzdWx0LmJhbmtEdGxMaXN0IHx8IFtdO1xyXG4gICAgICAgIHRoaXMuZGVsZXRCYW5rSWRuID0gXCJcIjtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiQmFuayBEZWxldGUgc3VjY2Vzc2Z1bGx5XCIpO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExlZGdlckF0dHIoZm9ybW5hbWUsIG1kbCwgdHlwZSkge1xyXG4gICAgIFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IGZvcm1uYW1lO1xyXG4gICAgcmVxT2JqW1wibGVkZ2VyX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIHJlcU9ialsnbWRsTGlzdCddID0gbWRsO1xyXG4gICAgcmVxT2JqWyd0eXBlJ10gPSB0eXBlO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRMZWRnZXJBdHRyXCI7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzLnN1YkZnZXREYXRhKHJlcU9iaiwgb3B0aW9ucywgXCJhY2NvdW50cy9hY2NMZWRnZXJcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VJbmZvID0gcmVzcG9uc2UucGFnZUluZm8gfHwge307XHJcbiAgICAgICAgICB0aGlzLnVpR3JwTGlzdCA9IHJlc3BvbnNlLnVpR3JwTGlzdDtcclxuICAgICAgICAgIHRoaXMudWlHcnBMaXN0RHRsID0gcmVzcG9uc2UudWlHcnBMaXN0RHRsO1xyXG4gICAgICAgICAgaWYodGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10gJiYgQXJyYXkuaXNBcnJheSh0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXSkgJiYgdGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBsb3dlckNhc2VBcnJheSA9IHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddLm1hcChpdGVtID0+IGl0ZW0udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddID0gbG93ZXJDYXNlQXJyYXlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmF0dHJDTGlzdER0bCA9IHJlc3BvbnNlLmF0dHJDTGlzdER0bDtcclxuICAgICAgICAgIHRoaXMuYXR0clFMaXN0RHRsID0gcmVzcG9uc2UuYXR0clFMaXN0RHRsO1xyXG5cclxuICAgICAgICAgIHRoaXMuZGF0YUR0bCA9IHJlc3BvbnNlLmRhdGFEdGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEpvdXJuYWxBdHRyKGZvcm1uYW1lLCBtZGwsIHR5cGUpIHtcclxuICAgICBcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBmb3JtbmFtZTtcclxuICAgIHJlcU9ialtcImpvdXJuYWxfaWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpO1xyXG4gICAgcmVxT2JqWydtZGxMaXN0J10gPSBtZGw7XHJcbiAgICByZXFPYmpbJ3R5cGUnXSA9IHR5cGU7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZEpvdXJuYWxBdHRyXCI7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzLnN1YkZnZXREYXRhKHJlcU9iaiwgb3B0aW9ucywgXCJhY2NvdW50cy9hY2NMZWRnZXJcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VJbmZvID0gcmVzcG9uc2UucGFnZUluZm8gfHwge307XHJcbiAgICAgICAgICB0aGlzLnVpR3JwTGlzdCA9IHJlc3BvbnNlLnVpR3JwTGlzdDtcclxuICAgICAgICAgIHRoaXMudWlHcnBMaXN0RHRsID0gcmVzcG9uc2UudWlHcnBMaXN0RHRsIHx8IHt9O1xyXG4gICAgICAgICAgaWYodGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10gJiYgQXJyYXkuaXNBcnJheSh0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXSkgJiYgdGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBjb25zdCBsb3dlckNhc2VBcnJheSA9IHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddLm1hcChpdGVtID0+IGl0ZW0udG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgICAgIHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddID0gbG93ZXJDYXNlQXJyYXlcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgZGF0YXR5cGVsaXN0ID0gdGhpcy51aUdycExpc3REdGxbXCJiYXNpYyNUXCJdIHx8IFtdO1xyXG4gICAgICAgICAgbGV0IGF0dHJsaXN0ID0gdGhpcy51aUdycExpc3REdGxbXCJiYXNpYyNWXCJdIHx8IFtdO1xyXG4gICAgICAgICAgdGhpcy5hdHRyQ0xpc3REdGwgPSByZXNwb25zZS5hdHRyQ0xpc3REdGw7XHJcbiAgICAgICAgICB0aGlzLmF0dHJRTGlzdER0bCA9IHJlc3BvbnNlLmF0dHJRTGlzdER0bDtcclxuICAgICAgICAgIHRoaXMuZGF0YUR0bCA9IHJlc3BvbnNlLmRhdGFEdGwgfHwge307XHJcbiAgICAgICAgICB0aGlzLmNvbnRhY3ROYW1lID0gdGhpcy5kYXRhRHRsW1wiY29udGFjdE5hbWVcIl0gfHwgXCJcIjtcclxuICAgICAgICAgIGF0dHJsaXN0LmZvckVhY2goKGtleSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgbGV0IHR5cGUgPSBkYXRhdHlwZWxpc3RbaW5kZXhdO1xyXG4gICAgICAgICAgICBpZiAodHlwZSA9PSAnc2EnKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGF0dHJWYWwgPSB0aGlzLmRhdGFEdGxba2V5XSB8fCAnJztcclxuICAgICAgICAgICAgICBsZXQgbGlzdCA9IFt7IHZhbHVlOiBhdHRyVmFsLCBsYWJlbDogYXR0clZhbCB9XTtcclxuICAgICAgICAgICAgICB0aGlzLnNxbEFycmF5W2tleV0gPSBsaXN0O1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbG9hZFVzZXJQYXNzd29yZCgpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwiYXBwbGljYXRpb25BY2Nlc3NNYXN0ZXJcIjtcclxuICAgIHJlcU9ialtcIm5tZUlkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkQ2hhbmdlUGFzc1wiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJzb3VyY2VcIl0gPSBcInFzXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuc3ViRmdldERhdGEocmVxT2JqLCBvcHRpb25zLCBcImNvbnRhY3QvbG9hZENvbnRhY3RcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnVzZXJEZXRhaWxzID0gcmVzdWx0LnVzZXJEZXRhaWxzO1xyXG4gICAgICAgICAgdGhpcy5wYWdlRGVmaW5hdGlvblBzd2RDbmcgPSByZXN1bHQucGFnZURlZmluYXRpb247XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoYW5nZVBzd2QoZSwgdXNlcklkbikge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJzZXRQYXNzd29yZEZvcm1cIjtcclxuICAgIHJlcU9ialtcInVzZXJJZG5cIl0gPSB1c2VySWRuO1xyXG4gICAgcmVxT2JqW1wicGFzc3dvcmRcIl0gPSBlLnRhcmdldC52YWx1ZTtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJjaGFuZ2VQYXNzd29yZFwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJzb3VyY2VcIl0gPSBcInFzXCI7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5TYXZlKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMudXNlckRldGFpbHMgPSByZXN1bHQudXNlckRldGFpbHM7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VEZWZpbmF0aW9uUHN3ZENuZyA9IHJlc3VsdC5wYWdlRGVmaW5hdGlvbjtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRVc2VyUGFzc3dvcmQoKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBjaGFuZ2VQYXNzd29yZChvYmopIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwic2V0UGFzc3dvcmRGb3JtXCI7XHJcbiAgICByZXFPYmpbXCJ1c2VySWRuXCJdID0gb2JqLnVzZXJJZG47XHJcbiAgICByZXFPYmpbXCJwYXNzd29yZFwiXSA9IG9iai5wYXNzd29yZDtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJjaGFuZ2VQYXNzd29yZFwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJzb3VyY2VcIl0gPSBcInFzXCI7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5TYXZlKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IHJlc3BvbnNlLnJlc3VsdDtcclxuICAgICAgICAgIHRoaXMudXNlckRldGFpbHMgPSByZXN1bHQudXNlckRldGFpbHM7XHJcbiAgICAgICAgICB0aGlzLnBhZ2VEZWZpbmF0aW9uUHN3ZENuZyA9IHJlc3VsdC5wYWdlRGVmaW5hdGlvbjtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLmxvYWRVc2VyUGFzc3dvcmQoKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2JsT2JqO1xyXG4gIGV4aXRzaW5nVXNlckxpc3QgPSBbXTtcclxuICBsb2FkQXBwbGljYXRpb25Vc2VyVGVybXMobm1laWRuKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wibm1lX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcImNvbnRhY3RTZWFyY2hGb3JtXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwibG9hZEFzc2lnbkFwcGxpY2F0aW9uVXNlcnRlcm1zXCI7XHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3NcclxuICAgICAgLmxvYWQocmVxT2JqLCBvcHRpb25zLCBcImNvbnRhY3QvbG9hZENvbnRhY3RcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICAgICAgdGhpcy5nYmxPYmogPSByZXN1bHQ7XHJcbiAgICAgICAgICB0aGlzLnRlcm1zTGlzdCA9IHJlc3VsdC50ZXJtc0xpc3Q7XHJcbiAgICAgICAgICBsZXQgYXBwbFVzZXJMaXN0ID0gcmVzdWx0LmFwcGxVc2VyTGlzdDtcclxuICAgICAgICAgIHRoaXMuZXhpdHNpbmdVc2VyTGlzdCA9IFtdO1xyXG4gICAgICAgICAgdGhpcy50ZXJtc0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgbGV0IHVzZXJJZG5MaXN0ID0gZWxlbWVudC51c2VySWRuTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgdXNlcklkbkxpc3QuZm9yRWFjaCh1c2VySWRuID0+IHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5leGl0c2luZ1VzZXJMaXN0LmluZGV4T2YodXNlcklkbikgPT0gLTEpXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV4aXRzaW5nVXNlckxpc3QucHVzaCh1c2VySWRuKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAgICAgICAgIGxldCBwZW5kaW5nVXNlckxpc3QgPSBbXVxyXG4gICAgICAgICAgYXBwbFVzZXJMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmV4aXRzaW5nVXNlckxpc3QuaW5kZXhPZihlbGVtZW50LmspID09IC0xKVxyXG4gICAgICAgICAgICAgIHBlbmRpbmdVc2VyTGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy50ZXJtc0xpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgbGV0IHVzZXJJZG5MaXN0ID0gZWxlbWVudC51c2VySWRuTGlzdCB8fCBbXTtcclxuICAgICAgICAgICAgbGV0IFRlcm1Vc2VyTGlzdCA9IHBlbmRpbmdVc2VyTGlzdC5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiBvcHRpb24udlxyXG4gICAgICAgICAgICB9KSk7XHJcbiAgICAgICAgICAgIGlmICh1c2VySWRuTGlzdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgYXBwbFVzZXJMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodXNlcklkbkxpc3QuaW5kZXhPZihlbGVtZW50LmspICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgIFRlcm1Vc2VyTGlzdC5wdXNoKHsgXCJ2YWx1ZVwiOiBlbGVtZW50LmssIFwibGFiZWxcIjogZWxlbWVudC52IH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxlbWVudC5UZXJtVXNlckxpc3QgPSBUZXJtVXNlckxpc3Q7XHJcblxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBcclxuICAgICAgICAgIC8vICB0aGlzLmFwcGxVc2VyTGlzdCA9IHJlc3VsdC5hcHBsVXNlckxpc3Q7XHJcbiAgICAgICAgICAvLyAgbGV0IHRlbXBhcnIgPSBbXTtcclxuICAgICAgICAgIC8vdGhpcy5leGl0c2luZ1VzZXI9W107XHJcbiAgICAgICAgICAvLyB0aGlzLnRlcm1zTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgLy8gIFxyXG4gICAgICAgICAgLy8gZWxlbWVudC51c2VySWRuTGlzdC5mb3JFYWNoKGEgPT4ge1xyXG4gICAgICAgICAgLy8gICB0ZW1wYXJyLnB1c2goYS50b1N0cmluZygpKTtcclxuICAgICAgICAgIC8vICBpZih0aGlzLmV4aXRzaW5nVXNlci5pbmRleE9mKGEudG9TdHJpbmcoKSk9PS0xKVxyXG4gICAgICAgICAgLy8gIHRoaXMuZXhpdHNpbmdVc2VyLnB1c2goYS50b1N0cmluZygpKTtcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgLy8gZWxlbWVudC51c2VySWRuTGlzdCA9IHRlbXBhcnI7XHJcbiAgICAgICAgICAvLyB0ZW1wYXJyID0gW107XHJcbiAgICAgICAgICAvLyAgZWxlbWVudC5zZWxlY3RlZFZhbHMgPSBbXTtcclxuICAgICAgICAgIC8vIH0pO1xyXG4gICAgICAgICAgLy8gbGV0IGFwcGxVc2VyTGlzdD1yZXN1bHQuYXBwbFVzZXJMaXN0O1xyXG4gICAgICAgICAgLy8gdGhpcy5hcHBsVXNlckxpc3Q9W11cclxuICAgICAgICAgIC8vIGFwcGxVc2VyTGlzdC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgLy8gICBpZih0aGlzLmV4aXRzaW5nVXNlci5pbmRleE9mKGVsZW1lbnQuayk9PS0xKVxyXG4gICAgICAgICAgLy8gICB0aGlzLmFwcGxVc2VyTGlzdC5wdXNoKGVsZW1lbnQpO1xyXG4gICAgICAgICAgLy8gfSk7XHJcblxyXG5cclxuICAgICAgICAgIHRoaXMuYXBwbFVzZXJMaXN0ID0gdGhpcy5hcHBsVXNlckxpc3QubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICAgIGxhYmVsOiBvcHRpb24udlxyXG4gICAgICAgICAgfSkpO1xyXG5cclxuICAgICAgICAgIFxyXG4gICAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcblxyXG4gICAgICAgICAgLy8gfSwgMTAwMCk7XHJcblxyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgc2VsZWN0ZWRQZW9wbGUzID0gW107XHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgXHJcbiAgfVxyXG5cclxuICBsb2FkU3VnZ2RhdGEoc3RyLCBwYWdlX2l0ZW1faWRuLCBmb3JtX2ZpZWxkKSB7XHJcbiAgICBpZiAoc3RyID09IHVuZGVmaW5lZCB8fCBzdHIgPT0gJycgfHwgc3RyLmxlbmd0aCA8IDMpIHJldHVybjtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tcImZybW5tZVwiXSB8fCAnbG9hZFN1Z2dlc3Rpb25EYXRhJztcclxuICAgIHJlcU9ialsncGFnZV9pdGVtX2lkbiddID0gcGFnZV9pdGVtX2lkbjtcclxuICAgIHJlcU9ialsnbGlrZVN0ciddID0gc3RyO1xyXG4gICAgdGhpcy5oZWFkZXJbJ21ldGhvZCddID0gJ2xvYWRTdWdnZXN0aW9uRGF0YUJ5SXRlbUlkbic7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8vIFxyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L3JlZ2lzdGVyRGF0YVwiKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgIFxyXG4gICAgICBsZXQgcmVzdWx0ID0gcmVzcG9uc2UucmVzdWx0O1xyXG4gICAgICBsZXQgc3VnZ2VzdGlvbkRhdGEgPSByZXN1bHQuc3VnZ2VzdGlvbkRhdGEgfHwgW107XHJcbiAgICAgIGxldCBsaXN0ID0gc3VnZ2VzdGlvbkRhdGEubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgIHZhbHVlOiBvcHRpb24uayxcclxuICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgfSkpO1xyXG4gICAgICB0aGlzLnNxbEFycmF5W2Zvcm1fZmllbGRdID0gbGlzdDtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgbG9hZEpubFN1Z2dkYXRhKHN0ciwgYXR0cl9ubWUsIG1kbCkge1xyXG4gICAgaWYgKHN0ciA9PSB1bmRlZmluZWQgfHwgc3RyID09ICcnIHx8IHN0ci5sZW5ndGggPCAzKSByZXR1cm47XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbXNbXCJmcm1ubWVcIl0gfHwgJ2xvYWRTdWdnZXN0aW9uRGF0YSc7XHJcbiAgICByZXFPYmpbJ2F0dHJfbm1lJ10gPSBhdHRyX25tZTtcclxuICAgIHJlcU9ialsnbWRsJ10gPSBtZGw7XHJcbiAgICByZXFPYmpbJ2xpa2VTdHInXSA9IHN0cjtcclxuICAgIHRoaXMuaGVhZGVyWydtZXRob2QnXSA9ICdsb2FkU3VnZ2VzdGlvbkRhdGFCeUF0dHJObWUnO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgXHJcbiAgICAvLyBcclxuICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsIFwiYWNjb3VudHMvYWNjTGVkZ2VyXCIpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgXHJcbiAgICAgIGxldCByZXN1bHQgPSByZXNwb25zZS5yZXN1bHQ7XHJcbiAgICAgIGxldCBzdWdnZXN0aW9uRGF0YSA9IHJlc3VsdC5zdWdnZXN0aW9uRGF0YSB8fCBbXTtcclxuICAgICAgbGV0IGxpc3QgPSBzdWdnZXN0aW9uRGF0YS5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgdmFsdWU6IG9wdGlvbi52LFxyXG4gICAgICAgIGxhYmVsOiBvcHRpb24udlxyXG4gICAgICB9KSk7XHJcbiAgICAgIHRoaXMuc3FsQXJyYXlbYXR0cl9ubWVdID0gbGlzdDtcclxuICAgIH0pXHJcblxyXG4gIH1cclxuXHJcbiAgb25jaGFuZVZhbHMoZSwgYnlydHJtaWQsIHNlbGVjdGVkVXNlcklkbikge1xyXG4gICAgdGhpcy5kYXRhVHJuc0xpc3QgPSBbLi4udGhpcy50ZXJtc0xpc3RdO1xyXG4gICAgdGhpcy5ieXJPYmpbXCJidXllcl90ZXJtc19pZG5cIl0gPSBieXJ0cm1pZDtcclxuICAgIGlmIChzZWxlY3RlZFVzZXJJZG4gIT0gdW5kZWZpbmVkKVxyXG4gICAgICB0aGlzLmJ5ck9ialtcInVzZXJJZG5MaXN0XCJdID0gc2VsZWN0ZWRVc2VySWRuO1xyXG5cclxuICAgIGxldCBjaGVja0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGJ5cnRybWlkKTtcclxuICAgIGlmIChcclxuICAgICAgKGNoZWNrQm94IGFzIGFueSkuY2hlY2tlZCA9PSB0cnVlICYmXHJcbiAgICAgIHNlbGVjdGVkVXNlcklkbiAhPSB1bmRlZmluZWQgJiZcclxuICAgICAgc2VsZWN0ZWRVc2VySWRuICE9IFwiXCJcclxuICAgICkge1xyXG4gICAgICB2YXIgaW5kZXggPSB0aGlzLmRhdGFUcm5zTGlzdC5maW5kSW5kZXgoXHJcbiAgICAgICAgeCA9PiB4LmJ1eWVyX3Rlcm1zX2lkbiA9PSBieXJ0cm1pZFxyXG4gICAgICApO1xyXG4gICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgIGNvbnN0IGZpbHRlcmVkQXJyID0gdGhpcy5kYXRhVHJuc0xpc3QuZmlsdGVyKFxyXG4gICAgICAgICAgaXRlbSA9PiBpdGVtLmJ1eWVyX3Rlcm1zX2lkbiAhPT0gYnlydHJtaWRcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZGF0YVRybnNMaXN0ID0gZmlsdGVyZWRBcnI7XHJcbiAgICAgIH1cclxuICAgICAgLy8gfVxyXG4gICAgICB0aGlzLmRhdGFUcm5zTGlzdC5wdXNoKHRoaXMuYnlyT2JqKTtcclxuICAgICAgdGhpcy5ieXJPYmogPSB7fTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnN0IGZpbHRlcmVkQXJyID0gdGhpcy5kYXRhVHJuc0xpc3QuZmlsdGVyKFxyXG4gICAgICAgIGl0ZW0gPT4gaXRlbS5idXllcl90ZXJtc19pZG4gIT09IGJ5cnRybWlkXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0YVRybnNMaXN0ID0gZmlsdGVyZWRBcnI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9uY2hhbmdlVXNlclNlbGVjdChlLCB0cm1vYmopIHtcclxuICAgIGxldCBvYmo6IGFueSA9IHt9O1xyXG4gICAgb2JqID0geyAuLi50cm1vYmogfTtcclxuXHJcbiAgICAvLyBvYmouc2VsZWN0ZWRWYWxzID0gWy4uLnRybW9iai51c2VySWRuTGlzdF07XHJcbiAgICAvLyBpZiAob2JqLnNlbGVjdGVkVmFscy5pbmRleE9mKGUudmFsdWUpICE9IC0xKSB7XHJcbiAgICAvLyAgIG9iai5zZWxlY3RlZFZhbHMucHVzaChlLnZhbHVlKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICBpZiAob2JqLnNlbGVjdGVkVmFscy5pbmRleE9mKGUudmFsdWUpICE9IC0xKSB7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBvYmouc2VsZWN0ZWRWYWxzLnB1c2goZS52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICB0cm1vYmogPSBvYmo7XHJcbiAgICBcclxuICB9XHJcbiAgb25jaGFuZ2VVc2VyRGVzZWxlY3QoZSwgdHJtb2JqKSB7XHJcbiAgICAgXHJcbiAgICBsZXQgb2JqOiBhbnkgPSB7fTtcclxuICAgIG9iaiA9IHsgLi4udHJtb2JqIH07XHJcbiAgICBvYmouc2VsZWN0ZWRWYWxzLnNwbGljZSh0aGlzLnRlcm1zTGlzdC5pbmRleE9mKGUudmFsdWUpLCAxKTtcclxuICAgIHRybW9iaiA9IG9iajtcclxuICAgIFxyXG4gIH1cclxuXHJcbiAgb25jaGFuZ2VVc2VyTGlzdChlLCB0cm1vYmosIHR5cCkge1xyXG5cclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJidXllcl90ZXJtc19pZG5cIl0gPSB0cm1vYmouYnV5ZXJfdGVybXNfaWRuO1xyXG4gICAgcmVxT2JqW1widXNlcl9pZG5cIl0gPSBlLnZhbHVlO1xyXG4gICAgcmVxT2JqWydhY3Rpb24nXSA9IHR5cDtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcImNvbnRhY3RTZWFyY2hGb3JtXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiYXNzaWduVXNlclRlcm1cIjtcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5sb2FkKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG5cclxuICAgICAgICAgIHRoaXMubG9hZEFwcGxpY2F0aW9uVXNlclRlcm1zKCcnKTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcblxyXG5cclxuICB9XHJcbiAgc2F2ZUFwcFVzZXJ0ZXJtcygpIHtcclxuICAgIGxldCB2YWxBcnIgPSBbXTtcclxuICAgIHRoaXMudGVybXNMaXN0LmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgIGxldCBjaGVja0JveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGVsZW1lbnQuYnV5ZXJfdGVybXNfaWRuKTtcclxuICAgICAgaWYgKChjaGVja0JveCBhcyBhbnkpLmNoZWNrZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBvYmogPSB7fTtcclxuICAgICAgICBvYmpbXCJidXllcl90ZXJtc19pZG5cIl0gPSBlbGVtZW50LmJ1eWVyX3Rlcm1zX2lkbjtcclxuICAgICAgICBvYmpbXCJ1c2VySWRuTGlzdFwiXSA9IGVsZW1lbnQudXNlcklkbkxpc3Q7XHJcbiAgICAgICAgdmFsQXJyLnB1c2gob2JqKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJubWVfaWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwiY29udGFjdFNlYXJjaEZvcm1cIjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlQXNzaWduQXBwbGljYXRpb25Vc2VydGVybXNcIjtcclxuICAgIHJlcU9ialtcImRhdGFUcm5zTGlzdFwiXSA9IHZhbEFycjtcclxuXHJcbiAgICBcclxuICAgIFxyXG5cclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5TYXZlKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldEVkaXREYXRhKGRhdGEpIHtcclxuICAgIHRoaXMuZm9ybUZpbGRzID0gW107XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICB2YXIgcGFnZVRQID0gdGhpcy5wYWdlSW5mby5wYWdlX3R5cDtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLnBhZ2VJbmZvLmZvcm1fbm1lO1xyXG4gICAgcmVxT2JqW1wicHJpbWFyeUtleVwiXSA9IHRoaXMucGFnZUluZm8ucHJpbWFyeV9rZXlfZmllbGQ7XHJcbiAgICByZXFPYmpbXCJwYWdlVHlwXCJdID0gdGhpcy5wYWdlSW5mby5wYWdlX3R5cDtcclxuICAgIHJlcU9ialtcInNlY29uZEtleUZpZWxkXCJdID0gdGhpcy5wYWdlSW5mby5zZWNvbmRfa2V5X2ZpZWxkO1xyXG4gICAgaWYgKHRoaXMudGJDZWxsICE9IG51bGwpIHtcclxuICAgICAgcmVxT2JqW1wiaW5MaW5lRWRpdENvbHVtblwiXSA9IHRoaXMudGJDZWxsO1xyXG4gICAgfVxyXG4gICAgcmVxT2JqW1wicHJpbWFyeUlkXCJdID0gdGhpcy5waWQ7XHJcbiAgICBpZiAocGFnZVRQID09IFwianNvbkZvcm1cIikge1xyXG4gICAgICByZXFPYmpbXCJ3aGVyZUtleXNcIl0gPSB0aGlzLnBhZ2VJbmZvLndoZXJlX2NsYXVzZTtcclxuICAgICAgcmVxT2JqW1wid2hlcmVWbHVzXCJdID0gdGhpcy53aGVyZU1hcFt0aGlzLnBhZ2VJbmZvLndoZXJlX2NsYXVzZV07XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkQWRkRWRpdFwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldEVkaXREKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiICYmIHJlc3BvbnNlLm1lc3NhZ2UgIT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5mb3JtRmlsZHMgPSByZXNwb25zZS5mb3JtRmllbGRzO1xyXG4gICAgICAgICAgaWYgKHRoaXMudGJDZWxsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXCJkYXRhbWRidG5cIikuY2xpY2soKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZm9ybUZpbGRzLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwidGJcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TG92TGlzdChlbGVtZW50LmZvcm1fZmllbGQsIGVsZW1lbnQucGFnZV9pdGVtX2lkbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZF90eXAgPT0gXCJzXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldExvdkxpc3QoZWxlbWVudC5mb3JtX2ZpZWxkLCBlbGVtZW50LnBhZ2VfaXRlbV9pZG4pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwic2JcIikge1xyXG5cclxuICAgICAgICAgICAgICBsZXQgcXJ5ID0gZWxlbWVudC5oZWxwIHx8ICcnO1xyXG4gICAgICAgICAgICAgIGlmIChxcnkgIT0gJycgJiYgZWxlbWVudC5kZWZhdWx0X3ZhbHVlICE9IFwiXCIpIHtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYWdlSW5mby5mb3JtX25tZSA9PSAnYWRkcmVzc01hc3RlcicgfHwgdGhpcy5wYWdlSW5mby5mb3JtX25tZSA9PSAnYWNjQWRkcmVzc01hc3RlcicgfHwgdGhpcy5wYWdlSW5mby5mb3JtX25tZSA9PSAnYWNjQWRkcmVzc0RldGFpbHMnKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBjaXR5ID0gZGF0YS5jaXR5X25tIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgc3RhdGUgPSBkYXRhLnN0YXRlX25tIHx8ICcnO1xyXG4gICAgICAgICAgICAgICAgICBsZXQgY291bnRyeSA9IGRhdGEuY291bnRyeV9ubSB8fCAnJztcclxuICAgICAgICAgICAgICAgICAgaWYgKGNpdHkgIT0gJycgJiYgY291bnRyeSAhPSAnJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBzdHIgPSBjaXR5ICsgXCIjXCIgKyBjb3VudHJ5O1xyXG4gICAgICAgICAgICAgICAgICAgIHN0ciA9IHN0ci50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG92Q2l0eUxpc3QoZWxlbWVudCwgc3RyKTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgcXJ5ID0gcXJ5LnJlcGxhY2UoXCIjSUROXCIsIFwiJ1wiICsgZWxlbWVudC5kZWZhdWx0X3ZhbHVlICsgXCInXCIpXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0TG92TGlzdGRhdGEoZWxlbWVudCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09IFwiaGRcIikge1xyXG4gICAgICAgICAgICAgIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSA9IHRoaXMud2hlcmVNYXBbZWxlbWVudC5mb3JtX2ZpZWxkXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkX3R5cCA9PSBcInNxXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLmdldFNlcXVlbmNlKGVsZW1lbnQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmR0YV90eXAgPT0gXCJzYVwiKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5nZXRMb3ZMaXN0KGVsZW1lbnQuZm9ybV9maWVsZCwgZWxlbWVudC5wYWdlX2l0ZW1faWRuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5kdGFfdHlwID09IFwic3JcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMuZ2V0TG92TGlzdChlbGVtZW50LmZvcm1fZmllbGQsIGVsZW1lbnQucGFnZV9pdGVtX2lkbik7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZnYgPSBlbGVtZW50LmRlZmF1bHRfdmFsdWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZF90eXAgPT0gXCJoY1wiKSB7XHJcbiAgICAgICAgICAgICAgZWxlbWVudC5kZWZhdWx0X3ZhbHVlID0gZWxlbWVudC5sb3ZfcXJ5O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIGlmIChlbGVtZW50LmZvcm1fZmllbGRfdHlwID09ICdsJykge1xyXG4gICAgICAgICAgICAvLyAgIGVsZW1lbnQua3YubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgICAvLyAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgICAvLyAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgICAgIC8vICAgfSkpO1xyXG4gICAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRTZXF1ZW5jZShlbGVtZW50KSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJzZXFcIl0gPSBlbGVtZW50Lmxvdl9xcnk7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiZ2V0U2VxXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAuZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdmFyIHNlcSA9IHJlc3BvbnNlLnNlcTtcclxuICAgICAgICAgIGVsZW1lbnQuZGVmYXVsdF92YWx1ZSA9IHNlcTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFNlcXVlbmNlMShzZXFubWUpIHtcclxuICAgIHZhciBzZXEgPSBcIlwiO1xyXG4gICAgIFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wic2VxXCJdID0gc2Vxbm1lO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImdldFNlcVwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldERhdGEocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHNlcSA9IHJlc3BvbnNlLnNlcTtcclxuICAgICAgICAgIHJldHVybiBzZXE7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBnZXRMb3ZMaXN0ZGF0YSh0YmxGKSB7XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJwYWdlX2l0ZW1faWRuXCJdID0gdGJsRi5wYWdlX2l0ZW1faWRuO1xyXG4gICAgcmVxT2JqW1wic3RyXCJdID0gdGJsRi5kZWZhdWx0X3ZhbHVlO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRDaXR5Q291bnRyeURhdGFcIjtcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5nZXREYXRhKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmxvdnMgPSByZXNwb25zZS5rdi5tYXAob3B0aW9uID0+ICh7XHJcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24uayxcclxuICAgICAgICAgICAgbGFiZWw6IG9wdGlvbi52XHJcbiAgICAgICAgICB9KSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5zcWxBcnJheVt0YmxGLmZvcm1fZmllbGRdID0gdGhpcy5sb3ZzO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmRmdiA9PSBudWxsKSByZXR1cm47XHJcbiAgICAgICAgICBpZiAodGJsRiA9PSBcImF0dHJcIikge1xyXG4gICAgICAgICAgICB0aGlzLnNxbEFycmF5W3RibEZdLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZnYuZm9yRWFjaChlbGVtZW50MiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC52ID09IGVsZW1lbnQyKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3FsQXJyYXlbdGJsRl0uc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExvdkxpc3QodGJsRiwgcGFnZV9pdGVtX2lkbikge1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wicGFnZV9pdGVtX2lkblwiXSA9IHBhZ2VfaXRlbV9pZG47XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiZ2V0RGF0YUJ5SXRlbUlkblwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmdldERhdGEocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMubG92cyA9IHJlc3BvbnNlLmt2Lm1hcChvcHRpb24gPT4gKHtcclxuICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi5rLFxyXG4gICAgICAgICAgICBsYWJlbDogb3B0aW9uLnZcclxuICAgICAgICAgIH0pKTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNxbEFycmF5W3RibEZdID0gdGhpcy5sb3ZzO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmRmdiA9PSBudWxsKSByZXR1cm47XHJcbiAgICAgICAgICBpZiAodGJsRiA9PSBcImF0dHJcIikge1xyXG4gICAgICAgICAgICB0aGlzLnNxbEFycmF5W3RibEZdLmZvckVhY2goKGVsZW1lbnQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5kZnYuZm9yRWFjaChlbGVtZW50MiA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC52ID09IGVsZW1lbnQyKSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc3FsQXJyYXlbdGJsRl0uc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldExvdkNpdHlMaXN0KHRibEYsIHN0cikge1xyXG4gICAgIFxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wicGFnZV9pdGVtX2lkblwiXSA9IHRibEYucGFnZV9pdGVtX2lkbjtcclxuICAgIHJlcU9ialtcInN0clwiXSA9IHN0cjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkQ2l0eUNvdW50cnlEYXRhXCI7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5nZXREYXRhKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICAgXHJcblxyXG4gICAgICAgICAgdGhpcy5sb3ZzID0gcmVzcG9uc2Uua3YubWFwKG9wdGlvbiA9PiAoe1xyXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLmssXHJcbiAgICAgICAgICAgIGxhYmVsOiBvcHRpb24udlxyXG4gICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgIFxyXG5cclxuICAgICAgICAgIHRoaXMuc3FsQXJyYXlbdGJsRi5mb3JtX2ZpZWxkXSA9IHRoaXMubG92cztcclxuICAgICAgICAgIGlmICh0aGlzLmxvdnMubGVuZ3RoID4gMSlcclxuICAgICAgICAgICAgdGJsRi5kZWZhdWx0X3ZhbHVlID0gdGhpcy5sb3ZzWzFdLnZhbHVlO1xyXG5cclxuXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBEZWxldGVUZXJtcygpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IHRoaXMucGFnZUluZm8uZm9ybV9ubWU7XHJcbiAgICByZXFPYmpbXCJidXllclRlcm1zSWRuXCJdID0gdGhpcy5waWQ7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiZGVsZXRlQnV5ZXJUZXJtc1wiO1xyXG4gICAgXHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIHRoaXMucGFyYU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLm5hdmZvcm07XHJcbiAgICAgICAgdGhpcy5nZXRQYWdlRGVmaW5hdGlvbigpO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG5cclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVEYXRhTGlzdCgpIHtcclxuICAgICBcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IHRoaXMucGFnZUluZm8uZm9ybV9ubWU7XHJcbiAgICByZXFPYmpbXCJwYWdlVHlwXCJdID0gdGhpcy5wYWdlSW5mby5wYWdlX3R5cDtcclxuICAgIHJlcU9ialtcInByaW1hcnlLZXlcIl0gPSB0aGlzLnBhZ2VJbmZvLnByaW1hcnlfa2V5X2ZpZWxkO1xyXG4gICAgcmVxT2JqW1wicHJpbWFyeUlkXCJdID0gdGhpcy5waWQ7XHJcbiAgICByZXFPYmpbXCJ0YWJsZU5hbWVcIl0gPSB0aGlzLnBhZ2VJbmZvLnRhYmxlX25hbWU7XHJcbiAgICByZXFPYmpbXCJ0cm5zVHlwZVwiXSA9IFwiREVMRVRFXCI7XHJcbiAgICBpZiAodGhpcy5wayAhPSBcIlwiICYmIHRoaXMucHYgIT0gXCJcIikge1xyXG4gICAgICByZXFPYmpbXCJ3aGVyZUtleXNcIl0gPSB0aGlzLnBrO1xyXG4gICAgICByZXFPYmpbXCJ3aGVyZVZsdXNcIl0gPSBcIlwiICsgdGhpcy5wdjtcclxuICAgIH1cclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlXCI7XHJcbiAgICBcclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLnNzXHJcbiAgICAgIC5kZWxldGVEYXRhKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFBhZ2VEZWZpbmF0aW9uKCk7XHJcbiAgICAgICAgICAvLyB0aGlzLmRhdGFsaXN0LnNsaWNlKHRoaXMuY2ksIDEpO1xyXG4gICAgICAgICAgdGhpcy5kZWxldGVjbHNidG4ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGNoa0Z1bihmbCwgZkRhdGEpIHtcclxuICAgIGlmIChmbC52YWxpZGF0aW9ucyA9PSBcIlwiIHx8IGZsLnZhbGlkYXRpb25zID09IG51bGwpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGZsLnZhbGlkYXRpb25zID09IFwidmFsaWRhdGVRdWVyeVwiKSB7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVF1ZXJ5KGZsLCBmRGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmwudmFsaWRhdGlvbnMgPT0gXCJpc1VuaXF1ZVwiKSB7XHJcbiAgICAgICAgdGhpcy5pc1VuaXF1ZShmbCwgZkRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKGZsLnZhbGlkYXRpb25zID09ICdzZXRuYW1lcHJpbnQnKSB7XHJcbiAgICAgICAgdGhpcy5zZXRuYW1lcHJpbnQoZmwsIGZEYXRhKTtcclxuICAgICAgfSBlbHNlIGlmIChmbC52YWxpZGF0aW9ucyA9PSAnc2V0ZmFjdG9yJykge1xyXG4gICAgICAgIHRoaXMuc2V0ZmFjdG9yKGZsLCBmRGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZmwuZm9ybV9maWVsZF90eXAgPT0gXCJzXCIpIHtcclxuICAgICAgICBpZiAoZmwudmFsaWRhdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgc3EgPSBmbC52YWxpZGF0aW9ucy5yZXBsYWNlKC8jUVZBTC9nLCBmRGF0YSk7XHJcbiAgICAgICAgLy90aGlzLmdldExvdkxpc3RkYXRhKGZsLmNvbHVtbl9rZXksIHNxKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChmbC52YWxpZGF0aW9ucyA9PSBcImlzRXhpc3RcIikge1xyXG4gICAgICAgIGlmIChmbC52YWxpZGF0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuaXNFeGlzdChmbCwgZkRhdGEpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRuYW1lcHJpbnQoZmwsIGZEYXRhKSB7XHJcbiAgICAgXHJcbiAgICBsZXQgbm1lSWRuID0gZkRhdGE7XHJcbiAgICBsZXQgbGlzdCA9IHRoaXMuc3FsQXJyYXlbZmwuZm9ybV9maWVsZF0gfHwgW107XHJcbiAgICBsZXQgbm13RHRsID0gbGlzdC5maW5kKHggPT4geC52YWx1ZSA9PSBubWVJZG4pIHx8ICcnO1xyXG4gICAgaWYgKG5td0R0bCAhPSAnJykge1xyXG4gICAgICB0aGlzLmZvcm1GaWxkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGQgPT0gJ25tZScpXHJcbiAgICAgICAgICBlbGVtZW50LmRlZmF1bHRfdmFsdWUgPSBubXdEdGwubGFiZWxcclxuICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkID09ICdwcmludF9ubWUnKVxyXG4gICAgICAgICAgZWxlbWVudC5kZWZhdWx0X3ZhbHVlID0gbm13RHRsLmxhYmVsXHJcblxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNldGZhY3RvcihmbCwgZkRhdGEpIHtcclxuICAgIGxldCBmY3RyID0gLTE7XHJcbiAgICBpZiAoZkRhdGEgPT0gJ2luY29tZScgfHwgZkRhdGEgPT0gJ2Fzc2V0cycpXHJcbiAgICAgIGZjdHIgPSAxO1xyXG4gICAgdGhpcy5mb3JtRmlsZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZCA9PSAnZmN0cicpXHJcbiAgICAgICAgZWxlbWVudC5kZWZhdWx0X3ZhbHVlID0gZmN0clxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGlzRXhpc3QoZHRhT2JqLCBmRGF0YSkge1xyXG4gICAgXHJcbiAgICBpZiAoZkRhdGEgPT0gXCJcIiB8fCBmRGF0YSA9PSBudWxsKSByZXR1cm47XHJcbiAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJ1c2VybmFtZVwiXSA9IGZEYXRhO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImlzVXNlckV4aXN0XCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAudmFsaWRhdGUocmVxT2JqLCBvcHRpb25zLCBcImNvbnRhY3QvbG9hZENvbnRhY3RcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UubWVzc2FnZSA9PSBcIlwiKSB7XHJcbiAgICAgICAgICB0aGlzLnVzcmlzRXhpc3QgPSB0cnVlO1xyXG4gICAgICAgICAgdGhpcy5pY28gPSBcImNoZWNrXCI7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyID0gZHRhT2JqLmZvcm1fZmllbGQ7XHJcbiAgICAgICAgICAvLyB0aGlzLmZsYXNoTWVzc2FnZXNTZXJ2aWNlLnNob3cocmVzcG9uc2UubWVzc2FnZSwgeyBjc3NDbGFzczogJ2FsZXJ0LWRhbmdlcicsIHRpbWVvdXQ6IDMwMDAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGR0YU9iai5kZWZhdWx0X3ZhbHVlID0gXCJcIjtcclxuICAgICAgICAgIHRoaXMudXNyaXNFeGlzdCA9IHRydWU7XHJcbiAgICAgICAgICB0aGlzLmljbyA9IFwidGltZXNcIjtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5vbkVyciA9IGR0YU9iai5mb3JtX2ZpZWxkO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIHN1Ym1pdEZvcm0oZm9ybVZhbCwgYnRuKSB7XHJcbiAgICB0aGlzLm9uU3VibWl0KGZvcm1WYWwsIGJ0bik7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdChmb3JtVmFsLCBidG4pIHtcclxuICAgIHZhciB0ID0gT2JqZWN0LmtleXMoZm9ybVZhbC5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKGZpZWxkID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IGZvcm1WYWwuZm9ybS5nZXQoZmllbGQpO1xyXG4gICAgICBjb250cm9sLm1hcmtBc1RvdWNoZWQoeyBvbmx5U2VsZjogdHJ1ZSB9KTtcclxuICAgIH0pO1xyXG4gICAgaWYgKGZvcm1WYWwuZm9ybS52YWxpZCA9PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuYWRkZWRpdChmb3JtVmFsLnZhbHVlLCBidG4pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYWRkZWRpdCh2LCBidG4pIHtcclxuXHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGlmICh0aGlzLnBhZ2VJbmZvLmZvcm1fbm1lID09ICdhZGRyZXNzTWFzdGVyJyB8fCB0aGlzLnBhZ2VJbmZvLmZvcm1fbm1lID09ICdhY2NBZGRyZXNzTWFzdGVyJyB8fCB0aGlzLnBhZ2VJbmZvLmZvcm1fbm1lID09ICdhY2NBZGRyZXNzRGV0YWlscycpIHtcclxuICAgICAgbGV0IGNpdHlTdHIgPSB2LmNpdHlfbm0gfHwgJyc7XHJcbiAgICAgIGxldCBjaXR5U3RyTHN0ID0gY2l0eVN0ci5zcGxpdCgnIycpO1xyXG4gICAgICBpZiAoY2l0eVN0ckxzdC5sZW5ndGggPT0gMykge1xyXG4gICAgICAgIHYuY291bnRyeV9ubSA9IGNpdHlTdHJMc3RbMl07XHJcbiAgICAgICAgdi5zdGF0ZV9ubSA9IGNpdHlTdHJMc3RbMV07XHJcbiAgICAgICAgdi5jaXR5X25tID0gY2l0eVN0ckxzdFswXTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKFwiUGxlYXNlIGNoZWNrIGNpdHlcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmJ0bk5hbWUgIT0gXCJBZGRcIilcclxuICAgICAgICB2WydhZGRyZXNzX2lkbiddID0gdGhpcy5waWQ7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgdmFyIHBhZ2VUUCA9IHRoaXMucGFnZUluZm8ucGFnZV90eXAudHJpbSgpO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IHRoaXMucGFnZUluZm8uZm9ybV9ubWU7XHJcbiAgICByZXFPYmpbXCJwcmltYXJ5S2V5XCJdID0gdGhpcy5wYWdlSW5mby5wcmltYXJ5X2tleV9maWVsZDtcclxuICAgIHJlcU9ialtcInBhZ2VUeXBcIl0gPSB0aGlzLnBhZ2VJbmZvLnBhZ2VfdHlwO1xyXG4gICAgcmVxT2JqW1wic2Vjb25kS2V5RmllbGRcIl0gPSB0aGlzLnBhZ2VJbmZvLnNlY29uZF9rZXlfZmllbGQ7XHJcbiAgICByZXFPYmpbXCJwcmltYXJ5SWRcIl0gPSB0aGlzLmJ0bk5hbWUgPT0gXCJBZGRcIiA/IFwiXCIgOiBcIlwiICsgdGhpcy5waWQ7XHJcbiAgICByZXFPYmpbXCJ0YWJsZU5hbWVcIl0gPSB0aGlzLnBhZ2VJbmZvLnRhYmxlX25hbWU7XHJcbiAgICByZXFPYmpbXCJ0cm5zVHlwZVwiXSA9IHRoaXMuYnRuTmFtZSA9PSBcIkFkZFwiID8gXCJBRERcIiA6IFwiRURJVFwiO1xyXG4gICAgcmVxT2JqW1wiZGF0YVRybnNEdGxcIl0gPSB2O1xyXG4gICAgaWYgKHBhZ2VUUCA9PSBcImpzb25Gb3JtXCIpIHtcclxuICAgICAgcmVxT2JqW1wid2hlcmVLZXlzXCJdID0gdGhpcy5wYWdlSW5mby53aGVyZV9jbGF1c2U7XHJcbiAgICAgIHJlcU9ialtcIndoZXJlVmx1c1wiXSA9IHRoaXMud2hlcmVNYXBbdGhpcy5wYWdlSW5mby53aGVyZV9jbGF1c2VdO1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZVwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLmFkZERhdGEocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIGJ0bi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy50YkNlbGwgPSBudWxsO1xyXG4gICAgICAgICAgdGhpcy5zZWFyY2hGID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuY2xvc2VidG4ubmF0aXZlRWxlbWVudC5jbGljaygpO1xyXG4gICAgICAgICAgLy8gaWYgKHRoaXMuYnRuTmFtZSAhPSAnQWRkJykge1xyXG4gICAgICAgICAgLy8gICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmdsYk9iaikge1xyXG4gICAgICAgICAgLy8gICAgIGlmICh2Lmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICAgIC8vICAgICAgIHRoaXMuZ2xiT2JqW2tleV0gPSB2W2tleV1cclxuICAgICAgICAgIC8vICAgICB9XHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH0gZWxzZSB7XHJcbiAgICAgICAgICAvLyBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLmRhdGFsaXN0WzBdKSB7XHJcbiAgICAgICAgICAvLyAgIGlmICghdi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5nbGJPYmpba2V5XSA9IHJlc3BvbnNlLl9pZDtcclxuICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgLy8gICBpZiAodi5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgICAvLyAgICAgdGhpcy5nbGJPYmpba2V5XSA9IHZba2V5XVxyXG4gICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAvLyB9XHJcbiAgICAgICAgICAvLyB0aGlzLmRhdGFsaXN0LnB1c2godGhpcy5nbGJPYmopO1xyXG4gICAgICAgICAgdGhpcy5nZXRQYWdlRGVmaW5hdGlvbigpO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBidG4uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMudGJDZWxsID0gbnVsbDtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgYnRuLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy50YkNlbGwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICB2YWxpZGF0ZVF1ZXJ5KHRibE9iaiwgZikge1xyXG4gICAgaWYgKGYgPT0gXCJcIiB8fCBmID09IG51bGwpIHJldHVybjtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInNxbFwiXSA9IGY7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwidmFsaWRhdGVRdWVyeVwiO1xyXG4gICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuc3NcclxuICAgICAgLnZhbGlkYXRlKHJlcU9iaiwgb3B0aW9ucywgXCJzeXN0ZW0vYXBwcGFnZXNcIilcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyID0gXCJcIjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLm9uRXJyID0gdGJsT2JqLmZvcm1fZmllbGQ7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaXNVbmlxdWUoZHRhT2JqLCBpbnB1VmFsKSB7XHJcbiAgICBpZiAoaW5wdVZhbCA9PSBcIlwiIHx8IGlucHVWYWwgPT0gbnVsbCkgcmV0dXJuO1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1widGFibGVOYW1lXCJdID0gdGhpcy5wYWdlSW5mby50YWJsZV9uYW1lO1xyXG4gICAgcmVxT2JqW1wid2hlcmVLZXlzXCJdID0gZHRhT2JqLmZvcm1fZmllbGQ7XHJcbiAgICByZXFPYmpbXCJ3aGVyZVZsdXNcIl0gPSBpbnB1VmFsO1xyXG4gICAgcmVxT2JqW1wicHJpbWFyeUtleVwiXSA9IHRoaXMucGFnZUluZm8ucHJpbWFyeV9rZXlfZmllbGQ7XHJcbiAgICByZXFPYmpbXCJwcmltYXJ5SWRcIl0gPSB0aGlzLmJ0bk5hbWUgPT0gXCJBZGRcIiA/IFwiXCIgOiB0aGlzLnBpZDtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJ1bmlxdWVDb25RXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAudmFsaWRhdGUocmVxT2JqLCBvcHRpb25zLCBcInN5c3RlbS9hcHBwYWdlc1wiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMub25FcnIgPSBcIlwiO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMub25FcnIgPSBkdGFPYmouZm9ybV9maWVsZDtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBvblBhZ2VTaXplQ2hhbmdlKHApIHtcclxuICAgIGlmIChwID09IFwiQWxsXCIpIHtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHRoaXMuZGF0YWxpc3QubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5wYWdlU2l6ZSA9IHA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRPcmRlcih2YWx1ZTogc3RyaW5nLCBpKSB7XHJcbiAgICB0aGlzLnNob3dhcnIgPSBpO1xyXG4gICAgaWYgKHRoaXMub3JkZXIgPT09IHZhbHVlKSB7XHJcbiAgICAgIHRoaXMucmV2ZXJzZSA9ICF0aGlzLnJldmVyc2U7XHJcbiAgICB9XHJcbiAgICB0aGlzLm9yZGVyID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBlZGl0Q2VsbChkLCB0YmgpIHtcclxuICAgIHRoaXMuZ2xiT2JqID0gZDtcclxuICAgIHRoaXMudGJDZWxsID0gdGJoO1xyXG4gICAgdGhpcy50aXRsZSA9IGQudGl0bGU7XHJcbiAgICB0aGlzLmJ0bk5hbWUgPSBcIkVkaXRcIjtcclxuICAgIHRoaXMucGlkID0gZFt0aGlzLnBrZl07XHJcbiAgICB0aGlzLmdldEVkaXREYXRhKGQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0TmFtZUF0dHIoZnJtbm1lLCBtZGwpIHtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBmcm1ubWU7XHJcbiAgICByZXFPYmpbXCJubWVJZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcbiAgICByZXFPYmpbJ21kbExpc3QnXSA9IG1kbDtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkTm1lQXR0clwiO1xyXG4gICAgXHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5zc1xyXG4gICAgICAudmFsaWRhdGUocmVxT2JqLCBvcHRpb25zLCBcInN5c3RlbS9hcHBwYWdlc1wiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIFxyXG4gICAgICAgICAgdGhpcy51aUdycExpc3QgPSByZXNwb25zZS51aUdycExpc3Q7XHJcbiAgICAgICAgICB0aGlzLnVpR3JwTGlzdER0bCA9IHJlc3BvbnNlLnVpR3JwTGlzdER0bDtcclxuICAgICAgICAgIGlmKHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddICYmIEFycmF5LmlzQXJyYXkodGhpcy51aUdycExpc3REdGxbJ2FkZGl0aW9uYWxfZGV0YWlscyNWJ10pICYmIHRoaXMudWlHcnBMaXN0RHRsWydhZGRpdGlvbmFsX2RldGFpbHMjViddLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29uc3QgbG93ZXJDYXNlQXJyYXkgPSB0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXS5tYXAoaXRlbSA9PiBpdGVtLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnVpR3JwTGlzdER0bFsnYWRkaXRpb25hbF9kZXRhaWxzI1YnXSA9IGxvd2VyQ2FzZUFycmF5XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgXHJcbiAgICAgICAgICB0aGlzLmF0dHJDTGlzdER0bCA9IHJlc3BvbnNlLmF0dHJDTGlzdER0bDtcclxuICAgICAgICAgIHRoaXMuYXR0clFMaXN0RHRsID0gcmVzcG9uc2UuYXR0clFMaXN0RHRsO1xyXG4gICAgICAgICAgdGhpcy5kYXRhRHRsID0gcmVzcG9uc2UuZGF0YUR0bDtcclxuICAgICAgICAgIFxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBkb2NlZGl0QWN0aW9uO1xyXG4gIGRvY2RlbGV0ZUFjdGlvbjtcclxuXHJcbiAgb3duZXJEU0R0bCA9ICcnXHJcbiAgYXN5bmMgZ2V0T3duZXJEU0R0bCgpOiBQcm9taXNlPGFueT4ge1xyXG4gICAgbGV0IGRzVmFsdWUgPSAnJ1xyXG4gICAgbGV0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqWydmb3JtTm1lJ10gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1snZnJtbm1lJ11cclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6ICdnZXRPd25lckRTRHRsJ1xyXG4gICAgfVxyXG4gICAgYXdhaXQgdGhpcy5jcy5sb2FkKHJlcU9iaiwgb3B0aW9ucywgJ3N5c3RlbS9hcHBwYWdlcycpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSAnU1VDQ0VTUycpIHtcclxuICAgICAgICB0aGlzLm93bmVyRFNEdGwgPSByZXNwb25zZS5yZXN1bHRcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgIFxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgfVxyXG4gICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG5cclxuICAvLyBnZXRGaWxlcyhubWVJZG4pIHtcclxuXHJcbiAgLy8gICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAvLyAgIHRoaXMuZG9jZWRpdEFjdGlvbiA9IGZhbHNlO1xyXG4gIC8vICAgdGhpcy5kb2NkZWxldGVBY3Rpb24gPSBmYWxzZTtcclxuICAvLyAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gIC8vICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwiZG9jdW1lbnRVcGxvYWRNYXN0ZXJcIjtcclxuICAvLyAgIHJlcU9ialtcIm5tZUlkblwiXSA9IG5tZUlkbjtcclxuICAvLyAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkRG9jc1wiO1xyXG4gIC8vIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAvLyAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgLy8gICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAvLyAgIH1cclxuICAgIFxyXG4gIC8vICAgdGhpcy51cGxvYWRTZXJ2aWNlLmdldEZpbGVzTGlzdChyZXFPYmosIG9wdGlvbnMpLnRoZW4oYXN5bmMgKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAvLyAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIFxyXG4gIC8vICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gIC8vICAgICAgIHRoaXMuczNkZXRhaWxzID0gcmVzcG9uc2UuczNkZXRhaWxzIHx8IHt9O1xyXG4gIC8vICAgICAgIGxldCBkb2NBY3Rpb25idG4gPSByZXNwb25zZS5wYWdlRGVmaW5hdGlvbi5hY3Rpb24gfHwgW107XHJcbiAgLy8gICAgICAgZG9jQWN0aW9uYnRuLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgXHJcbiAgLy8gICAgICAgICBpZiAoZWxlbWVudC5mb3JtX2ZpZWxkID09ICdlZGl0JylcclxuICAvLyAgICAgICAgICAgdGhpcy5kb2NlZGl0QWN0aW9uID0gdHJ1ZTtcclxuICAvLyAgICAgICAgIGlmIChlbGVtZW50LmZvcm1fZmllbGQgPT0gJ2RlbGV0ZScpXHJcbiAgLy8gICAgICAgICAgIHRoaXMuZG9jZGVsZXRlQWN0aW9uID0gdHJ1ZTtcclxuICAvLyAgICAgICB9KTtcclxuICAvLyAgICAgICBsZXQgYnVja2V0TmFtZSA9IHRoaXMuczNkZXRhaWxzW1wiZG9jYnVja2V0XCJdIHx8IFwiXCI7XHJcbiAgLy8gICAgICAgbGV0IGZvbGRlck5hbWUgPSB0aGlzLnMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXSB8fCBcIlwiO1xyXG4gIC8vICAgICAgIGF3YWl0IHRoaXMuZ2V0T3duZXJEU0R0bCgpO1xyXG4gIC8vICAgICAgIGZvbGRlck5hbWUgPSBmb2xkZXJOYW1lLnJlcGxhY2UoXCIjRFNcIiwgdGhpcy5vd25lckRTRHRsLnRvVXBwZXJDYXNlKCkpO1xyXG4gIC8vICAgICAgIHRoaXMuczNkZXRhaWxzW1wiZG9jZm9sZGVyXCJdID0gZm9sZGVyTmFtZTtcclxuICAvLyAgICAgICBsZXQgczNBY2Nlc3NLZXkgPSB0aGlzLnMzZGV0YWlsc1tcImRvY1MzYWNjZXNzS2V5XCJdIHx8IFwiXCI7XHJcbiAgLy8gICAgICAgbGV0IHMzU2VjcmV0S2V5ID0gdGhpcy5zM2RldGFpbHNbXCJkb2NTM3NlY3JldEtleVwiXSB8fCBcIlwiO1xyXG4gIC8vICAgICAgIGxldCBzM3JlZ2lvbiA9IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNyZWdpb25cIl0gfHwgXCJcIjtcclxuICAvLyAgICAgICBsZXQgaXN2YWlsZCA9IHRydWU7XHJcbiAgLy8gICAgICAgaWYgKGJ1Y2tldE5hbWUgPT0gXCJcIikge1xyXG4gIC8vICAgICAgICAgaXN2YWlsZCA9IGZhbHNlO1xyXG4gIC8vICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJEb2N1bWVudCBCdWNrZXQgbm90IGZvdW5kXCIpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBpZiAoZm9sZGVyTmFtZSA9PSBcIlwiKSB7XHJcbiAgLy8gICAgICAgICBpc3ZhaWxkID0gZmFsc2U7XHJcbiAgLy8gICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIkRvY3VtZW50IEZsb2RlciBub3QgZm91bmRcIik7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIGlmIChzM0FjY2Vzc0tleSA9PSBcIlwiKSB7XHJcbiAgLy8gICAgICAgICBpc3ZhaWxkID0gZmFsc2U7XHJcbiAgLy8gICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIkRvY3VtZW50IHMzQWNjZXNzS2V5IG5vdCBmb3VuZFwiKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgICAgaWYgKHMzU2VjcmV0S2V5ID09IFwiXCIpIHtcclxuICAvLyAgICAgICAgIGlzdmFpbGQgPSBmYWxzZTtcclxuICAvLyAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiRG9jdW1lbnQgczNTZWNyZXRLZXkgbm90IGZvdW5kXCIpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgICBpZiAoczNyZWdpb24gPT0gXCJcIikge1xyXG4gIC8vICAgICAgICAgaXN2YWlsZCA9IGZhbHNlO1xyXG4gIC8vICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJEb2N1bWVudCBzM3JlZ2lvbiBub3QgZm91bmRcIik7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICAgIGlmIChpc3ZhaWxkKSB7XHJcbiAgLy8gICAgICAgICB0aGlzLmRhdGFEdGwgPSByZXNwb25zZS5kYXRhRHRsIHx8IHt9O1xyXG4gIC8vICAgICAgICAgdGhpcy5kb2N1bWVudFVwbG9hZExpc3QgPSByZXNwb25zZS5kb2N1bWVudFVwbG9hZER0bC5kb2N1bWVudFVwbG9hZExpc3Q7XHJcbiAgLy8gICAgICAgICB0aGlzLmRvY3VtZW50VXBsb2FkTGlzdC5zb3J0KCk7XHJcbiAgLy8gICAgICAgICBpZiAodGhpcy5kb2N1bWVudFVwbG9hZExpc3QubGVuZ3RoID4gMClcclxuICAvLyAgICAgICAgICAgdGhpcy5kb2N0eXBlID0gdGhpcy5kb2N1bWVudFVwbG9hZExpc3RbMF07XHJcblxyXG4gIC8vICAgICAgICAgbGV0IGRvY3R5cCA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1zW1wiZG9jdHlwXCJdIHx8IFwiXCI7XHJcbiAgLy8gICAgICAgICBpZiAoZG9jdHlwICE9ICcnKVxyXG4gIC8vICAgICAgICAgICB0aGlzLmRvY3R5cGUgPSBkb2N0eXA7XHJcblxyXG4gIC8vICAgICAgICAgdGhpcy5kb2N1bWVudFVwbG9hZER0bCA9IHJlc3BvbnNlLmRvY3VtZW50VXBsb2FkRHRsO1xyXG5cclxuICAvLyAgICAgICAgIGNvbnN0IGJ1Y2tldCA9IG5ldyBBV1MuUzMoe1xyXG4gIC8vICAgICAgICAgICBhY2Nlc3NLZXlJZDogdGhpcy5zM2RldGFpbHNbXCJkb2NTM2FjY2Vzc0tleVwiXSxcclxuICAvLyAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiB0aGlzLnMzZGV0YWlsc1tcImRvY1Mzc2VjcmV0S2V5XCJdLFxyXG4gIC8vICAgICAgICAgICByZWdpb246IHMzcmVnaW9uXHJcbiAgLy8gICAgICAgICB9KTtcclxuICAgICAgICAgICBcclxuICAvLyAgICAgICAgIHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0LmZvckVhY2goZG9jdHlwZSA9PiB7XHJcbiAgLy8gICAgICAgICAgIGlmICh0aGlzLmRhdGFEdGxbZG9jdHlwZV0gIT0gdW5kZWZpbmVkKSB7XHJcbiAgLy8gICAgICAgICAgICAgdGhpcy5kYXRhRHRsW2RvY3R5cGVdLmZvckVhY2goZHRsID0+IHtcclxuICAvLyAgICAgICAgICAgICAgIGxldCB1cmxQYXJhbXMgPSB7XHJcbiAgLy8gICAgICAgICAgICAgICAgIEJ1Y2tldDogdGhpcy5zM2RldGFpbHNbXCJkb2NidWNrZXRcIl0sXHJcbiAgLy8gICAgICAgICAgICAgICAgIEtleTogdGhpcy5zM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl0gKyBcIi9cIiArIGR0bFtcImRvY19ubWVcIl1cclxuICAvLyAgICAgICAgICAgICAgIH07XHJcbiAgLy8gICAgICAgICAgICAgICBidWNrZXQuZ2V0U2lnbmVkVXJsKFwiZ2V0T2JqZWN0XCIsIHVybFBhcmFtcywgZnVuY3Rpb24gKGVyciwgdXJsKSB7XHJcbiAgICAgICAgICAgICAgICAgICBcclxuICAvLyAgICAgICAgICAgICAgICAgZHRsW1wic2lnblVybFwiXSA9IHVybDtcclxuICAvLyAgICAgICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgICAgIH0pO1xyXG4gIC8vICAgICAgICAgICB9XHJcbiAgLy8gICAgICAgICB9KTtcclxuICAvLyAgICAgICB9IGVsc2Uge1xyXG4gIC8vICAgICAgICAgdGhpcy5kb2N1bWVudFVwbG9hZExpc3QgPSBbXTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pXHJcbiAgLy8gICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAvLyAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAvLyAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgLy8gICAgIH0pO1xyXG4gICAgXHJcbiAgLy8gfVxyXG5cclxuICBhc3luYyBnZXRGaWxlcyhubWVJZG4pIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgdGhpcy5kb2NlZGl0QWN0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLmRvY2RlbGV0ZUFjdGlvbiA9IGZhbHNlO1xyXG4gICAgY29uc3QgcmVxT2JqID0ge1xyXG4gICAgICBmb3JtTm1lOiBcImRvY3VtZW50VXBsb2FkTWFzdGVyXCIsXHJcbiAgICAgIG5tZUlkbjogbm1lSWRuXHJcbiAgICB9O1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWREb2NzXCI7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9O1xyXG4gIFxyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgcmVzcG9uc2U6IGFueSA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS5nZXRGaWxlc0xpc3QocmVxT2JqLCBvcHRpb25zKTtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnMzZGV0YWlscyA9IHJlc3BvbnNlLnMzZGV0YWlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZG9jQWN0aW9uYnRuID0gcmVzcG9uc2UucGFnZURlZmluYXRpb24uYWN0aW9uIHx8IFtdO1xyXG4gICAgICAgIGRvY0FjdGlvbmJ0bi5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZCA9PT0gJ2VkaXQnKSB0aGlzLmRvY2VkaXRBY3Rpb24gPSB0cnVlO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZm9ybV9maWVsZCA9PT0gJ2RlbGV0ZScpIHRoaXMuZG9jZGVsZXRlQWN0aW9uID0gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICBcclxuICAgICAgICBsZXQgYnVja2V0TmFtZSA9IHRoaXMuczNkZXRhaWxzW1wiZG9jYnVja2V0XCJdIHx8IFwiXCI7XHJcbiAgICAgICAgbGV0IGZvbGRlck5hbWUgPSB0aGlzLnMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXSB8fCBcIlwiO1xyXG4gICAgICAgIGF3YWl0IHRoaXMuZ2V0T3duZXJEU0R0bCgpO1xyXG4gICAgICAgIGZvbGRlck5hbWUgPSBmb2xkZXJOYW1lLnJlcGxhY2UoXCIjRFNcIiwgdGhpcy5vd25lckRTRHRsLnRvVXBwZXJDYXNlKCkpO1xyXG4gICAgICAgIHRoaXMuczNkZXRhaWxzW1wiZG9jZm9sZGVyXCJdID0gZm9sZGVyTmFtZTtcclxuICBcclxuICAgICAgICBsZXQgczNBY2Nlc3NLZXkgPSB0aGlzLnMzZGV0YWlsc1tcImRvY1MzYWNjZXNzS2V5XCJdIHx8IFwiXCI7XHJcbiAgICAgICAgbGV0IHMzU2VjcmV0S2V5ID0gdGhpcy5zM2RldGFpbHNbXCJkb2NTM3NlY3JldEtleVwiXSB8fCBcIlwiO1xyXG4gICAgICAgIGxldCBzM3JlZ2lvbiA9IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNyZWdpb25cIl0gfHwgXCJcIjtcclxuICAgICAgICBsZXQgaXNWYWxpZCA9ICEhKGJ1Y2tldE5hbWUgJiYgZm9sZGVyTmFtZSAmJiBzM0FjY2Vzc0tleSAmJiBzM1NlY3JldEtleSAmJiBzM3JlZ2lvbik7XHJcbiAgXHJcbiAgICAgICAgaWYgKCFpc1ZhbGlkKSB7XHJcbiAgICAgICAgICBpZiAoIWJ1Y2tldE5hbWUpIHRoaXMudG9hc3RyLmVycm9yKFwiRG9jdW1lbnQgQnVja2V0IG5vdCBmb3VuZFwiKTtcclxuICAgICAgICAgIGlmICghZm9sZGVyTmFtZSkgdGhpcy50b2FzdHIuZXJyb3IoXCJEb2N1bWVudCBGb2xkZXIgbm90IGZvdW5kXCIpO1xyXG4gICAgICAgICAgaWYgKCFzM0FjY2Vzc0tleSkgdGhpcy50b2FzdHIuZXJyb3IoXCJEb2N1bWVudCBzM0FjY2Vzc0tleSBub3QgZm91bmRcIik7XHJcbiAgICAgICAgICBpZiAoIXMzU2VjcmV0S2V5KSB0aGlzLnRvYXN0ci5lcnJvcihcIkRvY3VtZW50IHMzU2VjcmV0S2V5IG5vdCBmb3VuZFwiKTtcclxuICAgICAgICAgIGlmICghczNyZWdpb24pIHRoaXMudG9hc3RyLmVycm9yKFwiRG9jdW1lbnQgczNyZWdpb24gbm90IGZvdW5kXCIpO1xyXG4gICAgICAgICAgdGhpcy5kb2N1bWVudFVwbG9hZExpc3QgPSBbXTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgXHJcbiAgICAgICAgdGhpcy5kYXRhRHRsID0gcmVzcG9uc2UuZGF0YUR0bCB8fCB7fTtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VXBsb2FkTGlzdCA9IHJlc3BvbnNlLmRvY3VtZW50VXBsb2FkRHRsLmRvY3VtZW50VXBsb2FkTGlzdC5zb3J0KCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0Lmxlbmd0aCA+IDApIHRoaXMuZG9jdHlwZSA9IHRoaXMuZG9jdW1lbnRVcGxvYWRMaXN0WzBdO1xyXG4gICAgICAgIGxldCBkb2N0eXAgPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtc1tcImRvY3R5cFwiXSB8fCBcIlwiO1xyXG4gICAgICAgIGlmIChkb2N0eXApIHRoaXMuZG9jdHlwZSA9IGRvY3R5cDtcclxuICAgICAgICB0aGlzLmRvY3VtZW50VXBsb2FkRHRsID0gcmVzcG9uc2UuZG9jdW1lbnRVcGxvYWREdGw7XHJcbiAgXHJcbiAgICAgICAgY29uc3QgczNDbGllbnQgPSBuZXcgUzNDbGllbnQoe1xyXG4gICAgICAgICAgcmVnaW9uOiBzM3JlZ2lvbixcclxuICAgICAgICAgIGNyZWRlbnRpYWxzOiB7XHJcbiAgICAgICAgICAgIGFjY2Vzc0tleUlkOiBzM0FjY2Vzc0tleSxcclxuICAgICAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiBzM1NlY3JldEtleVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gIFxyXG4gICAgICAgIGZvciAoY29uc3QgZG9jdHlwZSBvZiB0aGlzLmRvY3VtZW50VXBsb2FkTGlzdCkge1xyXG4gICAgICAgICAgaWYgKHRoaXMuZGF0YUR0bFtkb2N0eXBlXSkge1xyXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGR0bCBvZiB0aGlzLmRhdGFEdGxbZG9jdHlwZV0pIHtcclxuICAgICAgICAgICAgICBjb25zdCB1cmxQYXJhbXMgPSB7XHJcbiAgICAgICAgICAgICAgICBCdWNrZXQ6IGJ1Y2tldE5hbWUsXHJcbiAgICAgICAgICAgICAgICBLZXk6IGAke2ZvbGRlck5hbWV9LyR7ZHRsW1wiZG9jX25tZVwiXX1gXHJcbiAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRPYmplY3RDb21tYW5kKHVybFBhcmFtcyk7XHJcbiAgICAgICAgICAgICAgICBkdGxbXCJzaWduVXJsXCJdID0gYXdhaXQgZ2V0U2lnbmVkVXJsKHMzQ2xpZW50LCBjb21tYW5kLCB7IGV4cGlyZXNJbjogMzYwMCB9KTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBnZW5lcmF0aW5nIHNpZ25lZCBVUkxcIiwgZXJyKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgXHJcbiAgb3BlbmRvY3MoZHRsKSB7XHJcbiAgICBsZXQgdXJsID0gZHRsLnNpZ25Vcmw7XHJcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwbG9hZERvY3MoZXZlbnQpIHtcclxuICAgICBcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IG5tZUlkbiA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInNlcVwiXSA9IFwibm1lX2RvY3Nfc2VxXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwiZ2V0U2VxXCI7XHJcbiAgICAvLyBsZXQgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBsZXQgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgbGV0IHNlcUR0bCA9IGF3YWl0IHRoaXMuc3MuZ2V0RGF0YShyZXFPYmosIG9wdGlvbnMpIHx8IHt9O1xyXG4gICAgaWYgKHNlcUR0bFsnc3RhdHVzJ10gPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgdmFyIHNlcSA9IHNlcUR0bFsnc2VxJ107XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRGaWxlcyA9IGV2ZW50LnRhcmdldC5maWxlcztcclxuICAgICAgdGhpcy5maWxlID0gdGhpcy5zZWxlY3RlZEZpbGVzLml0ZW0oMCk7XHJcbiAgICAgIGxldCBmaWxlTmFtZSA9IHRoaXMuZmlsZS5uYW1lO1xyXG4gICAgICBsZXQgZXh0ID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxhc3RJbmRleE9mKFwiLlwiKSArIDEpO1xyXG4gICAgICBmaWxlTmFtZSA9IG5tZUlkbiArIFwiX1wiICsgc2VxICsgXCJfXCIgKyB0aGlzLmRvY3R5cGUgKyBcIi5cIiArIGV4dDtcclxuICAgICAgbGV0IHVwbG9hZEZpbGUgPSBhd2FpdCB0aGlzLnVwbG9hZEZpbGUodGhpcy5maWxlLCBmaWxlTmFtZSkgfHwgJyc7XHJcbiAgICAgICBcclxuICAgICAgaWYgKHVwbG9hZEZpbGUgIT0gJycpIHtcclxuICAgICAgICBsZXQgcmVxT2JqID0ge307XHJcbiAgICAgICAgbGV0IHRyYW5zZHRsID0ge307XHJcbiAgICAgICAgdHJhbnNkdGxbXCJkb2NfZXh0XCJdID0gdGhpcy5maWxlLnR5cGU7XHJcbiAgICAgICAgdHJhbnNkdGxbXCJkb2NfdHlwXCJdID0gdGhpcy5kb2N0eXBlO1xyXG4gICAgICAgIHRyYW5zZHRsW1wiZG9jc19pZG5cIl0gPSBzZXE7XHJcbiAgICAgICAgdHJhbnNkdGxbXCJkb2Nfbm1lXCJdID0gZmlsZU5hbWU7XHJcbiAgICAgICAgdHJhbnNkdGxbXCJzdHRcIl0gPSBcIjFcIjtcclxuICAgICAgICByZXFPYmpbXCJ0cm5zVHlwZVwiXSA9IFwiQUREXCI7XHJcbiAgICAgICAgcmVxT2JqW1wiZGF0YVRybnNEdGxcIl0gPSB0cmFuc2R0bDtcclxuICAgICAgICByZXFPYmpbXCJubWVJZG5cIl0gPSBubWVJZG47XHJcbiAgICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVEb2NzXCI7XHJcbiAgICAgICAgXHJcbiAgICAgICAgLy8gbGV0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwbG9hZFNlcnZpY2Uuc2F2ZURvY3RvREIocmVxT2JqLCBvcHRpb25zKS50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0RmlsZXMocmVxT2JqWydubWVJZG4nXSk7IC8vLy8gcmVmcmFzaCBhZnRlciBkb2Mgc2F2ZWRcclxuICAgICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihcIkZpbGUgdXBsb2FkIGZhaWxlZFwiKTtcclxuICAgICAgfVxyXG5cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJkb2N1bWVudCBTZXEuIGdlbmFyYXRpb24gZXJyb3JcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLyB1cGxvYWRGaWxlKGZpbGUsIGZpbGVOYW1lKSB7XHJcbiAgLy8gICBjb25zdCBidWNrZXQgPSBuZXcgQVdTLlMzKHtcclxuICAvLyAgICAgYWNjZXNzS2V5SWQ6IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNhY2Nlc3NLZXlcIl0sXHJcbiAgLy8gICAgIHNlY3JldEFjY2Vzc0tleTogdGhpcy5zM2RldGFpbHNbXCJkb2NTM3NlY3JldEtleVwiXSxcclxuICAvLyAgICAgcmVnaW9uOiB0aGlzLnMzZGV0YWlsc1tcImRvY1MzcmVnaW9uXCJdXHJcbiAgLy8gICB9KTtcclxuICAvLyAgIGNvbnN0IHBhcmFtcyA9IHtcclxuICAvLyAgICAgQnVja2V0OiB0aGlzLnMzZGV0YWlsc1tcImRvY2J1Y2tldFwiXSxcclxuICAvLyAgICAgS2V5OiB0aGlzLnMzZGV0YWlsc1tcImRvY2ZvbGRlclwiXSArIFwiL1wiICsgZmlsZU5hbWUsXHJcbiAgLy8gICAgIEJvZHk6IGZpbGUsXHJcbiAgLy8gICAgIENvbnRlbnRUeXBlOiBmaWxlLnR5cGVcclxuICAvLyAgIH07XHJcbiAgICAgXHJcbiAgLy8gICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gIC8vICAgICBidWNrZXQudXBsb2FkKHBhcmFtcywgZnVuY3Rpb24gKGVycm9yLCByZXN1bHQpIHtcclxuICAvLyAgICAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgICAgIFxyXG4gIC8vICAgICAgICAgcmVqZWN0KGVycm9yKTtcclxuICAvLyAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgLy8gICAgICAgcmVzb2x2ZShyZXN1bHQpO1xyXG4gIC8vICAgICB9KTtcclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgYXN5bmMgdXBsb2FkRmlsZShmaWxlLCBmaWxlTmFtZSkge1xyXG4gICAgY29uc3QgczNDbGllbnQgPSBuZXcgUzNDbGllbnQoe1xyXG4gICAgICByZWdpb246IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNyZWdpb25cIl0sXHJcbiAgICAgIGNyZWRlbnRpYWxzOiB7XHJcbiAgICAgICAgYWNjZXNzS2V5SWQ6IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNhY2Nlc3NLZXlcIl0sXHJcbiAgICAgICAgc2VjcmV0QWNjZXNzS2V5OiB0aGlzLnMzZGV0YWlsc1tcImRvY1Mzc2VjcmV0S2V5XCJdXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGZpbGVCdWZmZXIgPSBhd2FpdCBmaWxlLmFycmF5QnVmZmVyKCk7XHJcbiAgXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIEJ1Y2tldDogdGhpcy5zM2RldGFpbHNbXCJkb2NidWNrZXRcIl0sXHJcbiAgICAgIEtleTogYCR7dGhpcy5zM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl19LyR7ZmlsZU5hbWV9YCxcclxuICAgICAgQm9keTogZmlsZUJ1ZmZlcixcclxuICAgICAgQ29udGVudFR5cGU6IGZpbGUudHlwZVxyXG4gICAgfTtcclxuICBcclxuICAgIHJldHVybiBzM0NsaWVudC5zZW5kKG5ldyBQdXRPYmplY3RDb21tYW5kKHBhcmFtcykpXHJcbiAgICAgIC50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlKVxyXG4gICAgICAuY2F0Y2goZXJyb3IgPT4geyB0aHJvdyBlcnJvcjsgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZGVsZXRlRG9jKCkge1xyXG4gICAgdGhpcy5zcGlubmVyU2VydmljZS5zaG93KCk7XHJcbiAgICB0aGlzLkRlbGV0ZURvY3NGcm9tUzModGhpcy5kb2NEZWxldGVEdGwpO1xyXG4gICAgLy8gbGV0IGRlbGV0ZUR0bCA9IGF3YWl0IHRoaXMuRGVsZXRlRG9jc0Zyb21TMyh0aGlzLmRvY0RlbGV0ZUR0bCkgfHwgJyc7XHJcbiAgICAvLyBpZiAoZGVsZXRlRHRsICE9ICcnKSB7XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcImRvY3NfaWRuXCJdID0gdGhpcy5kb2NEZWxldGVEdGxbJ2RvY3NfaWRuJ107XHJcbiAgICByZXFPYmpbXCJ0cm5zVHlwZVwiXSA9IFwiREVMRVRFXCI7XHJcbiAgICByZXFPYmpbXCJubWVJZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZURvY3NcIjtcclxuICAgIFxyXG4gICAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgbGV0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMudXBsb2FkU2VydmljZS5zYXZlRG9jdG9EQihyZXFPYmosIG9wdGlvbnMpLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgIHRoaXMuZ2V0RmlsZXModGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpKTsgLy8vLyByZWZyYXNoIGFmdGVyIGRvYyBzYXZlZFxyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgfSk7XHJcbiAgICAvLyB9IGVsc2Uge1xyXG4gICAgLy8gICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgIC8vICAgdGhpcy5mbGFzaE1lc3NhZ2VzU2VydmljZS5zaG93KFwiRXJyb3IgaW4gZmlsZSBkZWxldGlvblwiLCB7IGNzc0NsYXNzOiBcImFsZXJ0LWRhbmdlclwiLCB0aW1lb3V0OiAzMDAwIH0pO1xyXG4gICAgLy8gfVxyXG4gIH1cclxuXHJcblxyXG4gIGFzeW5jIERlbGV0ZURvY3NGcm9tUzMoZG9jRHRsKSB7XHJcbiAgICBjb25zdCBzM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XHJcbiAgICAgIHJlZ2lvbjogdGhpcy5zM2RldGFpbHNbXCJkb2NTM3JlZ2lvblwiXSxcclxuICAgICAgY3JlZGVudGlhbHM6IHtcclxuICAgICAgICBhY2Nlc3NLZXlJZDogdGhpcy5zM2RldGFpbHNbXCJkb2NTM2FjY2Vzc0tleVwiXSxcclxuICAgICAgICBzZWNyZXRBY2Nlc3NLZXk6IHRoaXMuczNkZXRhaWxzW1wiZG9jUzNzZWNyZXRLZXlcIl1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgXHJcbiAgICBjb25zdCBwYXJhbXMgPSB7XHJcbiAgICAgIEJ1Y2tldDogdGhpcy5zM2RldGFpbHNbXCJkb2NidWNrZXRcIl0sXHJcbiAgICAgIEtleTogYCR7dGhpcy5zM2RldGFpbHNbXCJkb2Nmb2xkZXJcIl19LyR7ZG9jRHRsWydkb2Nfbm1lJ119YFxyXG4gICAgfTtcclxuICBcclxuICAgIHRyeSB7XHJcbiAgICAgIGNvbnN0IGNvbW1hbmQgPSBuZXcgRGVsZXRlT2JqZWN0Q29tbWFuZChwYXJhbXMpO1xyXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzM0NsaWVudC5zZW5kKGNvbW1hbmQpO1xyXG4gICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGRlbGV0aW5nIGRvY3VtZW50IGZyb20gUzM6XCIsIGVycm9yKTtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIGRlbGV0ZSBkb2N1bWVudFwiKTtcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgZG9jRGVsZXRlRHRsID0ge307XHJcbiAgQ29uZmlybWRlbGV0ZURvYyhkb2NEdGwpIHtcclxuICAgIHRoaXMuZG9jRGVsZXRlRHRsID0gZG9jRHRsO1xyXG4gICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvY2RlbGV0ZWJ0bicpLmNsaWNrKCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBFZGl0VXBsb2FkRG9jcyhkb2NEdGwsIGV2ZW50KSB7XHJcbiAgICAgXHJcbiAgICBsZXQgZGVsZXRlRHRsID0gYXdhaXQgdGhpcy5EZWxldGVEb2NzRnJvbVMzKHRoaXMuZG9jRGVsZXRlRHRsKSB8fCAnJztcclxuICAgICBcclxuICAgIGlmIChkZWxldGVEdGwgIT0gJycpIHtcclxuICAgICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICAgIHJlcU9ialtcImRvY3NfaWRuXCJdID0gZG9jRHRsWydkb2NzX2lkbiddO1xyXG4gICAgICByZXFPYmpbXCJ0cm5zVHlwZVwiXSA9IFwiREVMRVRFXCI7XHJcbiAgICAgIHJlcU9ialtcIm5tZUlkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVEb2NzXCI7XHJcbiAgICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBkZWxldGVEYkR0bCA9IGF3YWl0IHRoaXMudXBsb2FkU2VydmljZS5zYXZlRG9jdG9EQihyZXFPYmosIG9wdGlvbnMpO1xyXG4gICAgICAgXHJcbiAgICAgIGlmIChkZWxldGVEYkR0bFsnc3RhdHVzJ10gPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICB0aGlzLnVwbG9hZERvY3MoZXZlbnQpXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoXCJFcnJvciBpbiBmaWxlIEVkaXRcIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsb2FkQXBwbGljYXRpb24oKSB7XHJcbiAgICB0aGlzLmFwcGxpY2F0aW9uID0gXCJcIjtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJjb250YWN0U2VhcmNoRm9ybVwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImxvYWRBcHBsaWNhdGlvbnNcIjtcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5sb2FkKHJlcU9iaiwgb3B0aW9ucywgXCJjb250YWN0L2xvYWRDb250YWN0XCIpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5hcHBsaWNhdGlvbkxpc3QgPSByZXNwb25zZS5hcHBsaWNhdGlvbkxpc3Q7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBhcHBsaWNhdGlvbjtcclxuICBNb2R1bGU7XHJcbiAgVXNlcjtcclxuICBsb2FkV2ViQXBwbGljYXRpb24oKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwiY29udGFjdFNlYXJjaEZvcm1cIjtcclxuICAgIHJlcU9ialtcImFwcGxpY2F0aW9uU3RyXCJdID0gXCJXV1dcIjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJsb2FkQXBwbGljYXRpb25zXCI7XHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jc1xyXG4gICAgICAubG9hZChyZXFPYmosIG9wdGlvbnMsIFwiY29udGFjdC9sb2FkQ29udGFjdFwiKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMuYXBwbGljYXRpb25MaXN0ID0gcmVzcG9uc2UuYXBwbGljYXRpb25MaXN0O1xyXG4gICAgICAgICAgaWYgKHRoaXMuYXBwbGljYXRpb25MaXN0Lmxlbmd0aCA9PSAyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXBwbGljYXRpb24gPSB0aGlzLmFwcGxpY2F0aW9uTGlzdFsxXS5rO1xyXG4gICAgICAgICAgICB0aGlzLmxvYWRVc3JNZGwodGhpcy5hcHBsaWNhdGlvbik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICBsb2FkVXNyTWRsKGFwcGxJZCkge1xyXG4gICAgdGhpcy5Nb2R1bGUgPSBcIlwiO1xyXG4gICAgdGhpcy5Vc2VyID0gXCJcIjtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJubWVJZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7XHJcbiAgICByZXFPYmpbXCJhcHBsSWRcIl0gPSBhcHBsSWQ7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJVc2VyTW9kdWxlTGlzdFwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImdldFVzZXJNb2R1bGVMaXN0XCI7XHJcbiAgICBcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5sb2FkTWVudVJpZ2h0c1VzZXJXaXNlKHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLnVzZXJEdGxzID0gcmVzcG9uc2UudXNlckR0bHM7XHJcbiAgICAgICAgICBpZiAodGhpcy51c2VyRHRscy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuVXNlciA9IHRoaXMudXNlckR0bHNbMF1bJ3VzZXJfaWRuJ107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLm1vZHVsZUR0bHMgPSByZXNwb25zZS5tb2R1bGVEdGxzO1xyXG4gICAgICAgICAgaWYgKHRoaXMubW9kdWxlRHRscy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuTW9kdWxlID0gdGhpcy5tb2R1bGVEdGxzWzBdWydtb2R1bGVfaWRuJ107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0VXNlclJpZ2h0cyh1c2VySWQsIE1vZHVsZUlkKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGNvbnN0IHJlcU9iaiA9IHt9O1xyXG4gICAgcmVxT2JqW1wibW9kdWxlSWRuc1wiXSA9IE1vZHVsZUlkO1xyXG4gICAgcmVxT2JqW1widXNlcklkXCJdID0gdXNlcklkO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcImdldE1lbnVMaXN0QnlNb2R1bGVcIjtcclxuICAgIFxyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3NcclxuICAgICAgLmxvYWRNZW51UmlnaHRzVXNlcldpc2UocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIFxyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMudG90TWVudSA9IDA7XHJcbiAgICAgICAgICB0aGlzLm1lbnVMaXN0ID0gcmVzcG9uc2UubWVudUxpc3Q7XHJcbiAgICAgICAgICB0aGlzLnVzZXJSaWdodHNNZW51TGlzdCA9IHJlc3BvbnNlLnVzZXJSaWdodHNNZW51TGlzdDtcclxuICAgICAgICAgIHRoaXMubWVudUxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICAgICAgdGhpcy50b3RNZW51ICs9IGVsZW1lbnQuU3ViTWVudS5sZW5ndGg7XHJcbiAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VTdWJNZW51KGUsIHN1Yk1lbnVJZCwgTWVudUlkLCBVc2VySWQsIG1vZHVsZUlkKSB7XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInVzZXJJZFwiXSA9IFVzZXJJZDtcclxuICAgIHJlcU9ialtcIm1lbnVJZG5cIl0gPVxyXG4gICAgICBlLnRhcmdldC5jaGVja2VkID09IHRydWUgPyBbc3ViTWVudUlkLCBNZW51SWRdIDogW3N1Yk1lbnVJZF07XHJcbiAgICByZXFPYmpbXCJzdHRcIl0gPSBlLnRhcmdldC5jaGVja2VkID09IHRydWUgPyBcIjFcIiA6IFwiMFwiO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwic2F2ZVVzZXJSaWdodE1hc3RlclwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVVc2VyUmlnaHRzXCI7XHJcbiAgICBcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5zYXZlVXNlck1lbnVSaWdodHNDb250YWN0KHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJSaWdodHMoVXNlcklkLCBtb2R1bGVJZCk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlTWVudShlLCBtZW51SWQsIFVzZXJJZCwgbW9kdWxlSWQpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHN1Yk1lbnVPYmogPSB0aGlzLm1lbnVMaXN0LmZpbmQobyA9PiBvLm1lbnVfaWRuID09PSBtZW51SWQpO1xyXG4gICAgdGhpcy5zdWJNZW51SWRucy5wdXNoKG1lbnVJZCk7XHJcblxyXG4gICAgaWYgKHN1Yk1lbnVPYmouU3ViTWVudS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHN1Yk1lbnVPYmouU3ViTWVudS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHRoaXMuc3ViTWVudUlkbnMucHVzaChlbGVtZW50Lm1lbnVfaWRuKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInVzZXJJZFwiXSA9IFVzZXJJZDtcclxuICAgIHJlcU9ialtcIm1lbnVJZG5cIl0gPSB0aGlzLnN1Yk1lbnVJZG5zO1xyXG4gICAgcmVxT2JqW1wic3R0XCJdID0gZS50YXJnZXQuY2hlY2tlZCA9PSB0cnVlID8gXCIxXCIgOiBcIjBcIjtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcInNhdmVVc2VyUmlnaHRNYXN0ZXJcIjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlVXNlclJpZ2h0c1wiO1xyXG4gICAgXHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jc1xyXG4gICAgICAuc2F2ZVVzZXJNZW51UmlnaHRzQ29udGFjdChyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5nZXRVc2VyUmlnaHRzKFVzZXJJZCwgbW9kdWxlSWQpO1xyXG4gICAgICAgICAgdGhpcy5zdWJNZW51SWRucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgb25DaGFuZ2VXZWJTdWJNZW51KGUsIHN1Yk1lbnVJZCwgTWVudUlkLCBVc2VySWQsIG1vZHVsZUlkKSB7XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInVzZXJJZFwiXSA9IFVzZXJJZDtcclxuICAgIHJlcU9ialtcIm1lbnVJZG5cIl0gPVxyXG4gICAgICBlLnRhcmdldC5jaGVja2VkID09IHRydWUgPyBbc3ViTWVudUlkLCBNZW51SWRdIDogW3N1Yk1lbnVJZF07XHJcbiAgICByZXFPYmpbXCJzdHRcIl0gPSBlLnRhcmdldC5jaGVja2VkID09IHRydWUgPyBcIjBcIiA6IFwiMVwiO1xyXG4gICAgcmVxT2JqW1wiZm9ybU5tZVwiXSA9IFwic2F2ZVVzZXJSaWdodE1hc3RlclwiO1xyXG4gICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVVc2VyUmlnaHRzXCI7XHJcbiAgICBcclxuICAvLyAgY29uc3Qgb3B0aW9ucyA9ICh7IGhlYWRlcnM6IG5ldyBIdHRwSGVhZGVycyh0aGlzLmhlYWRlcikgfSk7XHJcbiAgICBjb25zdCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcbiAgICB0aGlzLmNzXHJcbiAgICAgIC5zYXZlVXNlck1lbnVSaWdodHNDb250YWN0KHJlcU9iaiwgb3B0aW9ucylcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICBcclxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFVzZXJSaWdodHMoVXNlcklkLCBtb2R1bGVJZCk7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3MocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlV2ViTWVudShlLCBtZW51SWQsIFVzZXJJZCwgbW9kdWxlSWQpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG4gICAgbGV0IHN1Yk1lbnVPYmogPSB0aGlzLm1lbnVMaXN0LmZpbmQobyA9PiBvLm1lbnVfaWRuID09PSBtZW51SWQpO1xyXG4gICAgdGhpcy5zdWJNZW51SWRucy5wdXNoKG1lbnVJZCk7XHJcblxyXG4gICAgaWYgKHN1Yk1lbnVPYmouU3ViTWVudS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHN1Yk1lbnVPYmouU3ViTWVudS5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgIHRoaXMuc3ViTWVudUlkbnMucHVzaChlbGVtZW50Lm1lbnVfaWRuKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZXFPYmogPSB7fTtcclxuICAgIHJlcU9ialtcInVzZXJJZFwiXSA9IFVzZXJJZDtcclxuICAgIHJlcU9ialtcIm1lbnVJZG5cIl0gPSB0aGlzLnN1Yk1lbnVJZG5zO1xyXG4gICAgcmVxT2JqW1wic3R0XCJdID0gZS50YXJnZXQuY2hlY2tlZCA9PSB0cnVlID8gXCIwXCIgOiBcIjFcIjtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSBcInNhdmVVc2VyUmlnaHRNYXN0ZXJcIjtcclxuICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlVXNlclJpZ2h0c1wiO1xyXG4gICAgXHJcbiAgLy8gIGNvbnN0IG9wdGlvbnMgPSAoeyBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnModGhpcy5oZWFkZXIpIH0pO1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcclxuICAgICAgbWV0aG9kOiB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXVxyXG4gICAgfVxyXG4gICAgdGhpcy5jc1xyXG4gICAgICAuc2F2ZVVzZXJNZW51UmlnaHRzQ29udGFjdChyZXFPYmosIG9wdGlvbnMpXHJcbiAgICAgIC50aGVuKChyZXNwb25zZTogYW55KSA9PiB7XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5nZXRVc2VyUmlnaHRzKFVzZXJJZCwgbW9kdWxlSWQpO1xyXG4gICAgICAgICAgdGhpcy5zdWJNZW51SWRucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIG9uQ2hhbmdlQWxsKGUsIFVzZXJJZCwgbW9kdWxlSWQpIHtcclxuICAgIHRoaXMuc3Bpbm5lclNlcnZpY2Uuc2hvdygpO1xyXG5cclxuICAgIHRoaXMubWVudUxpc3QuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgdGhpcy5zdWJNZW51SWRucy5wdXNoKGVsZW1lbnQubWVudV9pZG4pO1xyXG4gICAgICBpZiAoZWxlbWVudC5TdWJNZW51Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICBlbGVtZW50LlN1Yk1lbnUuZm9yRWFjaChzdWJlbGVtZW50ID0+IHtcclxuICAgICAgICAgIHRoaXMuc3ViTWVudUlkbnMucHVzaChzdWJlbGVtZW50Lm1lbnVfaWRuKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgY29uc3QgcmVxT2JqID0ge307XHJcbiAgICByZXFPYmpbXCJ1c2VySWRcIl0gPSBVc2VySWQ7XHJcbiAgICByZXFPYmpbXCJtZW51SWRuXCJdID0gdGhpcy5zdWJNZW51SWRucztcclxuICAgIHJlcU9ialtcInN0dFwiXSA9IGUudGFyZ2V0LmNoZWNrZWQgPT0gdHJ1ZSA/IFwiMVwiIDogXCIwXCI7XHJcbiAgICByZXFPYmpbXCJmb3JtTm1lXCJdID0gXCJzYXZlVXNlclJpZ2h0TWFzdGVyXCI7XHJcbiAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZVVzZXJSaWdodHNcIjtcclxuICAgIFxyXG4gIC8vICBjb25zdCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGNvbnN0IG9wdGlvbnMgPSB7XHJcbiAgICAgIG1ldGhvZDogdGhpcy5oZWFkZXJbXCJtZXRob2RcIl1cclxuICAgIH1cclxuICAgIHRoaXMuY3NcclxuICAgICAgLnNhdmVVc2VyTWVudVJpZ2h0c0NvbnRhY3QocmVxT2JqLCBvcHRpb25zKVxyXG4gICAgICAudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gXCJTVUNDRVNTXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgICAgdGhpcy5nZXRVc2VyUmlnaHRzKFVzZXJJZCwgbW9kdWxlSWQpO1xyXG4gICAgICAgICAgdGhpcy5zdWJNZW51SWRucyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgc2F2ZUZ1bihrLCB2LCB0eXBlKSB7XHJcbiAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLnNob3coKTtcclxuICAgIGxldCByZXFPYmogPSB7fTtcclxuICAgIGxldCBzdWJPYmogPSB7fTtcclxuICAgIGxldCB1cmwgPSBcInN5c3RlbS9hcHBwYWdlc1wiO1xyXG4gICAgaWYgKHR5cGUgPT0gJ2QnKVxyXG4gICAgICB2ID0gdGhpcy5jbS5Gb3JtYXREYXRlKHYsICdkZC1NTU0teXl5eScpO1xyXG4gICAgaWYgKHR5cGUgPT0gJ24nKVxyXG4gICAgICB2ID0gXCJcIiArIHYgKyBcIlwiO1xyXG4gICAgc3ViT2JqW2tdID0gdjtcclxuICAgIHJlcU9ialtcImZvcm1ObWVcIl0gPSB0aGlzLmFkZEZybU5tZTtcclxuICAgIHJlcU9ialtcImRhdGFUcm5zRHRsXCJdID0gc3ViT2JqO1xyXG4gICAgaWYgKHRoaXMuYWRkRnJtTm1lID09ICdhZGR0aW9uYWxEdGxNYXN0ZXInKSB7XHJcbiAgICAgIHJlcU9ialtcIm5tZUlkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTsgLy90aGlzLndoclY7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlTm1lQXR0clwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWRkRnJtTm1lID09ICdsZWRnZXJBY2NBZGRpdGluYWxEZXRhaWxzJykge1xyXG4gICAgICByZXFPYmpbXCJsZWRnZXJfaWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpOyAvL3RoaXMud2hyVjtcclxuICAgICAgcmVxT2JqW1widHlwZVwiXSA9IFwiYWNjX2F0dHJcIjtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVMZWRnZXJBdHRyXCI7XHJcbiAgICAgIHVybCA9IFwiYWNjb3VudHMvYWNjTGVkZ2VyXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hZGRGcm1ObWUgPT0gJ2xlZGdlckFkZHRpb25hbER0bE1hc3RlcicpIHtcclxuICAgICAgcmVxT2JqW1wibGVkZ2VyX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTsgLy90aGlzLndoclY7XHJcbiAgICAgIHJlcU9ialtcInR5cGVcIl0gPSBcImF0dHJcIjtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVMZWRnZXJBdHRyXCI7XHJcbiAgICAgIHVybCA9IFwiYWNjb3VudHMvYWNjTGVkZ2VyXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hZGRGcm1ObWUgPT0gJ2FjY0RlbGV0ZVJ1bGVzRm9ybScpIHtcclxuICAgICAgcmVxT2JqW1wiam91cm5hbF9pZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7IC8vdGhpcy53aHJWO1xyXG4gICAgICByZXFPYmpbXCJ0eXBlXCJdID0gXCJkZWxldGVfcnVsZXNcIjtcclxuICAgICAgdGhpcy5oZWFkZXJbXCJtZXRob2RcIl0gPSBcInNhdmVKb3VybmFsQXR0clwiO1xyXG4gICAgICB1cmwgPSBcImFjY291bnRzL2FjY0xlZGdlclwiO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuYWRkRnJtTm1lID09ICdhY2NKb3VybmFsQXR0ckZvcm0nKSB7XHJcbiAgICAgIHJlcU9ialtcImpvdXJuYWxfaWRuXCJdID0gdGhpcy5yb3V0ZS5zbmFwc2hvdC5wYXJhbU1hcC5nZXQoXCJzdWJ2XCIpOyAvL3RoaXMud2hyVjtcclxuICAgICAgcmVxT2JqW1widHlwZVwiXSA9IFwiYXR0clwiO1xyXG4gICAgICB0aGlzLmhlYWRlcltcIm1ldGhvZFwiXSA9IFwic2F2ZUpvdXJuYWxBdHRyXCI7XHJcbiAgICAgIHVybCA9IFwiYWNjb3VudHMvYWNjTGVkZ2VyXCI7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5hZGRGcm1ObWUgPT0gJ2FjY0xvYW5BdHRyRm9ybScpIHtcclxuICAgICAgcmVxT2JqW1wiam91cm5hbF9pZG5cIl0gPSB0aGlzLnJvdXRlLnNuYXBzaG90LnBhcmFtTWFwLmdldChcInN1YnZcIik7IC8vdGhpcy53aHJWO1xyXG4gICAgICByZXFPYmpbXCJ0eXBlXCJdID0gXCJhdHRyXCI7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlSm91cm5hbEF0dHJcIjtcclxuICAgICAgdXJsID0gXCJhY2NvdW50cy9hY2NMZWRnZXJcIjtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmFkZEZybU5tZSA9PSAnYWNjSm91cm5hbFNldHRpbmdGb3JtJykge1xyXG4gICAgICByZXFPYmpbXCJqb3VybmFsX2lkblwiXSA9IHRoaXMucm91dGUuc25hcHNob3QucGFyYW1NYXAuZ2V0KFwic3VidlwiKTsgLy90aGlzLndoclY7XHJcbiAgICAgIHJlcU9ialtcInR5cGVcIl0gPSBcInNldHRpbmdzXCI7XHJcbiAgICAgIHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdID0gXCJzYXZlSm91cm5hbEF0dHJcIjtcclxuICAgICAgdXJsID0gXCJhY2NvdW50cy9hY2NMZWRnZXJcIjtcclxuICAgIH1cclxuICAgIC8vIGxldCBvcHRpb25zID0gKHsgaGVhZGVyczogbmV3IEh0dHBIZWFkZXJzKHRoaXMuaGVhZGVyKSB9KTtcclxuICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICBtZXRob2Q6IHRoaXMuaGVhZGVyW1wibWV0aG9kXCJdXHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jc1xyXG4gICAgICAubG9hZChyZXFPYmosIG9wdGlvbnMsIHVybClcclxuICAgICAgLnRoZW4oKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuXHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBcIlNVQ0NFU1NcIikge1xyXG4gICAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5oaWRlKCk7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5zdWNjZXNzKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnNwaW5uZXJTZXJ2aWNlLmhpZGUoKTtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnI6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaGlkZSgpO1xyXG4gICAgICAgIHRoaXMudG9hc3RyLmVycm9yKGVyci5tZXNzYWdlKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwYWdlRGlzcGxheTtcclxuICAvLyBBREQgUEFHRSBESVNQTEFZIEFUVFJJQlVURVxyXG4gIGFkZEF0dHIodiwgYSwgZGYpIHtcclxuICAgIGlmICh2ID09IHVuZGVmaW5lZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5hZGRUZXh0KHYsIGEsIGRmKTtcclxuICB9XHJcblxyXG4gIGFkZFRleHQodiwgYSwgZGYpIHtcclxuICAgIGlmIChkZi5pbmRleE9mKHYpICE9IC0xKSB7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKFwiQWxyZWFkeSBBZGRlZFwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b2FzdHIuc3VjY2VzcyhcIkFkZGVkXCIpO1xyXG4gICAgICBkZi5wdXNoKHYpO1xyXG4gICAgICAvLyBhLnNwbGljZShpLCAxKTtcclxuICAgICAgdGhpcy5zb3J0YWJsZUNvbXBvbmVudC53cml0ZVZhbHVlKGRmKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbW92ZShkZiwgaXQsIGksIGZmKSB7XHJcbiAgICBpZiAoZGYuaW5kZXhPZihpdCkgIT0gLTEpIHtcclxuICAgICAgZGYuc3BsaWNlKGksIDEpO1xyXG4gICAgICB0aGlzLnNxbEFycmF5W2ZmXS51bnNoaWZ0KHsgdjogaXQgfSk7XHJcbiAgICAgIHRoaXMuc29ydGFibGVDb21wb25lbnQud3JpdGVWYWx1ZShkZik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzaG93SElkZVBhc3MoKSB7XHJcbiAgICB0aGlzLmVzdHN0ID0gIXRoaXMuZXN0c3Q7XHJcbiAgICBpZiAodGhpcy5lc3RzdCkge1xyXG4gICAgICB0aGlzLmV2ZUMgPSBcImZhLWV5ZVwiO1xyXG4gICAgICB0aGlzLmlucHV0dHlwZSA9IFwidGV4dFwiO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ldmVDID0gXCJmYS1leWUtc2xhc2hcIjtcclxuICAgICAgdGhpcy5pbnB1dHR5cGUgPSBcInBhc3N3b3JkXCI7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJlZGllY3R0b2t5YygpIHtcclxuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFsnY29udGFjdC9wZW5kaW5nLWt5Yy9wZW5kaW5nS3ljRm9ybSddKTtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgZm9ybWF0RGF0ZVNDTW9udGhCZWZvcmUoZGF0ZSwgYXR0cikge1xyXG4gICAgaWYgKGRhdGUgIT0gdW5kZWZpbmVkICYmIGRhdGUgIT0gXCJcIikge1xyXG5cclxuICAgICAgbGV0IGQgPSBuZXcgRGF0ZShkYXRlKSxcclxuICAgICAgICBtb250aCA9ICcnICsgKGQuZ2V0TW9udGgoKSksXHJcbiAgICAgICAgZGF5ID0gJycgKyBkLmdldERhdGUoKSxcclxuICAgICAgICB5ZWFyID0gZC5nZXRGdWxsWWVhcigpO1xyXG4gICAgICBkLnNldERhdGUoZC5nZXREYXRlKCkgLSAzMCk7XHJcblxyXG4gICAgICBpZiAobW9udGgubGVuZ3RoIDwgMikgbW9udGggPSAnMCcgKyBtb250aDtcclxuICAgICAgaWYgKGRheS5sZW5ndGggPCAyKSBkYXkgPSAnMCcgKyBkYXk7XHJcblxyXG4gICAgICBsZXQgbmV3RGF0ZSA9IFt5ZWFyLCBtb250aCwgZGF5XS5qb2luKCctJyk7XHJcblxyXG4gICAgICB0aGlzLmRhdGFEdGxbYXR0cl0gPSBuZXdEYXRlO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXNldCA9IHYgPT4gdi5mb3JtLnJlc2V0KCk7XHJcbiAgY2xvc2VOdWxsID0gKCkgPT4gKHRoaXMudGJDZWxsID0gbnVsbCk7XHJcbiAgcGFnZUJjayA9ICgpID0+IHdpbmRvdy5oaXN0b3J5LmJhY2soKTtcclxuICBjVXJsO1xyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5zZWxlY3RlZFBlb3BsZTMgPSBbXHJcbiAgICAgIHsgazogXCIyMDRcIiwgdjogXCJuaWxhbVwiIH0sXHJcbiAgICAgIHsgazogXCI0NzgxXCIsIHY6IFwibmlsYW13ZWJcIiB9XHJcbiAgICBdO1xyXG4gICAgbGV0IG1kbGsgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKFwibWRsS2V5XCIpKTtcclxuICAgIGxldCBtZGxLZXkgPSBPYmplY3Qua2V5cyhtZGxrKTtcclxuICAgICBcclxuICAgIHRoaXMuY1VybCA9IHRoaXMucm91dGVyLnVybDtcclxuICAgIHRoaXMuaGVhZGVyID0ge1xyXG4gICAgICBjbGllbnRrZXk6IENvb2tpZS5nZXQoXCJfY2tcIiksXHJcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxyXG4gICAgICBtb2R1bGVrZXk6IG1kbGtbdGhpcy5jVXJsLnNwbGl0KCcvJylbMV1dLFxyXG4gICAgICBsb2dpbmlkOiBDb29raWUuZ2V0KFwiX2xvZ2lkXCIpLFxyXG4gICAgICBzb3VyY2U6IFwicXNcIlxyXG4gICAgfTtcclxuICAgIGxldCBjb21wYW55RHRsID0gSlNPTi5wYXJzZShDb29raWUuZ2V0KCdfYWNjQ29tcGFueScpKSB8fCB7fTtcclxuICAgIGxldCB5ZWFyRHRsID0gSlNPTi5wYXJzZShDb29raWUuZ2V0KCdfYWNjeWVhcicpKSB8fCB7fTtcclxuICAgIGxldCBzdWJfY29faWRuID0gKGNvbXBhbnlEdGxbXCJzdWJfY29faWRuXCJdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgbGV0IGZpbl95ZWFyX2lkbiA9ICh5ZWFyRHRsW1wiZmluX3llYXJfaWRuXCJdIHx8ICcnKS50b1N0cmluZygpO1xyXG4gICAgaWYgKHN1Yl9jb19pZG4gIT0gJycpIHtcclxuICAgICAgdGhpcy5oZWFkZXJbJ3N1YmNvbWlkbiddID0gc3ViX2NvX2lkbjtcclxuICAgICAgdGhpcy5oZWFkZXJbJ3llYXJpZG4nXSA9IGZpbl95ZWFyX2lkbjtcclxuICAgIH1cclxuICAgIHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZSgocGFyYW1zOiBQYXJhbXMpID0+IHtcclxuICAgICAgdGhpcy5zdWJGcm1XayA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2VhcmNoRiA9IG51bGw7XHJcbiAgICAgICBcclxuICAgICAgdGhpcy5uYXZmb3JtID0gcGFyYW1zW1wiaXRtZm9ybVwiXTtcclxuICAgICAgdGhpcy5wYXJhT2JqW1wiZm9ybU5tZVwiXSA9IHBhcmFtc1tcIml0bWZvcm1cIl07XHJcbiAgICAgIHRoaXMucGFyYU9ialtcIndoZXJlS2V5c1wiXSA9IHBhcmFtc1tcInN1YmtcIl07XHJcbiAgICAgIHRoaXMucGFyYU9ialtcIndoZXJlVmx1c1wiXSA9IHBhcmFtc1tcInN1YnZcIl07XHJcbiAgICAgIGlmIChwYXJhbXNbXCJpdG1mb3JtXCJdID09ICdhY2NEZWxldGVSdWxlc0Zvcm0nKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSBwYXJhbXNbXCJpdG1mb3JtXCJdO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2RlbGV0ZV9ydWxlJ107XHJcbiAgICAgICAgdGhpcy5nZXRKb3VybmFsQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsLCAnZGVsZXRlX3J1bGVzJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zW1wiaXRtZm9ybVwiXSA9PSAnYWNjSm91cm5hbEF0dHJGb3JtJykge1xyXG4gICAgICAgIHRoaXMuYWRkRnJtTm1lID0gcGFyYW1zW1wiaXRtZm9ybVwiXTtcclxuICAgICAgICBsZXQgbWRsID0gWydqbmxhY2NfYXR0ciddO1xyXG4gICAgICAgIHRoaXMuZ2V0Sm91cm5hbEF0dHIodGhpcy5hZGRGcm1ObWUsIG1kbCwgJ2F0dHInKTtcclxuICAgICAgfSBlbHNlIGlmIChwYXJhbXNbXCJpdG1mb3JtXCJdID09ICdhY2NMb2FuQXR0ckZvcm0nKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSBwYXJhbXNbXCJpdG1mb3JtXCJdO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2xvYW4nXTtcclxuICAgICAgICB0aGlzLmdldEpvdXJuYWxBdHRyKHRoaXMuYWRkRnJtTm1lLCBtZGwsICdhdHRyJyk7XHJcbiAgICAgIH0gZWxzZSBpZiAocGFyYW1zW1wiaXRtZm9ybVwiXSA9PSBcImFjY0pvdXJuYWxTZXR0aW5nRm9ybVwiKSB7XHJcbiAgICAgICAgdGhpcy5hZGRGcm1ObWUgPSBwYXJhbXNbXCJpdG1mb3JtXCJdO1xyXG4gICAgICAgIGxldCBtZGwgPSBbJ2pubF9zZXR0J107XHJcbiAgICAgICAgdGhpcy5nZXRKb3VybmFsQXR0cih0aGlzLmFkZEZybU5tZSwgbWRsLCAnc2V0dGluZ3MnKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmdldFBhZ2VEZWZpbmF0aW9uKCk7XHJcbiAgICAgICAgdGhpcy5jTGluayA9IDA7XHJcbiAgICAgICAgdGhpcy5wID0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcmV2ZW50U3BhY2UoZXZlbnQ6IEtleWJvYXJkRXZlbnQsIGZpZWxkKTogdm9pZCB7XHJcbiAgICBpZiAoZmllbGQuZm9ybV9maWVsZCA9PSBcImVtbFwiIHx8IGZpZWxkLmZvcm1fZmllbGQgPT09ICdtYmwnKSB7XHJcbiAgICAgIGlmIChldmVudC5jb2RlID09PSAnU3BhY2UnKSB7XHJcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVOdW1iZXIoZXZlbnQ6IEV2ZW50LGZpZWxkKTogdm9pZCB7XHJcbiAgICBpZihmaWVsZC5mb3JtX2ZpZWxkID09PSAnbWJsJykge1xyXG4gICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICBjb25zdCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xyXG4gIFxyXG4gICAgICAvLyBDaGVjayBpZiB0aGUgdmFsdWUgaXMgbm90IG51bWVyaWNcclxuICAgICAgaWYgKC9bXjAtOV0vLnRlc3QodmFsdWUpKSB7XHJcbiAgICAgICBcclxuICAgICAgICAvLyBSZXBsYWNlIG5vbi1udW1lcmljIGNoYXJhY3RlcnNcclxuICAgICAgICBpbnB1dC52YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1teMC05XS9nLCAnJyk7XHJcbiAgICAgICAgZmllbGQuZGVmYXVsdF92YWx1ZSA9IGlucHV0LnZhbHVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgcmV0dXJuXHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgICBmaWVsZC5kZWZhdWx0X3ZhbHVlID0gaW5wdXQudmFsdWU7XHJcbiAgICB9XHJcbiAgIFxyXG4gIH1cclxuICBpbnB1dEZpZWxkQ2hhbmdlKCRldmVudCwgZmllbGQpIHtcclxuICAgIGlmIChmaWVsZC5mb3JtX2ZpZWxkID09IFwiZW1sXCIpIHtcclxuICAgICAgaWYoZmllbGQuZGVmYXVsdF92YWx1ZSAmJiBmaWVsZC5kZWZhdWx0X3ZhbHVlICE9ICcnKSB7XHJcbiAgICAgICAgbGV0IHJlcU9iaj0ge30gXHJcbiAgICAgICAgcmVxT2JqW1wiZW1haWxJZFwiXSA9IGZpZWxkLmRlZmF1bHRfdmFsdWVcclxuICAgICAgICBpZih0aGlzLmJ0bk5hbWUgID09ICdFZGl0Jykge1xyXG4gICAgICAgICAgcmVxT2JqW1wibm1lSWRuXCJdID0gdGhpcy5waWRcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICByZXFPYmpbXCJubWVJZG5cIl0gPSBcIlwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBvcHRpb25zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcImlzRW1haWxFeGlzdFwiXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY3MubG9hZChyZXFPYmosIG9wdGlvbnMsICdjb250YWN0L2xvYWRDb250YWN0JykudGhlbigocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYocmVzcG9uc2Uuc3RhdHVzID09IFwiU1VDQ0VTU1wiKSB7XHJcbiAgICAgICAgICAgIGlmKHJlc3BvbnNlLm1lc3NhZ2UgPT0gJ1NVQ0NFU1MnKSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgZmllbGQuZGVmYXVsdF92YWx1ZSA9ICcnO1xyXG4gICAgICAgICAgICAgIHRoaXMudG9hc3RyLmVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IocmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkuY2F0Y2goKGVycjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJtdFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbCBwYW5lbC1kZWZhdWx0XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGluZ1wiPlxyXG4gICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtY2hldnJvbi1sZWZ0IGNwXCIgKGNsaWNrKT1cInBhZ2VCY2soKTtcIj4gQmFjazwvc3Bhbj4mbmJzcDsmbmJzcDsmbmJzcDsge3twYWdlSW5mbz8udGl0bGV9fVxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiY29udGFjdE5hbWU9PScnXCIgY2xhc3M9XCJmLTEyXCI+KHt7Y0R0IHwgZGF0ZTonbWVkaXVtJ319KTwvc3Bhbj5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cImNvbnRhY3ROYW1lIT0nJ1wiIGNsYXNzPVwiZi0xMlwiPiZuYnNwO2ZvciA8Yj4ge3tjb250YWN0TmFtZX19PC9iPiA8L3NwYW4+XHJcbiAgICAgIDwvaDM+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlkPVwiYWRkQnRuXCIgY2xhc3M9XCJidG4gYnRuLWluZm8gcHVsbC1yaWdodFwiICpuZ0lmPVwiYWRkTmV3Py5pc19jb21wdWxzb3J5ID09IDFcIlxyXG4gICAgICAgIGFwcEFwcE5vRGJsQ2xpY2sgKGNsaWNrKT1cInVzZXJBY3Rpb24oJycsICdhZGQnLCAnJywgJycpO2YucmVzZXQoKTtcIj57e2FkZE5ldz8uZm9ybV9maWVsZF90aXRsZX19PC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIiAqbmdJZj1cIm5hdmlnYXRpb24ubGVuZ3RoID4gMFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdC1ncm91cCBib3JkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiBjbGFzcz1cImxpc3QtZ3JvdXAtaXRlbVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJyA6aSA9PSBjTGlua31cIlxyXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBuYXYgb2YgbmF2aWdhdGlvbjtsZXQgaT1pbmRleFwiIChjbGljayk9XCJuYXZpZ2F0aW9uRnVuKG5hdixpKTtcIj57e25hdi5mb3JtX2ZpZWxkX3RpdGxlfX08L2E+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgW25nQ2xhc3NdPVwibmF2aWdhdGlvbi5sZW5ndGggPiAwID8gJ2NvbC1tZC0xMCcgOiAnY29sLW1kLTEyJ1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiPlxyXG4gICAgICAgIDwhLS0gcHJpbWVyeSBmb3JtIC0tPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCIgc3R5bGU9XCJvdmVyZmxvdy14OiBzY3JvbGxcIlxyXG4gICAgICAgICAgKm5nSWY9XCJuYXZmb3JtICE9ICdhZGR0aW9uYWxEdGxNYXN0ZXInICYmIG5hdmZvcm0gIT0gJ2RvY3VtZW50VXBsb2FkTWFzdGVyJyAgJiYgbmF2Zm9ybSAhPSAnbWVudUFjY2Vzc01hc3RlcicgICYmIG5hdmZvcm0gIT0gJ3Rlcm1Vc2VyQXNzaWduRm9ybScgJiYgbmF2Zm9ybSAhPSAnc2V0UGFzc3dvcmRGb3JtJyAmJiBuYXZmb3JtIT0nbGVkZ2VyQmFua0RldGFpbHMnICYmIG5hdmZvcm0hPSdsZWRnZXJBY2NBZGRpdGluYWxEZXRhaWxzJyAmJiBuYXZmb3JtIT0nbGVkZ2VyQWRkdGlvbmFsRHRsTWFzdGVyJyAmJiBuYXZmb3JtIT0nYWNjRGVsZXRlUnVsZXNGb3JtJyAmJiBuYXZmb3JtIT0nYWNjSm91cm5hbEF0dHJGb3JtJyAmJiBuYXZmb3JtIT0nYWNjTG9hbkF0dHJGb3JtJyAmJiBuYXZmb3JtIT0nYWNjSm91cm5hbFNldHRpbmdGb3JtJyAmJiBuYXZmb3JtIT0nd2ViTWVudUFjY2Vzc01hc3RlcicgXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZGRsUGFnZXNpemVcIj5QYWdlIFNpemUgJm5ic3A7ICZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwicGFnZVNpemVcIiBbKG5nTW9kZWwpXT1cInBhZ2VTaXplXCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uUGFnZVNpemVDaGFuZ2UocGFnZVNpemUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkFsbFwiPkFsbDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMFwiPjEwPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIjI1XCI+MjU8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiNTBcIj41MDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCIxMDBcIj4xMDA8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIHN0eWxlPVwicGFkZGluZzogNHB4IDE1cHggNHB4IDIwcHg7bWFyZ2luLWxlZnQ6IDEwcHg7XCJcclxuICAgICAgICAgICAgICAgIGRhdGEtdG9nZ2xlPVwidG9vbHRpcFwiIGRhdGEtcGxhY2VtZW50PVwicmlnaHRcIiB0aXRsZT1cIlJlZnJlc2hcIiAoY2xpY2spPVwibmdPbkluaXQoKTtcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEtcmVmcmVzaFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tNlwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4YW1wbGVJbnB1dE5hbWUyXCI+U2VhcmNoICZuYnNwOyZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJleGFtcGxlSW5wdXROYW1lMlwiIG5hbWU9XCJzY2h0eHRcIiBbKG5nTW9kZWwpXT1cInNlYXJjaEZcIiAvPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIiBbbmdDbGFzc109XCJ7J3RhYmxlLXJlc3BvbnNpdmUnIDpuYXZpZ2F0aW9uLmxlbmd0aCA+IDB9XCI+XHJcbiAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLWJvcmRlcmVkIHRhYmxlLWhvdmVyIHRhYmxlLWhvdmVyLWNlbGxzXCI+XHJcbiAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+U1IgTm88L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoICpuZ0Zvcj1cImxldCB0Ymggb2YgdGJsSDsgbGV0IGkgPSBpbmRleFwiIChjbGljayk9XCJzZXRPcmRlcih0YmgsaSlcIj57e3RibERlc2NbdGJoXX19XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2hpZGRlbl09XCJyZXZlcnNlXCIgKm5nSWY9XCJzaG93YXJyID09PSBpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLWFycm93LWRvd25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIFtoaWRkZW5dPVwiIXJldmVyc2VcIiAqbmdJZj1cInNob3dhcnIgPT09IGlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtYXJyb3ctdXBcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGF0YWxpc3QgfCBzZWFyY2hQaXBlOnNlYXJjaEYgfCBvcmRlckJ5OiBvcmRlcjpyZXZlcnNlIHwgcGFnaW5hdGU6IHsgaXRlbXNQZXJQYWdlOiBwYWdlU2l6ZSwgY3VycmVudFBhZ2U6IHAgfTsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICA8dHIgW25nQ2xhc3NdPVwieydJbmFjdGl2ZSc6ZGF0YS5zdHQ9PSdJbkFjdGl2ZSd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPnt7aSArIDF9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJ0bi1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPVwiI1wiIGRhdGEtdG9nZ2xlPVwiZHJvcGRvd25cIiBjbGFzcz1cImJ0biBidG4taW5mbyBkcm9wZG93bi10b2dnbGVcIj5BY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhcmV0XCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImRyb3Bkb3duLW1lbnVcIiByb2xlPVwibWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgYWN0aW9uIG9mIGFjdGlvbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIiAoY2xpY2spPVwidXNlckFjdGlvbihkYXRhLGFjdGlvbi5mb3JtX2ZpZWxkLGFjdGlvbiwgaSk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7YWN0aW9uLmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdGb3I9XCJsZXQgdGJoIG9mIHRibEg7IGxldCBpPWluZGV4XCIgb24tbW91c2VvdmVyPVwiaG92ZXJlZEk9aVwiIG9uLW1vdXNlbGVhdmU9XCJob3ZlcmVkST0tMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIm1heC13aWR0aDogMzAwcHg7IHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XCI+e3tkYXRhW3RiaF19fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm9uSG92ZXJEaXZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImk9PWhvdmVyZWRJICYmIHBhZ2VfdHlwIT0nanNvbkZvcm0nICYmIG5hdmZvcm0hPSdidXllcnRlcm1zTWFzdGVyJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIChjbGljayk9XCJlZGl0Q2VsbChkYXRhLHRiaCk7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIGZhLXBlbmNpbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxwYWdpbmF0aW9uLWNvbnRyb2xzIChwYWdlQ2hhbmdlKT1cInAgPSAkZXZlbnRcIiBjbGFzcz1cInB1bGwtcmlnaHRcIj48L3BhZ2luYXRpb24tY29udHJvbHM+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPCEtLSBjdXN0b20gZm9ybSAtLT5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiXHJcbiAgICAgICAgICAqbmdJZj1cIm5hdmZvcm0gPT0gJ2FkZHRpb25hbER0bE1hc3RlcicgfHwgbmF2Zm9ybSA9PSAnbGVkZ2VyQWRkdGlvbmFsRHRsTWFzdGVyJyB8fCBuYXZmb3JtID09ICdsZWRnZXJBY2NBZGRpdGluYWxEZXRhaWxzJyB8fCBuYXZmb3JtPT0nYWNjRGVsZXRlUnVsZXNGb3JtJyB8fCBuYXZmb3JtPT0nYWNjSm91cm5hbEF0dHJGb3JtJyB8fCBuYXZmb3JtPT0nYWNjTG9hbkF0dHJGb3JtJyB8fCBuYXZmb3JtPT0nYWNjSm91cm5hbFNldHRpbmdGb3JtJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nRm9yPVwibGV0IHVnbGQgb2YgdWlHcnBMaXN0XCI+XHJcbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJoZWFkaW5nQ2xzXCI+e3t1aUdycExpc3REdGxbdWdsZF19fTwvcD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIiAqbmdGb3I9XCJsZXQgZm9ybUYgb2YgdWlHcnBMaXN0RHRsW3VnbGQrJyNUJ107bGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBzdHlsZT1cIm1hcmdpbi1ib3R0b206IDQ1cHggIWltcG9ydGFudDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTQgY29udHJvbC1sYWJlbFwiPnt7dWlHcnBMaXN0RHRsW3VnbGQrJyNEJ11baV19fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiICpuZ0lmPVwiZm9ybUYgPT0gJ24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cIm51bWJlclwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInt7dWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiIFsobmdNb2RlbCldPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0sZm9ybUYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVpR3JwTGlzdER0bFt1Z2xkKycjRSddW2ldID09IDAgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiICpuZ0lmPVwiZm9ybUYgPT0gJ3QnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIiBbKG5nTW9kZWwpXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzYXZlRnVuKHVpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldLGRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dLGZvcm1GKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1aUdycExpc3REdGxbdWdsZCsnI0UnXVtpXSA9PSAwID8gZmFsc2UgOiB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgICA8IS0tIGFkZGVkIGZvciB0ZXN0aW5nIG9ubHkgLS0+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiICpuZ0lmPVwiZm9ybUYgPT0gJ2MnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3t1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic2F2ZUZ1bih1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSxkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXSxmb3JtRilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQga2V5IG9mIGF0dHJDTGlzdER0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSArJyNEJ107bGV0IGo9aW5kZXhcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPVwie3thdHRyQ0xpc3REdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0gKycjViddW2pdfX1cIj57e2tleX19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPHAgKm5nRm9yPVwibGV0IGEgb2YgYXR0ckNMaXN0RHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldICsnI1YnXVwiPnt7YSB8anNvbn19OlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e2F0dHJDTGlzdER0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSArJyNWJ10gfGpzb259fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9wPiAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3t1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXX19XCIgW3ZhbHVlXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiIChibHVyKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVpR3JwTGlzdER0bFt1Z2xkKycjRSddW2ldID09IDAgPyBmYWxzZSA6IHRydWVcIj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIiAqbmdJZj1cImZvcm1GID09ICdxJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInt7dWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0sZm9ybUYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGtleSBvZiBhdHRyUUxpc3REdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0gKycjRCddO2xldCBqPWluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7YXR0clFMaXN0RHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldICsnI0QnXVtqXX19XCI+e3trZXl9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxwICpuZ0Zvcj1cImxldCBhIG9mIGF0dHJDTGlzdER0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSArJyNWJ11cIj57e2EgfGpzb259fTpcclxuICAgICAgICAgICAgICAgICAgICAgICAge3thdHRyQ0xpc3REdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0gKycjViddIHxqc29ufX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvcD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8IS0tIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInt7dWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV19fVwiIFt2YWx1ZV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIiAoYmx1cik9XCJzYXZlRnVuKHVpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldLGRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJ1aUdycExpc3REdGxbdWdsZCsnI0UnXVtpXSA9PSAwID8gZmFsc2UgOiB0cnVlXCI+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOFwiICpuZ0lmPVwiZm9ybUYgPT0gJ3NhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBzdHlsZT1cInotaW5kZXg6IDU7XCIgW29wdGlvbnNdPVwic3FsQXJyYXlbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCIgI3NmaT1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCIgbmFtZT1cInt7dWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV19fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJzYXZlRnVuKHVpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldLGRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dLGZvcm1GKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChmaWx0ZXJJbnB1dENoYW5nZWQpPVwibG9hZEpubFN1Z2dkYXRhKCRldmVudCx1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXSx1aUdycExpc3REdGxbdWdsZCsnI00nXVtpXSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIiAqbmdJZj1cImZvcm1GID09ICdkJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJkYXRlXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3t1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXX19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJzYXZlRnVuKHVpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldLGRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dLGZvcm1GKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiIFsobmdNb2RlbCldPVwiZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwidWlHcnBMaXN0RHRsW3VnbGQrJyNFJ11baV0gPT0gMCA/IGZhbHNlIDogdHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04XCIgKm5nSWY9XCJmb3JtRiA9PSAnZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZW1haWxcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0sZm9ybUYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImRhdGFEdGxbdWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV1dXCIgWyhuZ01vZGVsKV09XCJkYXRhRHRsW3VpR3JwTGlzdER0bFt1Z2xkKycjViddW2ldXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChibHVyKT1cInNhdmVGdW4odWlHcnBMaXN0RHRsW3VnbGQrJyNWJ11baV0sZGF0YUR0bFt1aUdycExpc3REdGxbdWdsZCsnI1YnXVtpXV0sZm9ybUYpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInVpR3JwTGlzdER0bFt1Z2xkKycjRSddW2ldID09IDAgPyBmYWxzZSA6IHRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keSBmb3JtXCJcclxuICAgICAgICAgICpuZ0lmPVwibmF2Zm9ybSA9PSAnZG9jdW1lbnRVcGxvYWRNYXN0ZXInICAmJiBuYXZmb3JtICE9ICdtZW51QWNjZXNzTWFzdGVyJyAgJiYgbmF2Zm9ybSAhPSAndGVybVVzZXJBc3NpZ25Gb3JtJyAmJiBuYXZmb3JtICE9ICdzZXRQYXNzd29yZEZvcm0nXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj1cIiNcIiBjbGFzcz1cImZvcm0taG9yaXpvbnRhbCBmb3JtLWJvcmRlcmVkXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tYm9keVwiPlxyXG5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwiZG9jdHlwZVwiIFsobmdNb2RlbCldPVwiZG9jdHlwZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGRvY3Mgb2YgZG9jdW1lbnRVcGxvYWRMaXN0XCIgdmFsdWU9XCJ7e2RvY3N9fVwiPnt7ZG9jdW1lbnRVcGxvYWREdGxbZG9jc119fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlaW5wdXQgZmlsZWlucHV0LW5ld1wiIGRhdGEtcHJvdmlkZXM9XCJmaWxlaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJ0biBncmVlbiBidG4tZmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IFVwbG9hZCA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgbmFtZT1cIi4uLlwiIChjaGFuZ2UpPVwidXBsb2FkRG9jcygkZXZlbnQpXCI+IDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZpbGVpbnB1dC1maWxlbmFtZVwiPiA8L3NwYW4+ICZuYnNwO1xyXG4gICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cImNsb3NlIGZpbGVpbnB1dC1leGlzdHNcIiBkYXRhLWRpc21pc3M9XCJmaWxlaW5wdXRcIj4gPC9hPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJyb3V0aGVyRG9jIT0nJ1wiIHN0eWxlPVwiY3Vyc29yOnBvaW50ZXIgXCIgKGNsaWNrKT1cInJlZGllY3R0b2t5YygpXCI+PGI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8PCBiYWNrPC9iPjwvYT5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaGVhZGluZ0Nsc1wiPkV4aXN0aW5nIERvY3VtZW50czwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJzdWJEaXNwbGF5VGFibGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRvY3Mgb2YgZG9jdW1lbnRVcGxvYWRMaXN0O2xldCBpID0gaW5kZXggXCI+XHJcbiAgICAgICAgICAgICAgICAgIDx0ciAqbmdJZj1cImRhdGFEdGxbZG9jc10hPXVuZGVmaW5lZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiAxMCVcIj57e2RvY3VtZW50VXBsb2FkRHRsW2RvY3NdfX08L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT1cIndpZHRoOiA5MCU7dGV4dC1hbGlnbjogbGVmdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZG9jZHRsIG9mIGRhdGFEdGxbZG9jc11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZpbGVpbnB1dCBmaWxlaW5wdXQtbmV3XCIgKm5nSWY9XCJkb2NlZGl0QWN0aW9uXCIgZGF0YS1wcm92aWRlcz1cImZpbGVpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYnRuLWZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWRpdFwiIHRvb2x0aXA9XCJFZGl0IERvY3VtZW50XCIgc3R5bGU9XCJmb250LXNpemU6MjBweFwiPiA8L2k+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgbmFtZT1cIi4uLlwiIChjaGFuZ2UpPVwiRWRpdFVwbG9hZERvY3MoZG9jZHRsLCRldmVudClcIj4gPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmlsZWlucHV0LWZpbGVuYW1lXCI+IDwvc3Bhbj4gJm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiY2xvc2UgZmlsZWlucHV0LWV4aXN0c1wiIGRhdGEtZGlzbWlzcz1cImZpbGVpbnB1dFwiPiA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgJm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhPjxpIGNsYXNzPVwiZmEgZmEtdHJhc2gtb1wiICpuZ0lmPVwiZG9jZGVsZXRlQWN0aW9uXCIgKGNsaWNrKT1cIkNvbmZpcm1kZWxldGVEb2MoZG9jZHRsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToyMHB4O2N1cnNvcjogcG9pbnRlclwiPiA8L2k+IDwvYT4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgKGNsaWNrKT1cIm9wZW5kb2NzKGRvY2R0bClcIj4gPGkgY2xhc3M9XCJmYSBmYS1maWxlLW9cIiBzdHlsZT1cImZvbnQtc2l6ZToyMHB4XCI+IDwvaT4gPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAmbmJzcDsmbmJzcDt8Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgIDwvZGl2PlxyXG5cclxuXHJcblxyXG5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwtYm9keVwiXHJcbiAgICAgICAgICAqbmdJZj1cIm5hdmZvcm0gIT0gJ2RvY3VtZW50VXBsb2FkTWFzdGVyJyAmJiBuYXZmb3JtID09ICdtZW51QWNjZXNzTWFzdGVyJyAgJiYgbmF2Zm9ybSAhPSAndGVybVVzZXJBc3NpZ25Gb3JtJyAmJiBuYXZmb3JtICE9ICdzZXRQYXNzd29yZEZvcm0nIFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAycHg7XCI+QXBwbGljYXRpb248L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYXBwbGljYXRpb25cIiBuYW1lPVwiVXNlclwiIChjaGFuZ2UpPVwibG9hZFVzck1kbChhcHBsaWNhdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXBwIG9mIGFwcGxpY2F0aW9uTGlzdFwiIHZhbHVlPVwie3thcHAua319XCI+e3thcHAudn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiICpuZ0lmPVwidXNlckR0bHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAycHg7XCI+VXNlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJVc2VyXCIgbmFtZT1cIlVzZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbG92IG9mIHVzZXJEdGxzXCIgdmFsdWU9XCJ7e2xvdi51c2VyX2lkbn19XCI+e3tsb3YudXNlcm5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIiAqbmdJZj1cIm1vZHVsZUR0bHMubGVuZ3RoPjAgJiYgdXNlckR0bHMubGVuZ3RoID4wIFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj5Nb2R1bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiTW9kdWxlXCIgbmFtZT1cIk1vZHVsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb3Ygb2YgbW9kdWxlRHRsc1wiIHZhbHVlPVwie3tsb3YubW9kdWxlX2lkbn19XCI+e3tsb3YucHJpbnR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJhZGRCdG5cIiBjbGFzcz1cImJ0biBidG4taW5mb1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMjNweDtcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldFVzZXJSaWdodHMoVXNlcixNb2R1bGUpXCI+QXNzaWduXHJcbiAgICAgICAgICAgICAgICBSaWdodHNcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDEwcHg7XCIgKm5nSWY9XCJtZW51TGlzdC5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjZTVlNWU1O21hcmdpbi10b3A6IDMwcHhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIiBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiIHN0eWxlPVwicGFkZGluZzogOHB4OyBmb250LXNpemU6IDE0cHg7XCI+VXNlcnM8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjaGtBbGxcIiBzdHlsZT1cIm1hcmdpbjogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwic3dpdGNoXCIgbmFtZT1cImNoa0FsbFwiIGlkPVwiY2hrQWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZUFsbCgkZXZlbnQsVXNlcixNb2R1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiKGZhbHNlICE9PSAodXNlclJpZ2h0c01lbnVMaXN0Lmxlbmd0aCA9PSAobWVudUxpc3QubGVuZ3RoICsgdG90TWVudSkpID8gJ2NoZWNrZWQnIDogJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC00IGNvbnRyb2wtbGFiZWwgdGV4dC1sZWZ0XCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcIj5BbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdGb3I9XCJsZXQgbWRsIG9mIG1lbnVMaXN0O2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzd2l0Y2hcIiBuYW1lPVwiY2hrTWVudVwiIGlkPVwiY2hrTWVudXt7bWRsLm1lbnVfaWRufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZU1lbnUoJGV2ZW50LG1kbC5tZW51X2lkbixVc2VyLE1vZHVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiKGZhbHNlICE9PSB1c2VyUmlnaHRzTWVudUxpc3QuaW5jbHVkZXMobWRsPy5tZW51X2lkbikgPyAnY2hlY2tlZCcgOiAnJylcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWwgdGV4dC1sZWZ0XCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogM3B4O1wiPnt7bWRsLm1lbnV9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0lmPVwibWRsLlN1Yk1lbnUubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgc21kbCBvZiBtZGwuU3ViTWVudVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OjEwcHg7cGFkZGluZy1sZWZ0OiA2MHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwic3dpdGNoXCIgbmFtZT1cImNoa1N1Yk1lbnVcIiBpZD1cImNoa1N1Yk1lbnV7e3NtZGwubWVudV9pZG59fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25DaGFuZ2VTdWJNZW51KCRldmVudCxzbWRsLm1lbnVfaWRuLG1kbC5tZW51X2lkbixVc2VyLE1vZHVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCIoIGZhbHNlICE9PSB1c2VyUmlnaHRzTWVudUxpc3QuaW5jbHVkZXMoc21kbD8ubWVudV9pZG4pID8gJ2NoZWNrZWQnIDogJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC00IGNvbnRyb2wtbGFiZWwgdGV4dC1sZWZ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInBhZGRpbmctdG9wOiA4cHg7IGZvbnQtd2VpZ2h0OiAxMDA7cGFkZGluZy1sZWZ0OiA0MHB4O1wiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO3t7c21kbC5oZHJ9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCIgKm5nSWY9XCJuYXZmb3JtID09ICd3ZWJNZW51QWNjZXNzTWFzdGVyJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAycHg7XCI+QXBwbGljYXRpb248L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiYXBwbGljYXRpb25cIiBuYW1lPVwiVXNlclwiIChjaGFuZ2UpPVwibG9hZFVzck1kbChhcHBsaWNhdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgYXBwIG9mIGFwcGxpY2F0aW9uTGlzdFwiIHZhbHVlPVwie3thcHAua319XCI+e3thcHAudn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiICpuZ0lmPVwidXNlckR0bHMubGVuZ3RoPjBcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZy1sZWZ0OiAycHg7XCI+VXNlcjwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJVc2VyXCIgbmFtZT1cIlVzZXJcIj5cclxuICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgbG92IG9mIHVzZXJEdGxzXCIgdmFsdWU9XCJ7e2xvdi51c2VyX2lkbn19XCI+e3tsb3YudXNlcm5hbWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTJcIiAqbmdJZj1cIm1vZHVsZUR0bHMubGVuZ3RoPjAgJiYgdXNlckR0bHMubGVuZ3RoID4wIFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDJweDtcIj5Nb2R1bGU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIFsobmdNb2RlbCldPVwiTW9kdWxlXCIgbmFtZT1cIk1vZHVsZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBsb3Ygb2YgbW9kdWxlRHRsc1wiIHZhbHVlPVwie3tsb3YubW9kdWxlX2lkbn19XCI+e3tsb3YucHJpbnR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgXCI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgaWQ9XCJhZGRCdG5cIiBjbGFzcz1cImJ0biBidG4taW5mb1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMjNweDtcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImdldFVzZXJSaWdodHMoVXNlcixNb2R1bGUpXCI+QXNzaWduXHJcbiAgICAgICAgICAgICAgICBSaWdodHNcclxuICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgc3R5bGU9XCJwYWRkaW5nOiAwIDEwcHg7XCIgKm5nSWY9XCJtZW51TGlzdC5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICA8ZGl2IHN0eWxlPVwiYm9yZGVyOjFweCBzb2xpZCAjZTVlNWU1O21hcmdpbi10b3A6IDMwcHhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicGFuZWwgcGFuZWwtZGVmYXVsdFwiIHN0eWxlPVwibWFyZ2luLWJvdHRvbTogMjVweDtcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWhlYWRpbmdcIiBzdHlsZT1cInBhZGRpbmc6IDBweDtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJwYW5lbC10aXRsZVwiIHN0eWxlPVwicGFkZGluZzogOHB4OyBmb250LXNpemU6IDE0cHg7XCI+VXNlcnM8L2gzPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMiBjaGtBbGxcIiBzdHlsZT1cIm1hcmdpbjogMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiBzdHlsZT1cInBhZGRpbmc6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cInN3aXRjaFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJjaGVja2JveFwiIGNsYXNzPVwic3dpdGNoXCIgbmFtZT1cImNoa0FsbFwiIGlkPVwiY2hrQWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZUFsbCgkZXZlbnQsVXNlcixNb2R1bGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiKGZhbHNlICE9PSAodXNlclJpZ2h0c01lbnVMaXN0Lmxlbmd0aCA9PSAobWVudUxpc3QubGVuZ3RoICsgdG90TWVudSkpID8gJ2NoZWNrZWQnIDogJycpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC00IGNvbnRyb2wtbGFiZWwgdGV4dC1sZWZ0XCIgc3R5bGU9XCJwYWRkaW5nLXRvcDogOHB4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgIHBhZGRpbmctbGVmdDogNDBweDtcIj5BbGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdGb3I9XCJsZXQgbWRsIG9mIG1lbnVMaXN0O2xldCBpPWluZGV4XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJzd2l0Y2hcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzd2l0Y2hcIiBuYW1lPVwiY2hrTWVudVwiIGlkPVwiY2hrTWVudXt7bWRsLm1lbnVfaWRufX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVdlYk1lbnUoJGV2ZW50LG1kbC5tZW51X2lkbixVc2VyLE1vZHVsZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiKGZhbHNlID09IHVzZXJSaWdodHNNZW51TGlzdC5pbmNsdWRlcyhtZGw/Lm1lbnVfaWRuKSA/ICdjaGVja2VkJyA6ICcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbCB0ZXh0LWxlZnRcIiBzdHlsZT1cInBhZGRpbmctdG9wOiAzcHg7XCI+e3ttZGwubWVudX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nSWY9XCJtZGwuU3ViTWVudS5sZW5ndGggPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCBzbWRsIG9mIG1kbC5TdWJNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMVwiIHN0eWxlPVwibWFyZ2luLWxlZnQ6MTBweDtwYWRkaW5nLWxlZnQ6IDYwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwic3dpdGNoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgY2xhc3M9XCJzd2l0Y2hcIiBuYW1lPVwiY2hrU3ViTWVudVwiIGlkPVwiY2hrU3ViTWVudXt7c21kbC5tZW51X2lkbn19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoYW5nZVdlYlN1Yk1lbnUoJGV2ZW50LHNtZGwubWVudV9pZG4sbWRsLm1lbnVfaWRuLFVzZXIsTW9kdWxlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cIiggZmFsc2UgPT0gdXNlclJpZ2h0c01lbnVMaXN0LmluY2x1ZGVzKHNtZGw/Lm1lbnVfaWRuKSA/ICdjaGVja2VkJyA6ICcnKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtNCBjb250cm9sLWxhYmVsIHRleHQtbGVmdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nLXRvcDogOHB4OyBmb250LXdlaWdodDogMTAwO3BhZGRpbmctbGVmdDogNDBweDtcIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDt7e3NtZGwuaGRyfX08L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmZmO21pbi1oZWlnaHQ6IDU1MHB4O1wiXHJcbiAgICAgICAgICAqbmdJZj1cIm5hdmZvcm0gIT0gJ2FkZHRpb25hbER0bE1hc3RlcicgJiYgIG5hdmZvcm0gIT0gJ2RvY3VtZW50VXBsb2FkTWFzdGVyJyAmJiBuYXZmb3JtICE9ICdtZW51QWNjZXNzTWFzdGVyJyAmJiBuYXZmb3JtID09ICd0ZXJtVXNlckFzc2lnbkZvcm0nICYmIG5hdmZvcm0gIT0gJ3NldFBhc3N3b3JkRm9ybScgIFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luLXRvcDogMTBweDtcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbnRyb2wtbGFiZWxcIj5UZXJtczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiA4NXB4O1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCI+VXNlcnM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgdGVybSBvZiB0ZXJtc0xpc3Q7IGxldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInt7dGVybS5idXllcl90ZXJtc19pZG59fVwiIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O1wiPnt7dGVybS5kc2N9fTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIiAqbmdJZj1cInRlcm0udXNlcklkbkxpc3QgIT0gdW5kZWZpbmVkXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJhcHBsVXNlckxpc3RcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiIFthZGRUYWddPVwiYWRkVGFnXCIgKGNoYW5nZSk9XCJvbmNoYW5lVmFscyhudWxsLHRlcm0uYnV5ZXJfdGVybXNfaWRuLHRlcm0udXNlcklkbkxpc3QpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cInZcIiBiaW5kVmFsdWU9XCJrXCIgbmFtZT1cInt7dGVybSA/LmJ1eWVyX3Rlcm1zX2lkbn19XCIgWyhuZ01vZGVsKV09XCJ0ZXJtLnVzZXJJZG5MaXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3QgcGxhY2Vob2xkZXI9XCJTZWxlY3QgdXNlclwiIFtvcHRpb25zXT1cInRlcm0uVGVybVVzZXJMaXN0XCIgWyhuZ01vZGVsKV09XCJ0ZXJtLnVzZXJJZG5MaXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgIChkZXNlbGVjdGVkKT1cIm9uY2hhbmdlVXNlckxpc3QoJGV2ZW50LHRlcm0sJ2RlbGV0ZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3RlZCk9XCJvbmNoYW5nZVVzZXJMaXN0KCRldmVudCx0ZXJtLCdhZGQnKVwiIG5hbWU9XCJzdGF0dXNcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbYWxsb3dDbGVhcl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI29wdGlvblRlbXBsYXRlIGxldC1vcHRpb249XCJvcHRpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZhbWZhbWZhbS1mbGFncyB7e29wdGlvbj8udmFsdWV9fVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbj8ubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTZcIj48L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIiBzdHlsZT1cImJhY2tncm91bmQ6ICNmZmY7bWluLWhlaWdodDogNTUwcHg7XCJcclxuICAgICAgICAgICpuZ0lmPVwibmF2Zm9ybSAhPSAnYWRkdGlvbmFsRHRsTWFzdGVyJyAmJiAgbmF2Zm9ybSAhPSAnZG9jdW1lbnRVcGxvYWRNYXN0ZXInICYmIG5hdmZvcm0gIT0gJ21lbnVBY2Nlc3NNYXN0ZXInICYmIG5hdmZvcm0gIT0gJ3Rlcm1Vc2VyQXNzaWduRm9ybScgJiYgbmF2Zm9ybSA9PSAnc2V0UGFzc3dvcmRGb3JtJyBcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiBzdHlsZT1cIm1hcmdpbi10b3A6IDEwcHg7XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICA8cCBjbGFzcz1cImhlYWRpbmdDbHNcIj5DaGFuZ2UgVXNlciBQYXNzd29yZDwvcD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nOiA4cHg7XCI+VXNlcm5hbWU8L2xhYmVsPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xXCIgc3R5bGU9XCJtYXJnaW4tbGVmdDogODVweDtcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZzogOHB4O1wiPlBhc3N3b3JkPC9sYWJlbD5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHVzZXIgb2YgdXNlckRldGFpbHM7IGxldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb250cm9sLWxhYmVsXCIgc3R5bGU9XCJwYWRkaW5nOiAxMHB4O2ZvbnQtd2VpZ2h0OiBub3JtYWw7XCI+e3t1c2VyPy51c2VybmFtZX19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNlwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiAgWyhuZ01vZGVsKV09XCJ1c2VyLnBhc3N3b3JkXCIgW3ZhbHVlXT1cInVzZXI/LnBhc3N3b3JkXCIgLz5cclxuICAgICAgICAgICAgICAgICAgPCEtLSAoYmx1cik9XCJjaGFuZ2VQc3dkKCRldmVudCx1c2VyLnVzZXJJZG4pXCIgLS0+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTNcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cImNoYW5nZVBhc3N3b3JkKHVzZXIpXCI+c2F2ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICA8IS0tIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cInNhdmVBcHBVc2VydGVybXMoYXBwbFVzckxzdClcIj5zYXZlPC9idXR0b24+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCIgc3R5bGU9XCJiYWNrZ3JvdW5kOiAjZmZmO21pbi1oZWlnaHQ6IDU1MHB4O1wiICpuZ0lmPVwibmF2Zm9ybT09J2xlZGdlckJhbmtEZXRhaWxzJ1wiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgc3R5bGU9XCJtYXJnaW46NXB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5CYW5rPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IHBsYWNlaG9sZGVyPVwiU2VsZWN0IEJhbmtcIiBbb3B0aW9uc109XCJiYW5rTGlzdFwiIFsobmdNb2RlbCldPVwiYmFua1wiIG5hbWU9XCJiYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwiZ2V0QmFua0JyYW5jaChiYW5rKVwiIChmaWx0ZXJJbnB1dENoYW5nZWQpPVwibGVkZ2VyQmFua0RldGFpbHMoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2FsbG93Q2xlYXJdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHN0eWxlPVwibWFyZ2luOjVweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+QnJhbmNoIERldGFpbHM8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzZWxlY3QgbmFtZT1cImJyYW5jaFwiIChjaGFuZ2UpPVwic2VsZWN0QnJhbmNoKGJyYW5jaClcIiBbKG5nTW9kZWwpXT1cImJyYW5jaFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiPlNlbGVjdCBicmFuY2g8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBibmtEdGwgb2YgYmFua0R0bExpc3RcIiBbbmdWYWx1ZV09XCJibmtEdGwubm1lX2lkblwiPnt7Ym5rRHRsLnBlcnNvbl9ubWV9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0lmPVwic2VsZWN0QnJhbmNoQWRkcmVzcyE9JydcIiBzdHlsZT1cIm1hcmdpbjo1cHhcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTIgY29udHJvbC1sYWJlbFwiPiZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+QWRkcmVzczo8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+e3tzZWxlY3RCcmFuY2hBZGRyZXNzfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0zXCI+SUZTQyBDb2RlOjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj57e3NlbGVjdElmc2N9fTwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHN0eWxlPVwibWFyZ2luOjVweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+QWNjb3VudCBUeXBlPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8c2VsZWN0IG5hbWU9XCJhY2NvdW50VHlwZVwiIFsobmdNb2RlbCldPVwiYWNjb3VudFR5cGVcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJjdXJyZW50XCI+Q3VycmVudDwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJzYXZpbmdzXCI+U2F2aW5nczwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHN0eWxlPVwibWFyZ2luOjVweFwiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+QWNjb3VudCBObzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIj5cclxuICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgY29scz1cIjQ1XCIgcm93cz1cIjJcIiBuYW1lPVwiYWNjb3VudG5vXCIgWyhuZ01vZGVsKV09XCJhY2NvdW50bm9cIj48L3RleHRhcmVhPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgc3R5bGU9XCJtYXJnaW46NXB4XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPiZuYnNwOzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiICpuZ0lmPVwiZWRpdGJhbmtfZHRsX2lkbj09JydcIiAoY2xpY2spPVwiU2F2ZUxlZGdlckJhbmsoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXN1Y2Nlc3NcIj5BZGQ8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKm5nSWY9XCJlZGl0YmFua19kdGxfaWRuIT0nJ1wiIChjbGljayk9XCJTYXZlTGVkZ2VyQmFuaygpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiPkVkaXQ8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImV4aXRCYW5rRHRsTGlzdC5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEgcHVsbC1sZWZ0XCI+XHJcbiAgICAgICAgICAgICAgJm5ic3A7XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTYgcHVsbC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmUgcHVsbC1yaWdodFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImV4YW1wbGVJbnB1dE5hbWUyXCI+U2VhcmNoICZuYnNwOyZuYnNwOzwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJleGFtcGxlSW5wdXROYW1lMlwiIG5hbWU9XCJzZWFyY2hGXCIgWyhuZ01vZGVsKV09XCJzZWFyY2hGXCIgLz5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImV4aXRCYW5rRHRsTGlzdC5sZW5ndGg+MFwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwiZGlzcGxheVRhYmxlXCI+XHJcbiAgICAgICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5BY3Rpb25zPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkFjY291bnQgVHlwZTwvdGg+XHJcbiAgICAgICAgICAgICAgICAgIDx0aD5BY2NvdW50IE5vPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPk5hbWU8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+QnJhbmNoPC90aD5cclxuICAgICAgICAgICAgICAgICAgPHRoPkFkZHJlc3M8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8dGg+SUZTQyBDb2RlPC90aD5cclxuICAgICAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgICAgICA8dGJvZHk+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJhbmtkdGwgb2YgZXhpdEJhbmtEdGxMaXN0IDsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ciBbbmdDbGFzc109XCJ7J2V2ZW4nOmklMj09MCwnb2RkJzppJTI9PTF9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+IDxpIGNsYXNzPVwiZmEgZmEtZWRpdFwiIChjbGljayk9XCJsb2FkRWRpdEJhbmtEdGwoYmFua2R0bClcIiB0b29sdGlwPVwiRWRpdCBCYW5rXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZToxNXB4O2N1cnNvcjogcG9pbnRlclwiPiA8L2k+Jm5ic3A7fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRyYXNoLW9cIiAoY2xpY2spPVwiQ29uZmlybURlbGV0ZUxlZGdlckJhbmsoYmFua2R0bClcIiB0b29sdGlwPVwiRGVsZXRlIEJhbmtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOjE1cHg7Y3Vyc29yOiBwb2ludGVyXCI+IDwvaT5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JhbmtkdGwuYWNjb3VudFR5cGV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiYW5rZHRsLmFjY291bnROb319PC90ZD5cclxuICAgICAgICAgICAgICAgICAgICAgIDx0ZD57e2JhbmtkdGwuYmFua25hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiYW5rZHRsLmJyYW5jaG5hbWV9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiYW5rZHRsLmFkZHJlc3N9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+e3tiYW5rZHRsLmlmc2N9fTwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cImRhdGFtb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJkZWZNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtY29udGVudFwiPlxyXG4gICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIiAjZj1cIm5nRm9ybVwiIG5hbWU9XCJhcHBGb3JtXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgI2Nsb3NlYnRuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJkZWZNb2RhbEhlYWRcIj57e2J0bk5hbWV9fSBSZWNvcmQ8L2g0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCIgKm5nRm9yPVwibGV0IGZsIG9mIGZvcm1GaWxkcyB8IG9yZGVyQnlQaXBlOiAnc3J0JzogJ2FzYydcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICd0JyAmJiBmbD8uaXNfaGlkZGVuID09IDAgJiYgZmw/LmR0YV90eXAgPT0nYycgfHwgZmw/LmR0YV90eXAgPT0ndCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmbC5pc19jb21wdWxzb3J5ID09IDFcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcG9zcmVsXCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJmbD8uZGVmYXVsdF92YWx1ZVwiIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiICN0ZXh0SW5wdXQ9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJjaGtGdW4oZmwsZmwuZGVmYXVsdF92YWx1ZSk7XCIgW3JlcXVpcmVkXT1cImZsPy5pc19jb21wdWxzb3J5ID09ICcxJ1wiIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cInByZXZlbnRTcGFjZSgkZXZlbnQsIGZsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cInZhbGlkYXRlTnVtYmVyKCRldmVudCwgZmwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cImlucHV0RmllbGRDaGFuZ2UoJGV2ZW50LCBmbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZmEgZmEte3tpY299fSBleWVcIiBbbmdTdHlsZV09XCJ7J2NvbG9yJzppY28gPT0gJ2NoZWNrJyA/ICdncmVlbicgOiAncmVkJyB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInVzcmlzRXhpc3QgJiYgb25FcnIgPT0gZmwuZm9ybV9maWVsZCBcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuaW52YWxpZCAmJiAodGV4dElucHV0LmRpcnR5IHx8IHRleHRJbnB1dC50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0SW5wdXQuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAndCcgJiYgZmw/LmlzX2hpZGRlbiA9PSAwICYmIGZsPy5kdGFfdHlwID09J24nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgW3ZhbHVlXT1cImZsPy5kZWZhdWx0X3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiAjbnVtYmVySW5wdXQ9XCJuZ01vZGVsXCIgW3JlcXVpcmVkXT1cImZsPy5pc19jb21wdWxzb3J5PT0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJudW1iZXJJbnB1dC5pbnZhbGlkICYmIChudW1iZXJJbnB1dC5kaXJ0eSB8fCBudW1iZXJJbnB1dC50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJudW1iZXJJbnB1dC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJudW1iZXJJbnB1dC5pbnZhbGlkICYmIChudW1iZXJJbnB1dC5kaXJ0eSB8fCBudW1iZXJJbnB1dC50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibnVtYmVySW5wdXQuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAncHcnICYmIGZsPy5pc19oaWRkZW4gPT0gMCAmJiBmbD8uZHRhX3R5cCA9PSdwdydcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmbC5pc19jb21wdWxzb3J5ID09IDFcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ7e2lucHV0dHlwZX19XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcG9zcmVsXCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cImZsPy5kZWZhdWx0X3ZhbHVlXCIgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgI3Bhc3NJbnB1dD1cIm5nTW9kZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZhIHt7ZXZlQ319IGV5ZVwiIChjbGljayk9XCJzaG93SElkZVBhc3MoKTtcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXNzSW5wdXQuaW52YWxpZCAmJiAocGFzc0lucHV0LmRpcnR5IHx8IHBhc3NJbnB1dC50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJwYXNzSW5wdXQuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICd0JyAmJiBmbD8uZHRhX3R5cCA9PSdhJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctc2VsZWN0IFtpdGVtc109XCJbXVwiIFthZGRUYWddPVwidHJ1ZVwiIGJpbmRWYWx1ZT1cImxhYmVsXCIgW211bHRpcGxlXT1cInRydWVcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiBbaXNPcGVuXT1cImZhbHNlXCIgI2FmaWVsZD1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBzdHlsZT1cInotaW5kZXg6IDU7XCIgW29wdGlvbnNdPVwiW11cIiBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAjYWZpZWxkPVwibmdNb2RlbFwiIFtyZXF1aXJlZF09XCJmbD8uaXNfY29tcHVsc29yeSA9PSAnMSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1zZWxlY3Q+IGxhc3QgY29tbWVudGVkLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8dGFnLWlucHV0IFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbbW9kZWxBc1N0cmluZ3NdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW2FsbG93RHVwZXNdPVwidHJ1ZVwiIFtlZGl0YWJsZV09J3RydWUnPjwvdGFnLWlucHV0PlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPGRpdiAqbmdJZj1cImFmaWVsZC5pbnZhbGlkICYmIChhZmllbGQuZGlydHkgfHwgYWZpZWxkLnRvdWNoZWQpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImFmaWVsZC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICd0JyAmJiBmbD8uZHRhX3R5cCA9PSdzcidcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC03XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBbaXRlbXNdPVwic3FsQXJyYXlbZmwuZm9ybV9maWVsZF1cIiBbZHJvcGRvd25Qb3NpdGlvbl09XCInYm90dG9tJ1wiIGJpbmRMYWJlbD1cInZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJwYWdlRGlzcGxheVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD4gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXNlbGVjdCBzdHlsZT1cInotaW5kZXg6IDU7XCIgW29wdGlvbnNdPVwic3FsQXJyYXlbZmwuZm9ybV9maWVsZF1cIiBbKG5nTW9kZWwpXT1cInBhZ2VEaXNwbGF5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1pbmZvXCIgdHlwZT1cImJ1dHRvblwiIHN0eWxlPVwid2lkdGg6MTAwJTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhZGRBdHRyKHBhZ2VEaXNwbGF5LCBzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXSwgZmwuZGVmYXVsdF92YWx1ZSk7XCI+QWRkPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+U2VsZWN0ZWQgTW9kdWxlczwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI2l0ZW1UZW1wbGF0ZSBsZXQtaXRlbT1cIml0ZW1cIiBsZXQtaW5kZXg9XCJpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiA0cHg7Ym9yZGVyOiAxcHggc29saWQgI2M5YzljOTtib3JkZXItcmFkaXVzOiA2cHg7ZGlzcGxheTogaW5saW5lLWJsb2NrO3dpZHRoOiAxMDAlO3Bvc2l0aW9uOiByZWxhdGl2ZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tpbmRleCsxfX08L3NwYW4+IC0ge3tpdGVtLnZhbHVlfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJybVwiIChjbGljayk9XCJyZW1vdmUoZmwuZGVmYXVsdF92YWx1ZSxpdGVtLnZhbHVlLGluZGV4LGZsPy5mb3JtX2ZpZWxkKTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhIGZhLXRpbWVzXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnMtc29ydGFibGUgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJpdGVtVGVtcGxhdGVcIiBpdGVtQ2xhc3M9XCJzb3J0YWJsZS1pdGVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtQWN0aXZlQ2xhc3M9XCJzb3J0YWJsZS1pdGVtLWFjdGl2ZVwiIHBsYWNlaG9sZGVyQ2xhc3M9XCJwbGFjZWhvbGRlclN0eWxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVyQ2xhc3M9XCJzb3J0YWJsZS13cmFwcGVyXCIgI3NyZj1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnMtc29ydGFibGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzcmYuaW52YWxpZCAmJiAoc3JmLmRpcnR5IHx8IHNyZi50b3VjaGVkKVwiIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzcmYuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAndCcgJiYgZmw/LmR0YV90eXAgPT0nc2EnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLXNlbGVjdCBbaXRlbXNdPVwic3FsQXJyYXlbZmwuZm9ybV9maWVsZF1cIiBbYWRkVGFnXT1cImFkZFRhZ1wiIGJpbmRWYWx1ZT1cImtcIiBbaGlkZVNlbGVjdGVkXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpcGxlPVwidHJ1ZVwiIGJpbmRMYWJlbD1cInZcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAjc2FmaWVsZD1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1zZWxlY3Qgc3R5bGU9XCJ6LWluZGV4OiA1O1wiIFtvcHRpb25zXT1cInNxbEFycmF5W2ZsLmZvcm1fZmllbGRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiBbbXVsdGlwbGVdPVwidHJ1ZVwiIFthbGxvd0NsZWFyXT1cInRydWVcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAjc2FmaWVsZD1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvcHRpb25UZW1wbGF0ZSBsZXQtb3B0aW9uPVwib3B0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmFtZmFtZmFtLWZsYWdzIHt7b3B0aW9uPy52YWx1ZX19XCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbj8ubGFiZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctc2VsZWN0PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNhZmllbGQuaW52YWxpZCAmJiAoc2FmaWVsZC5kaXJ0eSB8fCBzYWZpZWxkLnRvdWNoZWQpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNhZmllbGQuZXJyb3JzLnJlcXVpcmVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3tmbC5mb3JtX2ZpZWxkX3RpdGxlfX0gaXMgcmVxdWlyZWQuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICd0YScgJiYgZmw/LmlzX2hpZGRlbiA9PSAwICYmIGZsPy5kdGFfdHlwID09J2MnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBjbGFzcz1cImZvcm0tY29udHJvbFwiIHJvd3M9XCIzXCIgbmFtZT1cInt7Zmw/LmZvcm1fZmllbGR9fVwiIFt2YWx1ZV09XCJmbD8uZGVmYXVsdF92YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgI3RleHRBcmVhPVwibmdNb2RlbFwiIChibHVyKT1cImNoa0Z1bihmbCxmbC5kZWZhdWx0X3ZhbHVlKTtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsndW5pcUVyck1zZyc6IGZsPy5mb3JtX2ZpZWxkID09IG9uRXJyfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cImZsPy5pc19jb21wdWxzb3J5ID09ICcxJ1wiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0QXJlYS5pbnZhbGlkICYmICh0ZXh0QXJlYS5kaXJ0eSB8fCB0ZXh0QXJlYS50b3VjaGVkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQgYWxlcnQtZGFuZ2VyIGNhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJ0ZXh0QXJlYS5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ2hkJyB8fCBmbD8uZm9ybV9maWVsZF90eXAgPT0gJ2hjJyB8fCBmbD8uZm9ybV9maWVsZF90eXAgPT0gJ2RmJyB8fCBmbD8uZm9ybV9maWVsZF90eXAgPT0gJ2ZrJyB8fCBmbD8uZm9ybV9maWVsZF90eXAgPT0gJ2NrJyAmJiBmbD8uaXNfaGlkZGVuID09IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnbXQwJzogZmw/LmZvcm1fZmllbGRfdHlwID09ICdoZCd9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmbC5kZWZhdWx0X3ZhbHVlXCIgI2hkZj1cIm5nTW9kZWxcIiAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnc3EnICYmIGZsPy5pc19oaWRkZW4gPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj48L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwIHctMTAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiaGlkZGVuXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgW3ZhbHVlXT1cImZsPy5kZWZhdWx0X3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0lmPVwiZmw/LmZvcm1fZmllbGRfdHlwID09ICd0YicgJiYgZmw/LmlzX2hpZGRlbiA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTMgY29udHJvbC1sYWJlbFwiPnt7Zmw/LmZvcm1fZmllbGRfdGl0bGV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZmwuaXNfY29tcHVsc29yeSA9PSAxXCI+Kjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdFwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiICN0ZGY9XCJuZ01vZGVsXCIgW3JlcXVpcmVkXT1cImZsPy5pc19jb21wdWxzb3J5ID09ICcxJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGR5bmFtaWMgb2Ygc3FsQXJyYXlbZmwuZm9ybV9maWVsZF1cIiB2YWx1ZT1cInt7ZHluYW1pYy52YWx1ZX19XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e2R5bmFtaWMubGFiZWx9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRkZi5pbnZhbGlkICYmICh0ZGYuZGlydHkgfHwgdGRmLnRvdWNoZWQpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInRkZi5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ2wnICYmIGZsPy5pc19oaWRkZW4gPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdFwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiICNsSW5wdXQ9XCJuZ01vZGVsXCIgW3JlcXVpcmVkXT1cImZsPy5pc19jb21wdWxzb3J5ID09ICcxJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGxvdiBvZiBmbC5rdlwiIHZhbHVlPVwie3tsb3Yua319XCI+e3tsb3Yudn19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibElucHV0LmludmFsaWQgJiYgKGxJbnB1dC5kaXJ0eSB8fCBsSW5wdXQudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibElucHV0LmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX3R5cCA9PSAnbGQnICAmJiBmbD8uaXNfaGlkZGVuID09IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMyBjb250cm9sLWxhYmVsXCI+e3tmbD8uZm9ybV9maWVsZF90aXRsZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHQtZGFuZ2VyXCIgKm5nSWY9XCJmbC5pc19jb21wdWxzb3J5ID09IDFcIj4qPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC05XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXAgdy0xMDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBzZWxlY3RcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCIgW3ZhbHVlXT1cImZsPy5kZWZhdWx0X3ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiAjbGRJbnB1dD1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZHluYW1pYyBvZiBzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXVwiIHZhbHVlPVwie3tkeW5hbWljLnZhbHVlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZHluYW1pYy5sYWJlbH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibGRJbnB1dC5pbnZhbGlkICYmIChsZElucHV0LmRpcnR5IHx8IGxkSW5wdXQudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwibGRJbnB1dC5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ3MnICYmIGZsPy5pc19oaWRkZW4gPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIHNlbGVjdFwiIG5hbWU9XCJ7e2ZsPy5mb3JtX2ZpZWxkfX1cIiBbdmFsdWVdPVwiZmw/LmRlZmF1bHRfdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmwuZGVmYXVsdF92YWx1ZVwiIChjaGFuZ2UpPVwiY2hrRnVuKGZsLGZsLmRlZmF1bHRfdmFsdWUpXCIgaWQ9XCJ7e2ZsLmNvbHVtbl9rZXl9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgI3NmaT1cIm5nTW9kZWxcIiBbcmVxdWlyZWRdPVwiZmw/LmlzX2NvbXB1bHNvcnkgPT0gJzEnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgZHluYW1pYyBvZiBzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXVwiIHZhbHVlPVwie3tkeW5hbWljLnZhbHVlfX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZHluYW1pYy5sYWJlbH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2ZpLmludmFsaWQgJiYgKHNmaS5kaXJ0eSB8fCBzZmkudG91Y2hlZClcIiBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlciBjYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic2ZpLmVycm9ycy5yZXF1aXJlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZmwuZm9ybV9maWVsZF90aXRsZX19IGlzIHJlcXVpcmVkLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nSWY9XCJmbD8uZm9ybV9maWVsZF90eXAgPT0gJ3NiJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0zIGNvbnRyb2wtbGFiZWxcIj57e2ZsPy5mb3JtX2ZpZWxkX3RpdGxlfX1cclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kYW5nZXJcIiAqbmdJZj1cImZsLmlzX2NvbXB1bHNvcnkgPT0gMVwiPio8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLThcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctc2VsZWN0IHN0eWxlPVwiei1pbmRleDogNTtcIiBbb3B0aW9uc109XCJzcWxBcnJheVtmbC5mb3JtX2ZpZWxkXVwiICNzZmk9XCJuZ01vZGVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZsLmRlZmF1bHRfdmFsdWVcIiBuYW1lPVwie3tmbD8uZm9ybV9maWVsZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQpPVwiY2hrRnVuKGZsLGZsLmRlZmF1bHRfdmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsdGVySW5wdXRDaGFuZ2VkKT1cImxvYWRTdWdnZGF0YSgkZXZlbnQsZmwucGFnZV9pdGVtX2lkbixmbC5mb3JtX2ZpZWxkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNmaS5pbnZhbGlkICYmIChzZmkuZGlydHkgfHwgc2ZpLnRvdWNoZWQpXCIgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXIgY2FcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNmaS5lcnJvcnMucmVxdWlyZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7e2ZsLmZvcm1fZmllbGRfdGl0bGV9fSBpcyByZXF1aXJlZC5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTFcIiAqbmdJZj1cImZsPy5mb3JtX2ZpZWxkX2ljb24gPT0gJ2FkZCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzIGJ0bi1yb3VuZGVkXCI+PHNwYW4+PGlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZmEgZmEtcGx1c1wiPjwvaT48L3NwYW4+PC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cInN1Ym1pdEZvcm0oZixzdWJtaXRCdG4pXCIgYXBwQXBwTm9EYmxDbGlja1xyXG4gICAgICAgICAgICAgICAgI3N1Ym1pdEJ0bj57e2J0bk5hbWV9fTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInJlc2V0XCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIChjbGljayk9XCJyZXNldChmKVwiICpuZ0lmPVwiYnRuTmFtZSA9PSAnQWRkJ1wiPlJlc2V0PC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJkZWxldGVUZXJtc21vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJmYWxzZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXNtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cImNsb3NlTnVsbCgpO1wiICNkZWxldGVjbHNidG4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPldhcm5pbmc8L2g0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGUgdGVybT9cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIkRlbGV0ZVRlcm1zKCk7XCI+RGVsZXRlPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cImRlbGV0ZW1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJmYWxzZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXNtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cImNsb3NlTnVsbCgpO1wiICNkZWxldGVjbHNidG4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPldhcm5pbmc8L2g0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGU/XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZURhdGFMaXN0KCk7XCI+RGVsZXRlPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJtb2RhbF9zeXNcIiB0YWJpbmRleD1cIi0xXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cImRlZk1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJkZWZNb2RhbEhlYWRcIj5CYXNpYyBNb2RhbDwvaDQ+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgIFNvbWUgY29udGVudCBpbiBtb2RhbCBleGFtcGxlXHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbFwiIGlkPVwicm93R3JwbW9kYWxcIiB0YWJpbmRleD1cIi0yXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInJvd0dycG1vZGFsXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJmYWxzZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCIgI2ZyZz1cIm5nRm9ybVwiIG5hbWU9XCJhcHBGb3JtUm93R3JwXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImNsb3NlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiY2xvc2VOdWxsKCk7XCIgI2Nsb3NlYnRuPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxyXG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJyb3dHcnBIZWFkXCI+Um93IEdyb3VwPC9oND5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiIHN0eWxlPVwicGFkZGluZy1ib3R0b206IDEwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIGNvbnRyb2wtbGFiZWxcIj5BdHRyaWJ1dGVzPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTUgY29udHJvbC1sYWJlbFwiIHN0eWxlPVwicGFkZGluZy1yaWdodDogOTBweDtcIj5Sb3cgRGlzcGxheTwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC01IGNvbnRyb2wtbGFiZWxcIiBzdHlsZT1cInBhZGRpbmctcmlnaHQ6IDc2cHg7XCI+Um93IEdyb3VwIDwvbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIiAqbmdGb3I9XCJsZXQgYXR0IG9mIGRpc3BsYXlfYXR0cjtcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBjb250cm9sLWxhYmVsXCI+e3thdHQuYXR0cn19PC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cImRyX3t7YXR0LmF0dHJ9fVwiIFtkaXNhYmxlZF09XCJkaXNhYmxlc2VsY1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJyb3dfe3thdHQuYXR0cn19XCIgWyhuZ01vZGVsKV09XCJhdHQuZGlzcGxheV9yb3dcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlRGlzcFJvdygkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBbdmFsdWVdPVwiYXR0LmRpc3BsYXlfcm93XCIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkIGhpZGRlbj48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkciBvZiBkaXNwbGF5X3JvdztcIiB2YWx1ZT1cInt7ZHIuaWRufX1cIj57e2RyLnByaW50fX08L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cCB3LTEwMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cImdycF97e2F0dC5hdHRyfX1cIiBbZGlzYWJsZWRdPVwiZGlzYWJsZXNlbGNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZ3JwX3t7YXR0LmF0dHJ9fVwiIFsobmdNb2RlbCldPVwiYXR0LmRpc3BsYXlfZ3JvdXBcIiAoY2hhbmdlKT1cIm9uQ2hhbmdlRGlzcEdycCgkZXZlbnQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlwiIGRpc2FibGVkIGhpZGRlbj48L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBkZyBvZiBkaXNwbGF5X2dyb3VwO1wiIHZhbHVlPVwie3tkZy5pZG59fVwiPnt7ZGcucHJpbnR9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cInJlc2V0XCIgY2xhc3M9XCJidG4gYnRuLWRhbmdlclwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCI+Y2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuXHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJwcm9kdWN0RGV0YWlsTWFwTURcIiByb2xlPVwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5PVwic21hbGxNb2RhbEhlYWRcIiBhcmlhLWhpZGRlbj1cInRydWVcIlxyXG4gICAgICBkYXRhLWJhY2tkcm9wPVwic3RhdGljXCIgZGF0YS1rZXlib2FyZD1cImZhbHNlXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1kaWFsb2cgbW9kYWwtc20gbXdpZHRoXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cImNsb3NlTnVsbCgpO1wiICNwcm9kdWN0TWFwY2xzYnRuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCIgcHJvZHVjdERldGFpbE1hcGNsc2J0bj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPlByb2R1Y3QgTWFwcGluZyBvZiZuYnNwO3t7cHJvZHVjRGV0YWlsTW9kZWxUaXRsZX19PC9oND5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1ob3ZlciB0YWJsZS1ob3Zlci1jZWxsc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRoZWFkPlxyXG4gICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgTmFtZVxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoPlxyXG4gICAgICAgICAgICAgICAgICAgICAgVmFsdWVcclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgICAgIDx0Ym9keT5cclxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQga2V5IG9mIGF0dHJEdGw/LnBycExpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7a2V5LnByaW50fX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgWyhuZ01vZGVsKV09XCJhdHRyTWFwcGluZ0R0bFtrZXk/LnZhbF1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGVmYXVsdFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgI3Byb2R1Y3REZXRhaWxNYXBjbHNidG4+Q2xvc2U8L2J1dHRvbj5cclxuICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlUHJvZHVjdERldGFpbE1hcHBpbmcoKTtcIj5TYXZlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiBjbGFzcz1cIm1vZGFsXCIgaWQ9XCJkb2NkZWxldGVtb2RhbFwiIHJvbGU9XCJkaWFsb2dcIiBhcmlhLWxhYmVsbGVkYnk9XCJzbWFsbE1vZGFsSGVhZFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXHJcbiAgICAgIGRhdGEtYmFja2Ryb3A9XCJzdGF0aWNcIiBkYXRhLWtleWJvYXJkPVwiZmFsc2VcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWRpYWxvZyBtb2RhbC1zbVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1jb250ZW50XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2VcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJjbG9zZU51bGwoKTtcIiAjZGVsZXRlY2xzYnRuPlxyXG4gICAgICAgICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzci1vbmx5XCI+Q2xvc2U8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwic21hbGxNb2RhbEhlYWRcIj5XYXJuaW5nPC9oND5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cclxuICAgICAgICAgICAgQXJlIHlvdSBzdXJlIHdhbnQgdG8gZGVsZXRlP1xyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kZWZhdWx0XCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIj5DbG9zZTwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tZGFuZ2VyXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwiZGVsZXRlRG9jKCk7XCI+RGVsZXRlPC9idXR0b24+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwibW9kYWxcIiBpZD1cImJua2RlbGV0ZW1vZGFsXCIgcm9sZT1cImRpYWxvZ1wiIGFyaWEtbGFiZWxsZWRieT1cInNtYWxsTW9kYWxIZWFkXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCJcclxuICAgICAgZGF0YS1iYWNrZHJvcD1cInN0YXRpY1wiIGRhdGEta2V5Ym9hcmQ9XCJmYWxzZVwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtZGlhbG9nIG1vZGFsLXNtXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsLWNvbnRlbnRcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJjbG9zZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cImNsb3NlTnVsbCgpO1wiICNkZWxldGVjbHNidG4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNyLW9ubHlcIj5DbG9zZTwvc3Bhbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJzbWFsbE1vZGFsSGVhZFwiPldhcm5pbmc8L2g0PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxyXG4gICAgICAgICAgICBBcmUgeW91IHN1cmUgd2FudCB0byBkZWxldGU/XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJtb2RhbC1mb290ZXJcIj5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWRlZmF1bHRcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiPkNsb3NlPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1kYW5nZXJcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIkRlbGV0ZUxlZGdlckJhbmsoKVwiPkRlbGV0ZTwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8YnV0dG9uIGlkPVwiYm5rZGVsZXRlbW9kYWxidG5cIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjYm5rZGVsZXRlbW9kYWxcIj48L2J1dHRvbj5cclxuXHJcbiAgICA8YnV0dG9uIGlkPVwiZG9jZGVsZXRlYnRuXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2RvY2RlbGV0ZW1vZGFsXCI+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZGVsZXRlYnRuXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2RlbGV0ZW1vZGFsXCI+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiZGVsZXRlVGVybXNcIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZGVsZXRlVGVybXNtb2RhbFwiPjwvYnV0dG9uPlxyXG5cclxuICAgIDxidXR0b24gaWQ9XCJkYXRhbWRidG5cIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjZGF0YW1vZGFsXCI+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uIGlkPVwiY2xzTWRcIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI2RhdGFtb2RhbFwiPjwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBpZD1cInN5c21kXCIgW2hpZGRlbl09XCJ0cnVlXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBkYXRhLXRhcmdldD1cIiNtb2RhbF9zeXNcIj48L2J1dHRvbj5cclxuICAgIDxidXR0b24gaWQ9XCJidG5wcm9kdWN0RGV0YWlsTWFwTURcIiBbaGlkZGVuXT1cInRydWVcIiBkYXRhLXRvZ2dsZT1cIm1vZGFsXCIgZGF0YS10YXJnZXQ9XCIjcHJvZHVjdERldGFpbE1hcE1EXCI+PC9idXR0b24+XHJcblxyXG4gICAgPGJ1dHRvbiBpZD1cInJvd0dycGJ0blwiIFtoaWRkZW5dPVwidHJ1ZVwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgZGF0YS10b2dnbGU9XCJtb2RhbFwiIGRhdGEtdGFyZ2V0PVwiI3Jvd0dycG1vZGFsXCI+PC9idXR0b24+XHJcbiAgPC9kaXY+Il19
|