@eqproject/eqp-dynamic-module 2.10.85 → 2.10.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -0
- package/esm2020/lib/components/private/add-form-field/add-form-field.component.mjs +4 -2
- package/esm2020/lib/components/private/field-templates/image-field-template/image-field-template.component.mjs +3 -3
- package/esm2020/lib/components/private/field-templates/image-with-markers-field-template/image-with-markers-field-template.component.mjs +3 -3
- package/esm2020/lib/components/private/field-templates/list-value-field-template/list-value-field-template.component.mjs +32 -10
- package/esm2020/lib/components/private/form-records/add-form-record/add-form-record.component.mjs +23 -12
- package/fesm2015/eqproject-eqp-dynamic-module.mjs +63 -28
- package/fesm2015/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/fesm2020/eqproject-eqp-dynamic-module.mjs +59 -25
- package/fesm2020/eqproject-eqp-dynamic-module.mjs.map +1 -1
- package/lib/components/private/form-records/add-form-record/add-form-record.component.d.ts +3 -0
- package/package.json +1 -1
|
@@ -1924,7 +1924,9 @@ export class AddFormFieldComponent {
|
|
|
1924
1924
|
disableClose: true,
|
|
1925
1925
|
hasBackdrop: true,
|
|
1926
1926
|
panelClass: 'query-editor-modal',
|
|
1927
|
-
width: '90%'
|
|
1927
|
+
width: '90%',
|
|
1928
|
+
maxHeight: '90vh',
|
|
1929
|
+
position: { top: '20px' },
|
|
1928
1930
|
});
|
|
1929
1931
|
}
|
|
1930
1932
|
else {
|
|
@@ -2203,4 +2205,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
2203
2205
|
type: ViewChild,
|
|
2204
2206
|
args: ["dialogQE", { static: true }]
|
|
2205
2207
|
}] } });
|
|
2206
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2FkZC1mb3JtLWZpZWxkL2FkZC1mb3JtLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybS1maWVsZC9hZGQtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsa0JBQWtCLEVBSWxCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxjQUFjLEdBSWYsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsYUFBYSxFQUNkLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUdMLHVCQUF1QixFQUN2Qix3QkFBd0IsR0FDekIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBR0wsb0JBQW9CLEdBQ3JCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUdMLGdCQUFnQixHQUNqQixNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCxvQkFBb0IsR0FHckIsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRCxPQUFPLEVBQWdCLDRCQUE0QixFQUF3QixNQUFNLDJDQUEyQyxD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O3NCQUR6QixTQUFTO3VCQUFDLDRCQUE0QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHekQsdUJBQXVCO3NCQUR0QixTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFHdEQsa0JBQWtCO3NCQURqQixTQUFTO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFjSCxhQUFhO3NCQUExRCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBVTVDLCtCQUErQjtzQkFEOUIsU0FBUzt1QkFBQyxpQ0FBaUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBZ0NDLDhCQUE4QjtzQkFBNUYsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0EsNEJBQTRCO3NCQUF4RixTQUFTO3VCQUFDLDhCQUE4QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSSw4QkFBOEI7c0JBQTVGLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNILHdCQUF3QjtzQkFBakYsU0FBUzt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBQ1AsZUFBZTtzQkFBL0QsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBTU4sUUFBUTtzQkFBaEQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7XHJcbiAgQWJzdHJhY3RDb250cm9sLFxyXG4gIEZvcm1Db250cm9sLFxyXG4gIFVudHlwZWRGb3JtQnVpbGRlcixcclxuICBVbnR5cGVkRm9ybUNvbnRyb2wsXHJcbiAgVW50eXBlZEZvcm1Hcm91cCxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIFZhbGlkYXRvckZuLFxyXG4gIFZhbGlkYXRvcnMsXHJcbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcbmltcG9ydCB7IE1hdERpYWxvZywgTWF0RGlhbG9nUmVmIH0gZnJvbSBcIkBhbmd1bGFyL21hdGVyaWFsL2RpYWxvZ1wiO1xyXG5pbXBvcnQge1xyXG4gIEF0dGFjaG1lbnRUeXBlLFxyXG4gIEVxcEF0dGFjaG1lbnREaWFsb2dTZXJ2aWNlLFxyXG4gIEVxcEF0dGFjaG1lbnRzQ29tcG9uZW50LFxyXG4gIElBdHRhY2htZW50RFRPLFxyXG59IGZyb20gXCJAZXFwcm9qZWN0L2VxcC1hdHRhY2htZW50c1wiO1xyXG5pbXBvcnQgeyBFbnVtSGVscGVyIH0gZnJvbSBcIkBlcXByb2plY3QvZXFwLXNlbGVjdFwiO1xyXG5pbXBvcnQgeyBDb25maWdDb2x1bW4sIFR5cGVDb2x1bW4gfSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtdGFibGVcIjtcclxuaW1wb3J0IHtcclxuICBCYXNlRmllbGQsXHJcbiAgQ29sU3BhblNpemVzRW51bSxcclxuICBEYXRhR2V0dGVyQ2FyZGluYWxpdHlFbnVtLFxyXG4gIEZpZWxkSW52aXNpYmlsaXR5RW51bSxcclxuICBGaWVsZFR5cGVFbnVtXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9iYXNlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBBdHRhY2htZW50RmllbGQsXHJcbiAgQXR0YWNobWVudEZpZWxkU3R5bGVDU1MsXHJcbiAgQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMsXHJcbiAgQXZhaWxhYmxlSW1hZ2VFeHRlbnNpb25zLFxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2F0dGFjaG1lbnRGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIEJvb2xlYW5GaWVsZCxcclxuICBCb29sZWFuRmllbGRTdHlsZUNTUyxcclxuICBCb29sUHJlc2VudGFudGlvRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9ib29sZWFuRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBEYXRlRmllbGQsXHJcbiAgRGF0ZUZpZWxkU3R5bGVDU1MsXHJcbiAgRGF0ZVRpbWVUeXBlRW51bSxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9kYXRlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgSW1hZ2VGaWVsZCwgSW1hZ2VGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvaW1hZ2VGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIExpc3RQcmVzZW50YXRpb25FbnVtLFxyXG4gIExpc3RWYWx1ZUZpZWxkLFxyXG4gIExpc3RWYWx1ZUZpZWxkU3R5bGVDU1MsXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbGlzdFZhbHVlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgTG9va3VwRmllbGQgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9sb29rdXBGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBOdW1lcmljRmllbGQsIE51bWVyaWNGaWVsZEljb25Qb3NpdGlvbkVudW0sIE51bWVyaWNGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbnVtZXJpY0ZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IFRleHRhcmVhRmllbGQsIFRleHRhcmVhRmllbGRJY29uUG9zaXRpb25FbnVtLCBUZXh0YXJlYUZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy90ZXh0YXJlYUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgVGV4dEZpZWxkSWNvblBvc2l0aW9uRW51bSxcclxuICBUZXh0RmllbGRTdHlsZUNTUyxcclxuICBUZXh0TWFza0VudW0sXHJcbiAgVGV4dEZpZWxkLFxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL3RleHRGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cCwgRm9ybSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9mb3JtLm1vZGVsJztcclxuaW1wb3J0IHsgVXRpbGl0eUhlbHBlclNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvdXRpbGl0eUhlbHBlci5zZXJ2aWNlc1wiO1xyXG5pbXBvcnQgeyBHbG9iYWxTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2dsb2JhbC5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IEltYWdlU2VsZWN0b3JGaWVsZCwgSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZVNlbGVjdG9yRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UgfSBmcm9tIFwiLi4vLi4vLi4vc2VydmljZXMvZXFwLWR5bmFtaWMtbW9kdWxlLWRpYWxvZy5zZXJ2aWNlXCI7XHJcbmltcG9ydCB7IExhYmVsRmllbGQsIExhYmVsRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2xhYmVsRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkLCBJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlV2l0aE1hcmtlcnNGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBBdHRhY2htZW50RmllbGRUeXBlRW51bSwgRHluQXR0YWNobWVudCB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZHluQXR0YWNobWVudFwiO1xyXG5pbXBvcnQgeyBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YSwgZXZlbnRPdXQgfSBmcm9tIFwiLi4vLi4vLi4vZGlyZWN0aXZlcy9keW5hbWljLWxvYWRlci9keW5hbWljLWxvYWRlci5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBEYXRhR2V0dGVyVHlwZUVudW0sIERhdGFHZXR0ZXIgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsJztcclxuaW1wb3J0IHsgUXVlcnlFZGl0b3JNb2RlRW51bSB9IGZyb20gXCIuLi9kYmdldHRlci9kYmdldHRlci5jb21wb25lbnRcIjtcclxuaW1wb3J0IHsgTW9kZUVudW0sIFRpbWVUeXBlRW51bSB9IGZyb20gXCJ0bXctcGlja2VyXCI7XHJcbmltcG9ydCB7IEVuZFBvaW50Q29uZmlndXJhdGlvbiwgRW5kUG9pbnREYXRhUGFyYW1zLCBQYXJhbVR5cGVFbnVtIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9lbmRQb2ludENvbmZpZ3VyYXRpb24ubW9kZWxcIjtcclxuaW1wb3J0IHsgQ29udGVzdHVhbGl6YXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2dldHRlci5tb2RlbFwiO1xyXG5pbXBvcnQgeyBDYXBhY2l0b3IgfSBmcm9tICdAY2FwYWNpdG9yL2NvcmUnO1xyXG5pbXBvcnQgeyBBY3Rpb25CdXR0b25GaWVsZCwgQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUywgS2V5VHlwZVZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvYWN0aW9uQnV0dG9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IEZpZWxkRXh0cmFDb25maWcsIEZpZWxkRXh0cmFWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZmllbGRFeHRyYUNvbmZpZy5tb2RlbCc7XHJcbmltcG9ydCB7IE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCBOdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9zdGF0aXN0aWMubW9kZWwnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiZXFwLWR5bmFtaWMtbW9kdWxlLWFkZC1mb3JtLWZpZWxkXCIsXHJcbiAgdGVtcGxhdGVVcmw6IFwiLi9hZGQtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbFwiLFxyXG4gIHN0eWxlVXJsczogW1wiLi9hZGQtZm9ybS1maWVsZC5jb21wb25lbnQuc2Nzc1wiXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFkZEZvcm1GaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gIEBJbnB1dCgpIGZpZWxkc0V4dHJhQ29uZmlnOiBBcnJheTxGaWVsZEV4dHJhQ29uZmlnPjtcclxuICBASW5wdXQoKSBmb3JtOiBGb3JtO1xyXG4gIEBJbnB1dCgpIGVuZFBvaW50Q29uZmlndXJhdGlvbjogRW5kUG9pbnRDb25maWd1cmF0aW9uO1xyXG4gIEBJbnB1dCgpIGZpZWxkOiBCYXNlRmllbGQgfCBhbnk7XHJcbiAgQElucHV0KCkgaW5kZXhGaWVsZDogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGZvcm1GaWVsZHNHcm91cHM6IEFycmF5PEZvcm1GaWVsZEdyb3VwPjtcclxuICAvKiogRWxlbmNvIGRlaSBGaWVsZCBjcmVhdGkgbmVsbGEgZm9ybSwgdXNhdGkgcGVyIHBvcG9sYXJlIGwnYXV0b2NvbXBsZXRlIGRlbGxhIHByb3ByaWV0w6AgRm9ybXVsYS4gKi9cclxuICBASW5wdXQoKSBhdmFpbGFibGVGaWVsZHM6IEFycmF5PEJhc2VGaWVsZD47XHJcbiAgQElucHV0KCkgZmllbGRUeXBlc1RvRXhjbHVkZTogQXJyYXk8RmllbGRUeXBlRW51bT4gPSBbRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdLCBGaWVsZFR5cGVFbnVtLkxvb2t1cF07XHJcbiAgQElucHV0KCkgUXVlcnlFZGl0b3JDb21wb25lbnQ6IER5bmFtaWNMb2FkZXJEaXJlY3RpdmVEYXRhOyAvLyBMJ2ludGVybyBjb21wb25lbnRlIHF1ZXJ5IEVkaXRvclxyXG4gIEBJbnB1dCgpIGNvbnRlc3R1YWxpemF0aW9uOiBBcnJheTxDb250ZXN0dWFsaXphdGlvbj4gPSBudWxsO1xyXG4gIEBJbnB1dCgpIGFjdGlvbkJ1dHRvbnM6IGFueTtcclxuICBASW5wdXQoKSBmb3JtdWxhT2JqZWN0OiBhbnk7XHJcblxyXG4gIEBPdXRwdXQoKSBvdXQ6IEV2ZW50RW1pdHRlcjxldmVudE91dD4gPSBuZXcgRXZlbnRFbWl0dGVyPGV2ZW50T3V0PigpO1xyXG4gIEBPdXRwdXQoKSBzYXZlRmllbGRFdmVudDogRXZlbnRFbWl0dGVyPHsgZmllbGQ6IEJhc2VGaWVsZCwgcmVvcGVuOiBudW1iZXIgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZmllbGQ6IEJhc2VGaWVsZCwgcmVvcGVuOiBudW1iZXIgfT4oKTtcclxuICBAT3V0cHV0KCkgb3BlbkFpRWRpdEZvckZpZWxkRXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5BaUdyYXBoaWNTdWdnZXN0RXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGNvZGU6IHN0cmluZzsgaGludDogc3RyaW5nIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGNvZGU6IHN0cmluZzsgaGludDogc3RyaW5nIH0+KCk7XHJcblxyXG4gIEBJbnB1dCgpIGFpRmllbGRTdWdnZXN0TG9hZGluZzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGdyYXBoaWNTdWdnZXN0SGludDogc3RyaW5nID0gJyc7XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEhJTlRfUEFMRVRURVMgPSBbXHJcbiAgICAnbW9ub2Nyb21hdGljbyB2aWJyYW50ZScsICdjb21wbGVtZW50YXJlJywgJ3RyaWFkaWNvJywgJ2FuYWxvZ28gY2FsZG8nLCAnYW5hbG9nbyBmcmVkZG8nLFxyXG4gICAgJ3Bhc3RlbGxvIGRlbGljYXRvJywgJ25lb24gc3Ugc2N1cm8nLCAnZWFydGggdG9uZXMnLCAnb2NlYW5vIHByb2ZvbmRvJywgJ3RyYW1vbnRvIGNvbG9yYXRvJyxcclxuICAgICdmb3Jlc3RhIGF1dHVubmFsZScsICdsYXZhbmRhIGUgb3JvJywgJ2NvcmFsbG8gZSB0dXJjaGVzZScsICdyb3NzbyBlIGFudHJhY2l0ZScsICd2ZXJkZSBhY3F1YSBlIHNhYmJpYScsXHJcbiAgICAndmlvbGEgZWxldHRyaWNvIGUgZ2lhbGxvIGxpbW9uZScsICdyb3NhIGNpcHJpYSBlIGdyaWdpbyBwZXJsYScsICdibHUgY29iYWx0byBlIGFyYW5jaW8gYnJ1Y2lhdG8nLFxyXG4gICAgJ29ybyBhbnRpY28gZSBib3JkZWF1eCcsICdtZW50YSBmcmVzY2EgZSBjaW9jY29sYXRvJywgJ2FyZ2VudG8gZSBibHUgYWNjaWFpbycsICdwZXNjYSBlIGluZGFjbycsXHJcbiAgICAncm9zc28gY2lsaWVnaWEgZSBhdm9yaW8nLCAndGVhbCBzY3VybyBlIHJhbWUnLCAnbGltZSBlIGJsdSBuYXZ5JywgJ2xpbGxhIGUgdmVyZGUgc2FsdmlhJyxcclxuICAgICdhenp1cnJvIGdoaWFjY2lvIGUgZ3JpZ2lvIGFyZGVzaWEnLCAnYW1icmEgZSBwZXRyb2xpbycsICdzbWVyYWxkbyBlIHJvc2EgYW50aWNvJywgJ2JpYW5jbyBlIG5lcm8gY29uIGFjY2VudG8gcm9zc28gZnVvY28nLFxyXG4gIF07XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9TVFlMRVMgPSBbXHJcbiAgICAnbWluaW1hbGlzdGEnLCAnYm9sZCBlIHZpdmFjZScsICdlbGVnYW50ZSBlIHNvYnJpbycsICdnaW9jb3NvIGUgZGluYW1pY28nLCAnaW5kdXN0cmlhbGUnLFxyXG4gICAgJ3JldHJvZnV0dXJpc3RhJywgJ29yZ2FuaWNvIGUgbmF0dXJhbGUnLCAndGVjaC9kaWdpdGFsZScsICdsdXh1cnkgcHJlbWl1bScsICd2aW50YWdlIG1vcmJpZG8nLFxyXG4gICAgJ2ZsYXQgZGVzaWduIHB1bGl0bycsICdnbGFzc21vcnBoaXNtJywgJ25ldW1vcmZpc21vJywgJ2RhcmsgbW9kZSByYWZmaW5hdG8nLFxyXG4gICAgJ2JydXRhbGlzdCBjb24gYm9yZGkgc3Blc3NpJywgJ3NjYW5kaW5hdm8gcHVsaXRvJywgJ2FydCBkw6ljbyBnZW9tZXRyaWNvJywgJ2N5YmVycHVuayBkaXN0b3BpY28nLFxyXG4gICAgJ3BvcCBhcnQgYSB0aW50ZSBwaWF0dGUnLCAnd2F0ZXJjb2xvciBwYXN0ZWxsbyBzZnVtYXRvJywgJ25lb24gYW5uaSBvdHRhbnRhJywgJ21hdGVyaWFsIGRlc2lnbiBjb24gb21icmUnLFxyXG4gICAgJ2F1cm9yYSBib3JlYWxlJywgJ3N3aXNzIHN0eWxlIHRpcG9ncmFmaWNvJywgJ3Ryb3BpY2FsZSB2aXZhY2UnLCAnbW9ub2Nyb21vIGNvbiBhY2NlbnRvIHNpbmdvbG8nLFxyXG4gICAgJ2F1cm9yYSBub3R0dXJuYSBzY3VyYScsICdjb3R0YWdlY29yZSBjYWxkbycsXHJcbiAgXTtcclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBISU5UX0FESkVDVElWRVMgPSBbXHJcbiAgICAnb3JpZ2luYWxlJywgJ2ltcHJldmVkaWJpbGUnLCAnYWNjYXR0aXZhbnRlJywgJ3NwZXR0YWNvbGFyZScsICdkZWxpY2F0bycsXHJcbiAgICAnYXVkYWNlJywgJ3JhZmZpbmF0bycsICdnaW9jb3NvJywgJ3ZpdmFjZScsICdtaXN0ZXJpb3NvJyxcclxuICAgICdjYWxkbycsICdmcmVzY28nLCAncm9tYW50aWNvJywgJ2Z1dHVyaXN0aWNvJywgJ2VsZWdhbnRlJyxcclxuICAgICdydXN0aWNvJywgJ21vZGVybm8nLCAndmludGFnZScsICdhcm1vbmlvc28nLCAnc29ycHJlbmRlbnRlJyxcclxuICBdO1xyXG5cclxuICByYW5kb21pemVHcmFwaGljSGludCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IHBpY2sgPSA8VD4oYXJyOiBUW10pOiBUID0+IGFycltNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBhcnIubGVuZ3RoKV07XHJcbiAgICBjb25zdCBDID0gQWRkRm9ybUZpZWxkQ29tcG9uZW50O1xyXG4gICAgY29uc3QgcGFsZXR0ZSA9IHBpY2soQy5ISU5UX1BBTEVUVEVTKTtcclxuICAgIGNvbnN0IHN0eWxlICAgPSBwaWNrKEMuSElOVF9TVFlMRVMpO1xyXG4gICAgY29uc3QgYWRqMSAgICA9IHBpY2soQy5ISU5UX0FESkVDVElWRVMpO1xyXG4gICAgY29uc3QgdXNlVHdvICA9IE1hdGgucmFuZG9tKCkgPCAwLjU7XHJcbiAgICBjb25zdCBhZGoyICAgID0gdXNlVHdvID8gcGljayhDLkhJTlRfQURKRUNUSVZFUy5maWx0ZXIoYSA9PiBhICE9PSBhZGoxKSkgOiBudWxsO1xyXG4gICAgY29uc3QgYWRqVGV4dCA9IGFkajIgPyBgJHthZGoxfSBlICR7YWRqMn1gIDogYWRqMTtcclxuICAgIHRoaXMuZ3JhcGhpY1N1Z2dlc3RIaW50ID0gYFBhbGV0dGUgJHtwYWxldHRlfSwgc3RpbGUgJHtzdHlsZX0sICR7YWRqVGV4dH1gO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBlbnN1cmVGaWVsZENvZGUoKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5maWVsZD8uTGFiZWw/LnRyaW0oKSkge1xyXG4gICAgICB0aGlzLmZpZWxkLkRlc2NyaXB0aW9uID0gdGhpcy5maWVsZC5EZXNjcmlwdGlvbj8udHJpbSgpIHx8ICdDYW1wbyBzZW56YSBOb21lJztcclxuICAgICAgdGhpcy5maWVsZC5MYWJlbCA9ICdfY2FtcG9zZW56YW5vbWVfJztcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLmZpZWxkLkxhYmVsO1xyXG4gIH1cclxuXHJcbiAgb25PcGVuQWlFZGl0Rm9yRmllbGQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm9wZW5BaUVkaXRGb3JGaWVsZEV2ZW50LmVtaXQodGhpcy5maWVsZD8uTGFiZWwgPz8gJycpO1xyXG4gIH1cclxuXHJcbiAgb25HcmFwaGljU3VnZ2VzdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNvZGUgPSB0aGlzLmVuc3VyZUZpZWxkQ29kZSgpO1xyXG4gICAgdGhpcy5vcGVuQWlHcmFwaGljU3VnZ2VzdEV2ZW50LmVtaXQoeyBjb2RlLCBoaW50OiB0aGlzLmdyYXBoaWNTdWdnZXN0SGludCB9KTtcclxuICAgIHRoaXMuc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSBmYWxzZTtcclxuICAgIHRoaXMuZ3JhcGhpY1N1Z2dlc3RIaW50ID0gJyc7XHJcbiAgfVxyXG5cclxuICByZXNpemVkSW1hZ2VzSGVpZ2h0UHg6IG51bWJlcjtcclxuICBmaWVsZEZvcm1Hcm91cDogVW50eXBlZEZvcm1Hcm91cDtcclxuICBrZXlWYWx1ZU9iamVjdDogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9ID0geyBrZXk6IFwiXCIsIHZhbHVlOiBcIlwiIH07XHJcbiAgYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lOiBBcnJheTxDb2xTcGFuU2l6ZXNFbnVtPiA9IFtdO1xyXG4gIGF2YWlsYWJsZUNvbFNwYW5TaXplc1Jpc3Bvc3RhOiBBcnJheTxDb2xTcGFuU2l6ZXNFbnVtPiA9IFtdO1xyXG4gIGZvcm11bGFBdXRvY29tcGxldGVPcHRpb25zOiBBcnJheTx7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT47XHJcbiAgVmlzaWJsZUlmQXV0b2NvbXBsZXRlT3B0aW9uczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xyXG4gIEF2YWlsYWJsZUZpbGVFeHRlbnNpb25zID0gQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnM7XHJcbiAgQXZhaWxhYmxlSW1hZ2VFeHRlbnNpb25zID0gQXZhaWxhYmxlSW1hZ2VFeHRlbnNpb25zO1xyXG4gIGZpZWxkSW52aXNpYmlsaXR5RW51bSA9IEZpZWxkSW52aXNpYmlsaXR5RW51bTtcclxuICBjb2x1bW5LZXlzOiBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+ID0gbmV3IEFycmF5PHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfT4oKTtcclxuICBhZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bTogYW55O1xyXG5cclxuICAvLyNyZWdpb24gVGVtcGxhdGUgZGVpIHZhcmkgcGV6emkgZGkgZm9ybSBwZXIgbGEgY3JlYXppb25lIGRpIHVuIGNhbXBvKGluIGJhc2UgYWwgdGlwbyBzY2VsdG8pLlxyXG4gIGZpZWxkVHlwZUZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwidGV4dEZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgdGV4dEZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJsYWJlbEZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgbGFiZWxGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiYnV0dG9uRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBidXR0b25GaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwidGV4dGFyZWFGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHRleHRhcmVhRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImJvb2xlYWRGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGJvb2xlYWRGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZGF0ZUZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGF0ZUZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJudW1lcmljRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBudW1lcmljRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImF0dGFjaG1lbnRGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGF0dGFjaG1lbnRGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiaW1hZ2VGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGltYWdlRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImltYWdlV2l0aE1hcmtlcnNGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGltYWdlV2l0aE1hcmtlcnNGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiaW1hZ2VGaWVsZFNlbGVjdG9yRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgaW1hZ2VGaWVsZFNlbGVjdG9yRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJsaXN0VmFsdWVGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGxpc3RWYWx1ZUZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJsb29rdXBGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGxvb2t1cEZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkYXRhR2V0dGVyVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBkYXRhR2V0dGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgZ2VzdGlyZSBpIG1ldGFkYXRhIG5laSBjYW1waSB0aSBkaXBvIEFsbGVnYXRvIG8gSW1tYWdpbmVcclxuICBtZXRhZGF0YUNvbHVtbnM6IEFycmF5PENvbmZpZ0NvbHVtbj47XHJcbiAgLy9AVmlld0NoaWxkKCdtZXRhZGF0YUZpZWxkc1RhYmxlJywgeyBzdGF0aWM6IGZhbHNlIH0pIG1ldGFkYXRhRmllbGRzVGFibGU6IEVxcFRhYmxlQ29tcG9uZW50O1xyXG4gIHNlbGVjdGVkTWV0YWRhdGE6IEJhc2VGaWVsZDtcclxuICAvL2luZGV4U2VsZWN0ZWRNZXRhZGF0YTogbnVtYmVyO1xyXG4gIC8vZGlhbG9nTWV0YWRhdGFSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBkaWFsb2dWaXNpYmxlSWZSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICBkaWFsb2dSZWFkT25seUlmUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgLy9AVmlld0NoaWxkKCdkaWFsb2dNZXRhZGF0YScsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ01ldGFkYXRhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dGb3JtdWxhXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0Zvcm11bGE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgZGlhbG9nRm9ybXVsYVJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuXHJcbiAgLy8gQFZpZXdDaGlsZChcImRpYWxvZ0F2YW50aUluZGlldHJvXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ0F2YW50aUluZGlldHJvOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8vIGRpYWxvZ0F2YW50aUluZGlldHJvUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcblxyXG4gIC8vI3JlZ2lvbiBQcm9wcmlldMOgIHBlciBnZXN0aXJlIGxlIGltbWFnaW5pIG5laSBjYXBpIGRpIHRpcG8gZWxlbmNvIGdlbmVyaWNvXHJcbiAgQFZpZXdDaGlsZChcImJ1dHRvbkltYWdlc0tleVZhbHVlSW5wdXRDb2x1bW5cIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBidXR0b25JbWFnZXNLZXlWYWx1ZUlucHV0Q29sdW1uOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gRW51bWVyYXRvcmkgdXNhdGkgbmVsbCdodG1sXHJcbiAgRmllbGRUeXBlRW51bSA9IEZpZWxkVHlwZUVudW07XHJcbiAgQm9vbFByZXNlbnRhbnRpb0VudW0gPSBCb29sUHJlc2VudGFudGlvRW51bTtcclxuICBEYXRlVGltZVR5cGVFbnVtID0gRGF0ZVRpbWVUeXBlRW51bTtcclxuICBMaXN0UHJlc2VudGF0aW9uRW51bSA9IExpc3RQcmVzZW50YXRpb25FbnVtO1xyXG4gIFRleHRNYXNrRW51bSA9IFRleHRNYXNrRW51bTtcclxuICBUZXh0RmllbGRJY29uUG9zaXRpb25FbnVtID0gVGV4dEZpZWxkSWNvblBvc2l0aW9uRW51bTtcclxuICBOdW1lcmljRmllbGRJY29uUG9zaXRpb25FbnVtID0gTnVtZXJpY0ZpZWxkSWNvblBvc2l0aW9uRW51bTtcclxuICBUZXh0YXJlYUZpZWxkSWNvblBvc2l0aW9uRW51bSA9IFRleHRhcmVhRmllbGRJY29uUG9zaXRpb25FbnVtO1xyXG5cclxuICByZWFkb25seSBkYXRlVGltZUljb25Qb3NpdGlvbk9wdGlvbnMgPSBbXHJcbiAgICB7IHZhbHVlOiAnbGVmdCcsICBsYWJlbDogJ1NpbmlzdHJhJyB9LFxyXG4gICAgeyB2YWx1ZTogJ3JpZ2h0JywgbGFiZWw6ICdEZXN0cmEnIH0sXHJcbiAgXTtcclxuICBBdHRhY2htZW50VHlwZSA9IEF0dGFjaG1lbnRUeXBlO1xyXG4gIGF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtID0gQXR0YWNobWVudEZpZWxkVHlwZUVudW07XHJcbiAgZGF0YUdldHRlclR5cGVFbnVtID0gRGF0YUdldHRlclR5cGVFbnVtO1xyXG4gIHN1YnNjcmlwdGlvbjogYW55O1xyXG5cclxuICBzaG93VGV4dEZpZWxkSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dOdW1lcmljRmllbGRJY29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd1RleHRhcmVhRmllbGRJY29uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICAvLyNyZWdpb24gR2VzdGlvbmUgZGVsbGUgbGlzdGUgZGkgaW1tYWdpbmlcclxuICBjb25maWdDb2x1bW5MaXN0SW1hZ2VzOiBBcnJheTxDb25maWdDb2x1bW4+ID0gbmV3IEFycmF5PENvbmZpZ0NvbHVtbj4oKTtcclxuICBjb25maWdDb2x1bW5JbWFnZTogQXJyYXk8Q29uZmlnQ29sdW1uPiA9IG5ldyBBcnJheTxDb25maWdDb2x1bW4+KCk7XHJcbiAgQFZpZXdDaGlsZCgnR2VuZXJpY0xpc3RJbWFnZXNJbWFnZVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgR2VuZXJpY0xpc3RJbWFnZXNJbWFnZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ0dlbmVyaWNMaXN0SW1hZ2VzS2V5VGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBHZW5lcmljTGlzdEltYWdlc0tleVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoJ0dlbmVyaWNMaXN0SW1hZ2VzVmFsdWVUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIEdlbmVyaWNMaXN0SW1hZ2VzVmFsdWVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdpbWFnZVNlbGVjdG9yQXR0YWNobWVudHMnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzOiBFcXBBdHRhY2htZW50c0NvbXBvbmVudDtcclxuICBAVmlld0NoaWxkKCdpbWFnZUF0dGFjaG1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgaW1hZ2VBdHRhY2htZW50OiBFcXBBdHRhY2htZW50c0NvbXBvbmVudDtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8gREIgR2V0dGVyXHJcbiAgZGlhbG9nUUVSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAvL0BWaWV3Q2hpbGQoJ2RpYWxvZ01ldGFkYXRhJywgeyBzdGF0aWM6IHRydWUgfSkgZGlhbG9nTWV0YWRhdGE6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImRpYWxvZ1FFXCIsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ1FFOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyBUTVctUElDS0VSXHJcbiAgbW9kZSA9IE1vZGVFbnVtXHJcbiAgdGltZVR5cGUgPSBUaW1lVHlwZUVudW1cclxuXHJcbiAgLy8gRE0gR2V0dGVyXHJcbiAgZm9ybXM6IEFycmF5PEZvcm0+ID0gbmV3IEFycmF5PEZvcm0+KCk7XHJcbiAgRE1Nb2R1bGU6IGFueTtcclxuICBETUZpZWxkOiBhbnk7XHJcbiAgRE1GaWVsZHM6IEFycmF5PHsga2V5OiBzdHJpbmcgfT47XHJcbiAgRE1HZXR0ZXJDYXJkaW5hbGl0aWVzID0gRGF0YUdldHRlckNhcmRpbmFsaXR5RW51bTtcclxuXHJcbiAgcGxhdGZvcm06IHN0cmluZyA9IENhcGFjaXRvci5nZXRQbGF0Zm9ybSgpO1xyXG5cclxuICBsb2FkZWRGaWVsZEV4dHJhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgYWdncmVnYXRpb25GaWVsZExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyBQcmV2aWV3IGxpdmUgcGVyIFRleHRGaWVsZCAvIE51bWVyaWNGaWVsZFxyXG4gIHByZXZpZXdSZWNvcmQ6IGFueSA9IHt9O1xyXG4gIHN0eWxlVmVyc2lvbjogbnVtYmVyID0gMDtcclxuICBwcmV2aWV3Rm9yY2VTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIGdldCBpc1RleHRGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnQ2FtcG8gZGkgdGVzdG8nXTtcclxuICB9XHJcblxyXG4gIGdldCBpc051bWVyaWNGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnQ2FtcG8gbnVtZXJpY28nXTtcclxuICB9XHJcblxyXG4gIGdldCBpc1RleHRhcmVhRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0FyZWEgZGkgdGVzdG8nXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0Jvb2xlYW5GaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnQm9vbGVhbm8nXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0F0dGFjaG1lbnRGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnQWxsZWdhdG8nXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0xhYmVsRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0V0aWNoZXR0YSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzRGF0ZUZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydEYXRhIGUvbyBvcmEnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0FjdGlvbkJ1dHRvbkZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydCb3R0b25lJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNJbWFnZUZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydJbW1hZ2luZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydJbW1hZ2luZSBjb24gbWFya2VycyddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzTGlzdFZhbHVlRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0VsZW5jbyBnZW5lcmljbyddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW1hZ2VTZWxlY3RvckZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gaW1tYWdpbmknXTtcclxuICB9XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgVGV4dEZpZWxkIHBlciBsZSB0YWIgQ1NTICovXHJcbiAgcmVhZG9ubHkgdGV4dEZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdJbnB1dCcsICAgICAgIGxhYmVsOiAnQ2FzZWxsYSBkaSB0ZXN0bycgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0ljb25hJywgICAgICAgbGFiZWw6ICdJY29uYScgfSxcclxuICAgIHsga2V5OiAnTWljcm9mb25vJywgICBsYWJlbDogJ01pY3JvZm9ubycgfSxcclxuICAgIHsga2V5OiAnRXJyb3JlJywgICAgICBsYWJlbDogJ1Rlc3RvIGVycm9yZScgfSxcclxuICBdO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgc3RhdGkgcGVyIGxlIHRhYiBDU1MgKi9cclxuICByZWFkb25seSB0ZXh0RmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdGb2N1c2VkJywgICBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkVGV4dEZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgTnVtZXJpY0ZpZWxkIHBlciBsZSB0YWIgQ1NTIChzZW56YSBNaWNyb2Zvbm8pICovXHJcbiAgcmVhZG9ubHkgbnVtZXJpY0ZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdJbnB1dCcsICAgICAgIGxhYmVsOiAnQ2FzZWxsYSBudW1lcmljYScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0ljb25hJywgICAgICAgbGFiZWw6ICdJY29uYScgfSxcclxuICAgIHsga2V5OiAnRXJyb3JlJywgICAgICBsYWJlbDogJ1Rlc3RvIGVycm9yZScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBudW1lcmljRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdGb2N1c2VkJywgICBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkTnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgVGV4dGFyZWFGaWVsZCBwZXIgbGUgdGFiIENTUyAqL1xyXG4gIHJlYWRvbmx5IHRleHRhcmVhRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0lucHV0JywgICAgICAgbGFiZWw6ICdBcmVhIGRpIHRlc3RvJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnSWNvbmEnLCAgICAgICBsYWJlbDogJ0ljb25hJyB9LFxyXG4gICAgeyBrZXk6ICdNaWNyb2Zvbm8nLCAgIGxhYmVsOiAnTWljcm9mb25vJyB9LFxyXG4gICAgeyBrZXk6ICdFcnJvcmUnLCAgICAgIGxhYmVsOiAnVGVzdG8gZXJyb3JlJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IHRleHRhcmVhRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdGb2N1c2VkJywgICBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkVGV4dGFyZWFGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIEJvb2xlYW5GaWVsZCBwZXIgbGUgdGFiIENTUyAoMyBlbGVtZW50aSwgc2VuemEgTm90VmFsaWQpICovXHJcbiAgcmVhZG9ubHkgYm9vbGVhbkZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdTY2VsdGEnLCAgICAgIGxhYmVsOiAnQ29udHJvbGxvICh0b2dnbGUgLyBjaGVja2JveCAvIHJhZGlvKScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgYm9vbGVhbkZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRCb29sZWFuRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBBdHRhY2htZW50RmllbGQgcGVyIGxlIHRhYiBDU1MgKi9cclxuICByZWFkb25seSBhdHRhY2htZW50RmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgICAgICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnTGFiZWwnLCAgICAgICAgICAgIGxhYmVsOiAnTGFiZWwgLyBpbnRlc3RhemlvbmUnIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVBZ2dpdW5naScsICBsYWJlbDogJ0JvdHRvbmUgQWdnaXVuZ2knIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVEb3dubG9hZCcsICBsYWJlbDogJ0JvdHRvbmUgRG93bmxvYWQnIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVFbGltaW5hJywgICBsYWJlbDogJ0JvdHRvbmUgRWxpbWluYScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZUFudGVwcmltYScsIGxhYmVsOiAnQm90dG9uZSBBbnRlcHJpbWEnIH0sXHJcbiAgICB7IGtleTogJ0NhbXBvTm9tZUZpbGUnLCAgICBsYWJlbDogJ0NhbXBvIG5vbWUgZmlsZScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBhdHRhY2htZW50RmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkQXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgTGFiZWxGaWVsZCBwZXIgbGUgdGFiIENTUyAoMSBlbGVtZW50bywgMiBzdGF0aSkgKi9cclxuICByZWFkb25seSBsYWJlbEZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBsYWJlbEZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZExhYmVsRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBEYXRlRmllbGQgcGVyIGxlIHRhYiBDU1MgKDggZWxlbWVudGksIDUgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgZGF0ZUZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgICAgICAgbGFiZWw6ICdDb250ZW5pdG9yZSBlc3Rlcm5vJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsICAgICAgICBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0NvbnRlbml0b3JlSW50ZXJubycsIGxhYmVsOiAnQ29udGVuaXRvcmUgaW50ZXJubycgfSxcclxuICAgIHsga2V5OiAnQ2FtcG9EYXRhJywgICAgICAgICAgbGFiZWw6ICdDYXNlbGxhIGRpIHRlc3RvJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYUNhbGVuZGFyaW8nLCAgICBsYWJlbDogJ0JvdHRvbmUgY2FsZW5kYXJpbycgfSxcclxuICAgIHsga2V5OiAnSWNvbmFPcm9sb2dpbycsICAgICAgbGFiZWw6ICdCb3R0b25lIG9yb2xvZ2lvJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYUNhbmNlbGxhemlvbmUnLCBsYWJlbDogJ0JvdHRvbmUgY2FuY2VsbGF6aW9uZScgfSxcclxuICAgIHsga2V5OiAnVG9vbHRpcCcsICAgICAgICAgICAgbGFiZWw6ICdUb29sdGlwJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGRhdGVGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ0ZvY3VzZWQnLCAgIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ05vdFZhbGlkJywgIGxhYmVsOiAnTm9uIFZhbGlkbycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWREYXRlRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBBY3Rpb25CdXR0b25GaWVsZCBwZXIgbGUgdGFiIENTUyAoMyBlbGVtZW50aSwgMyBzdGF0aSkgKi9cclxuICByZWFkb25seSBhY3Rpb25CdXR0b25GaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdCb3R0b25lJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYScsICAgICAgIGxhYmVsOiAnSWNvbmEnIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdFdGljaGV0dGEgKGxhYmVsKScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBhY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgICBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdTZWxlemlvbmF0bycsIGxhYmVsOiAnU2VsZXppb25hdG8gKGNsaWNrKScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgSW1hZ2VGaWVsZCBwZXIgbGUgdGFiIENTUyAoMyBlbGVtZW50aSwgMiBzdGF0aSkgKi9cclxuICByZWFkb25seSBpbWFnZUZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsICAgIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZURpc2VnbmEnLCBsYWJlbDogJ0JvdHRvbmUgRGlzZWduYScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBpbWFnZUZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZEltYWdlRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBJbWFnZVdpdGhNYXJrZXJzRmllbGQgcGVyIGxlIHRhYiBDU1MgKDMgZWxlbWVudGksIDIgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCAgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lTWFyY2EnLCBsYWJlbDogJ0JvdHRvbmUgTWFyY2EnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyNyZWdpb24gTGlzdFZhbHVlRmllbGRTdHlsZUNTUyDigJQgbWV0YWRhdGkgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0VmFsdWVDb21ib0VsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgICAgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdMYWJlbCcsICAgICAgICAgICBsYWJlbDogJ0V0aWNoZXR0YScgfSxcclxuICAgIHsga2V5OiAnQ2FzZWxsYVRyaWdnZXInLCAgbGFiZWw6ICdDYXNlbGxhIFNlbGVjdCcgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZUNhbmNlbGxhJywgbGFiZWw6ICdCb3R0b25lIENhbmNlbGxhJyB9LFxyXG4gIF07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0VmFsdWVSYWRpb0VsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdMYWJlbCcsICAgICBsYWJlbDogJ0V0aWNoZXR0YScgfSxcclxuICAgIHsga2V5OiAnT3B6aW9uZScsICAgbGFiZWw6ICdPcHppb25lJyB9LFxyXG4gICAgeyBrZXk6ICdTZWxlemlvbmUnLCBsYWJlbDogJ1NlbGV6aW9uZSAocmFkaW8pJyB9LFxyXG4gIF07XHJcbiAgcHJpdmF0ZSByZWFkb25seSBsaXN0VmFsdWVCdXR0b25FbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnTGFiZWwnLCAgIGxhYmVsOiAnRXRpY2hldHRhJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lJywgbGFiZWw6ICdCb3R0b25lJyB9LFxyXG4gIF07XHJcblxyXG4gIGdldCBsaXN0VmFsdWVTdHlsZUVsZW1lbnRzKCkge1xyXG4gICAgY29uc3QgbHYgPSB0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkO1xyXG4gICAgY29uc3QgbW9kZSA9IE51bWJlcihsdj8uUHJlc2VudGF0aW9uTW9kZSk7XHJcbiAgICBpZiAobW9kZSA9PT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ0NvbWJvIGJveCddKSByZXR1cm4gdGhpcy5saXN0VmFsdWVDb21ib0VsZW1lbnRzO1xyXG4gICAgaWYgKG1vZGUgPT09IExpc3RQcmVzZW50YXRpb25FbnVtWydQdWxzYW50ZSBjb24gdGVzdG8nXSkgcmV0dXJuIHRoaXMubGlzdFZhbHVlQnV0dG9uRWxlbWVudHM7XHJcbiAgICByZXR1cm4gdGhpcy5saXN0VmFsdWVSYWRpb0VsZW1lbnRzO1xyXG4gIH1cclxuXHJcbiAgcmVhZG9ubHkgbGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsICAgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25hdG8nLCBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICAgIGxhYmVsOiAnTm9uIFZhbGlkbycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZExpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyDigJQgbWV0YWRhdGkgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgcmVhZG9ubHkgaW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgICAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0Nhc2VsbGFTZWxlemlvbmUnLCBsYWJlbDogJ0Nhc2VsbGEgZGkgc2VsZXppb25lJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsICAgICAgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdTZWxlemlvbmknLCAgICAgICAgbGFiZWw6ICdTZWxlemlvbmkgKGNoZWNrYm94KScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBpbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsICAgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25hdG8nLCBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICAgIGxhYmVsOiAnTm9uIFZhbGlkbycgfSxcclxuICAgIHsga2V5OiAnUmVhZG9ubHknLCAgICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyNlbmRyZWdpb24gSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1NcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcml2YXRlIGZvcm1CdWlsZGVyOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgICBwcml2YXRlIGVudW1IZWxwZXI6IEVudW1IZWxwZXIsXHJcbiAgICBwcml2YXRlIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgcHJpdmF0ZSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgcHJpdmF0ZSBodHRwQ2xpZW50OiBIdHRwQ2xpZW50LFxyXG4gICAgcHJpdmF0ZSB1dGlsaXR5SGVscGVyU2VydmljZTogVXRpbGl0eUhlbHBlclNlcnZpY2VcclxuICApIHsgfVxyXG5cclxuICBhc3luYyBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ3VyZUNvbHVtbnMoKTtcclxuICAgIHRoaXMuY29uZmlndXJlRmllbGRzRXh0cmEoKTtcclxuXHJcbiAgICBpZiAodGhpcy5maWVsZC5EYXRhR2V0dGVyID09IG51bGwpIHsgdGhpcy5maWVsZC5EYXRhR2V0dGVyID0gbmV3IERhdGFHZXR0ZXIoKTsgfVxyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSAhPSBudWxsICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBEYXRhR2V0dGVyVHlwZUVudW1bXCJEYSBtb2R1bG8gZGluYW1pY29cIl0pIHtcclxuICAgICAgYXdhaXQgdGhpcy5nZXRBbGxNb2R1bGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b24gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBcInVuZGVmaW5lZFwiICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmNyZWF0ZUNvbHVtbktleXModGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZS5QYXJhbXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuZmllbGRUeXBlc1RvRXhjbHVkZS5pbmNsdWRlcyhGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0pXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5maWVsZFR5cGVzVG9FeGNsdWRlLnB1c2goRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLm9uRmllbGRUeXBlQ2hhbmdlKGZhbHNlKTtcclxuICAgIHRoaXMuYXZhaWxhYmxlRmllbGRzID0gdGhpcy5hdmFpbGFibGVGaWVsZHNcclxuICAgICAgPyB0aGlzLmF2YWlsYWJsZUZpZWxkcy5maWx0ZXIoKGYpID0+IGYgIT0gdGhpcy5maWVsZClcclxuICAgICAgOiBbXTtcclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGltcG9zdGFyZSBpIHZhbG9yaSBkYSBzdWdnZXJpcmUgbmVsbCdhdXRvY29tcGxldGUgZGVsIGNhbXBvIEZvcm11bGEuXHJcbiAgICogVmllbmUgc2NhdGVuYXRvIGFsIGZvY3VzIChpbiBxdWVzdG8gY2FzbyB2aWVuZSBwYXNzYXRvIGlsIHBhcmFtZXRybyBhIG51bGwgcGVyIGRpZmZlcmVuemlhcmxvXHJcbiAgICogZGFsbCdldmVudG8gZGkgY2xpY2sgc3VsbGEgdGFzdGllcmEpIGUgYWwga2V5dXAgc3VsbCdpbnB1dCAoaWwgcGFyYW1ldHJvIMOoIGRpdmVyc28gZGEgbnVsbCkuXHJcbiAgICogQHBhcmFtIGtleWJvYXJkRXZlbnQgRXZlbnRvIHNjYXRlbmF0byBhbCBrZXl1cCBzdWxsYSB0YXN0aWVyYS4gU2UgbnVsbCBhbGxvcmEgaWwgbWV0b2RvIMOoIHN0YXRvIGludm9jYXRvIGRhbCBmb2N1cyBzdWxsJ2lucHV0LlxyXG4gICAqIEBzdW1tYXJ5IEFnZ2lvcm5hIGwnZWxlbmNvIGRlaSBzdWdnZXJpbWVudGkgcGVyIGwnYXV0b2NvbXBsZXRlIHNlIGwndXRlbnRlIGVzZWd1ZSBpbCBmb2N1cyBzdWxsJ2lucHV0XHJcbiAgICogb3BwdXJlIGFsIGtleXVwIHN1bGxhIHRhc3RpZXJhIGRpIHVuIHRhc3RvIGRpdmVyc28gZGFsbGUgZnJlY2NlLlxyXG4gICAqL1xyXG4gIC8vIHNldEZvcm11bGFBdXRvY29tcGxldGVPcHRpb25zKGtleWJvYXJkRXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAvLyAgIC8vIENyZW8gbCdhcnJheSBwZXIgbCdhdXRvY29tcGxldGUgc29sbyBzZSBzdG8gZmFjZW5kbyBpbCBmb2N1cyBzdWxsJ2lucHV0IG8gc2Ugc3RvIHByZW1lbmRvIHVuIHRhc3RvXHJcbiAgLy8gICAvLyBzdWxsYSB0YXN0aWVyYSBkaXZlcnNvIGRhbGxlIGZyZWNjZSAoaW4gcXVlc3QndWx0aW1vIGNhc28sIHNlIG5vbiB2aWVuZSBlc2VndWl0byBpbCBmaWx0cm8gc3VsbCdldmVudG8sXHJcbiAgLy8gICAvLyBub24gc2kgcHXDsiBzZWxlemlvbmFyZSB1biBzdWdnZXJpbWVudG8gZGVsbCdhdXRvY29tcGxldGUgcGVyY2jDqCBhbCBjbGljayB2ZXJyZWJiZSByaWNhcmljYXRvIGwnYXJyYXkgZVxyXG4gIC8vICAgLy8gc2kgcHJlZGVyZWJiZSBsYSBzZWxlemlvbmUgYXBwZW5hIGZhdHRhKS5cclxuICAvLyAgIGlmICgha2V5Ym9hcmRFdmVudCB8fCAha2V5Ym9hcmRFdmVudC5jb2RlLmluY2x1ZGVzKFwiQXJyb3dcIikpIHtcclxuICAvLyAgICAgdGhpcy5mb3JtdWxhQXV0b2NvbXBsZXRlT3B0aW9ucyA9IFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkdldEF1dG9jb21wbGV0ZU9wdGlvbnModGhpcy5hdmFpbGFibGVGaWVsZHMsIHRoaXMuZmllbGQuRm9ybXVsYSk7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG4gIHNldFZpc2libGVJZkF1dG9jb21wbGV0ZU9wdGlvbnMoa2V5Ym9hcmRFdmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgLy8gQ3JlbyBsJ2FycmF5IHBlciBsJ2F1dG9jb21wbGV0ZSBzb2xvIHNlIHN0byBmYWNlbmRvIGlsIGZvY3VzIHN1bGwnaW5wdXQgbyBzZSBzdG8gcHJlbWVuZG8gdW4gdGFzdG9cclxuICAgIC8vIHN1bGxhIHRhc3RpZXJhIGRpdmVyc28gZGFsbGUgZnJlY2NlIChpbiBxdWVzdCd1bHRpbW8gY2Fzbywgc2Ugbm9uIHZpZW5lIGVzZWd1aXRvIGlsIGZpbHRybyBzdWxsJ2V2ZW50byxcclxuICAgIC8vIG5vbiBzaSBwdcOyIHNlbGV6aW9uYXJlIHVuIHN1Z2dlcmltZW50byBkZWxsJ2F1dG9jb21wbGV0ZSBwZXJjaMOoIGFsIGNsaWNrIHZlcnJlYmJlIHJpY2FyaWNhdG8gbCdhcnJheSBlXHJcbiAgICAvLyBzaSBwcmVkZXJlYmJlIGxhIHNlbGV6aW9uZSBhcHBlbmEgZmF0dGEpLlxyXG4gICAgaWYgKCFrZXlib2FyZEV2ZW50IHx8ICFrZXlib2FyZEV2ZW50LmNvZGUuaW5jbHVkZXMoXCJBcnJvd1wiKSkge1xyXG4gICAgICB0aGlzLlZpc2libGVJZkF1dG9jb21wbGV0ZU9wdGlvbnMgPVxyXG4gICAgICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLkdldEF1dG9jb21wbGV0ZU9wdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLmF2YWlsYWJsZUZpZWxkcyxcclxuICAgICAgICAgIHRoaXMuZmllbGQuVmlzaWJsZUlmXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgb21pdF9zcGVjaWFsX2NoYXIoZXZlbnQpIHtcclxuICAgIHZhciBrO1xyXG4gICAgayA9IGV2ZW50LmtleUNvZGU7IC8vICAgICAgICAgayA9IGV2ZW50LmtleUNvZGU7ICAoQm90aCBjYW4gYmUgdXNlZClcclxuICAgIGlmIChrID09IDM0KSB7XHJcbiAgICAgIGV2ZW50LmtleUNvZGUgPSAwO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDcmVhIGlsIEZvcm1Hcm91cCBwZXIgbCdhZ2dpdW50YSBkaSB1biBudW92byBjYW1wbyBhbGwnaW50ZXJubyBkZWxsYSBmb3JtLlxyXG4gICAqIE1ldG9kbyByaWNoaWFtYXRvIG9nbmkgdm9sdGEgY2hlIGNhbWJpYSBpbCB0aXBvIGRlbCBjYW1wbyBzY2VsdG8gbyB2aWVuZSBhZ2dpdW50by9tb2RpZmljYXRvIHVuIEZpZWxkXHJcbiAgICovXHJcbiAgY3JlYXRlRmllbGRGb3JtKCkge1xyXG4gICAgdGhpcy5maWVsZEZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBMYWJlbDogW1xyXG4gICAgICAgIHRoaXMuZmllbGQuTGFiZWwsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlthLXpBLVogXSokXCIpLFxyXG4gICAgICAgIF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIERlc2NyaXB0aW9uOiBbXHJcbiAgICAgICAgdGhpcy5maWVsZC5EZXNjcmlwdGlvbixcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBdLFxyXG4gICAgICBSZWFkb25seTogW3RoaXMuZmllbGQuUmVhZG9ubHldLFxyXG4gICAgICBSZWFkb25seUlmOiBbdGhpcy5maWVsZC5SZWFkb25seUlmXSxcclxuICAgICAgUmVxdWlyZWQ6IFt0aGlzLmZpZWxkLlJlcXVpcmVkXSxcclxuICAgICAgRmllbGRUeXBlOiBbXHJcbiAgICAgICAgdGhpcy5maWVsZC5GaWVsZFR5cGUsXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgXSxcclxuICAgICAgRE1Nb2R1bGU6IFtudWxsXSxcclxuICAgICAgRE1GaWVsZDogW251bGxdLFxyXG4gICAgICBEYXRhR2V0dGVyVHlwZTogW1xyXG4gICAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSxcclxuICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIENvbFNwYW5TaXplczogW3RoaXMuZmllbGQuQ29sU3BhblNpemVzXSxcclxuICAgICAgSW5MaXN0VmlldzogW3RoaXMuZmllbGQuSW5MaXN0Vmlld10sXHJcbiAgICAgIEludmlzaWJpbGl0eTogW3RoaXMuZmllbGQuSW52aXNpYmlsaXR5XSxcclxuICAgICAgVmlzaWJsZUlmOiBbdGhpcy5maWVsZC5WaXNpYmxlSWYsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgTWFpbnRhaW5fVmFsdWU6IFt0aGlzLmZpZWxkLk1haW50YWluX1ZhbHVlXSxcclxuICAgICAgVG9vbHRpcDogW3RoaXMuZmllbGQuVG9vbHRpcCwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBMYWJlbHN0eWxlQ1NTOiBbdGhpcy5maWVsZC5MYWJlbHN0eWxlQ1NTLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIEZpZWxkc3R5bGVDU1M6IFt0aGlzLmZpZWxkLkZpZWxkc3R5bGVDU1MsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgRm9ybXVsYTogW3RoaXMuZmllbGQuRm9ybXVsYSwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBEYXRhR2V0dGVyVmFsdWU6IFt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIERhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbjogW3RoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVySGFzUmVzZXRCdXR0b24sIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgRGF0YUdldHRlcklzTXVsdGlzZWxlY3Q6IFt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlcklzTXVsdGlzZWxlY3QsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuXHJcbiAgICAgIEFuc3dlclN0eWxlTGFiZWxzdHlsZUNTUzogW3RoaXMuZmllbGQuQW5zd2VyU3R5bGUuTGFiZWxzdHlsZUNTUywgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBBbnN3ZXJTdHlsZUZpZWxkc3R5bGVDU1M6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkZpZWxkc3R5bGVDU1MsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgQW5zd2VyU3R5bGVWaXNpYmxlSWY6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZiwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBBbnN3ZXJTdHlsZUNvbFNwYW5TaXplczogW3RoaXMuZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzXSxcclxuICAgICAgQW5zd2VyU3R5bGVJbkxpc3RWaWV3OiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3XSxcclxuICAgICAgQW5zd2VyU3R5bGVJbnZpc2liaWxpdHk6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkludmlzaWJpbGl0eV0sXHJcbiAgICB9KTtcclxuXHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiRk9STSBGSUVMRCBDUkVBVE9cIiwgdGhpcy5maWVsZC5EYXRhR2V0dGVyKTtcclxuXHJcbiAgICBpZiAodGhpcy5mb3JtRmllbGRzR3JvdXBzKSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkZpZWxkR3JvdXBcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKHRoaXMuZmllbGQuRmllbGRHcm91cCwgVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgcXVlc3Rpb25Qb2xsKGNvbnRyb2w6IEZvcm1Db250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIGMnw6ggdW4gRm9ybUNvbnRyb2wgY2hlIMOoIHZ1b3RvIGNoZSBkYSBwcm9ibGVtaSAocHJvYmFiaWxtZW50ZSB0eXBlIERhdGEsIGNhbXBvIEZvcm1hdG8pXHJcbiAgICBpZiAoY29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLnN0cmluZ0NoZWNrUGFyZW50ZXNpcyhcclxuICAgICAgICAgIGNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBjb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHsgXCJNaXNzaW5nIFBhcmVudGhlc2lzXCI6IHRydWUgfTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN0cmluZ1Nhbml0YWl6ZWRWYWxpZGF0b3IoY29udHJvbDogRm9ybUNvbnRyb2wpOiB7IFtzOiBzdHJpbmddOiBib29sZWFuIH0ge1xyXG4gICAgLy8gYyfDqCB1biBGb3JtQ29udHJvbCBjaGUgw6ggdnVvdG8gY2hlIGRhIHByb2JsZW1pIChwcm9iYWJpbG1lbnRlIHR5cGUgRGF0YSwgY2FtcG8gRm9ybWF0bylcclxuICAgIGlmIChjb250cm9sLnZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgVXRpbGl0eUhlbHBlclNlcnZpY2Uuc3RyaW5nQ2hlY2tQYXJlbnRlc2lzKFxyXG4gICAgICAgICAgY29udHJvbC52YWx1ZSxcclxuICAgICAgICAgIGNvbnRyb2wuaGFzVmFsaWRhdG9yKFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgICAgICAgKVxyXG4gICAgICApIHtcclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4geyBcIkxhIGZvcm11bGEgbm9uIMOoIHZhbGlkYVwiOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBnZXRBbGxGb3JtVmFsaWRhdGlvbkVycm9ycygpIHtcclxuICAvLyAgIE9iamVjdC5rZXlzKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHMpLmZvckVhY2goKGtleSkgPT4ge1xyXG4gIC8vICAgICBjb25zdCBjb250cm9sRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID1cclxuICAvLyAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldChrZXkpLmVycm9ycztcclxuICAvLyAgICAgaWYgKGNvbnRyb2xFcnJvcnMgIT0gbnVsbCkge1xyXG4gIC8vICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpLmZvckVhY2goKGtleUVycm9yKSA9PiB7XHJcbiAgLy8gICAgICAgICBjb25zb2xlLmxvZyhcclxuICAvLyAgICAgICAgICAgXCJLZXkgY29udHJvbDogXCIgKyBrZXkgKyBcIiwga2V5RXJyb3I6IFwiICsga2V5RXJyb3IgKyBcIiwgZXJyIHZhbHVlOiBcIixcclxuICAvLyAgICAgICAgICAgY29udHJvbEVycm9yc1trZXlFcnJvcl1cclxuICAvLyAgICAgICAgICk7XHJcbiAgLy8gICAgICAgfSk7XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoaWFtYXRvIGRhaSBtYXQtZXJyb3IgcGVyIHByZW5kZXJlIGdsaSBlcnJvcmkgZ2VuZXJhdGkgcmVsYXRpdmkgYWwgY2FtcG8uXHJcbiAgICogQHBhcmFtIGNvbnRyb2wgw6ggaWwgbm9tZSBkZWwgR3JvdXBDb250cm9sIGRpIGN1aSBsZWdnZXJlIHNlIGNpIHNvbm8gZXJyb3JpXHJcbiAgICovXHJcbiAgZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMoY29udHJvbDogc3RyaW5nKSB7XHJcbiAgICBpZiAoY29udHJvbCA9PSBcIkxhYmVsXCIpIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2dldEZvcm1WYWxpZGF0aW9uRXJyb3JzJywgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsXCJdKTtcclxuXHJcbiAgICBjb25zdCBjb250cm9sRXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzID1cclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tjb250cm9sXS5lcnJvcnM7XHJcbiAgICBsZXQgZXJyb3JzID0gW107XHJcbiAgICBsZXQgdmFsdWVzID0gW107XHJcbiAgICBpZiAoY29udHJvbEVycm9ycyAhPSBudWxsKSB7XHJcbiAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2xFcnJvcnMpLmZvckVhY2goKGtleUVycm9yKSA9PiB7XHJcbiAgICAgICAgZXJyb3JzLnB1c2goa2V5RXJyb3IpO1xyXG4gICAgICB9KTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnY29udHJvbDogJywgY29udHJvbCk7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2Vycm9yczogJywgZXJyb3JzKTtcclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygndmFsdWVzOiAnLCB2YWx1ZXMpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGVycm9ycy5qb2luKFwiLCBcIik7XHJcbiAgfVxyXG5cclxuICBzZXRBZ2dyZWdhdGlvbihlbnVtVHlwZTogYW55LCByZXNldDogYm9vbGVhbikge1xyXG4gICAgdGhpcy5hZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSA9IGVudW1UeXBlO1xyXG4gICAgaWYgKHJlc2V0KSB7IHRoaXMuZmllbGQuQWdncmVnYXRpb25zID0gW107IH1cclxuICAgIHNldFRpbWVvdXQoKCkgPT4geyB0aGlzLmFnZ3JlZ2F0aW9uRmllbGRMb2FkZWQgPSB0cnVlOyB9LCAxMDApO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIG9uRmllbGRUeXBlQ2hhbmdlXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoaWFtYXRvIHF1YW5kbyBjYW1iaWEgaWwgRmllbGRUeXBlIGRlbCBCYXNlRmllbGQgY2hlIHNpIHN0YSBhZ2dpdW5nZW5kby9tb2RpZmljYW5kby5cclxuICAgKiBSaWNyZWEgbCdvZ2dldHRvIGZpZWxkIHBvcG9sYW5kbyBzb2xvIGxlIHByb3ByaWV0w6AgZGVsIEJhc2VGaWVsZCBpbnNlcml0ZSBkYWxsJ3V0ZW50ZVxyXG4gICAqIChxdWVsbGUgY29tdW5pIGEgdHV0dGUgbGUgdGlwb2xvZ2llIGRpIGNhbXBvKSwgcmljcmVhIGxhIGZvcm0gZSwgaW4gYmFzZSBhbCBGaWVsZFR5cGUgc2NlbHRvLFxyXG4gICAqIGFnZ2l1bmdlIGFsbGEgZm9ybSBpIEZvcm1Db250cm9sIG5lY2Vzc2FyaSBlIHNlbGV6aW9uYSBpbCB0ZW1wbGF0ZSBjb3JyZXR0byBkYSB1c2FyZS5cclxuICAgKiBAcGFyYW0gcmVzdG9yZUZpZWxkIFNlIFRSVUUgcmlwcmlzdGluYSBpIHZhbG9yaSBiYXNlIChlcmVkaXRhdGkgZGFsIG1vZGVsbG8gQmFzZUZpZWxkKSBkZWwgY2FtcG8gYWdnaXVudG8vbW9kaWZpY2F0b1xyXG4gICAqL1xyXG4gIG9uRmllbGRUeXBlQ2hhbmdlKHJlc3RvcmVGaWVsZDogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgIHRoaXMuYWdncmVnYXRpb25GaWVsZExvYWRlZCA9IGZhbHNlO1xyXG5cclxuXHJcbiAgICBpZiAocmVzdG9yZUZpZWxkKSB7XHJcbiAgICAgIHRoaXMucmVzdG9yZUJhc2VGaWVsZFByb3BlcnRpZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmNyZWF0ZUZpZWxkRm9ybSgpO1xyXG4gICAgdGhpcy5vbkNvbFNwYW5TaXplU2VsZWN0KCk7XHJcbiAgICBpZiAoKHRoaXMuZmllbGQgYXMgQmFzZUZpZWxkKS5Jbkxpc3RWaWV3ID09IG51bGwpIHtcclxuICAgICAgdGhpcy5maWVsZC5Jbkxpc3RWaWV3ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmICgodGhpcy5maWVsZCBhcyBCYXNlRmllbGQpLkludmlzaWJpbGl0eSA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuSW52aXNpYmlsaXR5ID0gRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPO1xyXG4gICAgfVxyXG4gICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSBudWxsO1xyXG5cclxuICAgIHN3aXRjaCAodGhpcy5maWVsZC5GaWVsZFR5cGUpIHtcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBDQU1QTyBESSBURVNUT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJDYW1wbyBkaSB0ZXN0b1wiXTpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5UZXh0TWFzayAhPSBudWxsKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLlRleHRNYXNrID0gTnVtYmVyKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2spIGFzIFRleHRNYXNrRW51bTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLk1pY3JvcGhvbmUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5NaWNyb3Bob25lID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiVGV4dE1hc2tcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5UZXh0TWFzaylcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWF4TGVuZ2h0XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuTWF4TGVuZ2h0LCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1pbkxlbmdodFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLk1pbkxlbmdodCwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaWNyb3Bob25lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuTWljcm9waG9uZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvbk5hbWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5JY29uTmFtZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvblBvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuSWNvblBvc2l0aW9uKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zaG93VGV4dEZpZWxkSWNvbiA9ICEhKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuSWNvbk5hbWUpO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy50ZXh0RmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0VGV4dEZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQ0FNUE8gREkgVEVTVE9cclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBMQUJFTFxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bJ0V0aWNoZXR0YSddOlxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBMYWJlbEZpZWxkKS5FdGljaGV0dGEgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5FdGljaGV0dGEgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJFdGljaGV0dGFcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTGFiZWxGaWVsZCkuRXRpY2hldHRhKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmxhYmVsRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0TGFiZWxGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIExBQkVMXHJcblxyXG4gICAgICAvLyNyZWdpb24gQlVUVE9OXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVsnQm90dG9uZSddOlxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuQnV0dG9uQ29kZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkJ1dHRvbkNvZGUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJDb2RpY2VcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLkJ1dHRvbkNvZGUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5CdXR0b25Db2RlID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuQnV0dG9uQ29kZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25hXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5JY29uKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmJ1dHRvbkZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEFjdGlvbkJ1dHRvbkZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQlVUVE9OICAgICAgXHJcblxyXG4gICAgICAvLyNyZWdpb24gQVJFQSBESSBURVNUT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJBcmVhIGRpIHRlc3RvXCJdOlxyXG4gICAgICAgIHRoaXMuc2V0QWdncmVnYXRpb24oTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIHJlc3RvcmVGaWVsZCk7XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5NaWNyb3Bob25lID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuTWljcm9waG9uZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJSb3dzXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLlJvd3MsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1heExlbmdodFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5NYXhMZW5naHQsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1pbkxlbmdodFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5NaW5MZW5naHQsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1pY3JvcGhvbmVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWljcm9waG9uZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25OYW1lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25OYW1lKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uUG9zaXRpb25cIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuSWNvblBvc2l0aW9uKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1RleHRhcmVhRmllbGRJY29uID0gISEoKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuSWNvbk5hbWUpO1xyXG4gICAgICAgIHRoaXMuaW5pdFRleHRhcmVhRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLnRleHRhcmVhRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBBUkVBIERJIFRFU1RPXHJcblxyXG4gICAgICAvLyNyZWdpb24gQk9PTEVBTk9cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkJvb2xlYW5vOlxyXG4gICAgICAgIHRoaXMuc2V0QWdncmVnYXRpb24oTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIHJlc3RvcmVGaWVsZCk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSXNUcmlzdGF0ZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBCb29sZWFuRmllbGQpLklzVHJpc3RhdGUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJQcmVzZXRhdGlvblR5cGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEJvb2xlYW5GaWVsZCkuUHJlc2V0YXRpb25UeXBlLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuYm9vbGVhZEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEJvb2xlYW5GaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEJPT0xFQU5PXHJcblxyXG4gICAgICAvLyNyZWdpb24gREFUQSBFL0kgT1JBXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkRhdGEgZS9vIG9yYVwiXTpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5maWVsZC5Jc09ubHlEYXRlID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuSXNPbmx5RGF0ZSA9IERhdGVUaW1lVHlwZUVudW1bXCJTb2xvIGRhdGFcIl07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIklzT25seURhdGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5Jc09ubHlEYXRlLCBbXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1pbkRhdGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuTWluRGF0ZSxcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1heERhdGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuTWF4RGF0ZSxcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkRhdGVGb3JtYXRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5EYXRlRm9ybWF0KVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uc1Bvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuSWNvbnNQb3NpdGlvbilcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiQ2xvc2VJY29uUG9zaXRpb25cIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5DbG9zZUljb25Qb3NpdGlvbilcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiVXNlVG9vbHRpcFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLlVzZVRvb2x0aXAgPz8gZmFsc2UpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuZGF0ZUZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdERhdGVGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIERBVEEgRS9JIE9SQVxyXG5cclxuICAgICAgLy8jcmVnaW9uIENBTVBPIE5VTUVSSUNPXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkNhbXBvIG51bWVyaWNvXCJdOlxyXG4gICAgICAgIHRoaXMuc2V0QWdncmVnYXRpb24oTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIHJlc3RvcmVGaWVsZCk7XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLklzSW50ZWdlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLklzSW50ZWdlciA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIklzSW50ZWdlclwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLklzSW50ZWdlcilcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1pblZhbHVlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuTWluVmFsdWUsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl4tP1swLTldKygsWzAtOV0rfFxcLlswLTldKyk/JFwiKSwgLy8oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNYXhWYWx1ZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLk1heFZhbHVlLCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeLT9bMC05XSsoLFswLTldK3xcXC5bMC05XSspPyRcIiksIC8vKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRGVjaW1hbFNlcGFyYXRvclwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5EZWNpbWFsU2VwYXJhdG9yLFxyXG4gICAgICAgICAgICBbdGhpcy5xdWVzdGlvblBvbGwsIFZhbGlkYXRvcnMucGF0dGVybihcIl5bYS16QS1aIC0vJywuXy9cXFxcXjw+XStcIildXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJEZWNpbWFsUHJlY2lzaW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkRlY2ltYWxQcmVjaXNpb24sXHJcbiAgICAgICAgICAgIFt0aGlzLnF1ZXN0aW9uUG9sbCwgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlswLTldKyRcIildXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJUaG91c2FuZHNTZXBhcmF0b3JcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuVGhvdXNhbmRzU2VwYXJhdG9yLFxyXG4gICAgICAgICAgICBbdGhpcy5xdWVzdGlvblBvbGwsIFZhbGlkYXRvcnMucGF0dGVybihcIl5bYS16QS1aIC0vJywuXy9cXFxcXjw+XStcIildXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJDdXJyZW5jeVN5bWJvbFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5DdXJyZW5jeVN5bWJvbCxcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1lYXN1cmVVbml0XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLk1lYXN1cmVVbml0LFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uTmFtZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkljb25OYW1lKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uUG9zaXRpb25cIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5JY29uUG9zaXRpb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNob3dOdW1lcmljRmllbGRJY29uID0gISEoKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5JY29uTmFtZSk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLm51bWVyaWNGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXROdW1lcmljRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBDQU1QTyBOVU1FUklDT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIEFMTEVHQVRPXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5BbGxlZ2F0bzpcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkFsbG93ZWRNaW1lVHlwZXNcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEF0dGFjaG1lbnRGaWVsZCkuQWxsb3dlZE1pbWVUeXBlc1xyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJpc011bHRpQXR0YWNoXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEF0dGFjaG1lbnRGaWVsZCkuaXNNdWx0aUF0dGFjaClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5hdHRhY2htZW50RmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0QXR0YWNobWVudEZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQUxMRUdBVE9cclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBJTU1BR0lORVxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uSW1tYWdpbmU6XHJcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5EeW5BdHRhY2htZW50ID09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQgPSBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHR5cGVvZiAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5FbmFibGVEcmF3aW5nID09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkVuYWJsZURyYXdpbmcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUmVzaXplZEltYWdlc0hlaWdodFB4XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHgsXHJcbiAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCg0MzIwKV1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeCA9ICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeCAhPSBudWxsID8gKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4IDogMTI4O1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkVuYWJsZURyYXdpbmdcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRW5hYmxlRHJhd2luZylcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuaW1hZ2VGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRJbWFnZUZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgLypcclxuICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbiA9IG5ldyBBdHRhY2htZW50RmllbGQoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiRW5hYmxlRHJhd2luZ1wiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRW5hYmxlRHJhd2luZylcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50XCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudFxyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgICAgLy8gSW1wb3N0byBpIEZvcm1Db250cm9sIHZhcmlhYmlsaS5cclxuICAgICAgdGhpcy5vbkltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudENoYW5nZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuaW1hZ2VGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgYnJlYWs7XHJcbiAgICAgICovXHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBJTU1BR0lORVxyXG5cclxuICAgICAgLy8jcmVnaW9uIEVMRU5DTyBHRU5FUklDT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Jbkxpc3RWaWV3ID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuSW5MaXN0VmlldyA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSW52aXNpYmlsaXR5ID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuSW52aXNpYmlsaXR5ID0gRmllbGRJbnZpc2liaWxpdHlFbnVtLk5BU0NPU1RPO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJc011bHRpQ2hvaWNoZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSXNNdWx0aUNob2ljaGUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJQcmVzZW50YXRpb25Nb2RlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuUHJlc2VudGF0aW9uTW9kZSxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmxpc3RWYWx1ZUZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdExpc3RWYWx1ZUZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gRUxFTkNPIEdFTkVSSUNPXHJcblxyXG4gICAgICAvLyNyZWdpb24gRUxFTkNPIElNTUFHSU5JXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBpbW1hZ2luaVwiXTpcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJc011bHRpQ2hvaWNoZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLklzTXVsdGlDaG9pY2hlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUmVzaXplZEltYWdlc0hlaWdodFB4XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeCxcclxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWF4KDQzMjApXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmltYWdlRmllbGRTZWxlY3RvckZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRJbWFnZVNlbGVjdG9yRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBFTEVOQ08gSU1NQUdJTklcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBJTU1BR0lORSBDT04gTUFSS0VSXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkltbWFnaW5lIGNvbiBtYXJrZXJzXCJdOlxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHgsXHJcbiAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCg0MzIwKV1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5pbWFnZVdpdGhNYXJrZXJzRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0SW1hZ2VXaXRoTWFya2Vyc0ZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gSU1NQUdJTkUgQ09OIE1BUktFUiAgICAgICAgXHJcblxyXG4gICAgICAvLyNyZWdpb24gTE9PS1VQXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5Mb29rdXA6XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRW50aXR5U291cmNlTmFtZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTG9va3VwRmllbGQpLkVudGl0eVNvdXJjZU5hbWUsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlVzZUFzR2V0T3JEaXNjYXJkXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIExvb2t1cEZpZWxkKS5Vc2VBc0dldE9yRGlzY2FyZClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5sb29rdXBGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIExPT0tVUFxyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBbXHJcbiAgICAgICAgRmllbGRUeXBlRW51bS5BbGxlZ2F0byxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtLkltbWFnaW5lLFxyXG4gICAgICAgIEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSxcclxuICAgICAgXS5pbmNsdWRlcyh0aGlzLmZpZWxkLkZpZWxkVHlwZSlcclxuICAgICkge1xyXG4gICAgICB0aGlzLmZpZWxkLkZvcm11bGEgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiRm9ybXVsYVwiXS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJJbkxpc3RWaWV3XCJdLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkludmlzaWJpbGl0eVwiXS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiRm9ybXVsYVwiXS5lbmFibGUoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkluTGlzdFZpZXdcIl0uZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJJbnZpc2liaWxpdHlcIl0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIFtcclxuICAgICAgICBGaWVsZFR5cGVFbnVtLkFsbGVnYXRvLFxyXG4gICAgICAgIEZpZWxkVHlwZUVudW0uSW1tYWdpbmUsXHJcbiAgICAgICAgRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdLFxyXG4gICAgICAgIEZpZWxkVHlwZUVudW1bXCJEYXRhIGUvbyBvcmFcIl0sXHJcbiAgICAgIF0uaW5jbHVkZXModGhpcy5maWVsZC5GaWVsZFR5cGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsc3R5bGVDU1NcIl0uZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiRmllbGRzdHlsZUNTU1wiXS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiTGFiZWxzdHlsZUNTU1wiXS5lbmFibGUoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkZpZWxkc3R5bGVDU1NcIl0uZW5hYmxlKCk7XHJcbiAgICB9XHJcbiAgICBpZiAoW0ZpZWxkVHlwZUVudW0uQm9vbGVhbm9dLmluY2x1ZGVzKHRoaXMuZmllbGQuRmllbGRUeXBlKSkge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiTGFiZWxzdHlsZUNTU1wiXS5kaXNhYmxlKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiTGFiZWxzdHlsZUNTU1wiXS5lbmFibGUoKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb25GaWVsZFR5cGVDaGFuZ2VcclxuXHJcbiAgLy8jcmVnaW9uIG9uRGF0YUdldHRlclR5cGVDaGFuZ2VcclxuICBhc3luYyBvbkRhdGFHZXR0ZXJUeXBlQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBEYXRhR2V0dGVyVHlwZUVudW1bJ0RhIG1vZHVsbyBkaW5hbWljbyddICYmIHRoaXMuZm9ybXMubGVuZ3RoID09IDApIHtcclxuICAgICAgdGhpcy5nZXRBbGxNb2R1bGVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSAhPSBEYXRhR2V0dGVyVHlwZUVudW0uRm9ybXVsYSkge1xyXG4gICAgICB0aGlzLmZpZWxkLkZvcm11bGEgPSBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgPSBudWxsO1xyXG4gICAgdGhpcy5ETU1vZHVsZSA9IG51bGw7XHJcbiAgICB0aGlzLkRNRmllbGQgPSBudWxsO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb25EYXRhR2V0dGVyVHlwZUNoYW5nZVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgY2FtYmlvIGRlbCB2YWxvcmUgZGVsbGEgcHJvcHJpZXTDoCBJbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnQgbmVsIGNhc29cclxuICAgKiBkaSBjYW1waSBkaSB0aXBvIEltbWFnaW5lLiBTZSBUUlVFIGFsbG9yYSByaW11b3ZlIGkgRm9ybUNvbnRyb2wgcGVyIGxlIHByb3ByaWV0w6AgSXNNdWx0aUF0dGFjaFxyXG4gICAqIGUgQWxsb3dlZE1pbWVUeXBlcyBlIGFnZ2l1bmdlIGkgRm9ybUNvbnRyb2wgcGVyIGxlIHByb3ByaWV0w6AgSW1nTmFtZSBlIENvbnRleHR1YWxBdHRhY2htZW50LFxyXG4gICAqIGFsdHJpbWVudGkgaWwgY29udHJhcmlvLlxyXG4gICAqL1xyXG4gIG9uSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50Q2hhbmdlKCkge1xyXG5cclxuICAgIC8qXHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWdOYW1lID0gbnVsbDtcclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uQWxsb3dlZE1pbWVUeXBlcyA9IFtdO1xyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbi5Jc011bHRpQXR0YWNoID0gZmFsc2U7XHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5Db250ZXh0dWFsQXR0YWNobWVudCA9IG51bGw7XHJcblxyXG4gICAgaWYgKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudCkge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJJc011bHRpQXR0YWNoXCIpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJBbGxvd2VkTWltZVR5cGVzXCIpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJJbWdOYW1lXCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkltZ05hbWUsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgKVxyXG4gICAgICApOyAgICAgIFxyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJDb250ZXh0dWFsQXR0YWNobWVudFwiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5Db250ZXh0dWFsQXR0YWNobWVudCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJJbWdOYW1lXCIpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLnJlbW92ZUNvbnRyb2woXCJDb250ZXh0dWFsQXR0YWNobWVudFwiKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiSXNNdWx0aUF0dGFjaFwiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLklzTXVsdGlBdHRhY2hcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkFsbG93ZWRNaW1lVHlwZXNcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbi5BbGxvd2VkTWltZVR5cGVzXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgKi9cclxuXHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGludGVyY2V0dGFyZSBsJ2FnZ2l1bnRhIGRpIHVuIGFsbGVnYXRvIG5laSBjYW1waSBkaSB0aXBvIEltbWFnaW5lIHBlciBhZ2dpb3JuYXJlXHJcbiAgICogaWwgdmFsb3JlIGRlbGxhIHByb3ByaWV0w6AgQ29udGV4dHVhbEF0dGFjaG1lbnQgZSBsYSB2YWxpZGF6aW9uZSBkZWwgcmVsYXRpdm8gRm9ybUNvbnRyb2wuXHJcbiAgICogQHBhcmFtIGV2ZW50IEFycmF5IGNvbnRlbmVudGUgbCdlbGVuY28gYWdnaW9ybmF0byBkZWdsaSBhbGxlZ2F0aSBjYXJpY2F0aSAobmVsIG5vc3RybyBjYXNvIG5lIGNvbnRpZW5lIGFsIHBpw7kgMSkuXHJcbiAgICovXHJcbiAgY2F0Y2hDb250ZXh0dWFsQXR0YWNobWVudENoYW5nZShldmVudDogQXJyYXk8SUF0dGFjaG1lbnREVE8+KSB7XHJcbiAgICAvKlxyXG4gICAgaWYgKGV2ZW50ICYmIGV2ZW50Lmxlbmd0aCA+IDApIHtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQ29udGV4dHVhbEF0dGFjaG1lbnQgPSBldmVudFswXTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkNvbnRleHR1YWxBdHRhY2htZW50ID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJDb250ZXh0dWFsQXR0YWNobWVudFwiXS5zZXRWYWx1ZShcclxuICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQ29udGV4dHVhbEF0dGFjaG1lbnRcclxuICAgICk7XHJcbiAgICAqL1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsbGEgc2VsZXppb25lIGRpIHVuYSBjbGFzc2UgbmVsbGEgc2VsZWN0IHBlciBsZSBjb2xvbm5lIGRpIGJvb3RzdHJhcFxyXG4gICAqIGRhIHVzYXJlIG5lbGxhIHZpc3VhbGl6emF6aW9uZSBkZWwgY2FtcG8uIFF1ZXN0YSBmdW56aW9uZSBtYW5pcG9sYSBsYSBzb3JnZW50ZSBkYXRpIHBlclxyXG4gICAqIGxhIGVxcC1zZWxlY3QgaW4gbW9kbyBkYSBlc2NsdWRlcmUgaSB2YWxvcmkgZGVsbCdlbnVtZXJhdG9yZSBjaGUgZmFubm8gcmlmZXJpbWVudG8gYWRcclxuICAgKiB1bmEgbGFyZ2hlenphIGRpIHNjaGVybW8gZ2nDoCBzZWxlemlvbmF0YS4gRXNlbXBpbzogcGVyIGdsaSBzY2hlcm1pIHBpY2NvbGkgKHNtKSBsJ3V0ZW50ZVxyXG4gICAqIHNlbGV6aW9uYSBsYSBjbGFzc2UgXCJjb2wtc20tNlwiLCBhbCBjaGFuZ2UgZGVsIHZhbG9yZSBxdWVzdG8gbWV0b2RvIHJpbXVvdmUgZGFsbGEgc2VsZWN0XHJcbiAgICogdHV0dGkgZ2xpIGFsdHJpIHZhbG9yaSBwZXIgbGEgZ3JhbmRlenphIGRpIHNjaGVybW8gc2VsZXppb25hdGEuXHJcbiAgICovXHJcbiAgb25Db2xTcGFuU2l6ZVNlbGVjdCgpIHtcclxuICAgIC8vIFJlY3VwZXJvIGwnYXJyYXkgZGVnbGkgb2dnZXR0aSBjaGlhdmUtdmFsb3JlIGNoZSByYXBwcmVzZXRhIGwnZW51bWVyYXRvcmVcclxuICAgIGxldCBjb2xTaXplQ2xhc3NFbnVtQXJyYXkgPSB0aGlzLmVudW1IZWxwZXIuZ2V0RW51bUFycmF5KFxyXG4gICAgICBDb2xTcGFuU2l6ZXNFbnVtLFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgbnVsbFxyXG4gICAgKTtcclxuICAgIC8vIENvc3RydWlzY28gbCdhcnJheSBkZWxsZSBjbGFzc2kgc2VsZXppb25hdGUgZGFsbCd1dGVudGUgaW4gZm9ybWF0byBzdHJpbmdhXHJcbiAgICBsZXQgc2VsZWN0ZWREaW1lbnNpb25zQ29tcGlsYXppb25lOiBBcnJheTxzdHJpbmc+ID0gdGhpcy5maWVsZC5Db2xTcGFuU2l6ZXNcclxuICAgICAgPyB0aGlzLmZpZWxkLkNvbFNwYW5TaXplcy5tYXAoKGNvbCkgPT4gQ29sU3BhblNpemVzRW51bVtjb2xdKVxyXG4gICAgICA6IFtdO1xyXG4gICAgbGV0IHNlbGVjdGVkRGltZW5zaW9uc1Jpc3Bvc3RhOiBBcnJheTxzdHJpbmc+ID0gdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5Db2xTcGFuU2l6ZXNcclxuICAgICAgPyB0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplcy5tYXAoKGNvbCkgPT4gQ29sU3BhblNpemVzRW51bVtjb2xdKVxyXG4gICAgICA6IFtdO1xyXG4gICAgLy8gRmlsdHJvIGkgdmFsb3JpIG90dGVudXRpIGRhbGwnZW51bWVyYXRvcmUgcGVyIGVzY2x1ZGVyZSB0dXR0aSBpIHZhbG9yaSBwZXIgbGVcclxuICAgIC8vIGdyYW5kZXp6ZSBkaSBzY2hlcm1vIGdpw6Agc2VsZXppb25hdGVhZCBlc2NsdXNpb25lIGRlaSB2YWxvcmkgc2VsZXppb25hdGkuXHJcbiAgICB0aGlzLmF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZSA9IGNvbFNpemVDbGFzc0VudW1BcnJheS5maWx0ZXIoXHJcbiAgICAgICh2YWx1ZTogeyBrZXk6IG51bWJlcjsgdmFsdWU6IHN0cmluZyB9KSA9PlxyXG4gICAgICAgICFzZWxlY3RlZERpbWVuc2lvbnNDb21waWxhemlvbmUuZmluZChcclxuICAgICAgICAgIChjb2wpID0+XHJcbiAgICAgICAgICAgIHZhbHVlLnZhbHVlLmluY2x1ZGVzKGNvbC5zdWJzdHJpbmcoNCwgNikpICYmIHZhbHVlLnZhbHVlICE9IGNvbFxyXG4gICAgICAgIClcclxuICAgICk7XHJcbiAgICB0aGlzLmF2YWlsYWJsZUNvbFNwYW5TaXplc1Jpc3Bvc3RhID0gY29sU2l6ZUNsYXNzRW51bUFycmF5LmZpbHRlcihcclxuICAgICAgKHZhbHVlOiB7IGtleTogbnVtYmVyOyB2YWx1ZTogc3RyaW5nIH0pID0+XHJcbiAgICAgICAgIXNlbGVjdGVkRGltZW5zaW9uc1Jpc3Bvc3RhLmZpbmQoXHJcbiAgICAgICAgICAoY29sKSA9PlxyXG4gICAgICAgICAgICB2YWx1ZS52YWx1ZS5pbmNsdWRlcyhjb2wuc3Vic3RyaW5nKDQsIDYpKSAmJiB2YWx1ZS52YWx1ZSAhPSBjb2xcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdGlwbyBkaSB2aXN1YWxpenphemlvbmUgc2NlbHRhIHBlciBpIGNhbXBpIGRpIHRpcG8gZWxlbmNvIGdlbmVyaWNvLlxyXG4gICAqIFNlIHZpZW5lIHNjZWx0YSBsYSB2aXN1YWxpenphemlvbmUgYWQgaW1tYWdpbmkgc3Z1b3RhIGxhIGxpc3RhIGRlbGxlIGNvcHBpZSBjaGlhdmUtdmFsb3JlIGluc2VyaXRlXHJcbiAgICogaW4gcHJlY2VkZW56YSwgYWx0cmltZW50aSBzdnVvdGEgbGEgbGlzdGEgZGVsbGUgaW1tYWdpbmkgY2FyaWNhdGUuXHJcbiAgICovXHJcbiAgb25QcmVzZW50YXRpb25Nb2RlQ2hhbmdlKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuUHJlc2VudGF0aW9uTW9kZSA9PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnUmFkaW8gYnV0dG9uJ10pIHtcclxuICAgICAgdGhpcy5maWVsZC5Jc011bHRpQ2hvaWNoZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBzYWx2YXRhZ2dpbyBkZWdsaSBhbGxlZ2F0aSBxdWFuZG8gdmllbmUgY29uZmlndXJhdG8gdW4gY2FtcG8gZGkgdGlwbyBcIkVsZW5jbyBnZW5lcmljb1wiXHJcbiAgICogY29uIGlsIHRpcG8gZGkgdmlzdWFsaXp6YXppb25lIGFkIGltbWFnaW5pLiBJbnRlcmNldHRhIGwnZWxlbmNvIGFnZ2lvcm5hdG8gZGVsbGUgaW1tYWdpbmkgY2FyaWNhdGUgZSBsb1xyXG4gICAqIG1lbW9yaXp6YSBuZWxsJ29nZ2V0dG8gZmllbGQgY29ycmVudGUuXHJcbiAgICogQHBhcmFtIGF0dGFjaG1lbnRzIEFycmF5IGFnZ2lvcm5hdG8gZGVnbGkgYWxsZWdhdGkgY2FyaWNhdGkuXHJcbiAgICovXHJcbiAgY2F0Y2hCdXR0b25JbWFnZXNDaGFuZ2UoYXR0YWNobWVudHM6IEFycmF5PElBdHRhY2htZW50RFRPPikge1xyXG5cclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QgPSBhdHRhY2htZW50cyBhcyBBcnJheTxEeW5BdHRhY2htZW50PjtcclxuXHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0LmZvckVhY2goKGF0dGFjaG1lbnQ6IER5bkF0dGFjaG1lbnQpID0+IHtcclxuICAgICAgaWYgKHR5cGVvZiBhdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPT0gXCJ1bmRlZmluZWRcIikge1xyXG5cclxuICAgICAgICB2YXIgbXlCYXNlNjQgPSBcImRhdGE6aW1hZ2UvXCIgKyBhdHRhY2htZW50LkZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSArIFwiO2Jhc2U2NCxcIiArIGF0dGFjaG1lbnQuRmlsZURhdGFCYXNlNjQ7XHJcbiAgICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG5cclxuICAgICAgICBpbWcuc3JjID0gbXlCYXNlNjQ7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgYXR0YWNobWVudC5JbWFnZVdpZHRoUHggPSBpbWcud2lkdGg7XHJcbiAgICAgICAgICBhdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPSBpbWcuaGVpZ2h0O1xyXG4gICAgICAgICAgYXR0YWNobWVudC5BdHRhY2htZW50RmllbGRUeXBlID0gQXR0YWNobWVudEZpZWxkVHlwZUVudW0uRUxFTkNPX0lNTUFHSU5JO1xyXG4gICAgICAgICAgaWYgKHNlbGYuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzKSB7IHNlbGYuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzLnJlbG9hZERhdGEoKTsgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gIH1cclxuXHJcbiAgY2F0Y2hCdXR0b25JbWFnZUNoYW5nZShhdHRhY2htZW50czogQXJyYXk8SUF0dGFjaG1lbnREVE8+KSB7XHJcblxyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRHluQXR0YWNobWVudCA9IGF0dGFjaG1lbnRzWzFdIGFzIER5bkF0dGFjaG1lbnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsICYmIHR5cGVvZiB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9PSBcInVuZGVmaW5lZFwiKSB7XHJcblxyXG4gICAgICB2YXIgbXlCYXNlNjQgPSBcImRhdGE6aW1hZ2UvXCIgKyB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpICsgXCI7YmFzZTY0LFwiICsgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7XHJcblxyXG4gICAgICBpbWcuc3JjID0gbXlCYXNlNjQ7XHJcbiAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlV2lkdGhQeCA9IGltZy53aWR0aDtcclxuICAgICAgICBzZWxmLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkF0dGFjaG1lbnRGaWVsZFR5cGUgPSBBdHRhY2htZW50RmllbGRUeXBlRW51bS5JTU1BR0lORTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIGNhdGNoQnV0dG9uSW1hZ2VXaXRoTWFya2Vyc0NoYW5nZShhdHRhY2htZW50czogQXJyYXk8SUF0dGFjaG1lbnREVE8+KSB7XHJcblxyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5EeW5BdHRhY2htZW50ID0gYXR0YWNobWVudHNbMV0gYXMgRHluQXR0YWNobWVudDtcclxuXHJcbiAgICBpZiAodGhpcy5maWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGwgJiYgdHlwZW9mIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID09IFwidW5kZWZpbmVkXCIpIHtcclxuXHJcbiAgICAgIHZhciBteUJhc2U2NCA9IFwiZGF0YTppbWFnZS9cIiArIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5GaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgKyBcIjtiYXNlNjQsXCIgKyB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZURhdGFCYXNlNjQ7XHJcbiAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbiAgICAgIGltZy5zcmMgPSBteUJhc2U2NDtcclxuICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBzZWxmLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VXaWR0aFB4ID0gaW1nLndpZHRoO1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID0gaW1nLmhlaWdodDtcclxuICAgICAgICBzZWxmLmZpZWxkLkR5bkF0dGFjaG1lbnQuQXR0YWNobWVudEZpZWxkVHlwZSA9IEF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtLklNTUFHSU5FX0NPTl9NQVJLRVJTO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoaWFtYXRvIGFsIGtleXVwIGRlZ2xpIGlucHV0IHRlc3R1YWxpIGNoZSBwcmV2ZWRvbm8gbCdhZ2dpdW50YSBkZWwgdmFsb3JlIGluc2VyaXRvIGluIHVuIGFycmF5LlxyXG4gICAqIFNlIGwndXRlbnRlIHByZW1lIGlsIHRhc3RvIGludmlvLCBpbiBiYXNlIGFsIHRpcG8gZGkgY2FtcG8gY2hlIHN0YSBpbnNlcmVuZG8vbW9kaWZpY2FuZG8sIHF1ZXN0byBtZXRvZG9cclxuICAgKiBhZ2dpdW5nZSBpbCB2YWxvcmUgaW5zZXJpdG8gZGFsbCd1dGVudGUgbmVsbGEgbGlzdGEgZGkgc3RyaW5naGUgY29ycmV0dGEgKGluIGlucHV0IHZpZW5lIHBhc3NhdG8gaWwgbm9tZVxyXG4gICAqIGRlbGxhIHByb3ByaWV0w6AgaW4gY3VpIGluc2VyaXJlIGxhIHN0cmluZ2EpLlxyXG4gICAqIEBwYXJhbSBldmVudCBFdmVudG8gY2hlIHJhcHByZXNlbnRhIGlsIGtleXVwIGRlbGwndXRlbnRlXHJcbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBOb21lIGRlbGxhIHByb3ByaWV0w6AgZGVsIGZpZWxkIGluIGN1aSBpbnNlcmlyZSBsYSBzdHJpbmdhIGRpZ2l0YXRhLlxyXG4gICAqL1xyXG4gIG9uTXVsdGlTZWxlY3RJbnB1dEtleXVwKGV2ZW50LCBwcm9wZXJ0eU5hbWU6IHN0cmluZykge1xyXG4gICAgaWYgKGV2ZW50LmNvZGUgPT09IFwiRW50ZXJcIiB8fCBldmVudC5jb2RlID09PSBcIk51bXBhZEVudGVyXCIpIHtcclxuICAgICAgc3dpdGNoICh0aGlzLmZpZWxkLkZpZWxkVHlwZSkge1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5Mb29rdXA6XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkFsbGVnYXRvOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLmZpZWxkW3Byb3BlcnR5TmFtZV0pIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZFtwcm9wZXJ0eU5hbWVdID0gbmV3IEFycmF5PHN0cmluZz4oKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZmllbGRbcHJvcGVydHlOYW1lXS5wdXNoKGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiSW1tYWdpbmUgY29uIG1hcmtlcnNcIl06XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW0uSW1tYWdpbmU6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcbiAgICAgICAgICBpZiAoIXRoaXMua2V5VmFsdWVPYmplY3Qua2V5IHx8ICF0aGlzLmtleVZhbHVlT2JqZWN0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICghKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMpIHtcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMgPSB7fTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzW3RoaXMua2V5VmFsdWVPYmplY3Qua2V5XSA9XHJcbiAgICAgICAgICAgIHRoaXMua2V5VmFsdWVPYmplY3QudmFsdWU7XHJcbiAgICAgICAgICB0aGlzLmtleVZhbHVlT2JqZWN0ID0geyBrZXk6IFwiXCIsIHZhbHVlOiBcIlwiIH07XHJcbiAgICAgICAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC52YWx1ZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gY2hpYW1hdG8gcGVyIG1vc3RyYXJlIGNvbWUgZWxlbmNvIGxlIG9wemlvbmkgYWdnaXVudGUgaW4gdW4gY2FtcG8gZGkgdGlwbyBcIkVsZW5jbyBnZW5lcmljb1wiLlxyXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuIGFycmF5IGRpIG9nZ2V0dGkgZGVsIHRpcG8geyBrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyB9IGNvbiBpIHZhbG9yaSBpbnNlcml0aSBkYWxsJ3V0ZW50ZS5cclxuICAgKi9cclxuICBnZXREaWN0aW9uYXJ5S2V5VmFsdWUoKSB7XHJcbiAgICBpZiAoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMpIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKS5tYXAoKGspID0+IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAga2V5OiBrLFxyXG4gICAgICAgICAgdmFsdWU6ICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzW2tdLFxyXG4gICAgICAgIH07XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIFtdO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaW11b3ZlcmUgdW5hIG9wemlvbmUgYWdnaXVudGEgYWwgY2FtcG8gZGkgdGlwbyBcIkVsZW5jbyBnZW5lcmljb1wiXHJcbiAgICogQHBhcmFtIGtleSBOb21lIGRlbGxhIGNoaWF2ZSBkYSByaW11b3ZlcmVcclxuICAgKi9cclxuICBkZWxldGVLZXlGcm9tRGljdGlvbmFyeShrZXk6IHN0cmluZykge1xyXG4gICAgZGVsZXRlICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzW2tleV07XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIG9wZW5Gb3JtdWxhRGlhbG9nXHJcbiAgb3BlbkZvcm11bGFEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ0Zvcm11bGFSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZpZWxkczogdGhpcy5hdmFpbGFibGVGaWVsZHMsXHJcbiAgICAgICAgZm9ybXVsYTogdGhpcy5maWVsZC5Gb3JtdWxhLFxyXG4gICAgICAgIGZvcm11bGFPYmplY3Q6IHRoaXMuZm9ybXVsYU9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ0Zvcm11bGFSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkLkZvcm11bGEgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb3BlbkZvcm11bGFEaWFsb2dcclxuXHJcblxyXG4gIC8vI3JlZ2lvbiBhdmFudGkgaW5kaWV0cm9cclxuICAvLyBhdmFudGlJbmRpZXRybyh3aGVyZTogc3RyaW5nKSB7XHJcbiAgLy8gICB0aGlzLmRpYWxvZ0F2YW50aUluZGlldHJvUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0F2YW50aUluZGlldHJvLCB7XHJcbiAgLy8gICAgIGRpc2FibGVDbG9zZTogZmFsc2UsXHJcbiAgLy8gICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gIC8vICAgICB3aWR0aDogXCI3NSVcIixcclxuICAvLyAgICAgZGF0YToge1xyXG4gIC8vICAgICAgIHdoZXJlOiB3aGVyZVxyXG4gIC8vICAgICB9LFxyXG4gIC8vICAgfSk7XHJcbiAgLy8gICB0aGlzLmRpYWxvZ0F2YW50aUluZGlldHJvUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAvLyAgICAgY29uc29sZS5sb2cocmVzdWx0KVxyXG4gIC8vICAgICBpZiAocmVzdWx0Py5hY3Rpb24gPT09ICdzYXZlJykge1xyXG4gIC8vICAgICAgIC8vIGNvbnNvbGUubG9nKGBIYWkgc2NlbHRvIHNhbHZhICgke3Jlc3VsdC53aGVyZX0pYCk7XHJcbiAgLy8gICAgICAgaWYod2hlcmUgPT0gXCJhdmFudGlcIil7XHJcbiAgLy8gICAgICAgICB0aGlzLnNhdmVBbmRFeGl0QWRkRmllbGQodHJ1ZSwgMSk7XHJcbiAgLy8gICAgICAgfSBlbHNlIGlmICh3aGVyZSA9PSBcImluZGlldHJvXCIpe1xyXG4gIC8vICAgICAgICAgdGhpcy5zYXZlQW5kRXhpdEFkZEZpZWxkKHRydWUsIC0xKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgICAgaWYgKHJlc3VsdD8uYWN0aW9uID09PSAnbm9zYXZlJykge1xyXG4gIC8vICAgICAgIC8vIGNvbnNvbGUubG9nKGBIYWkgc2NlbHRvIHZpYSBzZW56YSBzYWx2YXJlICgke3Jlc3VsdC53aGVyZX0pYCk7XHJcbiAgLy8gICAgICAgaWYod2hlcmUgPT0gXCJhdmFudGlcIil7XHJcbiAgLy8gICAgICAgICB0aGlzLnNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UsIDEpO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAod2hlcmUgPT0gXCJpbmRpZXRyb1wiKXtcclxuICAvLyAgICAgICAgIHRoaXMuc2F2ZUFuZEV4aXRBZGRGaWVsZChmYWxzZSwgLTEpO1xyXG4gIC8vICAgICAgIH1cclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBDbG9zZVNhdmUoKSB7XHJcbiAgLy8gICB0aGlzLmRpYWxvZ0F2YW50aUluZGlldHJvUmVmLmNsb3NlKHsgYWN0aW9uOiAnc2F2ZScgfSk7XHJcbiAgLy8gfVxyXG5cclxuICAvLyBDbG9zZSgpIHtcclxuICAvLyAgIHRoaXMuZGlhbG9nQXZhbnRpSW5kaWV0cm9SZWYuY2xvc2UoeyBhY3Rpb246ICdub3NhdmUnfSk7XHJcbiAgLy8gfVxyXG4gIC8vI2VuZHJlZ2lvbiBhbmFudGlcclxuXHJcbiAgLy8jcmVnaW9uIG9wZW5WaXNpYmxlSWZEaWFsb2dcclxuICBvcGVuVmlzaWJsZUlmRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlSWZSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZpZWxkczogdGhpcy5hdmFpbGFibGVGaWVsZHMsXHJcbiAgICAgICAgZm9ybXVsYTogdGhpcy5maWVsZC5WaXNpYmxlSWYsXHJcbiAgICAgICAgZm9ybXVsYU9iamVjdDogdGhpcy5mb3JtdWxhT2JqZWN0XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZUlmUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5maWVsZC5WaXNpYmxlSWYgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb3BlblZpc2libGVJZkRpYWxvZ1xyXG5cclxuICAvLyNyZWdpb24gb3BlblJlYWRPbmx5SWZEaWFsb2dcclxuICBvcGVuUmVhZE9ubHlJZkRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nUmVhZE9ubHlJZlJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dGb3JtdWxhLCB7XHJcbiAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjc1JVwiLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgZmllbGRzOiB0aGlzLmF2YWlsYWJsZUZpZWxkcyxcclxuICAgICAgICBmb3JtdWxhOiB0aGlzLmZpZWxkLlJlYWRvbmx5SWYsXHJcbiAgICAgICAgZm9ybXVsYU9iamVjdDogdGhpcy5mb3JtdWxhT2JqZWN0XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVhZE9ubHlJZlJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGQuUmVhZG9ubHlJZiA9IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCkgPT0gXCJcIiA/IG51bGwgOiByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBvcGVuUmVhZE9ubHlJZkRpYWxvZ1xyXG5cclxuICAvLyNyZWdpb24gb3BlbkFuc3dlclN0eWxlVmlzaWJsZUlmRGlhbG9nXHJcbiAgb3BlbkFuc3dlclN0eWxlVmlzaWJsZUlmRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dWaXNpYmxlSWZSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZpZWxkczogdGhpcy5hdmFpbGFibGVGaWVsZHMsXHJcbiAgICAgICAgZm9ybXVsYTogdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYsXHJcbiAgICAgICAgZm9ybXVsYU9iamVjdDogdGhpcy5mb3JtdWxhT2JqZWN0XHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZUlmUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb3BlbkFuc3dlclN0eWxlVmlzaWJsZUlmRGlhbG9nXHJcblxyXG4gIG9uVGV4dEZpZWxkSWNvblRvZ2dsZShlbmFibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWVuYWJsZWQpIHtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5JY29uTmFtZSA9IG51bGw7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuSWNvblBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25OYW1lJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvbk5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvblBvc2l0aW9uJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvblBvc2l0aW9uJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gVGV4dEZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgLyoqIExlZ2dlIGlsIHZhbG9yZSBkaSB1bmEgcHJvcHJpZXTDoCBDU1MgZGEgVGV4dEZpZWxkU3R5bGVDU1MgKi9cclxuICBnZXRTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dEZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgLyoqIEltcG9zdGEgbyBjYW5jZWxsYSB1bmEgcHJvcHJpZXTDoCBDU1MgaW4gVGV4dEZpZWxkU3R5bGVDU1MgZSBhZ2dpb3JuYSBsJ2FudGVwcmltYSAqL1xyXG4gIHNldFN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IHRmID0gdGhpcy5maWVsZCBhcyBUZXh0RmllbGQ7XHJcbiAgICBpZiAoIXRmLlRleHRGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIHRmLlRleHRGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAvLyB1bmRlZmluZWQgdmllbmUgZXNjbHVzbyBkYSBKU09OLnN0cmluZ2lmeSDihpIgaWwgSlNPTiByaW1hbmUgY29tcGF0dG9cclxuICAgICh0Zi5UZXh0RmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLyoqIEluaXppYWxpenphIGxhIHByZXZpZXcgZGVsIFRleHRGaWVsZCAoRm9ybUZvcm1Hcm91cCArIHJlY29yZCBkdW1teSkgKi9cclxuICBpbml0VGV4dEZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1RleHRGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGYgPSB0aGlzLmZpZWxkIGFzIFRleHRGaWVsZDtcclxuICAgIGlmICghdGYuVGV4dEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgdGYuVGV4dEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld190Zic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogJycgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbJycsIFtcclxuICAgICAgICAuLi4odGYuTWluTGVuZ2h0ID8gW1ZhbGlkYXRvcnMubWluTGVuZ3RoKE51bWJlcih0Zi5NaW5MZW5naHQpKV0gOiBbXSksXHJcbiAgICAgICAgLi4uKHRmLk1heExlbmdodCA/IFtWYWxpZGF0b3JzLm1heExlbmd0aChOdW1iZXIodGYuTWF4TGVuZ2h0KSldIDogW10pLFxyXG4gICAgICBdXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLyoqIEFnZ2lvcm5hIE5hbWUgZSBGb3JtRm9ybUdyb3VwIHF1YW5kbyBpbCBDb2RpY2UgY2FtYmlhLCBwZXIgbWFudGVuZXJlIGxhIHByZXZpZXcgYWxsaW5lYXRhICovXHJcbiAgb25MYWJlbENoYW5nZUZvclByZXZpZXcobmV3TGFiZWw6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzVGV4dEZpZWxkICYmICF0aGlzLmlzTnVtZXJpY0ZpZWxkICYmICF0aGlzLmlzVGV4dGFyZWFGaWVsZCAmJiAhdGhpcy5pc0Jvb2xlYW5GaWVsZCAmJiAhdGhpcy5pc0F0dGFjaG1lbnRGaWVsZCAmJiAhdGhpcy5pc0xhYmVsRmllbGQgJiYgIXRoaXMuaXNEYXRlRmllbGQgJiYgIXRoaXMuaXNBY3Rpb25CdXR0b25GaWVsZCAmJiAhdGhpcy5pc0xpc3RWYWx1ZUZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBuZXdMYWJlbCB8fCAncHJldmlld190Zic7XHJcbiAgICBjb25zdCBpbml0VmFsID0gdGhpcy5pc0F0dGFjaG1lbnRGaWVsZCA/IFtdIDogKHRoaXMuaXNEYXRlRmllbGQgPyBudWxsIDogKHRoaXMuaXNMaXN0VmFsdWVGaWVsZCA/ICgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSXNNdWx0aUNob2ljaGUgPyBbXSA6IG51bGwpIDogJycpKTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW3RoaXMuZmllbGQuTmFtZV06IGluaXRWYWwgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbdGhpcy5maWVsZC5OYW1lXTogW2luaXRWYWxdXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gVGV4dEZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIE51bWVyaWNGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIC8qKiBTaW5jcm9uaXp6YSBNaW5WYWx1ZS9NYXhWYWx1ZSBkYWwgZmllbGRGb3JtR3JvdXAgYWwgY2FtcG8gZSBhZ2dpb3JuYSBpIHZhbGlkYXRvciBkZWxsJ2FudGVwcmltYSAqL1xyXG4gIG9uTnVtZXJpY01pbk1heENoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5mID0gdGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQ7XHJcbiAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnTWluVmFsdWUnKSkge1xyXG4gICAgICBuZi5NaW5WYWx1ZSA9IHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdNaW5WYWx1ZScpLnZhbHVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ01heFZhbHVlJykpIHtcclxuICAgICAgbmYuTWF4VmFsdWUgPSB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnTWF4VmFsdWUnKS52YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBvbk51bWVyaWNGaWVsZEljb25Ub2dnbGUoZW5hYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFlbmFibGVkKSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSWNvbk5hbWUgPSBudWxsO1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkljb25Qb3NpdGlvbiA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uTmFtZScpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25OYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25Qb3NpdGlvbicpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25Qb3NpdGlvbicpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgZ2V0TnVtZXJpY1N0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5OdW1lcmljRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXROdW1lcmljU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbmYgPSB0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZDtcclxuICAgIGlmICghbmYuTnVtZXJpY0ZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgbmYuTnVtZXJpY0ZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChuZi5OdW1lcmljRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdE51bWVyaWNGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNOdW1lcmljRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IG5mID0gdGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQ7XHJcbiAgICBpZiAoIW5mLk51bWVyaWNGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIG5mLk51bWVyaWNGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfbmYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06ICcnIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogWycnXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIE51bWVyaWNGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBUZXh0YXJlYUZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgb25UZXh0YXJlYUZpZWxkSWNvblRvZ2dsZShlbmFibGVkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoIWVuYWJsZWQpIHtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuSWNvbk5hbWUgPSBudWxsO1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5JY29uUG9zaXRpb24gPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvbk5hbWUnKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uTmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uUG9zaXRpb24nKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uUG9zaXRpb24nKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGdldFRleHRhcmVhU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0VGV4dGFyZWFTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB0YSA9IHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZDtcclxuICAgIGlmICghdGEuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIHRhLlRleHRhcmVhRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKHRhLlRleHRhcmVhRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdFRleHRhcmVhRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzVGV4dGFyZWFGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgdGEgPSB0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQ7XHJcbiAgICBpZiAoIXRhLlRleHRhcmVhRmllbGRTdHlsZUNTUykge1xyXG4gICAgICB0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld190YSc7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogJycgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbJyddXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gVGV4dGFyZWFGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBCb29sZWFuRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRCb29sZWFuU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBCb29sZWFuRmllbGQpLkJvb2xlYW5GaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEJvb2xlYW5TdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBiZiA9IHRoaXMuZmllbGQgYXMgQm9vbGVhbkZpZWxkO1xyXG4gICAgaWYgKCFiZi5Cb29sZWFuRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBiZi5Cb29sZWFuRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGJmLkJvb2xlYW5GaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0Qm9vbGVhbkZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0Jvb2xlYW5GaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgYmYgPSB0aGlzLmZpZWxkIGFzIEJvb2xlYW5GaWVsZDtcclxuICAgIGlmICghYmYuQm9vbGVhbkZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYmYuQm9vbGVhbkZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19iZic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogZmFsc2UgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbZmFsc2VdXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gQm9vbGVhbkZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIEF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldEF0dGFjaG1lbnRTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEF0dGFjaG1lbnRGaWVsZCkuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0QXR0YWNobWVudFN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFmID0gdGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQ7XHJcbiAgICBpZiAoIWFmLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGFmLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoYWYuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRBdHRhY2htZW50RmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzQXR0YWNobWVudEZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBhZiA9IHRoaXMuZmllbGQgYXMgQXR0YWNobWVudEZpZWxkO1xyXG4gICAgaWYgKCFhZi5BdHRhY2htZW50RmllbGRTdHlsZUNTUykge1xyXG4gICAgICBhZi5BdHRhY2htZW50RmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKCFhZi5BbGxvd2VkTWltZVR5cGVzKSB7XHJcbiAgICAgIGFmLkFsbG93ZWRNaW1lVHlwZXMgPSBBdmFpbGFibGVGaWxlRXh0ZW5zaW9ucy5jb25jYXQoQXZhaWxhYmxlSW1hZ2VFeHRlbnNpb25zKS5tYXAoZXh0ID0+IGV4dC5rZXkpO1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X2FmJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiBbXSB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFtjb250cm9sTmFtZV06IFtbXV1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBBdHRhY2htZW50RmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gTGFiZWxGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldExhYmVsU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBMYWJlbEZpZWxkKS5MYWJlbEZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0TGFiZWxTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBsZiA9IHRoaXMuZmllbGQgYXMgTGFiZWxGaWVsZDtcclxuICAgIGlmICghbGYuTGFiZWxGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGxmLkxhYmVsRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGxmLkxhYmVsRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdExhYmVsRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTGFiZWxGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgbGYgPSB0aGlzLmZpZWxkIGFzIExhYmVsRmllbGQ7XHJcbiAgICBpZiAoIWxmLkxhYmVsRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBsZi5MYWJlbEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19sZic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIGlmICghbGYuRXRpY2hldHRhKSB7XHJcbiAgICAgIGxmLkV0aWNoZXR0YSA9IHRoaXMuZmllbGQuRGVzY3JpcHRpb24gfHwgJ1Rlc3RvIGV0aWNoZXR0YSBkaSBlc2VtcGlvJztcclxuICAgIH1cclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogbGYuRXRpY2hldHRhIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHsgW2NvbnRyb2xOYW1lXTogWycnXSB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gTGFiZWxGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBEYXRlRmllbGQg4oCUIGhlbHBlcnMgc3BlY2lmaWNoZSBlIENTU1xyXG5cclxuICBvbkRhdGVUeXBlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgY29uc3QgZGYgPSB0aGlzLmZpZWxkIGFzIERhdGVGaWVsZDtcclxuICAgIGxldCBmbXQ6IHN0cmluZztcclxuICAgIHN3aXRjaCAoZGYuSXNPbmx5RGF0ZSkge1xyXG4gICAgICBjYXNlIERhdGVUaW1lVHlwZUVudW1bJ1NvbG8gb3JhcmlvJ106IGZtdCA9ICdISDptbSc7ICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgRGF0ZVRpbWVUeXBlRW51bVsnRGF0YSBlIG9yYSddOiAgZm10ID0gJ2RkL01NL3l5eXkgSEg6bW0nOyBicmVhaztcclxuICAgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdCA9ICdkZC9NTS95eXl5JzsgICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgZGYuRGF0ZUZvcm1hdCA9IGZtdDtcclxuICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdEYXRlRm9ybWF0Jyk/LnNldFZhbHVlKGZtdCk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgZ2V0RGF0ZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5EYXRlRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXREYXRlU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgZGYgPSB0aGlzLmZpZWxkIGFzIERhdGVGaWVsZDtcclxuICAgIGlmICghZGYuRGF0ZUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgZGYuRGF0ZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChkZi5EYXRlRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdERhdGVGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNEYXRlRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGRmID0gdGhpcy5maWVsZCBhcyBEYXRlRmllbGQ7XHJcbiAgICBpZiAoIWRmLkRhdGVGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGRmLkRhdGVGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBpZiAoZGYuSXNPbmx5RGF0ZSA9PSBudWxsKSB7XHJcbiAgICAgIGRmLklzT25seURhdGUgPSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIGRhdGEnXTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19kZic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogbnVsbCB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFtjb250cm9sTmFtZV06IFtudWxsXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIERhdGVGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBBY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldEFjdGlvbkJ1dHRvblN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLkFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0QWN0aW9uQnV0dG9uU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgYWIgPSB0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkO1xyXG4gICAgaWYgKCFhYi5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGFiLkFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChhYi5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0QWN0aW9uQnV0dG9uRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzQWN0aW9uQnV0dG9uRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGFiID0gdGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZDtcclxuICAgIGlmICghYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBhYi5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIEltYWdlRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRJbWFnZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuSW1hZ2VGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEltYWdlU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgaW1nID0gdGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkO1xyXG4gICAgaWYgKCFpbWcuSW1hZ2VGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGltZy5JbWFnZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChpbWcuSW1hZ2VGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0SW1hZ2VGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbWFnZUZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBpbWcgPSB0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQ7XHJcbiAgICBpZiAoIWltZy5JbWFnZUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaW1nLkltYWdlRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBJbWFnZUZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldEltYWdlV2l0aE1hcmtlcnNTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0SW1hZ2VXaXRoTWFya2Vyc1N0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGl3bSA9IHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkO1xyXG4gICAgaWYgKCFpd20uSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaXdtLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoaXdtLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0SW1hZ2VXaXRoTWFya2Vyc0ZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0ltYWdlV2l0aE1hcmtlcnNGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgaXdtID0gdGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQ7XHJcbiAgICBpZiAoIWl3bS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBpd20uSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIExpc3RWYWx1ZUZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0TGlzdFZhbHVlU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuTGlzdFZhbHVlRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRMaXN0VmFsdWVTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBsdiA9IHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQ7XHJcbiAgICBpZiAoIWx2Lkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgbHYuTGlzdFZhbHVlRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGx2Lkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRMaXN0VmFsdWVGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNMaXN0VmFsdWVGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgbHYgPSB0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkO1xyXG4gICAgaWYgKCFsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGx2Lkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19sdic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIGNvbnN0IGluaXRWYWwgPSBsdi5Jc011bHRpQ2hvaWNoZSA/IFtdIDogbnVsbDtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogaW5pdFZhbCB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7IFtjb250cm9sTmFtZV06IFtpbml0VmFsXSB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBvbklzTXVsdGlDaG9pY2hlQ2hhbmdlKCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTGlzdFZhbHVlRmllbGQpIHJldHVybjtcclxuICAgIHRoaXMuaW5pdExpc3RWYWx1ZUZpZWxkUHJldmlldygpO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIExpc3RWYWx1ZUZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldEltYWdlU2VsZWN0b3JTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0SW1hZ2VTZWxlY3RvclN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGlzZiA9IHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkO1xyXG4gICAgaWYgKCFpc2YuSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaXNmLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoaXNmLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0SW1hZ2VTZWxlY3RvckZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0ltYWdlU2VsZWN0b3JGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgaXNmID0gdGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQ7XHJcbiAgICBpZiAoIWlzZi5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBpc2YuSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19pc2YnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICBjb25zdCBpbml0VmFsID0gaXNmLklzTXVsdGlDaG9pY2hlID8gW10gOiBudWxsO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiBpbml0VmFsIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHsgW2NvbnRyb2xOYW1lXTogW2luaXRWYWxdIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTU1xyXG5cclxuICBzdHJpbmdTYW5pdGl6ZXIodmFsdWUpIHtcclxuICAgIGlmICghVXRpbGl0eUhlbHBlclNlcnZpY2Uuc3RyaW5nQ2hlY2tQYXJlbnRlc2lzKHZhbHVlKSkge1xyXG4gICAgICAvLyBhbGVydChcImVycm9yZSFcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gZGlzYWJsZVNhdmVGaWVsZFxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgZGlzYWJpbGl0YXJlIGlsIHB1bHNhbnRlIHBlciBzYWx2YXJlIGlsIGNhbXBvIGluc2VyaXRvL21vZGlmaWNhdG8uXHJcbiAgICogQHJldHVybnMgUmVzdGl0dWlzY2UgdW4gYm9vbGVhbm8sIHNlIHRydWUgaWwgc2FsdmF0YWdnaW8gdmllbmUgZGlzYWJpbGl0YXRvLlxyXG4gICAqL1xyXG4gIGRpc2FibGVTYXZlRmllbGQoKTogYm9vbGVhbiB7XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuaW52YWxpZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGQuRmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBnZW5lcmljb1wiXTpcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkZvcm11bGEgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuRm9ybXVsYSAhPSBcIlwiXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBpZiAoISh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKSB7XHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzID0ge307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVTdHJpbmcgIT0gdW5kZWZpbmVkICYmXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVTdHJpbmcgIT0gbnVsbCAmJlxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlU3RyaW5nICE9IFwiXCIpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICEodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycyB8fFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBpbW1hZ2luaVwiXTpcclxuXHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICEodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0IHx8XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0Lmxlbmd0aCA9PT0gMCB8fFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5maW5kKFxyXG4gICAgICAgICAgICAoaSkgPT4gKGkuQnV0dG9uS2V5ID09IG51bGwgfHwgaS5CdXR0b25LZXkgPT09IFwidW5kZWZpbmVkXCIgfHwgaS5CdXR0b25LZXkgPT0gJycpIHx8IChpLkJ1dHRvblZhbHVlID09IG51bGwgfHwgaS5CdXR0b25WYWx1ZSA9PT0gXCJ1bmRlZmluZWRcIiB8fCBpLkJ1dHRvblZhbHVlID09ICcnKVxyXG4gICAgICAgICAgKSAhPSBudWxsXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5Mb29rdXA6XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICEodGhpcy5maWVsZCBhcyBMb29rdXBGaWVsZCkuRmllbGROYW1lcyB8fFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTG9va3VwRmllbGQpLkZpZWxkTmFtZXMubGVuZ3RoID09PSAwXHJcbiAgICAgICAgKTtcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBkaXNhYmxlU2F2ZUZpZWxkXHJcblxyXG4gIG9uU2F2ZUNsaWNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZGlzYWJsZVNhdmVGaWVsZCgpKSB7XHJcbiAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuY29sbGVjdFZhbGlkYXRpb25FcnJvcnMoKTtcclxuICAgICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuV2FybmluZyhcclxuICAgICAgICBlcnJvcnMubGVuZ3RoID4gMCA/IGVycm9ycyA6IFsnSWwgZm9ybSBjb250aWVuZSBlcnJvcmkgZGkgdmFsaWRhemlvbmUuJ10sXHJcbiAgICAgICAgJ0ltcG9zc2liaWxlIHNhbHZhcmUnXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY29sbGVjdFZhbGlkYXRpb25FcnJvcnMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGxhYmVsTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICBMYWJlbDogJ0NvZGljZScsXHJcbiAgICAgIERlc2NyaXB0aW9uOiAnRGVzY3JpemlvbmUnLFxyXG4gICAgICBGaWVsZFR5cGU6ICdUaXBvIGNhbXBvJyxcclxuICAgICAgRm9ybXVsYTogJ0Zvcm11bGEnLFxyXG4gICAgICBWaXNpYmxlSWY6ICdWaXNpYmlsZSBzZScsXHJcbiAgICAgIFJlYWRvbmx5SWY6ICdTb2xhIGxldHR1cmEgc2UnLFxyXG4gICAgICBUZXh0TWFzazogJ01hc2NoZXJhJyxcclxuICAgICAgTWF4TGVuZ3RoOiAnTHVuZ2hlenphIG1hc3NpbWEnLFxyXG4gICAgICBNaW5WYWx1ZTogJ1ZhbG9yZSBtaW5pbW8nLFxyXG4gICAgICBNYXhWYWx1ZTogJ1ZhbG9yZSBtYXNzaW1vJyxcclxuICAgICAgRGF0ZUZvcm1hdDogJ0Zvcm1hdG8gZGF0YScsXHJcbiAgICAgIEV0aWNoZXR0YTogJ1Rlc3RvIGV0aWNoZXR0YScsXHJcbiAgICAgIEljb25OYW1lOiAnSWNvbmEnLFxyXG4gICAgICBCdXR0b25MYWJlbDogJ0V0aWNoZXR0YSBib3R0b25lJyxcclxuICAgICAgSW5MaXN0VmlldzogJ1Zpc2liaWxlIGluIGxpc3RhJyxcclxuICAgICAgUmVxdWlyZWQ6ICdPYmJsaWdhdG9yaW8nLFxyXG4gICAgICBJbnZpc2liaWxpdHk6ICdJbnZpc2liaWxpdMOgJyxcclxuICAgICAgRmllbGRzdHlsZUNTUzogJ1N0aWxlIGNhbXBvJyxcclxuICAgICAgTGFiZWxzdHlsZUNTUzogJ1N0aWxlIGV0aWNoZXR0YScsXHJcbiAgICAgIEFsbG93ZWRNaW1lVHlwZXM6ICdUaXBpIE1JTUUgY29uc2VudGl0aScsXHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IGVycm9yTXNnTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICByZXF1aXJlZDogJ8OoIG9iYmxpZ2F0b3JpbycsXHJcbiAgICAgIG1pbmxlbmd0aDogJ8OoIHRyb3BwbyBjb3J0bycsXHJcbiAgICAgIG1heGxlbmd0aDogJ8OoIHRyb3BwbyBsdW5nbycsXHJcbiAgICAgIHBhdHRlcm46ICdjb250aWVuZSBjYXJhdHRlcmkgbm9uIHZhbGlkaScsXHJcbiAgICAgIG1pbjogJ8OoIGluZmVyaW9yZSBhbCB2YWxvcmUgbWluaW1vJyxcclxuICAgICAgbWF4OiAnw6ggc3VwZXJpb3JlIGFsIHZhbG9yZSBtYXNzaW1vJyxcclxuICAgICAgZW1haWw6ICdub24gw6ggdW4gaW5kaXJpenpvIGVtYWlsIHZhbGlkbycsXHJcbiAgICAgIG1hdERhdGVwaWNrZXJQYXJzZTogJ25vbiDDqCB1bmEgZGF0YSB2YWxpZGEnLFxyXG4gICAgfTtcclxuXHJcbiAgICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKGNvbnRyb2xOYW1lID0+IHtcclxuICAgICAgY29uc3QgY29udHJvbCA9IHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KGNvbnRyb2xOYW1lKTtcclxuICAgICAgaWYgKGNvbnRyb2wgJiYgY29udHJvbC5pbnZhbGlkICYmIGNvbnRyb2wuZXJyb3JzKSB7XHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBsYWJlbE1hcFtjb250cm9sTmFtZV0gfHwgY29udHJvbE5hbWU7XHJcbiAgICAgICAgT2JqZWN0LmtleXMoY29udHJvbC5lcnJvcnMpLmZvckVhY2goZXJyb3JLZXkgPT4ge1xyXG4gICAgICAgICAgY29uc3QgbXNnID0gZXJyb3JNc2dNYXBbZXJyb3JLZXldIHx8IGBoYSB1biBlcnJvcmUgKCR7ZXJyb3JLZXl9KWA7XHJcbiAgICAgICAgICBlcnJvcnMucHVzaChgSWwgY2FtcG8gXCIke2xhYmVsfVwiICR7bXNnfWApO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBFcnJvcmkgc3BlY2lmaWNpIHBlciB0aXBvIGNhbXBvXHJcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGQuRmllbGRUeXBlKSB7XHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkVsZW5jbyBnZW5lcmljb1wiXToge1xyXG4gICAgICAgIGNvbnN0IGx2ID0gdGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZDtcclxuICAgICAgICBjb25zdCBoYXNGb3JtdWxhID0gbHYuRm9ybXVsYSAmJiBsdi5Gb3JtdWxhICE9PSAnJztcclxuICAgICAgICBjb25zdCBoYXNWYWx1ZVN0cmluZyA9IGx2LlZhbHVlU3RyaW5nICYmIGx2LlZhbHVlU3RyaW5nICE9PSAnJztcclxuICAgICAgICBjb25zdCBoYXNWYWx1ZVBhaXJzID0gbHYuVmFsdWVQYWlycyAmJiBsdi5WYWx1ZVBhaXJzLmxlbmd0aCA+IDA7XHJcbiAgICAgICAgaWYgKCFoYXNGb3JtdWxhICYmICFoYXNWYWx1ZVN0cmluZyAmJiAhaGFzVmFsdWVQYWlycykge1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goJ0xcXCdlbGVuY28gbm9uIGNvbnRpZW5lIHZhbG9yaScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl06IHtcclxuICAgICAgICBjb25zdCBpc2YgPSB0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZDtcclxuICAgICAgICBpZiAoIWlzZi5BdHRhY2htZW50TGlzdCB8fCBpc2YuQXR0YWNobWVudExpc3QubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICBlcnJvcnMucHVzaCgnTFxcJ2VsZW5jbyBpbW1hZ2luaSBub24gY29udGllbmUgZWxlbWVudGknKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGlzZi5BdHRhY2htZW50TGlzdC5maW5kKFxyXG4gICAgICAgICAgaSA9PiAhaS5CdXR0b25LZXkgfHwgaS5CdXR0b25LZXkgPT09ICd1bmRlZmluZWQnIHx8IGkuQnV0dG9uS2V5ID09PSAnJyB8fFxyXG4gICAgICAgICAgICAgICAhaS5CdXR0b25WYWx1ZSB8fCBpLkJ1dHRvblZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBpLkJ1dHRvblZhbHVlID09PSAnJ1xyXG4gICAgICAgICkpIHtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKCdBbGN1bmkgZWxlbWVudGkgZGVsbFxcJ2VsZW5jbyBpbW1hZ2luaSBub24gc29ubyBjb21wbGV0aSAoY2hpYXZlIG8gdmFsb3JlIG1hbmNhbnRpKScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uTG9va3VwOiB7XHJcbiAgICAgICAgY29uc3QgbGYgPSB0aGlzLmZpZWxkIGFzIExvb2t1cEZpZWxkO1xyXG4gICAgICAgIGlmICghbGYuRmllbGROYW1lcyB8fCBsZi5GaWVsZE5hbWVzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goJ0lsIExvb2t1cCBub24gaGEgbmVzc3VuIGNhbXBvIGNvbmZpZ3VyYXRvJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9ycztcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBzYXZlQW5kRXhpdEFkZEZpZWxkXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBzYWx2YXJlIGlsIGNhbXBvIGluc2VyaXRvL21vZGlmaWNhdG8uXHJcbiAgICogU2Ugw6ggc3RhdG8gaW5zZXJpdG8gdW4gZmllbGQgY29uIGxhIHN0ZXNzYSBsYWJlbCB2aWVuZSBnZW5lcmF0byB1biBlcnJvcmUgKGxlIGxhYmVsIGRldm9ubyBlc3NlcmUgdW5pdm9jaGUpLlxyXG4gICAqIFVuYSB2b2x0YSBhZ2dpdW50by9hZ2dpb3JuYXRvIGlsIGNhbXBvIG5lbGwnZWxlbmNvIGRlaSBGaWVsZCBkZWxsYSBGb3JtIGNoaXVkZSBpbCBkaWFsb2cgZSByaWNhcmljYSBsYSB0YWJlbGxhXHJcbiAgICogY2hlIG1vc3RyYSBsJ2VsZW5jbyBkZWkgY2FtcGkgYWdnaXVudGkgYWxsYSBmb3JtLlxyXG4gICAqL1xyXG4gIHNhdmVBbmRFeGl0QWRkRmllbGQoc2F2ZTogYm9vbGVhbiwgbmV4dFJlbGF0aXZlSW5kZXg6IG51bWJlciA9IDApIHtcclxuICAgIHRoaXMuc2V0UmVzaXplZEltYWdlc0hlaWdodFB4KCk7XHJcbiAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMpIHsgdGhpcy5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMucmVsb2FkRGF0YSgpOyB9XHJcbiAgICBpZiAoc2F2ZSkge1xyXG5cclxuICAgICAgdGhpcy5maWVsZC5OYW1lID0gdGhpcy5maWVsZC5MYWJlbDtcclxuICAgICAgLy8gcmV0cm9jb21wYXRpYmlsaXTDoCBjb24gdmFsdWVwYWlycyBwZXIgRWxlbmNvIEdlbmVyaWNvXHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdKSB7XHJcbiAgICAgICAgaWYgKCgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuRm9ybXVsYSAmJiAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuRm9ybXVsYSAhPSBcIlwiKSB8fCAoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlU3RyaW5nICYmICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVN0cmluZyAhPSBcIlwiKSkge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMgPSBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkVsZW5jbyBpbW1hZ2luaVwiXSkge1xyXG4gICAgICAgIGlmICgoKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5sZW5ndGggPiAwKSkge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5mb3JFYWNoKChhdHRhY2htZW50KSA9PiB7XHJcbiAgICAgICAgICAgIGF0dGFjaG1lbnQuUmVzaXplZEltYWdlSGVpZ2h0UHggPSAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeDtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bS5JbW1hZ2luZSkge1xyXG4gICAgICAgIGlmICgoKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRHluQXR0YWNobWVudCAhPSBudWxsKSkge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRHluQXR0YWNobWVudC5SZXNpemVkSW1hZ2VIZWlnaHRQeCA9ICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJJbW1hZ2luZSBjb24gbWFya2Vyc1wiXSkge1xyXG4gICAgICAgIGlmICgoKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5EeW5BdHRhY2htZW50ICE9IG51bGwpKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQpLkR5bkF0dGFjaG1lbnQuUmVzaXplZEltYWdlSGVpZ2h0UHggPSAodGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJCb3R0b25lXCJdKSB7XHJcbiAgICAgICAgaWYgKCgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuZm9ybXVsYXNUZW1wICE9IG51bGwpKSB7XHJcblxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLmZvcm11bGFzID0gbmV3IEFycmF5PEtleVR5cGVWYWx1ZT4oKTtcclxuXHJcbiAgICAgICAgICB2YXIgZm9ybXVsYXMgPSAodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuZm9ybXVsYXNUZW1wO1xyXG4gICAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhmb3JtdWxhcyk7XHJcblxyXG4gICAgICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBrZXlzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmICghdGhpcy5pc0FuQWN0aW9uS2V5KGtleSwgdGhpcy5maWVsZCwgZm9ybXVsYXMpKSB7IHJldHVybjsgfVxyXG4gICAgICAgICAgICAgIHZhciBrdHY6IEtleVR5cGVWYWx1ZSA9IG5ldyBLZXlUeXBlVmFsdWUoKTtcclxuICAgICAgICAgICAgICBrdHYua2V5ID0ga2V5O1xyXG4gICAgICAgICAgICAgIGt0di50b29sdGlwID0gZm9ybXVsYXNba2V5XS50b29sdGlwO1xyXG4gICAgICAgICAgICAgIGt0di50eXBlID0gZm9ybXVsYXNba2V5XS50eXBlO1xyXG4gICAgICAgICAgICAgIGt0di52YWx1ZSA9IGZvcm11bGFzW2tleV0udmFsdWU7XHJcbiAgICAgICAgICAgICAgLyoqIHBlciBjYW1waSBjb24gdmFsb3JpIHZpbmNvbGF0aSBhIHVuYSBsaXN0YSwgcG9ydG8gZGlldHJvIHNpYSBpbCB2YWxvcmUgc2VsZXppb25hdG8gY2hlIHF1ZWxsaSBhbW1pc3NpYmlsaSAqL1xyXG4gICAgICAgICAgICAgIGt0di5hbGxvd2VkVmFsdWVzID0gZm9ybXVsYXNba2V5XS5hbGxvd2VkVmFsdWVzO1xyXG4gICAgICAgICAgICAgIGt0di5zZWxlY3RlZEFsbG93ZWRWYWx1ZSA9IGZvcm11bGFzW2tleV0uc2VsZWN0ZWRBbGxvd2VkVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5mb3JtdWxhcy5wdXNoKGt0dik7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG5cclxuXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5zZXRDb2RlVG9FeHRyYUZpZWxkcygpO1xyXG5cclxuICAgICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZygnYWRkLWZvcm0tZmllbGQgc2F2ZScsIHRoaXMuZmllbGQpXHJcbiAgICAgIGxldCBvdXQgPSB7IGZpZWxkOiB0aGlzLmZpZWxkLCByZW9wZW46IG5leHRSZWxhdGl2ZUluZGV4IH1cclxuICAgICAgdGhpcy5zYXZlRmllbGRFdmVudC5lbWl0KG91dCk7XHJcblxyXG5cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBvdXQgPSB7IGZpZWxkOiBudWxsLCByZW9wZW46IG5leHRSZWxhdGl2ZUluZGV4IH1cclxuICAgICAgdGhpcy5zYXZlRmllbGRFdmVudC5lbWl0KG91dCk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gc2F2ZUFuZEV4aXRBZGRGaWVsZFxyXG5cclxuICBpc0FuQWN0aW9uS2V5KGtleSwgZmllbGQ6IEFjdGlvbkJ1dHRvbkZpZWxkLCBmb3JtdWxhczogQXJyYXk8YW55Pikge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImlzQW5BY3Rpb25LZXkgLSBrZXlcIiwga2V5KTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJpc0FuQWN0aW9uS2V5IC0gZmllbGRcIiwgZmllbGQpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcImlzQW5BY3Rpb25LZXkgLSBmb3JtdWxhc1wiLCBmb3JtdWxhcyk7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICAgIC8qdmFyIGNvZGUgPSBmaWVsZC5CdXR0b25Db2RlO1xyXG4gICAgdmFyIGVscyA9IGZvcm11bGFzW2NvZGVdO1xyXG4gICAgcmV0dXJuIChPYmplY3Qua2V5cyhlbHMpLmZpbmQoeCA9PiB4ID09IGtleSkgIT0gbnVsbCk7Ki9cclxuICB9XHJcblxyXG4gIHNldENvZGVUb0V4dHJhRmllbGRzKCkge1xyXG4gICAgaWYgKHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyAhPSBudWxsICYmIHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5maWx0ZXIoeCA9PiB4LkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID09PSB1bmRlZmluZWQpLmZvckVhY2goKHVmaWVsZHMpID0+IHtcclxuICAgICAgICB1ZmllbGRzLkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID0gdGhpcy5maWVsZC5OYW1lO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdWZpZWxkcy5GaWVsZENvbmZpZ1ZhbHVlID09IFwiYm9vbGVhblwiKSB7IHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA9IHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiOyB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyAhPSBudWxsICYmIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcy5maWx0ZXIoeCA9PiB4LkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID09PSB1bmRlZmluZWQpLmZvckVhY2goKHVmaWVsZHMpID0+IHtcclxuICAgICAgICB1ZmllbGRzLkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID0gdGhpcy5maWVsZC5OYW1lO1xyXG4gICAgICAgIGlmICh0eXBlb2YgdWZpZWxkcy5GaWVsZENvbmZpZ1ZhbHVlID09IFwiYm9vbGVhblwiKSB7IHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA9IHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiOyB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIHJlc3RvcmVCYXNlRmllbGRQcm9wZXJ0aWVzXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciByaXByaXN0aW5hcmUgbCdvZ2dldHRvIGZpZWxkIGFsIGNhbWJpbyBkZWwgdGlwbyBzZWxlemlvbmF0by5cclxuICAgKiBMYXNjaWEgdmFsb3JpenphdGUgc29sbyBsZSBwcm9wcmlldMOgIGRlbGwnb2dnZXR0byBCYXNlRmllbGQgY29tdW5lIGEgdHV0dGkgaSB0aXBpIGRpIGNhbXBvLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgcmVzdG9yZUJhc2VGaWVsZFByb3BlcnRpZXMoKSB7XHJcbiAgICBpZiAodGhpcy5maWVsZCkge1xyXG4gICAgICBjb25zdCB0bXBCYXNlRmllbGQgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuZmllbGQsIChrZXksIHZhbHVlKSA9PiBrZXkgPT09ICdGb3JtRm9ybUdyb3VwJyA/IHVuZGVmaW5lZCA6IHZhbHVlKSk7XHJcbiAgICAgIHRoaXMuZmllbGQgPSBuZXcgQmFzZUZpZWxkKCk7XHJcbiAgICAgIHRoaXMuZmllbGQuTGFiZWwgPSB0bXBCYXNlRmllbGQuTGFiZWw7XHJcbiAgICAgIHRoaXMuZmllbGQuRGVzY3JpcHRpb24gPSB0bXBCYXNlRmllbGQuRGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMuZmllbGQuUmVxdWlyZWQgPSB0bXBCYXNlRmllbGQuUmVxdWlyZWQ7XHJcbiAgICAgIHRoaXMuZmllbGQuRmllbGRUeXBlID0gdG1wQmFzZUZpZWxkLkZpZWxkVHlwZTtcclxuICAgICAgdGhpcy5maWVsZC5Gb3JtdWxhID0gdG1wQmFzZUZpZWxkLkZvcm11bGE7XHJcbiAgICAgIHRoaXMuZmllbGQuQ29sU3BhblNpemVzID0gdG1wQmFzZUZpZWxkLkNvbFNwYW5TaXplcztcclxuICAgICAgdGhpcy5maWVsZC5Jbkxpc3RWaWV3ID0gdG1wQmFzZUZpZWxkLkluTGlzdFZpZXc7XHJcbiAgICAgIHRoaXMuZmllbGQuSW52aXNpYmlsaXR5ID0gdG1wQmFzZUZpZWxkLkludmlzaWJpbGl0eTtcclxuICAgICAgdGhpcy5maWVsZC5Ub29sdGlwID0gdG1wQmFzZUZpZWxkLlRvb2x0aXA7XHJcbiAgICAgIHRoaXMuZmllbGQuUmVhZG9ubHkgPSB0bXBCYXNlRmllbGQuUmVhZG9ubHk7XHJcbiAgICAgIHRoaXMuZmllbGQuRmllbGRHcm91cCA9IHRtcEJhc2VGaWVsZC5GaWVsZEdyb3VwO1xyXG4gICAgICB0aGlzLmZpZWxkLlZpc2libGVJZiA9IHRtcEJhc2VGaWVsZC5WaXNpYmxlSWY7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8vI3JlZ2lvbiByZXN0b3JlQmFzZUZpZWxkUHJvcGVydGllc1xyXG5cclxuICBjb3VudFZhbHVlUGFpcnModmFsdWVQYWlycyk6IG51bWJlciB7XHJcbiAgICBpZiAodmFsdWVQYWlycykge1xyXG4gICAgICByZXR1cm4gT2JqZWN0LmtleXModmFsdWVQYWlycykubGVuZ3RoO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gQ29uZmlndXJlQ29sdW1uc1xyXG4gIGNvbmZpZ3VyZUNvbHVtbnMoKSB7XHJcblxyXG4gICAgLy8gTGlzdGEgR2VuZXJpY2EgZGkgaW1tYWdpbmlcclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcyA9IFtdO1xyXG5cclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiAnYWN0aW9uJywgZGlzcGxheTogJycsIHR5cGU6IFR5cGVDb2x1bW4uTWVudUFjdGlvbiwgYnV0dG9uTWVudUljb246ICdtb3JlX3ZlcnQnLCBzdHlsZXM6IHsgZmxleDogJzAgMCA2JScgfSxcclxuICAgICAgYWN0aW9uczogW1xyXG4gICAgICAgIHsgbmFtZTogJ0VsaW1pbmEnLCBpY29uOiAnZGVsZXRlJywgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PiB0aGlzLmRlbGV0ZUxpc3RJbWFnZShlbGVtZW50LCBpbmRleCwgY29sKSB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6IFwiU3Bvc3RhIHN1XCIsXHJcbiAgICAgICAgICBpY29uOiBcImFycm93X3Vwd2FyZFwiLFxyXG4gICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1vdmVFbGVtZW50KGVsZW1lbnQsIHRydWUpLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IChlbGVtZW50KSA9PiB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LmluZGV4T2YoZWxlbWVudCkgPT09IDAsXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBcIlNwb3N0YSBnacO5XCIsXHJcbiAgICAgICAgICBpY29uOiBcImFycm93X2Rvd253YXJkXCIsXHJcbiAgICAgICAgICBmbjogKGVsZW1lbnQsIGluZGV4LCBjb2wpID0+XHJcbiAgICAgICAgICAgIHRoaXMubW92ZUVsZW1lbnQoZWxlbWVudCwgZmFsc2UpLFxyXG4gICAgICAgICAgZGlzYWJsZWQ6IChlbGVtZW50KSA9PlxyXG4gICAgICAgICAgICB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LmluZGV4T2YoZWxlbWVudCkgPj0gdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5sZW5ndGggLSAxLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF1cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiBcIkZpbGVEYXRhQmFzZTY0XCIsXHJcbiAgICAgIGRpc3BsYXk6IFwiSW1tYWdpbmVcIixcclxuICAgICAgdHlwZTogVHlwZUNvbHVtbi5FeHRlcm5hbFRlbXBsYXRlLFxyXG4gICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLkdlbmVyaWNMaXN0SW1hZ2VzSW1hZ2VUZW1wbGF0ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb25maWdDb2x1bW5MaXN0SW1hZ2VzLnB1c2goe1xyXG4gICAgICBrZXk6IFwiQnV0dG9uS2V5XCIsXHJcbiAgICAgIGRpc3BsYXk6IFwiQ2hpYXZlKlwiLFxyXG4gICAgICB0eXBlOiBUeXBlQ29sdW1uLkV4dGVybmFsVGVtcGxhdGUsXHJcbiAgICAgIGV4dGVybmFsVGVtcGxhdGU6IHRoaXMuR2VuZXJpY0xpc3RJbWFnZXNLZXlUZW1wbGF0ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb25maWdDb2x1bW5MaXN0SW1hZ2VzLnB1c2goe1xyXG4gICAgICBrZXk6IFwiQnV0dG9uVmFsdWVcIixcclxuICAgICAgZGlzcGxheTogXCJWYWxvcmUqXCIsXHJcbiAgICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgZXh0ZXJuYWxUZW1wbGF0ZTogdGhpcy5HZW5lcmljTGlzdEltYWdlc1ZhbHVlVGVtcGxhdGUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiBcIkltYWdlV2lkdGhQeFwiLFxyXG4gICAgICBkaXNwbGF5OiBcIkxhcmdoZXp6YVwiXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiBcIkltYWdlSGVpZ2h0UHhcIixcclxuICAgICAgZGlzcGxheTogXCJBbHRlenphXCJcclxuICAgIH0pO1xyXG5cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIENvbmZpZ3VyZUNvbHVtbnNcclxuXHJcbiAgLy8jcmVnaW9uIG1vdmVFbGVtZW50XHJcbiAgcHJpdmF0ZSBtb3ZlRWxlbWVudChcclxuICAgIGVsZW1lbnQ6IER5bkF0dGFjaG1lbnQsXHJcbiAgICBtb3ZlVXA6IGJvb2xlYW5cclxuICApIHtcclxuICAgIGNvbnN0IHN0YXJ0aW5nSW5kZXggPSB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LmluZGV4T2YoZWxlbWVudCk7XHJcbiAgICBjb25zdCBlbmRpbmdJbmRleCA9IHN0YXJ0aW5nSW5kZXggKyAobW92ZVVwID8gLTEgOiAxKTtcclxuXHJcbiAgICB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LnNwbGljZShzdGFydGluZ0luZGV4LCAxKTtcclxuICAgIHRoaXMuZmllbGQuQXR0YWNobWVudExpc3Quc3BsaWNlKGVuZGluZ0luZGV4LCAwLCBlbGVtZW50KTtcclxuXHJcbiAgICB0aGlzLnNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCk7XHJcbiAgICBpZiAodGhpcy5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMpIHsgdGhpcy5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMucmVsb2FkRGF0YSgpOyB9XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBtb3ZlRWxlbWVudFxyXG5cclxuICAvLyNyZWdpb24gc2V0RmllbGRPcmRpbmFsUG9zaXRpb25cclxuICBwcml2YXRlIHNldEZpZWxkT3JkaW5hbFBvc2l0aW9uKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QpIHtcclxuICAgICAgdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5mb3JFYWNoKChmaWVsZCkgPT4ge1xyXG4gICAgICAgIGZpZWxkLk9yZGluYWxQb3NpdGlvbiA9IHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QuaW5kZXhPZihmaWVsZCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gc2V0RmllbGRPcmRpbmFsUG9zaXRpb25cclxuXHJcbiAgc2V0UmVzaXplZEltYWdlc0hlaWdodFB4KCkge1xyXG4gICAgdGhpcy5yZXNpemVkSW1hZ2VzSGVpZ2h0UHggPSB0aGlzLmZpZWxkLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeDtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUxpc3RJbWFnZShlbDogRHluQXR0YWNobWVudCwgaTogbnVtYmVyLCBjb2w6IG51bWJlcikge1xyXG4gICAgRXFwRHluYW1pY01vZHVsZURpYWxvZ1NlcnZpY2UuQ29uZmlybSgnRWxpbWluYXJlIHF1ZXN0YSBpbW1hZ2luZT8nLCAoKSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGQuQXR0YWNobWVudExpc3Quc3BsaWNlKGVsLm9yaWdpbmFsSW5kZXgsIDEpO1xyXG4gICAgICBpZiAodGhpcy5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMpIHsgdGhpcy5pbWFnZVNlbGVjdG9yQXR0YWNobWVudHMucmVsb2FkRGF0YSgpOyB9XHJcblxyXG4gICAgfSwgZmFsc2UsICdSaWNoaWVzdGEgY29uZmVybWEnKTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUltYWdlKGVsOiBEeW5BdHRhY2htZW50KSB7XHJcbiAgICB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIERCIEdFVFRFUlxyXG4gIG9wZW5EQkdldHRlcigpIHtcclxuICAgIGlmICh0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50ICE9IG51bGwgJiYgIXRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMudXNlRHluYW1pY01vZHVsZU1vY2spIHtcclxuXHJcbiAgICAgIHRoaXMuUXVlcnlFZGl0b3JDb21wb25lbnQuaW5wdXRQYXJhbXMuY29uZmlnLm1vZGUgPSBRdWVyeUVkaXRvck1vZGVFbnVtLkNPTVBPU0VSO1xyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5sb2FkUXVlcnlTdGF0dXNlcyA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWU7XHJcblxyXG4gICAgICB0aGlzLmRpYWxvZ1FFUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ1FFLCB7XHJcbiAgICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICAgIHBhbmVsQ2xhc3M6ICdxdWVyeS1lZGl0b3ItbW9kYWwnLFxyXG4gICAgICAgIHdpZHRoOiAnOTAlJ1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9IGVsc2Uge1xyXG5cclxuICAgICAgdGhpcy5odHRwQ2xpZW50LmdldCgnLi9hc3NldHMvbW9ja3Vwcy9tb2NrZWRGcm9tUXVlcnlFZGl0b3JfUVVFUllfV0lUSF9RVUVTVElPTi50eHQnLCB7IHJlc3BvbnNlVHlwZTogJ3RleHQnIH0pXHJcbiAgICAgICAgLnN1YnNjcmliZShtb2NrZWRGcm9tUXVlcnlFZGl0b3IgPT4ge1xyXG4gICAgICAgICAgdGhpcy50cmVhdERhdGFGcm9tUXVlcnlFZGl0b3IoSlNPTi5wYXJzZShtb2NrZWRGcm9tUXVlcnlFZGl0b3IpLlBhcmFtcyk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY2xvc2VRRU1vZGFsKCkge1xyXG4gICAgdGhpcy5kaWFsb2dRRVJlZi5jbG9zZSgpO1xyXG4gIH1cclxuXHJcbiAgb25FeHRlcm5hbENvbXBvbmVudE91dChldjogZXZlbnRPdXQpIHtcclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJzZW5kLW91dFwiKSAhPSAtMSkgeyB0aGlzLm91dC5lbWl0KGV2KTsgfVxyXG4gICAgaWYgKGV2LkJlaGF2aW91cnMuaW5kZXhPZihcImNsb3NlLW1vZGFsXCIpICE9IC0xKSB7IHRoaXMuY2xvc2VRRU1vZGFsKCk7IH1cclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJzYXZlLXF1ZXJ5XCIpICE9IC0xKSB7XHJcblxyXG4gICAgICB0aGlzLnRyZWF0RGF0YUZyb21RdWVyeUVkaXRvcihldi5QYXJhbXMpO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHRyZWF0RGF0YUZyb21RdWVyeUVkaXRvcihkYXRhOiBhbnkpIHtcclxuICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgPSBkYXRhO1xyXG4gICAgdGhpcy5jcmVhdGVDb2x1bW5LZXlzKGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgY3JlYXRlQ29sdW1uS2V5cyhkYXRhKSB7XHJcbiAgICBpZiAoZGF0YSA9PSBudWxsICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbCkgeyBkYXRhID0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZTsgfVxyXG4gICAgaWYgKGRhdGEgPT0gbnVsbCB8fCB0eXBlb2YgZGF0YSA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xyXG5cclxuICAgIC8vIFYyIChEYXRhR2V0dGVyQ29kZVZlcnNpb24gPT09IDIpOiBzZWxlY3RlZEZpZWxkcyDDqCBkZW50cm8gcXVlcnlDb21tYW5kRGF0YWJhc2VDb25maWd1cmF0aW9uXHJcbiAgICBjb25zdCBpc1YyID0gZGF0YS5EYXRhR2V0dGVyQ29kZVZlcnNpb24gPT09IDI7XHJcbiAgICBjb25zdCBzZWxlY3RlZEZpZWxkcyA9IGlzVjJcclxuICAgICAgPyBkYXRhLnF1ZXJ5Q29tbWFuZERhdGFiYXNlQ29uZmlndXJhdGlvbj8uc2VsZWN0ZWRGaWVsZHNcclxuICAgICAgOiBkYXRhLnNlbGVjdGVkRmllbGRzO1xyXG5cclxuICAgIGlmIChzZWxlY3RlZEZpZWxkcyAhPSBudWxsICYmIHR5cGVvZiBzZWxlY3RlZEZpZWxkcyAhPSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgIHRoaXMuY29sdW1uS2V5cyA9IG5ldyBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCk7XHJcbiAgICAgIHNlbGVjdGVkRmllbGRzLmZvckVhY2goKGtleSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0ga2V5LkN1cnJlbnRUcmFuc2xhdGUgfHwga2V5LlByb3BlcnR5TmFtZTtcclxuICAgICAgICB0aGlzLmNvbHVtbktleXMucHVzaCh7IGtleToga2V5LkRhdGFiYXNlVGFibGVOYW1lICsgXCJfXCIgKyBrZXkuUHJvcGVydHlOYW1lICsgXCJfX1wiICsgbGFiZWwucmVwbGFjZShcIiBcIiwgXCJfXCIpLCB2YWx1ZTogbGFiZWwgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gVjI6IHNlIGMnw6ggdW5hIHNvbGEgY29sb25uYSBkaXNwb25pYmlsZSwgc2VsZXppb25hbGEgYXV0b21hdGljYW1lbnRlXHJcbiAgICAgIGlmIChpc1YyICYmIHRoaXMuY29sdW1uS2V5cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID0gdGhpcy5jb2x1bW5LZXlzWzBdLmtleTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gVjI6IGF1dG8tc2VsZXppb25hIGxhIGNvbG9ubmEgc3VnZ2VyaXRhIGRhbGwnQUkgbmVsIHBhbm5lbGxvIGRpIGNvbmZpZ3VyYXppb25lXHJcbiAgICAgIGlmIChpc1YyICYmIGRhdGEuRGF0YUdldHRlckNvbHVtbkZvcmNlPy5rZXkpIHtcclxuICAgICAgICBjb25zdCBtYXRjaCA9IHRoaXMuY29sdW1uS2V5cy5maW5kKGsgPT4gay5rZXkgPT09IGRhdGEuRGF0YUdldHRlckNvbHVtbkZvcmNlLmtleSk7XHJcbiAgICAgICAgaWYgKG1hdGNoKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID0gbWF0Y2gua2V5O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gREIgR0VUVEVSXHJcblxyXG4gIGdldEFsbE1vZHVsZXMoKSB7XHJcbiAgICBjb25zdCBkeW5hbWljTW9kdWxlUGFyYW1zOiBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+ID1cclxuICAgICAgbmV3IEFycmF5PEVuZFBvaW50RGF0YVBhcmFtcz4oKTtcclxuICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMucHVzaCh7XHJcbiAgICAgIFBhcmFtTmFtZTogXCJvcmdhaWRcIixcclxuICAgICAgUGFyYW1WYWx1ZTogdGhpcy5mb3JtLk9yZ2FJRCxcclxuICAgICAgUGFyYW1UeXBlOiBQYXJhbVR5cGVFbnVtW1wiUXVlcnkgcGFyYW1cIl0sXHJcbiAgICB9KTtcclxuICAgIHRoaXMudXRpbGl0eUhlbHBlclNlcnZpY2UuUnVuRW5kUG9pbnRDYWxsKFxyXG4gICAgICB0aGlzLmVuZFBvaW50Q29uZmlndXJhdGlvbi5Gb3Jtcy5HZXRBbGxGb3JtRW5kUG9pbnQsXHJcbiAgICAgIGR5bmFtaWNNb2R1bGVQYXJhbXMsXHJcbiAgICAgIChyZXM6IEFycmF5PEZvcm0+KSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHJlcztcclxuICAgICAgICB0aGlzLmZvcm1zID0gdGhpcy5mb3Jtcy5zb3J0KCh1bm8sIGR1ZSkgPT4gdW5vLk5hbWUubG9jYWxlQ29tcGFyZShkdWUuTmFtZSkpO1xyXG5cclxuICAgICAgICB0aGlzLkRNRmllbGQgPSBudWxsO1xyXG4gICAgICAgIGlmICh0aGlzLkRNTW9kdWxlID09IG51bGwgJiYgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLkRNTW9kdWxlID0gdGhpcy5mb3Jtcy5maW5kKHggPT4geC5Db2RlID09IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUpO1xyXG4gICAgICAgICAgdGhpcy5ETU1vZHVsZS5GaWVsZHMgPSBKU09OLnBhcnNlKHRoaXMuRE1Nb2R1bGUuSnNvbkZpZWxkcyk7XHJcbiAgICAgICAgICB0aGlzLkRNRmllbGRzID0gbmV3IEFycmF5PHsga2V5OiBzdHJpbmcgfT4oKTtcclxuICAgICAgICAgIHRoaXMuRE1Nb2R1bGUuRmllbGRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuRE1GaWVsZHMucHVzaCh7IGtleTogZWxlbWVudC5WYWx1ZS5OYW1lIH0pO1xyXG4gICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgdGhpcy5ETUZpZWxkcyA9IHRoaXMuRE1GaWVsZHMuc29ydCgodW5vLCBkdWUpID0+IHVuby5rZXkubG9jYWxlQ29tcGFyZShkdWUua2V5KSk7XHJcblxyXG4gICAgICAgICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLkRNRmllbGQgPSB0aGlzLkRNRmllbGRzLmZpbmQoeCA9PiB4LmtleSA9PSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICB9LFxyXG4gICAgICAoZXJyKSA9PiB7IH1cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZURNTW9kdWxlKCkge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInRoaXMuLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlXCIsIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUpO1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcInRoaXMuRE1Nb2R1bGVcIiwgdGhpcy5ETU1vZHVsZSk7XHJcbiAgICBpZiAodGhpcy5ETU1vZHVsZSAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuRE1Nb2R1bGUuRmllbGRzID0gSlNPTi5wYXJzZSh0aGlzLkRNTW9kdWxlLkpzb25GaWVsZHMpO1xyXG4gICAgICB0aGlzLkRNRmllbGRzID0gbmV3IEFycmF5PHsga2V5OiBzdHJpbmcgfT4oKTtcclxuICAgICAgdGhpcy5ETU1vZHVsZS5GaWVsZHMuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgICAgICB0aGlzLkRNRmllbGRzLnB1c2goeyBrZXk6IGVsZW1lbnQuVmFsdWUuTmFtZSB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID0gdGhpcy5ETU1vZHVsZS5Db2RlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ETU1vZHVsZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkRNRmllbGQgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRE1GaWVsZCgpIHtcclxuICAgIGlmICh0aGlzLkRNRmllbGQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID0gdGhpcy5ETUZpZWxkLmtleTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2UgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VETUNvbnRlc3R1YWxpemF0aW9uKCkge1xyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIm9uQ2hhbmdlRE1Db250ZXN0dWFsaXphdGlvbigpXCIsIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29udGVzdHVhbGl6YXRpb24pO1xyXG4gIH1cclxuXHJcbiAgY2hhbmdlZEJ1dHRvbkZpZWxkKGZpZWxkOiBBY3Rpb25CdXR0b25GaWVsZCkge1xyXG4gICAgdGhpcy5maWVsZCA9IGZpZWxkO1xyXG4gIH1cclxuXHJcbiAgY29uZmlndXJlRmllbGRzRXh0cmEoKSB7XHJcblxyXG4gICAgdmFyIHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzOiBBcnJheTxGaWVsZEV4dHJhVmFsdWVzPiA9IHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsID8gbnVsbCA6IHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5maWx0ZXIoeCA9PiB4LkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID09IHRoaXMuZmllbGQuTmFtZSk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGRzRXh0cmFDb25maWcgIT0gbnVsbCAmJiB0aGlzLmZpZWxkc0V4dHJhQ29uZmlnLmxlbmd0aCA+IDAgJiYgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzID09IG51bGwgJiYgKHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzID09IG51bGwgfHwgdGhpc0ZpZWxkRXh0cmFDb25maWdWYWx1ZXMubGVuZ3RoID09IDApKSB7XHJcbiAgICAgIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IG5ldyBBcnJheTxhbnk+KCk7XHJcbiAgICAgIHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzID0gbmV3IEFycmF5PEZpZWxkRXh0cmFWYWx1ZXM+KCk7XHJcbiAgICAgIHRoaXMuZmllbGRzRXh0cmFDb25maWcuZm9yRWFjaCgoZmllbGRFeHRyYUNvbmZpZykgPT4ge1xyXG5cclxuICAgICAgICB2YXIgbmV3ZmllbGQ6IEZpZWxkRXh0cmFWYWx1ZXMgPSBuZXcgRmllbGRFeHRyYVZhbHVlcygpO1xyXG4gICAgICAgIG5ld2ZpZWxkLkZpZWxkQ29uZmlnQ29kZSA9IGZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdDb2RlO1xyXG4gICAgICAgIG5ld2ZpZWxkLkZpZWxkQ29uZmlnUGFyZW50RmllbGRDb2RlID0gdGhpcy5maWVsZC5OYW1lO1xyXG5cclxuICAgICAgICBpZiAoZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ1R5cGUgPT0gRmllbGRUeXBlRW51bVsnQm9vbGVhbm8nXSkge1xyXG4gICAgICAgICAgbmV3ZmllbGQuRmllbGRDb25maWdWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoZmllbGRFeHRyYUNvbmZpZy5GaWVsZENvbmZpZ1R5cGUgPT0gRmllbGRUeXBlRW51bVsnQ2FtcG8gZGkgdGVzdG8nXSkge1xyXG4gICAgICAgICAgbmV3ZmllbGQuRmllbGRDb25maWdWYWx1ZSA9IFwiXCI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMucHVzaChuZXdmaWVsZCk7XHJcbiAgICAgICAgdGhpc0ZpZWxkRXh0cmFDb25maWdWYWx1ZXMucHVzaChuZXdmaWVsZCk7XHJcblxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgPT0gbnVsbCkgeyB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgPSBuZXcgQXJyYXk8RmllbGRFeHRyYVZhbHVlcz4oKTsgfVxyXG4gICAgICB0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlcy5mb3JFYWNoKChlY3YpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMucHVzaChlY3YpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWVsZHNFeHRyYUNvbmZpZyAhPSBudWxsICYmIHRoaXMuZmllbGRzRXh0cmFDb25maWcubGVuZ3RoID4gMCAmJiB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCAmJiAodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID09IG51bGwgfHwgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMuZm9yRWFjaCgoZXh0cmFmaWVsZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5wdXNoKGV4dHJhZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmxvYWRlZEZpZWxkRXh0cmEgPSB0cnVlO1xyXG4gIH1cclxuXHJcbn1cclxuIiwiPG1hdC1jYXJkIGNsYXNzPVwiYWRkLWZvcm0tZmllbGRcIj5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBIRUFERVIgY29uIHNmb25kbyAtLT5cclxuICAgIDxtYXQtY2FyZC1oZWFkZXIgY2xhc3M9XCJhZGQtZmllbGQtaGVhZGVyIHctMTAwXCI+XHJcbiAgICAgICAgPG1hdC1jYXJkLXRpdGxlIGNsYXNzPVwidy0xMDAgZC1mbGV4IGp1c3RpZnktY29udGVudC1iZXR3ZWVuIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXhGaWVsZCAhPSBudWxsICYmIGluZGV4RmllbGQgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYmctZGFuZ2VyIHRleHQtd2hpdGVcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UsIC0xKVwiPuKGkCBBbm51bGxhPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYmctc3VjY2VzcyB0ZXh0LXdoaXRlXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQW5kRXhpdEFkZEZpZWxkKHRydWUsIC0xKVwiPuKGkCBTYWx2YTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhlYWRlci10aXRsZVwiIG1hdFRvb2x0aXA9XCJJbmRleCB7e2luZGV4RmllbGR9fVwiPlxyXG4gICAgICAgICAgICAgICAge3sgaW5kZXhGaWVsZCAhPSBudWxsICYmIGluZGV4RmllbGQgPj0gMCA/IFwiTW9kaWZpY2FcIiA6IFwiQWdnaXVuZ2lcIiB9fSBjYW1wb1xyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpbmRleEZpZWxkICE9IG51bGwgJiYgaW5kZXhGaWVsZCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zbSBiZy1kYW5nZXIgdGV4dC13aGl0ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUFuZEV4aXRBZGRGaWVsZChmYWxzZSwgMSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaW5kZXhGaWVsZCA9PSB0aGlzLmZvcm0uRmllbGRzLmxlbmd0aCAtIDEgPyBcIkFubnVsbGEgZSBhZ2dpdW5naVwiIDogXCJBbm51bGxhIOKGklwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYmctc3VjY2VzcyB0ZXh0LXdoaXRlXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQW5kRXhpdEFkZEZpZWxkKHRydWUsIDEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGluZGV4RmllbGQgPT0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggLSAxID8gXCJTYWx2YSBlIGFnZ2l1bmdpXCIgOiBcIlNhbHZhIOKGklwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cclxuICAgIDwvbWF0LWNhcmQtaGVhZGVyPlxyXG4gICAgPCEtLSNlbmRyZWdpb24gSEVBREVSIC0tPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmaWVsZC1haS1hY3Rpb25zLXJvd1wiPlxyXG4gICAgICAgIDxidXR0b24gbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWFpLWZpZWxkXCIgKGNsaWNrKT1cIm9uT3BlbkFpRWRpdEZvckZpZWxkKClcIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICBNb2RpZmljYSBjb24gQUlcclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIDxtYXQtY2FyZC1jb250ZW50PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluZXItZmx1aWQgY29udGFpbmVyQ29udGVudFwiPlxyXG4gICAgICAgICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCIgc3R5bGU9XCJoZWlnaHQ6IDEwMCU7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gQVJFQSBQUklOQ0lQQUxFICgyIHJpZ2hlIGNvbXBhdHRlKSAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyIGVxcC1kZm9ybS1hZGQtZm9ybS1maWVsZC1tYWluXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFJJR0EgMTogVGlwbywgQ29kaWNlLCBEZXNjcml6aW9uZSwgU2V6aW9uZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTEgdGlwb0NhbXBvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydGaWVsZFR5cGUnXS5zdGF0dXMgIT0gJ1ZBTElEJyAmJiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRmllbGRUeXBlJ10udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gY2FtcG8gKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIkZpZWxkVHlwZUVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRmllbGRUeXBlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkZpZWxkVHlwZUNoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInRmllbGRUeXBlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW51bURhdGFUb0V4Y2x1ZGVdPVwiZmllbGRUeXBlc1RvRXhjbHVkZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTGFiZWwnXS5zdGF0dXMgIT0gJ1ZBTElEJyAmJiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTGFiZWwnXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29kaWNlICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbFwiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uTGFiZWxDaGFuZ2VGb3JQcmV2aWV3KCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkxhYmVsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydMYWJlbCddLmVycm9ycz8uWydyZXF1aXJlZCddXCI+T2JibGlnYXRvcmlvPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPlNvbG8gbGV0dGVyZSBhLXo8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTGFiZWwnXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2U8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydEZXNjcmlwdGlvbiddLnN0YXR1cyAhPSAnVkFMSUQnICYmIGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydEZXNjcmlwdGlvbiddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXNjcml6aW9uZSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkRlc2NyaXB0aW9uXCIgZm9ybUNvbnRyb2xOYW1lPVwiRGVzY3JpcHRpb25cIiByZXF1aXJlZCBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRGVzY3JpcHRpb25cIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5EZXNjcmlwdGlvbilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVzY3JpcHRpb24nXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPk9iYmxpZ2F0b3JpbzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydEZXNjcmlwdGlvbiddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZTwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTFcIiAqbmdJZj1cImZvcm1GaWVsZHNHcm91cHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0ZpZWxkR3JvdXAnXS5zdGF0dXMgIT0gJ1ZBTElEJyAmJiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRmllbGRHcm91cCddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXppb25lICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZm9ybUZpZWxkc0dyb3Vwc1wiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5GaWVsZEdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidOYW1lJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInRmllbGRHcm91cCdcIiByZXF1aXJlZCBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIFJJR0EgMSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gUklHQSAyOiBUb2dnbGUgKyBSZWFkT25seSBJZiArIEFnZ3JlZ2F6aW9uaSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTEgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5SZXF1aXJlZFwiIGZvcm1Db250cm9sTmFtZT1cIlJlcXVpcmVkXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmJsaWdhdG9yaW9cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTEgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5SZWFkb25seVwiIGZvcm1Db250cm9sTmFtZT1cIlJlYWRvbmx5XCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhZE9ubHlcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5SZWFkT25seSBJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiUmVhZG9ubHlJZlwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuUmVhZG9ubHlJZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5SZWFkT25seUlmRGlhbG9nKClcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5SZWFkb25seUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTEgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgKm5nSWY9XCJhZ2dyZWdhdGlvbkZpZWxkTG9hZGVkXCIgW3BsYWNlaG9sZGVyXT1cIidBZ2dyZWdhemlvbmknXCIgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW51bURhdGFdPVwiYWdncmVnYXRpb25GdW5jdGlvbkVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQWdncmVnYXRpb25zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBSSUdBIDIgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBBUkVBIFBSSU5DSVBBTEUgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gQVJFQSBUQUJTIC0tPlxyXG4gICAgICAgICAgICAgICAgPG1hdC10YWItZ3JvdXAgY2xhc3M9XCJlcXAtZGZvcm0tYWRkLWZvcm0tZmllbGQtdGFic1wiIG1hdC1zdHJldGNoLXRhYnM9XCJmYWxzZVwiIG1hdC1hbGlnbi10YWJzPVwic3RhcnRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gU1RJTEUgQ09NUElMQVpJT05FIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiU3RpbGUgQ29tcGlsYXppb25lXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciB0aXBpIE5PTiBUZXh0RmllbGQsIE5PTiBOdW1lcmljRmllbGQsIE5PTiBUZXh0YXJlYUZpZWxkLCBOT04gQm9vbGVhbkZpZWxkLCBOT04gQXR0YWNobWVudEZpZWxkLCBOT04gTGFiZWxGaWVsZCwgTk9OIERhdGVGaWVsZCwgTk9OIEFjdGlvbkJ1dHRvbkZpZWxkLCBOT04gSW1hZ2VGaWVsZCwgTk9OIEltYWdlV2l0aE1hcmtlcnNGaWVsZCwgTk9OIExpc3RWYWx1ZUZpZWxkOiBzZXppb25lIEdlbmVyYWxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzVGV4dEZpZWxkICYmICFpc051bWVyaWNGaWVsZCAmJiAhaXNUZXh0YXJlYUZpZWxkICYmICFpc0Jvb2xlYW5GaWVsZCAmJiAhaXNBdHRhY2htZW50RmllbGQgJiYgIWlzTGFiZWxGaWVsZCAmJiAhaXNEYXRlRmllbGQgJiYgIWlzQWN0aW9uQnV0dG9uRmllbGQgJiYgIWlzSW1hZ2VGaWVsZCAmJiAhaXNJbWFnZVdpdGhNYXJrZXJzRmllbGQgJiYgIWlzTGlzdFZhbHVlRmllbGQgJiYgIWlzSW1hZ2VTZWxlY3RvckZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExhYmVsc3R5bGVDU1MgZSBGaWVsZHN0eWxlQ1NTOiBuYXNjb3N0aSwgbWFudGVudXRpIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIFRleHRGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGV4dEZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExhYmVsc3R5bGVDU1MgZSBGaWVsZHN0eWxlQ1NTOiBuYXNjb3N0aSwgbWFudGVudXRpIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cInRleHRGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRUZXh0RmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZFRleHRGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiB0ZXh0RmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0U3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkVGV4dEZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRUZXh0RmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIE51bWVyaWNGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTnVtZXJpY0ZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExhYmVsc3R5bGVDU1MgZSBGaWVsZHN0eWxlQ1NTOiBuYXNjb3N0aSwgbWFudGVudXRpIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cIm51bWVyaWNGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZE51bWVyaWNGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBudW1lcmljRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TnVtZXJpY1N0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZE51bWVyaWNGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0TnVtZXJpY1N0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZE51bWVyaWNGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgVGV4dGFyZWFGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzVGV4dGFyZWFGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJ0ZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZFRleHRhcmVhRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZFRleHRhcmVhRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgdGV4dGFyZWFGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRUZXh0YXJlYVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZFRleHRhcmVhRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldFRleHRhcmVhU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkVGV4dGFyZWFGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgQm9vbGVhbkZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNCb29sZWFuRmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWxzdHlsZUNTUyBlIEZpZWxkc3R5bGVDU1M6IG5hc2Nvc3RpLCBtYW50ZW51dGkgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYm9vbGVhbkZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkQm9vbGVhbkZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGJvb2xlYW5GaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRCb29sZWFuU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkQm9vbGVhbkZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRCb29sZWFuU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkQm9vbGVhbkZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBEYXRlRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgKDUgZWxlbWVudGksIDUgc3RhdGkpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNEYXRlRmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJkYXRlRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWREYXRlRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgZGF0ZUZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldERhdGVTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWREYXRlRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldERhdGVTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWREYXRlRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIExhYmVsRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgKDEgZWxlbWVudG8sIDIgc3RhdGkpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMYWJlbEZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwibGFiZWxGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRMYWJlbEZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRMYWJlbEZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGxhYmVsRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0TGFiZWxTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRMYWJlbEZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRMYWJlbFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZExhYmVsRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEF0dGFjaG1lbnRGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXR0YWNobWVudEZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkQXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGF0dGFjaG1lbnRGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRBdHRhY2htZW50U3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkQXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRBdHRhY2htZW50U3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkQXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBBY3Rpb25CdXR0b25GaWVsZDogc2V6aW9uZSBHcmFmaWNhICgzIGVsZW1lbnRpLCAzIHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQWN0aW9uQnV0dG9uRmllbGRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRBY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkQWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgYWN0aW9uQnV0dG9uRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0QWN0aW9uQnV0dG9uU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkQWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEFjdGlvbkJ1dHRvblN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBJbWFnZUZpZWxkOiBzZXppb25lIEdyYWZpY2EgKDMgZWxlbWVudGksIDIgc3RhdGkpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbWFnZUZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiaW1hZ2VGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRJbWFnZUZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRJbWFnZUZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGltYWdlRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0SW1hZ2VTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRJbWFnZUZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRJbWFnZVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEltYWdlV2l0aE1hcmtlcnNGaWVsZDogc2V6aW9uZSBHcmFmaWNhICgzIGVsZW1lbnRpLCAyIHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRJbWFnZVdpdGhNYXJrZXJzU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRJbWFnZVdpdGhNYXJrZXJzU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBMaXN0VmFsdWVGaWVsZDogc2V6aW9uZSBHcmFmaWNhIChlbGVtZW50aSBkaW5hbWljaSBwZXIgbW9kYWxpdMOgLCA1IHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGlzdFZhbHVlRmllbGRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJsaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRMaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkTGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgbGlzdFZhbHVlU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldExpc3RWYWx1ZVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZExpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRMaXN0VmFsdWVTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRMaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgSW1hZ2VTZWxlY3RvckZpZWxkOiBzZXppb25lIEdyYWZpY2EgKDMgZWxlbWVudGksIDUgc3RhdGkpIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNJbWFnZVNlbGVjdG9yRmllbGRcIj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJpbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRJbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgaW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEltYWdlU2VsZWN0b3JTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRJbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldEltYWdlU2VsZWN0b3JTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRJbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtdGFiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIFNUSUxFIENPTVBJTEFaSU9ORSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gU1RJTEUgUklTUE9TVEEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJTdGlsZSBSaXNwb3N0YVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzUmlzcG9zdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0Fuc3dlclN0eWxlQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYWJlbCBjc3M8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiQW5zd2VyU3R5bGVMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiQW5zd2VyU3R5bGVMYWJlbHN0eWxlQ1NTXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuQW5zd2VyU3R5bGUuTGFiZWxzdHlsZUNTU1wiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkFuc3dlclN0eWxlLkxhYmVsc3R5bGVDU1MpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5GaWVsZCBjc3M8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiQW5zd2VyU3R5bGVGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiQW5zd2VyU3R5bGVGaWVsZHN0eWxlQ1NTXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuQW5zd2VyU3R5bGUuRmllbGRzdHlsZUNTU1wiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkFuc3dlclN0eWxlLkZpZWxkc3R5bGVDU1MpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkFuc3dlclN0eWxlLkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJBbnN3ZXJTdHlsZUluTGlzdFZpZXdcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0Fuc3dlclN0eWxlSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0Vmlld1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoCBkZWwgY2FtcG9cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkFuc3dlclN0eWxlLkludmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQW5zd2VyU3R5bGVJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJBbnN3ZXJTdHlsZVZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIkFuc3dlclN0eWxlVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuQW5zd2VyU3R5bGVWaXNpYmxlSWZEaWFsb2coKVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBTVElMRSBSSVNQT1NUQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gU1BFQ0lGSUNIRSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlNwZWNpZmljaGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpZWxkVHlwZUZvcm1UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBTUEVDSUZJQ0hFIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBNT0RBTElUQScgUkVDVVBFUk8gREFUSSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIk1vZGFsaXTDoCByZWN1cGVybyBkYXRpXCIgKm5nSWY9XCJmaWVsZC5GaWVsZFR5cGUgIT0gRmllbGRUeXBlRW51bVsnQm90dG9uZSBhemlvbmUnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZGF0YUdldHRlclR5cGVFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRGF0YUdldHRlclR5cGVDaGFuZ2UoKVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidEYXRhR2V0dGVyVHlwZSdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSAhPSBkYXRhR2V0dGVyVHlwZUVudW0uTWFudWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlIGRpIERlZmF1bHQ8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEYXRhR2V0dGVyVmFsdWVcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgIT0gZGF0YUdldHRlclR5cGVFbnVtLkZvcm11bGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkZvcm11bGEgKEphdmFzY3JpcHQpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRm9ybXVsYVwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRm9ybXVsYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkZvcm11bGFEaWFsb2coKVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkZvcm11bGEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IGRhdGFHZXR0ZXJUeXBlRW51bVsnRGEgZGF0YWJhc2UnXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtNCBjb25maWd1cmFRdWVyeUVkaXRvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+Q29uZmlndXJhIGluIFF1ZXJ5IEVkaXRvcjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeVwiIChjbGljayk9XCJvcGVuREJHZXR0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgPT0gbnVsbFwiPlByb2NlZGk8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCIgKGNsaWNrKT1cIm9wZW5EQkdldHRlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+TW9kaWZpY2E8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+U2VsZXppb25hIGNvbG9ubmE8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiY29sdW1uS2V5c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+UHVsc2FudGUgcmVzZXQ/PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gZGF0YUdldHRlclR5cGVFbnVtWydEYSBtb2R1bG8gZGluYW1pY28nXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbXQtNFwiICpuZ0lmPVwiZm9ybXMubGVuZ3RoID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5Nb2R1bG88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU2VsZXppb25hIG1vZHVsbydcIiBbYXJyYXlEYXRhXT1cImZvcm1zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cIkRNTW9kdWxlXCIgW2lzU2VhcmNoYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ0NvZGUnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0RNTW9kdWxlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VETU1vZHVsZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbCAmJiBETU1vZHVsZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5DYW1wbzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW3BsYWNlaG9sZGVyXT1cIidTZWxlemlvbmEgY2FtcG8nXCIgW2FycmF5RGF0YV09XCJETUZpZWxkc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJETUZpZWxkXCIgW2lzU2VhcmNoYWJsZV09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidETUZpZWxkJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VETUZpZWxkKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPkNhcmRpbmFsaXTDoDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIkRNR2V0dGVyQ2FyZGluYWxpdGllc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDYXJkaW5hbGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5Db250ZXN0dWFsaXp6YXppb25lPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImNvbnRlc3R1YWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2VudGl0eVRhYmxlTmFtZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidlbnRpdHlUYWJsZU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbnRlc3R1YWxpemF0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25DaGFuZ2VETUNvbnRlc3R1YWxpemF0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtdGFiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIE1PREFMSVRBJyBSRUNVUEVSTyBEQVRJIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBFWFRSQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIkV4dHJhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZHNFeHRyYUNvbmZpZyAhPSBudWxsICYmIGZpZWxkc0V4dHJhQ29uZmlnLmxlbmd0aCA+IDAgJiYgbG9hZGVkRmllbGRFeHRyYVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIGZpZWxkRXh0cmFDb25maWdcIiAqbmdGb3I9XCJsZXQgZmllbGRFeHRyYUNvbmZpZyBvZiBmaWVsZHNFeHRyYUNvbmZpZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXggI2ZpZWxkRXh0cmFDb25maWdUZW1wbGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmllbGRFeHRyYUNvbmZpZ109XCJmaWVsZEV4dHJhQ29uZmlnXCIgW2Zvcm1dPVwiZm9ybVwiIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keW5hbWljLW1vZHVsZS1maWVsZC1leHRyYS1maXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtdGFiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEVYVFJBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvbWF0LXRhYi1ncm91cD5cclxuICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEFSRUEgVEFCUyAtLT5cclxuXHJcbiAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cclxuXHJcbiAgICA8bWF0LWNhcmQtZm9vdGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIHB4LTMgcHktMiBmb290ZXItcm93XCI+XHJcbiAgICAgICAgICAgIDwhLS0gQW50ZXByaW1hIGxpdmUgKFRleHRGaWVsZCwgTnVtZXJpY0ZpZWxkLCBUZXh0YXJlYUZpZWxkLCBCb29sZWFuRmllbGQsIEF0dGFjaG1lbnRGaWVsZCwgTGFiZWxGaWVsZCwgRGF0ZUZpZWxkLCBBY3Rpb25CdXR0b25GaWVsZCwgTGlzdFZhbHVlRmllbGQpIC0tPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJldmlldy1hcmVhXCIgKm5nSWY9XCIoaXNUZXh0RmllbGQgfHwgaXNOdW1lcmljRmllbGQgfHwgaXNUZXh0YXJlYUZpZWxkIHx8IGlzQm9vbGVhbkZpZWxkIHx8IGlzQXR0YWNobWVudEZpZWxkIHx8IGlzTGFiZWxGaWVsZCB8fCBpc0RhdGVGaWVsZCB8fCBpc0FjdGlvbkJ1dHRvbkZpZWxkIHx8IGlzTGlzdFZhbHVlRmllbGQgfHwgaXNJbWFnZVNlbGVjdG9yRmllbGQpICYmIChpc0FjdGlvbkJ1dHRvbkZpZWxkIHx8IChmaWVsZD8uRm9ybUZvcm1Hcm91cCAmJiBwcmV2aWV3UmVjb3JkKSlcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGdhcC0yIG1iLTFcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInByZXZpZXctbGFiZWxcIj5BbnRlcHJpbWE6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgWyhuZ01vZGVsKV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tc2VsZWN0IGZvcm0tc2VsZWN0LXNtIHByZXZpZXctc3RhdGUtc2VsZWN0XCIgc3R5bGU9XCJ3aWR0aDogMTMwcHg7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiPkF1dG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIk5vcm1hbGVcIj5Ob3JtYWxlPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJNb3VzZW92ZXJcIj5Nb3VzZSBTb3ByYTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiRm9jdXNlZFwiICpuZ0lmPVwiIWlzQXR0YWNobWVudEZpZWxkICYmICFpc0xhYmVsRmllbGQgJiYgIWlzQWN0aW9uQnV0dG9uRmllbGQgJiYgIWlzTGlzdFZhbHVlRmllbGQgJiYgIWlzSW1hZ2VTZWxlY3RvckZpZWxkXCI+U2VsZXppb25hdG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlNlbGV6aW9uYXRvXCIgKm5nSWY9XCJpc0FjdGlvbkJ1dHRvbkZpZWxkIHx8IGlzTGlzdFZhbHVlRmllbGQgfHwgaXNJbWFnZVNlbGVjdG9yRmllbGRcIj5TZWxlemlvbmF0bzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiTm90VmFsaWRcIiAqbmdJZj1cIiFpc0Jvb2xlYW5GaWVsZCAmJiAhaXNMYWJlbEZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkXCI+Tm9uIFZhbGlkbzwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiUmVhZG9ubHlcIiAqbmdJZj1cIiFpc0xhYmVsRmllbGQgJiYgIWlzQWN0aW9uQnV0dG9uRmllbGRcIj5Tb2xhIExldHR1cmE8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0LXNtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJTdWdnZXJpc2NpIGdyYWZpY2EgY29uIEFJXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTJcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZVwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBzdHlsZT1cImZvbnQtc2l6ZToxNnB4O3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHhcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+U3VnZ2VyaXNjaTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8dGV4dC1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzVGV4dEZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC90ZXh0LWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPG51bWVyaWMtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc051bWVyaWNGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvbnVtZXJpYy1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDx0ZXh0YXJlYS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzVGV4dGFyZWFGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvdGV4dGFyZWEtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8Ym9vbGVhbi1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzQm9vbGVhbkZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9ib29sZWFuLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGF0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0F0dGFjaG1lbnRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvYXR0YWNobWVudC1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxsYWJlbC1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzTGFiZWxGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvbGFiZWwtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGF0ZS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzRGF0ZUZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9kYXRlLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGFjdGlvbi1idXR0b24tZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0FjdGlvbkJ1dHRvbkZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwie31cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvYWN0aW9uLWJ1dHRvbi1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxsaXN0LXZhbHVlLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNMaXN0VmFsdWVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvbGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxpbWFnZS1maWVsZC1zZWxlY3Rvci10ZW1wbGF0ZSAqbmdJZj1cImlzSW1hZ2VTZWxlY3RvckZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtyZWNvcmRdPVwicHJldmlld1JlY29yZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2luQ29uZmlnXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZVZlcnNpb25dPVwic3R5bGVWZXJzaW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9yY2VTdGF0ZV09XCJwcmV2aWV3Rm9yY2VTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgPC9pbWFnZS1maWVsZC1zZWxlY3Rvci10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCIoIWlzVGV4dEZpZWxkICYmICFpc051bWVyaWNGaWVsZCAmJiAhaXNUZXh0YXJlYUZpZWxkICYmICFpc0Jvb2xlYW5GaWVsZCAmJiAhaXNBdHRhY2htZW50RmllbGQgJiYgIWlzTGFiZWxGaWVsZCAmJiAhaXNEYXRlRmllbGQgJiYgIWlzQWN0aW9uQnV0dG9uRmllbGQgJiYgIWlzTGlzdFZhbHVlRmllbGQgJiYgIWlzSW1hZ2VTZWxlY3RvckZpZWxkKSB8fCAoIWlzQWN0aW9uQnV0dG9uRmllbGQgJiYgIWZpZWxkPy5Gb3JtRm9ybUdyb3VwKVwiPjwvZGl2PlxyXG5cclxuICAgICAgICAgICAgPCEtLSBQdWxzYW50aSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBtYXQtcmFpc2VkLWJ1dHRvbiBiZy1kYW5nZXIgdGV4dC13aGl0ZSBjYW5jZWxcIiAoY2xpY2spPVwic2F2ZUFuZEV4aXRBZGRGaWVsZChmYWxzZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICDinYwgQW5udWxsYVxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5iZy1zdWNjZXNzXT1cIiFkaXNhYmxlU2F2ZUZpZWxkKClcIiBbY2xhc3MuYmctZGFuZ2VyXT1cImRpc2FibGVTYXZlRmllbGQoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LXdoaXRlIHNhdmVcIiBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNhdmVDbGljaygpXCIgdHlwZT1cImJ1dHRvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImRpc2FibGVTYXZlRmllbGQoKVwiIHN0eWxlPVwiZm9udC1zaXplOjE4cHg7d2lkdGg6MThweDtoZWlnaHQ6MThweDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjJweFwiPmxvY2s8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIPCfkr4gU2FsdmFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWNhcmQtZm9vdGVyPlxyXG5cclxuPC9tYXQtY2FyZD5cclxuXHJcblxyXG5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBESSBURVNUTyAtLT5cclxuPG5nLXRlbXBsYXRlICN0ZXh0RmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8IS0tI3JlZ2lvbiBNQVNDSEVSQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTNcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPk1hc2NoZXJhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIlRleHRNYXNrRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5UZXh0TWFza1wiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInVGV4dE1hc2snXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBNQVNDSEVSQSAtLT5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBMVU5HSEVaWkEgTUlOSU1BIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtM1wiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgIEx1bmdoZXp6YSBtaW5pbWFcclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImxlbmd0aE1pblwiIGZvcm1Db250cm9sTmFtZT1cIk1pbkxlbmdodFwiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5MZW5naHRcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1pbkxlbmdodClcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIExVTkdIRVpaQSBNSU5JTUEgLS0+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gTFVOR0hFWlpBIE1BU1NJTUEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYXhMZW5naHQnXS5zdGF0dXMgIT0gJ1ZBTElEJyAmJiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgTHVuZ2hlenphIG1hc3NpbWFcclxuICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImxlbmd0aE1heFwiIGZvcm1Db250cm9sTmFtZT1cIk1heExlbmdodFwiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhMZW5naHRcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1heExlbmdodClcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYXhMZW5naHQnXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIExVTkdIRVpaQSBNQVNTSU1BIC0tPlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIFNQRUVDSCBUTyBURVhUIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5SZWFkb25seSB8fCBwbGF0Zm9ybSAhPSAnd2ViJ1wiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWljcm9waG9uZVwiIGZvcm1Db250cm9sTmFtZT1cIk1pY3JvcGhvbmVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgU3BlZWNoLVRvLVRleHRcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIFNQRUVDSCBUTyBURVhUIC0tPlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIElDT05BIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJzaG93VGV4dEZpZWxkSWNvblwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRleHRGaWVsZEljb25Ub2dnbGUoJGV2ZW50LmNoZWNrZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSWNvbmFcclxuICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dUZXh0RmllbGRJY29uXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5JY29uYSBNYXRlcmlhbDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJJY29uTmFtZVwiIHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5JY29uTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHBsYWNlaG9sZGVyPVwiZXMuIHNlYXJjaCwgcGVyc29uLCBob21lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dUZXh0RmllbGRJY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlBvc2l6aW9uYW1lbnRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiVGV4dEZpZWxkSWNvblBvc2l0aW9uRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JY29uUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSWNvblBvc2l0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBJQ09OQSAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIERJIFRFU1RPIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIEVUSUNIRVRUQSAtLT5cclxuPG5nLXRlbXBsYXRlICNsYWJlbEZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPVwiRXRpY2hldHRhXCIgcGxhY2Vob2xkZXI9XCJFdGljaGV0dGFcIiBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJFdGljaGV0dGFcIlxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5FdGljaGV0dGFcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIEVUSUNIRVRUQSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBBUkVBIERJIFRFU1RPIC0tPlxyXG48bmctdGVtcGxhdGUgI3RleHRhcmVhRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5SaWdoZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cInJpZ2hlXCI+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cInJvd3NcIiBmb3JtQ29udHJvbE5hbWU9XCJSb3dzXCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuUm93c1wiXHJcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlJvd3MpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ1Jvd3MnXS5lcnJvcnM/LlsncGF0dGVybiddXCI+SW5zZXJpcmUgdW4gdmFsb3JlIG51bWVyaWNvLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ1Jvd3MnXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICBbaGlkZGVuXT1cImZpZWxkLlJlYWRvbmx5IHx8IHBsYXRmb3JtICE9ICd3ZWInXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NaWNyb3Bob25lXCIgZm9ybUNvbnRyb2xOYW1lPVwiTWljcm9waG9uZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICBTcGVlY2gtVG8tVGV4dFxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+THVuZ2hlenphIG1pbmltYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGlkPVwibGVuZ3RoTWluXCIgZm9ybUNvbnRyb2xOYW1lPVwiTWluTGVuZ2h0XCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1pbkxlbmdodFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWluTGVuZ2h0KVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS5lcnJvcnM/LlsncGF0dGVybiddXCI+SW5zZXJpcmUgdW4gdmFsb3JlIG51bWVyaWNvLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+THVuZ2hlenphIG1hc3NpbWE8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImxlbmd0aE1heFwiIGZvcm1Db250cm9sTmFtZT1cIk1heExlbmdodFwiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhMZW5naHRcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1heExlbmdodClcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYXhMZW5naHQnXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBJQ09OQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwic2hvd1RleHRhcmVhRmllbGRJY29uXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uVGV4dGFyZWFGaWVsZEljb25Ub2dnbGUoJGV2ZW50LmNoZWNrZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgSWNvbmFcclxuICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dUZXh0YXJlYUZpZWxkSWNvblwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+SWNvbmEgTWF0ZXJpYWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiSWNvbk5hbWVcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuSWNvbk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cImVzLiBub3RlcywgZGVzY3JpcHRpb24sIGVkaXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNFwiICpuZ0lmPVwic2hvd1RleHRhcmVhRmllbGRJY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlBvc2l6aW9uYW1lbnRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiVGV4dGFyZWFGaWVsZEljb25Qb3NpdGlvbkVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSWNvblBvc2l0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ljb25Qb3NpdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gSUNPTkEgLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBBUkVBIERJIFRFU1RPIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEJPT0xFQU5JIC0tPlxyXG48bmctdGVtcGxhdGUgI2Jvb2xlYWRGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jc1RyaXN0YXRlXCIgZm9ybUNvbnRyb2xOYW1lPVwiSXNUcmlzdGF0ZVwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICBBIHRyZSBzdGF0aVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRpIHByZXNlbnRhemlvbmUgKjwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJCb29sUHJlc2VudGFudGlvRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5QcmVzZXRhdGlvblR5cGVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInUHJlc2V0YXRpb25UeXBlJ1wiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQk9PTEVBTkkgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgREFUQSAtLT5cclxuPG5nLXRlbXBsYXRlICNkYXRlRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlRpcG8gZGkgZGF0YTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJEYXRlVGltZVR5cGVFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLklzT25seURhdGVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSXNPbmx5RGF0ZSdcIlxyXG4gICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uRGF0ZVR5cGVDaGFuZ2UoKVwiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Rm9ybWF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkRhdGVGb3JtYXRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkRhdGVGb3JtYXRcIlxyXG4gICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiJ0luZGljYXJlIGlsIGZvcm1hdG8gc2VndWVuZG8gbGEgZ3VpZGEgZGVsIHBhY2NoZXR0byBtb21lbnRqcy4nXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Gb3JtYXRvKVwiXHJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5EYXRhIG1pbmltYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDx0bXctZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCJmaWVsZC5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bJ1NvbG8gZGF0YSddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5EYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5EQVRFUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInZGQvTU0veXl5eSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydEYXRhIGUgb3JhJ11cIiBjbGFzcz1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1pbkRhdGVcIiBbcGlja2VyTW9kZV09XCJtb2RlLkRBVEVUSU1FUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInZGQvTU0veXl5eSBISDptbSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIG9yYXJpbyddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5EYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5USU1FUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInSEg6bW0nXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+RGF0YSBtYXNzaW1hPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBkYXRhJ11cIiBjbGFzcz1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1heERhdGVcIiBbcGlja2VyTW9kZV09XCJtb2RlLkRBVEVQSUNLRVJcIiBbb3V0cHV0Rm9ybWF0XT1cIidkZC9NTS95eXl5J1wiXHJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiPjwvdG13LWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgIDx0bXctZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCJmaWVsZC5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bJ0RhdGEgZSBvcmEnXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWF4RGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuREFURVRJTUVQSUNLRVJcIiBbb3V0cHV0Rm9ybWF0XT1cIidkZC9NTS95eXl5IEhIOm1tJ1wiXHJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiPjwvdG13LWRhdGV0aW1lcGlja2VyPlxyXG4gICAgICAgIDx0bXctZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCJmaWVsZC5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bJ1NvbG8gb3JhcmlvJ11cIiBjbGFzcz1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1heERhdGVcIiBbcGlja2VyTW9kZV09XCJtb2RlLlRJTUVQSUNLRVJcIiBbb3V0cHV0Rm9ybWF0XT1cIidISDptbSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmUgaWNvbmUgKGNhbGVuZGFyaW8gLyBvcm9sb2dpbyk8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImRhdGVUaW1lSWNvblBvc2l0aW9uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIid2YWx1ZSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkljb25zUG9zaXRpb25cIlxyXG4gICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ljb25zUG9zaXRpb24nXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlBvc2l6aW9uZSBib3R0b25lIGNhbmNlbGxhemlvbmU8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImRhdGVUaW1lSWNvblBvc2l0aW9uT3B0aW9uc1wiXHJcbiAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIid2YWx1ZSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNsb3NlSWNvblBvc2l0aW9uXCJcclxuICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDbG9zZUljb25Qb3NpdGlvbidcIlxyXG4gICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLlVzZVRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJVc2VUb29sdGlwXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICBNb3N0cmEgdG9vbHRpcFxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgREFUQSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBOVU1FUklDSSAtLT5cclxuPG5nLXRlbXBsYXRlICNudW1lcmljRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSXNJbnRlZ2VyXCIgZm9ybUNvbnRyb2xOYW1lPVwiSXNJbnRlZ2VyXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIFZhbG9yZSBpbnRlcm9cclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhZmllbGQuSXNJbnRlZ2VyXCIgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlNlcGFyYXRvcmUgZGVjaW1hbGk8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEZWNpbWFsU2VwYXJhdG9yXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5EZWNpbWFsU2VwYXJhdG9yXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRGVjaW1hbFNlcGFyYXRvcilcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVjaW1hbFNlcGFyYXRvciddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Ob24gw6ggcG9zc2liaWxlIGluc2VyaXJlIGRlaSBudW1lcmkuPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVjaW1hbFNlcGFyYXRvciddLmVycm9ycz8uWydNaXNzaW5nIFBhcmVudGhlc2lzJ11cIj5QYXJlbnRlc2kgbm9uIGNoaXVzZS48L2xpPlxyXG4gICAgICAgICAgICAgICAgPC91bD5cclxuICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiAqbmdJZj1cIiFmaWVsZC5Jc0ludGVnZXJcIiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UHJlY2lzaW9uZSBkZWNpbWFsaTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkRlY2ltYWxQcmVjaXNpb25cIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRGVjaW1hbFByZWNpc2lvblwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRGVjaW1hbFByZWNpc2lvbilcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVjaW1hbFByZWNpc2lvbiddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlNlcGFyYXRvcmUgbWlnbGlhaWE8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJUaG91c2FuZHNTZXBhcmF0b3JcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlRob3VzYW5kc1NlcGFyYXRvclwiXHJcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRob3VzYW5kc1NlcGFyYXRvcilcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBtYXRUb29sdGlwPVwiU2ltYm9sbyBwcmltYSBkZWwgdmFsb3JlXCI+U2ltYm9sbyB2YWx1dGE8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJDdXJyZW5jeVN5bWJvbFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuQ3VycmVuY3lTeW1ib2xcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5DdXJyZW5jeVN5bWJvbClcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBtYXRUb29sdGlwPVwiU2ltYm9sbyBkb3BvIGlsIHZhbG9yZVwiPlVuaXTDoCBkaSBtaXN1cmE8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJNZWFzdXJlVW5pdFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuTWVhc3VyZVVuaXRcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NZWFzdXJlVW5pdClcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmUgbWluaW1vPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTWluVmFsdWVcIiB0eXBlPVwibnVtYmVyXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5WYWx1ZVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWluVmFsdWUpXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25OdW1lcmljTWluTWF4Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgcGF0dGVybj1cIl4tP1swLTldKygsWzAtOV0rfFxcLlswLTldKyk/JFwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZSBtYXNzaW1vPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTWF4VmFsdWVcIiB0eXBlPVwibnVtYmVyXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhWYWx1ZVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWF4VmFsdWUpXCJcclxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25OdW1lcmljTWluTWF4Q2hhbmdlKClcIlxyXG4gICAgICAgICAgICAgICAgcGF0dGVybj1cIl4tP1swLTldKygsWzAtOV0rfFxcLlswLTldKyk/JFwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBJQ09OQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwic2hvd051bWVyaWNGaWVsZEljb25cIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25OdW1lcmljRmllbGRJY29uVG9nZ2xlKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEljb25hXHJcbiAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93TnVtZXJpY0ZpZWxkSWNvblwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+SWNvbmEgTWF0ZXJpYWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiSWNvbk5hbWVcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuSWNvbk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cImVzLiBldXJvLCBtb25pdG9yX3dlaWdodCwgZmF2b3JpdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNFwiICpuZ0lmPVwic2hvd051bWVyaWNGaWVsZEljb25cIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UG9zaXppb25hbWVudG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJOdW1lcmljRmllbGRJY29uUG9zaXRpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJY29uUG9zaXRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIElDT05BIC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTlVNRVJJQ0kgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQUxMRUdBVE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYXR0YWNobWVudEZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLmlzTXVsdGlBdHRhY2hcIiBmb3JtQ29udHJvbE5hbWU9XCJpc011bHRpQXR0YWNoXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIEFsbGVnYXRpIG11bHRpcGxpXHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkVzdGVuc2lvbmkgYWNjZXR0YXRlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJBdmFpbGFibGVGaWxlRXh0ZW5zaW9ucy5jb25jYXQoQXZhaWxhYmxlSW1hZ2VFeHRlbnNpb25zKVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5BbGxvd2VkTWltZVR5cGVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIlxyXG4gICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidBbGxvd2VkTWltZVR5cGVzJ1wiXHJcbiAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQUxMRUdBVE8gLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTElTVEEgREkgVkFMT1JJIC0tPlxyXG48bmctdGVtcGxhdGUgI2xpc3RWYWx1ZUZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbaGlkZGVuXT1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ1JhZGlvIGJ1dHRvbiddXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Jc011bHRpQ2hvaWNoZVwiIGZvcm1Db250cm9sTmFtZT1cIklzTXVsdGlDaG9pY2hlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbklzTXVsdGlDaG9pY2hlQ2hhbmdlKClcIj5cclxuICAgICAgICAgICAgU2NlbHRhIG11bHRpcGxhXHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlRpcG8gZGkgcHJlc2VudGF6aW9uZSo8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiTGlzdFByZXNlbnRhdGlvbkVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuUHJlc2VudGF0aW9uTW9kZVwiIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cImZhbHNlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidQcmVzZW50YXRpb25Nb2RlJ1wiXHJcbiAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25QcmVzZW50YXRpb25Nb2RlQ2hhbmdlKClcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+QXJlYSBkZWkgdmFsb3JpIGRhIGluc2VyaXJlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgcGxhY2Vob2xkZXI9XCJrZXkxfHZhbHVlMTtrZXkyfHZhbHVlMlwiIFsobmdNb2RlbCldPVwiZmllbGQuVmFsdWVTdHJpbmdcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJjb3VudFZhbHVlUGFpcnMoZmllbGQuVmFsdWVQYWlycykgPiAwXCI+XHJcbiAgICAgICAgICAgIDxoNCBjbGFzcz1cImtleS12YWx1ZS1saXN0LXNlY3Rpb24tdGl0bGVcIj4gPC9oND5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhYmVsIG9wemlvbmUgKGludmlvIHBlciBjb25mZXJtYXJlKTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImtleVZhbHVlT2JqZWN0LmtleVwiIChrZXl1cCk9XCJvbk11bHRpU2VsZWN0SW5wdXRLZXl1cCgkZXZlbnQsIG51bGwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZSBvcHppb25lIChpbnZpbyBwZXIgY29uZmVybWFyZSk8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJrZXlWYWx1ZU9iamVjdC52YWx1ZVwiIChrZXl1cCk9XCJvbk11bHRpU2VsZWN0SW5wdXRLZXl1cCgkZXZlbnQsIG51bGwpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00ICBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtci0zXCI+T3B6aW9uaSBpbnNlcml0ZTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9XCJ2YWx1ZS1wYWlycy1saXN0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBrZXlWYWx1ZVBhaXIgb2YgZ2V0RGljdGlvbmFyeUtleVZhbHVlKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibXItMVwiIChjbGljayk9XCJkZWxldGVLZXlGcm9tRGljdGlvbmFyeShrZXlWYWx1ZVBhaXIua2V5KVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+PGI+TGFiZWw6IDwvYj57e2tleVZhbHVlUGFpci5rZXl9fSAtIDxiPlZhbG9yZTogPC9iPnt7a2V5VmFsdWVQYWlyLnZhbHVlfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBMSVNUQSBESSBWQUxPUkkgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBCT1RUT05FIEFaSU9ORSAtLT5cclxuPG5nLXRlbXBsYXRlICNidXR0b25GaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxhY3Rpb24tYnV0dG9uLWNyZWF0b3IgW0luRmllbGRdPVwidHJ1ZVwiIFtlbmRQb2ludENvbmZpZ3VyYXRpb25dPVwiZW5kUG9pbnRDb25maWd1cmF0aW9uXCIgW2Zvcm1dPVwiZm9ybVwiXHJcbiAgICAgICAgW2Zvcm11bGFzXT1cImFjdGlvbkJ1dHRvbnNcIiBbZm9ybXVsYU9iamVjdF09XCJmb3JtdWxhT2JqZWN0XCIgW2FjdGlvbkJ1dHRvbkZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAob25DaGFuZ2VTb21ldGhpbmcpPVwiY2hhbmdlZEJ1dHRvbkZpZWxkKCRldmVudClcIj5cclxuICAgIDwvYWN0aW9uLWJ1dHRvbi1jcmVhdG9yPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBCT1RUT05FIEFaSU9ORSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gTElTVEEgSU1NQUdJTkkgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VGaWVsZFNlbGVjdG9yRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wteHMtMTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+QWx0ZXp6YSBpbiBQaXhlbCBkZWxsZSBpbW1hZ2luaSBzY2FsYXRlKjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiUmVzaXplZEltYWdlc0hlaWdodFB4XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5SZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2V0UmVzaXplZEltYWdlc0hlaWdodFB4KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3sgZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMoJ1Jlc2l6ZWRJbWFnZXNIZWlnaHRQeCcpIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0zIGNvbC14cy0xMiBjb2wtbWlkZGxlXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLklzTXVsdGlDaG9pY2hlXCIgZm9ybUNvbnRyb2xOYW1lPVwiSXNNdWx0aUNob2ljaGVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgIFNjZWx0YSBtdWx0aXBsYVxyXG4gICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxlcXAtYXR0YWNobWVudHMgI2ltYWdlU2VsZWN0b3JBdHRhY2htZW50cyBbYXR0YWNobWVudHNMaXN0XT1cImZpZWxkLkF0dGFjaG1lbnRMaXN0XCIgW3Nob3dNYXRDYXJkXT1cImZhbHNlXCJcclxuICAgICAgICBbYWxsb3dPbmx5SW1hZ2VzXT1cInRydWVcIiBbaXNEaXNhYmxlZF09XCJmYWxzZVwiIFtzaG93SW5saW5lUHJldmlld109XCJ0cnVlXCIgW211bHRpcGxlQXR0YWNobWVudF09XCJ0cnVlXCJcclxuICAgICAgICBbc2hvd0hlYWRlcl09XCJmYWxzZVwiIFthbGxvd2VkVHlwZXNdPVwiW0F0dGFjaG1lbnRUeXBlLkZJTEVdXCJcclxuICAgICAgICAobG9jYWxFZGl0ZWRBdHRhY2htZW50cyk9XCJjYXRjaEJ1dHRvbkltYWdlc0NoYW5nZSgkZXZlbnQpXCIgW2F0dGFjaG1lbnRzQ29sdW1uc109XCJjb25maWdDb2x1bW5MaXN0SW1hZ2VzXCI+XHJcbiAgICA8L2VxcC1hdHRhY2htZW50cz5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBMSVNUQSBJTU1BR0lOSSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBJTU1BR0lORSAtLT5cclxuPG5nLXRlbXBsYXRlICNpbWFnZUZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuRW5hYmxlRHJhd2luZ1wiIGZvcm1Db250cm9sTmFtZT1cIkVuYWJsZURyYXdpbmdcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgIEltbWFnaW5lIGRpc2VnbmFiaWxlP1xyXG4gICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkFsdGV6emEgaW4gUGl4ZWwgZGVsbGUgaW1tYWdpbmkgc2NhbGF0ZSo8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuUmVzaXplZEltYWdlc0hlaWdodFB4XCJcclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7IGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKCdSZXNpemVkSW1hZ2VzSGVpZ2h0UHgnKSB9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wteHMtMTJcIiAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkV0aWNoZXR0YTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvbktleVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wteHMtMTJcIiAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnQgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5EeW5BdHRhY2htZW50LkJ1dHRvblZhbHVlXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTggbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8ZXFwLWF0dGFjaG1lbnRzIFthdHRhY2htZW50c0xpc3RdPVwiZmllbGQuRHluQXR0YWNobWVudCA/IFtmaWVsZC5EeW5BdHRhY2htZW50XSA6IFtdXCIgW3Nob3dNYXRDYXJkXT1cImZhbHNlXCIgW2FsbG93T25seUltYWdlc109XCJ0cnVlXCJcclxuICAgICAgICAgICAgW2lzRGlzYWJsZWRdPVwiZmFsc2VcIiBbc2hvd0lubGluZVByZXZpZXddPVwidHJ1ZVwiIFttdWx0aXBsZUF0dGFjaG1lbnRdPVwiZmFsc2VcIiBbc2hvd0hlYWRlcl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFthbGxvd2VkVHlwZXNdPVwiW0F0dGFjaG1lbnRUeXBlLkZJTEVdXCIgKGxvY2FsRWRpdGVkQXR0YWNobWVudHMpPVwiY2F0Y2hCdXR0b25JbWFnZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9uRGVsZXRlQXR0YWNobWVudCk9XCJkZWxldGVJbWFnZSgkZXZlbnQpXCIgI2ltYWdlQXR0YWNobWVudD5cclxuICAgICAgICA8L2VxcC1hdHRhY2htZW50cz5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRvbmx5UHJvZmlsZUltYWdlPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJkYXRhOnt7ZmllbGQuRHluQXR0YWNobWVudC5GaWxlQ29udGVudFR5cGV9fTtiYXNlNjQse3tmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0fX1cIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBJTU1BR0lORSAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBJTU1BR0lORSBDT04gTUFSS0VSUyAtLT5cclxuPG5nLXRlbXBsYXRlICNpbWFnZVdpdGhNYXJrZXJzRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5BbHRlenphIGluIFBpeGVsIGRlbGxlIGltbWFnaW5pIHNjYWxhdGUqPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZXRSZXNpemVkSW1hZ2VzSGVpZ2h0UHgoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj57eyBnZXRGb3JtVmFsaWRhdGlvbkVycm9ycygnUmVzaXplZEltYWdlc0hlaWdodFB4JykgfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5FdGljaGV0dGE8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25LZXlcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmU8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25WYWx1ZVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC04IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPGVxcC1hdHRhY2htZW50cyBbYXR0YWNobWVudHNMaXN0XT1cImZpZWxkLkR5bkF0dGFjaG1lbnQgPyBbZmllbGQuRHluQXR0YWNobWVudF0gOiBbXVwiIFtzaG93TWF0Q2FyZF09XCJmYWxzZVwiIFthbGxvd09ubHlJbWFnZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImZhbHNlXCIgW3Nob3dJbmxpbmVQcmV2aWV3XT1cInRydWVcIiBbbXVsdGlwbGVBdHRhY2htZW50XT1cImZhbHNlXCIgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbYWxsb3dlZFR5cGVzXT1cIltBdHRhY2htZW50VHlwZS5GSUxFXVwiIChsb2NhbEVkaXRlZEF0dGFjaG1lbnRzKT1cImNhdGNoQnV0dG9uSW1hZ2VXaXRoTWFya2Vyc0NoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgKG9uRGVsZXRlQXR0YWNobWVudCk9XCJkZWxldGVJbWFnZSgkZXZlbnQpXCIgI2ltYWdlQXR0YWNobWVudD5cclxuICAgICAgICA8L2VxcC1hdHRhY2htZW50cz5cclxuICAgICAgICA8bmctdGVtcGxhdGUgI3JlYWRvbmx5UHJvZmlsZUltYWdlPlxyXG4gICAgICAgICAgICA8aW1nICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudFwiXHJcbiAgICAgICAgICAgICAgICBzcmM9XCJkYXRhOnt7ZmllbGQuRHluQXR0YWNobWVudC5GaWxlQ29udGVudFR5cGV9fTtiYXNlNjQse3tmaWVsZC5EeW5BdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0fX1cIiBhbHQ9XCJcIj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBJTU1BR0lORSBDT04gTUFSS0VSUyAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBMT09LVVAgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbG9va3VwRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuVXNlQXNHZXRPckRpc2NhcmRcIiBmb3JtQ29udHJvbE5hbWU9XCJVc2VBc0dldE9yRGlzY2FyZFwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJTZSB0cnVlIGxhIGxvb2t1cCB2aWVuZSB2aXN1YWxpenphdGEgaW4gdW5hIG1vZGFsZSBwZXIgbG8gc2NlZ2xpIHNjYXJ0YVwiPlxyXG4gICAgICAgICAgICBVc2EgcGVyIHNjZWdsaSBvIHNjYXJ0YVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Tm9tZSBlbnRpdMOgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkIG1hdFRvb2x0aXA9XCJOb21lIGRlbGwnZW50aXTDoCByZWxhemlvbmF0YVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRW50aXR5U291cmNlTmFtZVwiIHJlcXVpcmVkIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRW50aXR5U291cmNlTmFtZVwiXHJcbiAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkVudGl0eVNvdXJjZU5hbWUpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+e3sgZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMoJ0VudGl0eVNvdXJjZU5hbWUnKSB9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgbXQtMlwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPk5vbWkgZGVpIGNhbXBpIChpbnZpbyBwZXIgY29uZmVybWFyZSk8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBtYXRUb29sdGlwPVwiRWxlbmNvIGRpIGNhbXBpIG9yZGluYXRvIGNoZSB2ZXJyw6AgdmlzdWFsaXp6YXRvIG5lbGxhIGxvb2t1cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCAoa2V5dXApPVwib25NdWx0aVNlbGVjdElucHV0S2V5dXAoJGV2ZW50LCAnRmllbGROYW1lcycpXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC04ICBhbGlnbi1zZWxmLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtci0zXCI+Tm9taSBzZWxlemlvbmF0aTo8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZXh0ZW5zaW9uLWNvbnRhaW5lclwiICpuZ0Zvcj1cImxldCBleHRlbnNpb24gb2YgZmllbGQuRmllbGROYW1lczsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7ZXh0ZW5zaW9ufX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWwtMVwiIChjbGljayk9XCJmaWVsZC5GaWVsZE5hbWVzLnNwbGljZShpLDEpXCI+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBMT09LVVAgLS0+XHJcblxyXG48bmctdGVtcGxhdGUgI2J1dHRvbkltYWdlc0tleVZhbHVlSW5wdXRDb2x1bW4gbGV0LXJvdz1cInJvd1wiIGxldC1jb2w9XCJjb2xcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPnt7Y29sLmRpc3BsYXl9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInJvd1tjb2wua2V5XVwiIHJlcXVpcmVkIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1ESUFMT0cgUEVSIFNFTVBMSUZJQ0FSRSBMQSBTQ1JJVFRVUkEgREVMIENBTVBPIEZPUk1VTEEtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dGb3JtdWxhPlxyXG4gICAgPGVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbiAgICA8L2VxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybXVsYS1jb21wb25lbnQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0dlbmVyaWNMaXN0SW1hZ2VzSW1hZ2VUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWNvbD1cImNvbFwiPlxyXG4gICAgPGltZyBzcmM9XCJkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCB7e3Jvd1tjb2wua2V5XX19XCIgY2xhc3M9XCJHZW5lcmljTGlzdEltYWdlc0ltYWdlVGVtcGxhdGVcIj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjR2VuZXJpY0xpc3RJbWFnZXNLZXlUZW1wbGF0ZSBsZXQtcm93PVwicm93XCIgbGV0LWNvbD1cImNvbFwiPlxyXG4gICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+Q2hpYXZlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwicm93W2NvbC5rZXldXCI+XHJcbiAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNHZW5lcmljTGlzdEltYWdlc1ZhbHVlVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1jb2w9XCJjb2xcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInJvd1tjb2wua2V5XVwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS0gVEVNUExBVEUgUEVSIFFVRVJZIEVESVRPUiAtLT5cclxuPG5nLXRlbXBsYXRlICNkaWFsb2dRRT5cclxuICAgIDxuZy10ZW1wbGF0ZSBbYXBwRHluYW1pY0xvYWRlcl0gW2RhdGFdPVwiUXVlcnlFZGl0b3JDb21wb25lbnRcIiAob3V0KT1cIm9uRXh0ZXJuYWxDb21wb25lbnRPdXQoJGV2ZW50KTtcIj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctdGVtcGxhdGU+XHJcbiJdfQ==
|
|
2208
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXFwLWR5bmFtaWMtbW9kdWxlL3NyYy9saWIvY29tcG9uZW50cy9wcml2YXRlL2FkZC1mb3JtLWZpZWxkL2FkZC1mb3JtLWZpZWxkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VxcC1keW5hbWljLW1vZHVsZS9zcmMvbGliL2NvbXBvbmVudHMvcHJpdmF0ZS9hZGQtZm9ybS1maWVsZC9hZGQtZm9ybS1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUVOLFNBQVMsR0FDVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBSUwsa0JBQWtCLEVBSWxCLFVBQVUsR0FDWCxNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxjQUFjLEdBSWYsTUFBTSw0QkFBNEIsQ0FBQztBQUVwQyxPQUFPLEVBQWdCLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hFLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZ0JBQWdCLEVBQ2hCLHlCQUF5QixFQUN6QixxQkFBcUIsRUFDckIsYUFBYSxFQUNkLE1BQU0saUNBQWlDLENBQUM7QUFDekMsT0FBTyxFQUdMLHVCQUF1QixFQUN2Qix3QkFBd0IsR0FDekIsTUFBTSw4Q0FBOEMsQ0FBQztBQUN0RCxPQUFPLEVBR0wsb0JBQW9CLEdBQ3JCLE1BQU0sMkNBQTJDLENBQUM7QUFDbkQsT0FBTyxFQUdMLGdCQUFnQixHQUNqQixNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCxvQkFBb0IsR0FHckIsTUFBTSw2Q0FBNkMsQ0FBQztBQUVyRCxPQUFPLEVBQWdCLDRCQUE0QixFQUF3QixNQUFNLDJDQUEyQyxD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N0IsU0FBUzt1QkFBQyxnQ0FBZ0MsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBRzdELDBCQUEwQjtzQkFEekIsU0FBUzt1QkFBQyw0QkFBNEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR3pELHVCQUF1QjtzQkFEdEIsU0FBUzt1QkFBQyx5QkFBeUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBR3RELGtCQUFrQjtzQkFEakIsU0FBUzt1QkFBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBY0gsYUFBYTtzQkFBMUQsU0FBUzt1QkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQVU1QywrQkFBK0I7c0JBRDlCLFNBQVM7dUJBQUMsaUNBQWlDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQWdDQyw4QkFBOEI7c0JBQTVGLFNBQVM7dUJBQUMsZ0NBQWdDLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNBLDRCQUE0QjtzQkFBeEYsU0FBUzt1QkFBQyw4QkFBOEIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0ksOEJBQThCO3NCQUE1RixTQUFTO3VCQUFDLGdDQUFnQyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSCx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUNQLGVBQWU7c0JBQS9ELFNBQVM7dUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQU1OLFFBQVE7c0JBQWhELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29tcG9uZW50LFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1xyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBGb3JtQ29udHJvbCxcclxuICBVbnR5cGVkRm9ybUJ1aWxkZXIsXHJcbiAgVW50eXBlZEZvcm1Db250cm9sLFxyXG4gIFVudHlwZWRGb3JtR3JvdXAsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBWYWxpZGF0b3JGbixcclxuICBWYWxpZGF0b3JzLFxyXG59IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiB9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcclxuaW1wb3J0IHtcclxuICBBdHRhY2htZW50VHlwZSxcclxuICBFcXBBdHRhY2htZW50RGlhbG9nU2VydmljZSxcclxuICBFcXBBdHRhY2htZW50c0NvbXBvbmVudCxcclxuICBJQXR0YWNobWVudERUTyxcclxufSBmcm9tIFwiQGVxcHJvamVjdC9lcXAtYXR0YWNobWVudHNcIjtcclxuaW1wb3J0IHsgRW51bUhlbHBlciB9IGZyb20gXCJAZXFwcm9qZWN0L2VxcC1zZWxlY3RcIjtcclxuaW1wb3J0IHsgQ29uZmlnQ29sdW1uLCBUeXBlQ29sdW1uIH0gZnJvbSBcIkBlcXByb2plY3QvZXFwLXRhYmxlXCI7XHJcbmltcG9ydCB7XHJcbiAgQmFzZUZpZWxkLFxyXG4gIENvbFNwYW5TaXplc0VudW0sXHJcbiAgRGF0YUdldHRlckNhcmRpbmFsaXR5RW51bSxcclxuICBGaWVsZEludmlzaWJpbGl0eUVudW0sXHJcbiAgRmllbGRUeXBlRW51bVxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvYmFzZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgQXR0YWNobWVudEZpZWxkLFxyXG4gIEF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTLFxyXG4gIEF2YWlsYWJsZUZpbGVFeHRlbnNpb25zLFxyXG4gIEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucyxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9hdHRhY2htZW50RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBCb29sZWFuRmllbGQsXHJcbiAgQm9vbGVhbkZpZWxkU3R5bGVDU1MsXHJcbiAgQm9vbFByZXNlbnRhbnRpb0VudW0sXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvYm9vbGVhbkZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7XHJcbiAgRGF0ZUZpZWxkLFxyXG4gIERhdGVGaWVsZFN0eWxlQ1NTLFxyXG4gIERhdGVUaW1lVHlwZUVudW0sXHJcbn0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvZGF0ZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlRmllbGQsIEltYWdlRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2ltYWdlRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHtcclxuICBMaXN0UHJlc2VudGF0aW9uRW51bSxcclxuICBMaXN0VmFsdWVGaWVsZCxcclxuICBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTLFxyXG59IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2xpc3RWYWx1ZUZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IExvb2t1cEZpZWxkIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvbG9va3VwRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgTnVtZXJpY0ZpZWxkLCBOdW1lcmljRmllbGRJY29uUG9zaXRpb25FbnVtLCBOdW1lcmljRmllbGRTdHlsZUNTUyB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL251bWVyaWNGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQgeyBUZXh0YXJlYUZpZWxkLCBUZXh0YXJlYUZpZWxkSWNvblBvc2l0aW9uRW51bSwgVGV4dGFyZWFGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvdGV4dGFyZWFGaWVsZC5tb2RlbFwiO1xyXG5pbXBvcnQge1xyXG4gIFRleHRGaWVsZEljb25Qb3NpdGlvbkVudW0sXHJcbiAgVGV4dEZpZWxkU3R5bGVDU1MsXHJcbiAgVGV4dE1hc2tFbnVtLFxyXG4gIFRleHRGaWVsZCxcclxufSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy90ZXh0RmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgRm9ybUZpZWxkR3JvdXAsIEZvcm0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvZm9ybS5tb2RlbCc7XHJcbmltcG9ydCB7IFV0aWxpdHlIZWxwZXJTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL3V0aWxpdHlIZWxwZXIuc2VydmljZXNcIjtcclxuaW1wb3J0IHsgR2xvYmFsU2VydmljZSB9IGZyb20gXCIuLi8uLi8uLi9zZXJ2aWNlcy9nbG9iYWwuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBJbWFnZVNlbGVjdG9yRmllbGQsIEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9maWVsZHMvaW1hZ2VTZWxlY3RvckZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlIH0gZnJvbSBcIi4uLy4uLy4uL3NlcnZpY2VzL2VxcC1keW5hbWljLW1vZHVsZS1kaWFsb2cuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBMYWJlbEZpZWxkLCBMYWJlbEZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9sYWJlbEZpZWxkLm1vZGVsXCI7XHJcbmltcG9ydCB7IEltYWdlV2l0aE1hcmtlcnNGaWVsZCwgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2ZpZWxkcy9pbWFnZVdpdGhNYXJrZXJzRmllbGQubW9kZWxcIjtcclxuaW1wb3J0IHsgQXR0YWNobWVudEZpZWxkVHlwZUVudW0sIER5bkF0dGFjaG1lbnQgfSBmcm9tIFwiLi4vLi4vLi4vbW9kZWxzL2R5bkF0dGFjaG1lbnRcIjtcclxuaW1wb3J0IHsgRHluYW1pY0xvYWRlckRpcmVjdGl2ZURhdGEsIGV2ZW50T3V0IH0gZnJvbSBcIi4uLy4uLy4uL2RpcmVjdGl2ZXMvZHluYW1pYy1sb2FkZXIvZHluYW1pYy1sb2FkZXIuZGlyZWN0aXZlXCI7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuaW1wb3J0IHsgRGF0YUdldHRlclR5cGVFbnVtLCBEYXRhR2V0dGVyIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2Jhc2VGaWVsZC5tb2RlbCc7XHJcbmltcG9ydCB7IFF1ZXJ5RWRpdG9yTW9kZUVudW0gfSBmcm9tIFwiLi4vZGJnZXR0ZXIvZGJnZXR0ZXIuY29tcG9uZW50XCI7XHJcbmltcG9ydCB7IE1vZGVFbnVtLCBUaW1lVHlwZUVudW0gfSBmcm9tIFwidG13LXBpY2tlclwiO1xyXG5pbXBvcnQgeyBFbmRQb2ludENvbmZpZ3VyYXRpb24sIEVuZFBvaW50RGF0YVBhcmFtcywgUGFyYW1UeXBlRW51bSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZW5kUG9pbnRDb25maWd1cmF0aW9uLm1vZGVsXCI7XHJcbmltcG9ydCB7IENvbnRlc3R1YWxpemF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL21vZGVscy9nZXR0ZXIubW9kZWxcIjtcclxuaW1wb3J0IHsgQ2FwYWNpdG9yIH0gZnJvbSAnQGNhcGFjaXRvci9jb3JlJztcclxuaW1wb3J0IHsgQWN0aW9uQnV0dG9uRmllbGQsIEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MsIEtleVR5cGVWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9tb2RlbHMvZmllbGRzL2FjdGlvbkJ1dHRvbi5tb2RlbFwiO1xyXG5pbXBvcnQgeyBGaWVsZEV4dHJhQ29uZmlnLCBGaWVsZEV4dHJhVmFsdWVzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2ZpZWxkRXh0cmFDb25maWcubW9kZWwnO1xyXG5pbXBvcnQgeyBOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgTnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0gfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvc3RhdGlzdGljLm1vZGVsJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiBcImVxcC1keW5hbWljLW1vZHVsZS1hZGQtZm9ybS1maWVsZFwiLFxyXG4gIHRlbXBsYXRlVXJsOiBcIi4vYWRkLWZvcm0tZmllbGQuY29tcG9uZW50Lmh0bWxcIixcclxuICBzdHlsZVVybHM6IFtcIi4vYWRkLWZvcm0tZmllbGQuY29tcG9uZW50LnNjc3NcIl0sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBBZGRGb3JtRmllbGRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICBASW5wdXQoKSBmaWVsZHNFeHRyYUNvbmZpZzogQXJyYXk8RmllbGRFeHRyYUNvbmZpZz47XHJcbiAgQElucHV0KCkgZm9ybTogRm9ybTtcclxuICBASW5wdXQoKSBlbmRQb2ludENvbmZpZ3VyYXRpb246IEVuZFBvaW50Q29uZmlndXJhdGlvbjtcclxuICBASW5wdXQoKSBmaWVsZDogQmFzZUZpZWxkIHwgYW55O1xyXG4gIEBJbnB1dCgpIGluZGV4RmllbGQ6IG51bWJlcjtcclxuICBASW5wdXQoKSBmb3JtRmllbGRzR3JvdXBzOiBBcnJheTxGb3JtRmllbGRHcm91cD47XHJcbiAgLyoqIEVsZW5jbyBkZWkgRmllbGQgY3JlYXRpIG5lbGxhIGZvcm0sIHVzYXRpIHBlciBwb3BvbGFyZSBsJ2F1dG9jb21wbGV0ZSBkZWxsYSBwcm9wcmlldMOgIEZvcm11bGEuICovXHJcbiAgQElucHV0KCkgYXZhaWxhYmxlRmllbGRzOiBBcnJheTxCYXNlRmllbGQ+O1xyXG4gIEBJbnB1dCgpIGZpZWxkVHlwZXNUb0V4Y2x1ZGU6IEFycmF5PEZpZWxkVHlwZUVudW0+ID0gW0ZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSwgRmllbGRUeXBlRW51bS5Mb29rdXBdO1xyXG4gIEBJbnB1dCgpIFF1ZXJ5RWRpdG9yQ29tcG9uZW50OiBEeW5hbWljTG9hZGVyRGlyZWN0aXZlRGF0YTsgLy8gTCdpbnRlcm8gY29tcG9uZW50ZSBxdWVyeSBFZGl0b3JcclxuICBASW5wdXQoKSBjb250ZXN0dWFsaXphdGlvbjogQXJyYXk8Q29udGVzdHVhbGl6YXRpb24+ID0gbnVsbDtcclxuICBASW5wdXQoKSBhY3Rpb25CdXR0b25zOiBhbnk7XHJcbiAgQElucHV0KCkgZm9ybXVsYU9iamVjdDogYW55O1xyXG5cclxuICBAT3V0cHV0KCkgb3V0OiBFdmVudEVtaXR0ZXI8ZXZlbnRPdXQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxldmVudE91dD4oKTtcclxuICBAT3V0cHV0KCkgc2F2ZUZpZWxkRXZlbnQ6IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBCYXNlRmllbGQsIHJlb3BlbjogbnVtYmVyIH0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7IGZpZWxkOiBCYXNlRmllbGQsIHJlb3BlbjogbnVtYmVyIH0+KCk7XHJcbiAgQE91dHB1dCgpIG9wZW5BaUVkaXRGb3JGaWVsZEV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBvcGVuQWlHcmFwaGljU3VnZ2VzdEV2ZW50OiBFdmVudEVtaXR0ZXI8eyBjb2RlOiBzdHJpbmc7IGhpbnQ6IHN0cmluZyB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBjb2RlOiBzdHJpbmc7IGhpbnQ6IHN0cmluZyB9PigpO1xyXG5cclxuICBASW5wdXQoKSBhaUZpZWxkU3VnZ2VzdExvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBncmFwaGljU3VnZ2VzdEhpbnQ6IHN0cmluZyA9ICcnO1xyXG5cclxuICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBISU5UX1BBTEVUVEVTID0gW1xyXG4gICAgJ21vbm9jcm9tYXRpY28gdmlicmFudGUnLCAnY29tcGxlbWVudGFyZScsICd0cmlhZGljbycsICdhbmFsb2dvIGNhbGRvJywgJ2FuYWxvZ28gZnJlZGRvJyxcclxuICAgICdwYXN0ZWxsbyBkZWxpY2F0bycsICduZW9uIHN1IHNjdXJvJywgJ2VhcnRoIHRvbmVzJywgJ29jZWFubyBwcm9mb25kbycsICd0cmFtb250byBjb2xvcmF0bycsXHJcbiAgICAnZm9yZXN0YSBhdXR1bm5hbGUnLCAnbGF2YW5kYSBlIG9ybycsICdjb3JhbGxvIGUgdHVyY2hlc2UnLCAncm9zc28gZSBhbnRyYWNpdGUnLCAndmVyZGUgYWNxdWEgZSBzYWJiaWEnLFxyXG4gICAgJ3Zpb2xhIGVsZXR0cmljbyBlIGdpYWxsbyBsaW1vbmUnLCAncm9zYSBjaXByaWEgZSBncmlnaW8gcGVybGEnLCAnYmx1IGNvYmFsdG8gZSBhcmFuY2lvIGJydWNpYXRvJyxcclxuICAgICdvcm8gYW50aWNvIGUgYm9yZGVhdXgnLCAnbWVudGEgZnJlc2NhIGUgY2lvY2NvbGF0bycsICdhcmdlbnRvIGUgYmx1IGFjY2lhaW8nLCAncGVzY2EgZSBpbmRhY28nLFxyXG4gICAgJ3Jvc3NvIGNpbGllZ2lhIGUgYXZvcmlvJywgJ3RlYWwgc2N1cm8gZSByYW1lJywgJ2xpbWUgZSBibHUgbmF2eScsICdsaWxsYSBlIHZlcmRlIHNhbHZpYScsXHJcbiAgICAnYXp6dXJybyBnaGlhY2NpbyBlIGdyaWdpbyBhcmRlc2lhJywgJ2FtYnJhIGUgcGV0cm9saW8nLCAnc21lcmFsZG8gZSByb3NhIGFudGljbycsICdiaWFuY28gZSBuZXJvIGNvbiBhY2NlbnRvIHJvc3NvIGZ1b2NvJyxcclxuICBdO1xyXG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IEhJTlRfU1RZTEVTID0gW1xyXG4gICAgJ21pbmltYWxpc3RhJywgJ2JvbGQgZSB2aXZhY2UnLCAnZWxlZ2FudGUgZSBzb2JyaW8nLCAnZ2lvY29zbyBlIGRpbmFtaWNvJywgJ2luZHVzdHJpYWxlJyxcclxuICAgICdyZXRyb2Z1dHVyaXN0YScsICdvcmdhbmljbyBlIG5hdHVyYWxlJywgJ3RlY2gvZGlnaXRhbGUnLCAnbHV4dXJ5IHByZW1pdW0nLCAndmludGFnZSBtb3JiaWRvJyxcclxuICAgICdmbGF0IGRlc2lnbiBwdWxpdG8nLCAnZ2xhc3Ntb3JwaGlzbScsICduZXVtb3JmaXNtbycsICdkYXJrIG1vZGUgcmFmZmluYXRvJyxcclxuICAgICdicnV0YWxpc3QgY29uIGJvcmRpIHNwZXNzaScsICdzY2FuZGluYXZvIHB1bGl0bycsICdhcnQgZMOpY28gZ2VvbWV0cmljbycsICdjeWJlcnB1bmsgZGlzdG9waWNvJyxcclxuICAgICdwb3AgYXJ0IGEgdGludGUgcGlhdHRlJywgJ3dhdGVyY29sb3IgcGFzdGVsbG8gc2Z1bWF0bycsICduZW9uIGFubmkgb3R0YW50YScsICdtYXRlcmlhbCBkZXNpZ24gY29uIG9tYnJlJyxcclxuICAgICdhdXJvcmEgYm9yZWFsZScsICdzd2lzcyBzdHlsZSB0aXBvZ3JhZmljbycsICd0cm9waWNhbGUgdml2YWNlJywgJ21vbm9jcm9tbyBjb24gYWNjZW50byBzaW5nb2xvJyxcclxuICAgICdhdXJvcmEgbm90dHVybmEgc2N1cmEnLCAnY290dGFnZWNvcmUgY2FsZG8nLFxyXG4gIF07XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVhZG9ubHkgSElOVF9BREpFQ1RJVkVTID0gW1xyXG4gICAgJ29yaWdpbmFsZScsICdpbXByZXZlZGliaWxlJywgJ2FjY2F0dGl2YW50ZScsICdzcGV0dGFjb2xhcmUnLCAnZGVsaWNhdG8nLFxyXG4gICAgJ2F1ZGFjZScsICdyYWZmaW5hdG8nLCAnZ2lvY29zbycsICd2aXZhY2UnLCAnbWlzdGVyaW9zbycsXHJcbiAgICAnY2FsZG8nLCAnZnJlc2NvJywgJ3JvbWFudGljbycsICdmdXR1cmlzdGljbycsICdlbGVnYW50ZScsXHJcbiAgICAncnVzdGljbycsICdtb2Rlcm5vJywgJ3ZpbnRhZ2UnLCAnYXJtb25pb3NvJywgJ3NvcnByZW5kZW50ZScsXHJcbiAgXTtcclxuXHJcbiAgcmFuZG9taXplR3JhcGhpY0hpbnQoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwaWNrID0gPFQ+KGFycjogVFtdKTogVCA9PiBhcnJbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogYXJyLmxlbmd0aCldO1xyXG4gICAgY29uc3QgQyA9IEFkZEZvcm1GaWVsZENvbXBvbmVudDtcclxuICAgIGNvbnN0IHBhbGV0dGUgPSBwaWNrKEMuSElOVF9QQUxFVFRFUyk7XHJcbiAgICBjb25zdCBzdHlsZSAgID0gcGljayhDLkhJTlRfU1RZTEVTKTtcclxuICAgIGNvbnN0IGFkajEgICAgPSBwaWNrKEMuSElOVF9BREpFQ1RJVkVTKTtcclxuICAgIGNvbnN0IHVzZVR3byAgPSBNYXRoLnJhbmRvbSgpIDwgMC41O1xyXG4gICAgY29uc3QgYWRqMiAgICA9IHVzZVR3byA/IHBpY2soQy5ISU5UX0FESkVDVElWRVMuZmlsdGVyKGEgPT4gYSAhPT0gYWRqMSkpIDogbnVsbDtcclxuICAgIGNvbnN0IGFkalRleHQgPSBhZGoyID8gYCR7YWRqMX0gZSAke2FkajJ9YCA6IGFkajE7XHJcbiAgICB0aGlzLmdyYXBoaWNTdWdnZXN0SGludCA9IGBQYWxldHRlICR7cGFsZXR0ZX0sIHN0aWxlICR7c3R5bGV9LCAke2FkalRleHR9YDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZW5zdXJlRmllbGRDb2RlKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMuZmllbGQ/LkxhYmVsPy50cmltKCkpIHtcclxuICAgICAgdGhpcy5maWVsZC5EZXNjcmlwdGlvbiA9IHRoaXMuZmllbGQuRGVzY3JpcHRpb24/LnRyaW0oKSB8fCAnQ2FtcG8gc2VuemEgTm9tZSc7XHJcbiAgICAgIHRoaXMuZmllbGQuTGFiZWwgPSAnX2NhbXBvc2VuemFub21lXyc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGhpcy5maWVsZC5MYWJlbDtcclxuICB9XHJcblxyXG4gIG9uT3BlbkFpRWRpdEZvckZpZWxkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5vcGVuQWlFZGl0Rm9yRmllbGRFdmVudC5lbWl0KHRoaXMuZmllbGQ/LkxhYmVsID8/ICcnKTtcclxuICB9XHJcblxyXG4gIG9uR3JhcGhpY1N1Z2dlc3QoKTogdm9pZCB7XHJcbiAgICBjb25zdCBjb2RlID0gdGhpcy5lbnN1cmVGaWVsZENvZGUoKTtcclxuICAgIHRoaXMub3BlbkFpR3JhcGhpY1N1Z2dlc3RFdmVudC5lbWl0KHsgY29kZSwgaGludDogdGhpcy5ncmFwaGljU3VnZ2VzdEhpbnQgfSk7XHJcbiAgICB0aGlzLnNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gZmFsc2U7XHJcbiAgICB0aGlzLmdyYXBoaWNTdWdnZXN0SGludCA9ICcnO1xyXG4gIH1cclxuXHJcbiAgcmVzaXplZEltYWdlc0hlaWdodFB4OiBudW1iZXI7XHJcbiAgZmllbGRGb3JtR3JvdXA6IFVudHlwZWRGb3JtR3JvdXA7XHJcbiAga2V5VmFsdWVPYmplY3Q6IHsga2V5OiBzdHJpbmc7IHZhbHVlOiBzdHJpbmcgfSA9IHsga2V5OiBcIlwiLCB2YWx1ZTogXCJcIiB9O1xyXG4gIGF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZTogQXJyYXk8Q29sU3BhblNpemVzRW51bT4gPSBbXTtcclxuICBhdmFpbGFibGVDb2xTcGFuU2l6ZXNSaXNwb3N0YTogQXJyYXk8Q29sU3BhblNpemVzRW51bT4gPSBbXTtcclxuICBmb3JtdWxhQXV0b2NvbXBsZXRlT3B0aW9uczogQXJyYXk8eyBsYWJlbDogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+O1xyXG4gIFZpc2libGVJZkF1dG9jb21wbGV0ZU9wdGlvbnM6IEFycmF5PHsgbGFiZWw6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PjtcclxuICBBdmFpbGFibGVGaWxlRXh0ZW5zaW9ucyA9IEF2YWlsYWJsZUZpbGVFeHRlbnNpb25zO1xyXG4gIEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucyA9IEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucztcclxuICBmaWVsZEludmlzaWJpbGl0eUVudW0gPSBGaWVsZEludmlzaWJpbGl0eUVudW07XHJcbiAgY29sdW1uS2V5czogQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PiA9IG5ldyBBcnJheTx7IGtleTogc3RyaW5nOyB2YWx1ZTogc3RyaW5nIH0+KCk7XHJcbiAgYWdncmVnYXRpb25GdW5jdGlvbkVudW06IGFueTtcclxuXHJcbiAgLy8jcmVnaW9uIFRlbXBsYXRlIGRlaSB2YXJpIHBlenppIGRpIGZvcm0gcGVyIGxhIGNyZWF6aW9uZSBkaSB1biBjYW1wbyhpbiBiYXNlIGFsIHRpcG8gc2NlbHRvKS5cclxuICBmaWVsZFR5cGVGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcInRleHRGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIHRleHRGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibGFiZWxGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGxhYmVsRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImJ1dHRvbkZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgYnV0dG9uRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcInRleHRhcmVhRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICB0ZXh0YXJlYUZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJib29sZWFkRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBib29sZWFkRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImRhdGVGaWVsZEZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGRhdGVGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibnVtZXJpY0ZpZWxkRm9ybVRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgbnVtZXJpY0ZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJhdHRhY2htZW50RmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBhdHRhY2htZW50RmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImltYWdlRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBpbWFnZUZpZWxkRm9ybVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJpbWFnZVdpdGhNYXJrZXJzRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBpbWFnZVdpdGhNYXJrZXJzRmllbGRGb3JtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZChcImltYWdlRmllbGRTZWxlY3RvckZvcm1UZW1wbGF0ZVwiLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIGltYWdlRmllbGRTZWxlY3RvckZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibGlzdFZhbHVlRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBsaXN0VmFsdWVGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwibG9va3VwRmllbGRGb3JtVGVtcGxhdGVcIiwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBsb29rdXBGaWVsZEZvcm1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZGF0YUdldHRlclRlbXBsYXRlXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgZGF0YUdldHRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIFByb3ByaWV0w6AgcGVyIGdlc3RpcmUgaSBtZXRhZGF0YSBuZWkgY2FtcGkgdGkgZGlwbyBBbGxlZ2F0byBvIEltbWFnaW5lXHJcbiAgbWV0YWRhdGFDb2x1bW5zOiBBcnJheTxDb25maWdDb2x1bW4+O1xyXG4gIC8vQFZpZXdDaGlsZCgnbWV0YWRhdGFGaWVsZHNUYWJsZScsIHsgc3RhdGljOiBmYWxzZSB9KSBtZXRhZGF0YUZpZWxkc1RhYmxlOiBFcXBUYWJsZUNvbXBvbmVudDtcclxuICBzZWxlY3RlZE1ldGFkYXRhOiBCYXNlRmllbGQ7XHJcbiAgLy9pbmRleFNlbGVjdGVkTWV0YWRhdGE6IG51bWJlcjtcclxuICAvL2RpYWxvZ01ldGFkYXRhUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgZGlhbG9nVmlzaWJsZUlmUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgZGlhbG9nUmVhZE9ubHlJZlJlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG4gIC8vQFZpZXdDaGlsZCgnZGlhbG9nTWV0YWRhdGEnLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dNZXRhZGF0YTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKFwiZGlhbG9nRm9ybXVsYVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dGb3JtdWxhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIGRpYWxvZ0Zvcm11bGFSZWY6IE1hdERpYWxvZ1JlZjxUZW1wbGF0ZVJlZjxhbnk+PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcblxyXG4gIC8vIEBWaWV3Q2hpbGQoXCJkaWFsb2dBdmFudGlJbmRpZXRyb1wiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dBdmFudGlJbmRpZXRybzogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyBkaWFsb2dBdmFudGlJbmRpZXRyb1JlZjogTWF0RGlhbG9nUmVmPFRlbXBsYXRlUmVmPGFueT4+O1xyXG5cclxuICAvLyNyZWdpb24gUHJvcHJpZXTDoCBwZXIgZ2VzdGlyZSBsZSBpbW1hZ2luaSBuZWkgY2FwaSBkaSB0aXBvIGVsZW5jbyBnZW5lcmljb1xyXG4gIEBWaWV3Q2hpbGQoXCJidXR0b25JbWFnZXNLZXlWYWx1ZUlucHV0Q29sdW1uXCIsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgYnV0dG9uSW1hZ2VzS2V5VmFsdWVJbnB1dENvbHVtbjogVGVtcGxhdGVSZWY8YW55PjtcclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEVudW1lcmF0b3JpIHVzYXRpIG5lbGwnaHRtbFxyXG4gIEZpZWxkVHlwZUVudW0gPSBGaWVsZFR5cGVFbnVtO1xyXG4gIEJvb2xQcmVzZW50YW50aW9FbnVtID0gQm9vbFByZXNlbnRhbnRpb0VudW07XHJcbiAgRGF0ZVRpbWVUeXBlRW51bSA9IERhdGVUaW1lVHlwZUVudW07XHJcbiAgTGlzdFByZXNlbnRhdGlvbkVudW0gPSBMaXN0UHJlc2VudGF0aW9uRW51bTtcclxuICBUZXh0TWFza0VudW0gPSBUZXh0TWFza0VudW07XHJcbiAgVGV4dEZpZWxkSWNvblBvc2l0aW9uRW51bSA9IFRleHRGaWVsZEljb25Qb3NpdGlvbkVudW07XHJcbiAgTnVtZXJpY0ZpZWxkSWNvblBvc2l0aW9uRW51bSA9IE51bWVyaWNGaWVsZEljb25Qb3NpdGlvbkVudW07XHJcbiAgVGV4dGFyZWFGaWVsZEljb25Qb3NpdGlvbkVudW0gPSBUZXh0YXJlYUZpZWxkSWNvblBvc2l0aW9uRW51bTtcclxuXHJcbiAgcmVhZG9ubHkgZGF0ZVRpbWVJY29uUG9zaXRpb25PcHRpb25zID0gW1xyXG4gICAgeyB2YWx1ZTogJ2xlZnQnLCAgbGFiZWw6ICdTaW5pc3RyYScgfSxcclxuICAgIHsgdmFsdWU6ICdyaWdodCcsIGxhYmVsOiAnRGVzdHJhJyB9LFxyXG4gIF07XHJcbiAgQXR0YWNobWVudFR5cGUgPSBBdHRhY2htZW50VHlwZTtcclxuICBhdHRhY2htZW50RmllbGRUeXBlRW51bSA9IEF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtO1xyXG4gIGRhdGFHZXR0ZXJUeXBlRW51bSA9IERhdGFHZXR0ZXJUeXBlRW51bTtcclxuICBzdWJzY3JpcHRpb246IGFueTtcclxuXHJcbiAgc2hvd1RleHRGaWVsZEljb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBzaG93TnVtZXJpY0ZpZWxkSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHNob3dUZXh0YXJlYUZpZWxkSWNvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIEdlc3Rpb25lIGRlbGxlIGxpc3RlIGRpIGltbWFnaW5pXHJcbiAgY29uZmlnQ29sdW1uTGlzdEltYWdlczogQXJyYXk8Q29uZmlnQ29sdW1uPiA9IG5ldyBBcnJheTxDb25maWdDb2x1bW4+KCk7XHJcbiAgY29uZmlnQ29sdW1uSW1hZ2U6IEFycmF5PENvbmZpZ0NvbHVtbj4gPSBuZXcgQXJyYXk8Q29uZmlnQ29sdW1uPigpO1xyXG4gIEBWaWV3Q2hpbGQoJ0dlbmVyaWNMaXN0SW1hZ2VzSW1hZ2VUZW1wbGF0ZScsIHsgc3RhdGljOiB0cnVlIH0pIEdlbmVyaWNMaXN0SW1hZ2VzSW1hZ2VUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdHZW5lcmljTGlzdEltYWdlc0tleVRlbXBsYXRlJywgeyBzdGF0aWM6IHRydWUgfSkgR2VuZXJpY0xpc3RJbWFnZXNLZXlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICBAVmlld0NoaWxkKCdHZW5lcmljTGlzdEltYWdlc1ZhbHVlVGVtcGxhdGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSBHZW5lcmljTGlzdEltYWdlc1ZhbHVlVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcbiAgQFZpZXdDaGlsZCgnaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzJywgeyBzdGF0aWM6IGZhbHNlIH0pIGltYWdlU2VsZWN0b3JBdHRhY2htZW50czogRXFwQXR0YWNobWVudHNDb21wb25lbnQ7XHJcbiAgQFZpZXdDaGlsZCgnaW1hZ2VBdHRhY2htZW50JywgeyBzdGF0aWM6IGZhbHNlIH0pIGltYWdlQXR0YWNobWVudDogRXFwQXR0YWNobWVudHNDb21wb25lbnQ7XHJcbiAgLy8jZW5kcmVnaW9uXHJcblxyXG4gIC8vIERCIEdldHRlclxyXG4gIGRpYWxvZ1FFUmVmOiBNYXREaWFsb2dSZWY8VGVtcGxhdGVSZWY8YW55Pj47XHJcbiAgLy9AVmlld0NoaWxkKCdkaWFsb2dNZXRhZGF0YScsIHsgc3RhdGljOiB0cnVlIH0pIGRpYWxvZ01ldGFkYXRhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gIEBWaWV3Q2hpbGQoXCJkaWFsb2dRRVwiLCB7IHN0YXRpYzogdHJ1ZSB9KSBkaWFsb2dRRTogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgLy8gVE1XLVBJQ0tFUlxyXG4gIG1vZGUgPSBNb2RlRW51bVxyXG4gIHRpbWVUeXBlID0gVGltZVR5cGVFbnVtXHJcblxyXG4gIC8vIERNIEdldHRlclxyXG4gIGZvcm1zOiBBcnJheTxGb3JtPiA9IG5ldyBBcnJheTxGb3JtPigpO1xyXG4gIERNTW9kdWxlOiBhbnk7XHJcbiAgRE1GaWVsZDogYW55O1xyXG4gIERNRmllbGRzOiBBcnJheTx7IGtleTogc3RyaW5nIH0+O1xyXG4gIERNR2V0dGVyQ2FyZGluYWxpdGllcyA9IERhdGFHZXR0ZXJDYXJkaW5hbGl0eUVudW07XHJcblxyXG4gIHBsYXRmb3JtOiBzdHJpbmcgPSBDYXBhY2l0b3IuZ2V0UGxhdGZvcm0oKTtcclxuXHJcbiAgbG9hZGVkRmllbGRFeHRyYTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGFnZ3JlZ2F0aW9uRmllbGRMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLy8gUHJldmlldyBsaXZlIHBlciBUZXh0RmllbGQgLyBOdW1lcmljRmllbGRcclxuICBwcmV2aWV3UmVjb3JkOiBhbnkgPSB7fTtcclxuICBzdHlsZVZlcnNpb246IG51bWJlciA9IDA7XHJcbiAgcHJldmlld0ZvcmNlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICBnZXQgaXNUZXh0RmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNOdW1lcmljRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIG51bWVyaWNvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNUZXh0YXJlYUZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydBcmVhIGRpIHRlc3RvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNCb29sZWFuRmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBdHRhY2htZW50RmllbGQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gTnVtYmVyKHRoaXMuZmllbGQ/LkZpZWxkVHlwZSkgPT09IEZpZWxkVHlwZUVudW1bJ0FsbGVnYXRvJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNMYWJlbEZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydFdGljaGV0dGEnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0RhdGVGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnRGF0YSBlL28gb3JhJ107XHJcbiAgfVxyXG5cclxuICBnZXQgaXNBY3Rpb25CdXR0b25GaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnQm90dG9uZSddO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzSW1hZ2VGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnSW1tYWdpbmUnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ltYWdlV2l0aE1hcmtlcnNGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnSW1tYWdpbmUgY29uIG1hcmtlcnMnXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0xpc3RWYWx1ZUZpZWxkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIE51bWJlcih0aGlzLmZpZWxkPy5GaWVsZFR5cGUpID09PSBGaWVsZFR5cGVFbnVtWydFbGVuY28gZ2VuZXJpY28nXTtcclxuICB9XHJcblxyXG4gIGdldCBpc0ltYWdlU2VsZWN0b3JGaWVsZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBOdW1iZXIodGhpcy5maWVsZD8uRmllbGRUeXBlKSA9PT0gRmllbGRUeXBlRW51bVsnRWxlbmNvIGltbWFnaW5pJ107XHJcbiAgfVxyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIFRleHRGaWVsZCBwZXIgbGUgdGFiIENTUyAqL1xyXG4gIHJlYWRvbmx5IHRleHRGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnSW5wdXQnLCAgICAgICBsYWJlbDogJ0Nhc2VsbGEgZGkgdGVzdG8nIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYScsICAgICAgIGxhYmVsOiAnSWNvbmEnIH0sXHJcbiAgICB7IGtleTogJ01pY3JvZm9ubycsICAgbGFiZWw6ICdNaWNyb2Zvbm8nIH0sXHJcbiAgICB7IGtleTogJ0Vycm9yZScsICAgICAgbGFiZWw6ICdUZXN0byBlcnJvcmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIHN0YXRpIHBlciBsZSB0YWIgQ1NTICovXHJcbiAgcmVhZG9ubHkgdGV4dEZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZFRleHRGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIE51bWVyaWNGaWVsZCBwZXIgbGUgdGFiIENTUyAoc2VuemEgTWljcm9mb25vKSAqL1xyXG4gIHJlYWRvbmx5IG51bWVyaWNGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnSW5wdXQnLCAgICAgICBsYWJlbDogJ0Nhc2VsbGEgbnVtZXJpY2EnIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdJY29uYScsICAgICAgIGxhYmVsOiAnSWNvbmEnIH0sXHJcbiAgICB7IGtleTogJ0Vycm9yZScsICAgICAgbGFiZWw6ICdUZXN0byBlcnJvcmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgbnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZE51bWVyaWNGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIFRleHRhcmVhRmllbGQgcGVyIGxlIHRhYiBDU1MgKi9cclxuICByZWFkb25seSB0ZXh0YXJlYUZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdJbnB1dCcsICAgICAgIGxhYmVsOiAnQXJlYSBkaSB0ZXN0bycgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0ljb25hJywgICAgICAgbGFiZWw6ICdJY29uYScgfSxcclxuICAgIHsga2V5OiAnTWljcm9mb25vJywgICBsYWJlbDogJ01pY3JvZm9ubycgfSxcclxuICAgIHsga2V5OiAnRXJyb3JlJywgICAgICBsYWJlbDogJ1Rlc3RvIGVycm9yZScgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSB0ZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnRm9jdXNlZCcsICAgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZFRleHRhcmVhRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLyoqIE1ldGFkYXRpIGRlZ2xpIGVsZW1lbnRpIGRlbCBCb29sZWFuRmllbGQgcGVyIGxlIHRhYiBDU1MgKDMgZWxlbWVudGksIHNlbnphIE5vdFZhbGlkKSAqL1xyXG4gIHJlYWRvbmx5IGJvb2xlYW5GaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnU2NlbHRhJywgICAgICBsYWJlbDogJ0NvbnRyb2xsbyAodG9nZ2xlIC8gY2hlY2tib3ggLyByYWRpbyknIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGJvb2xlYW5GaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ0ZvY3VzZWQnLCAgIGxhYmVsOiAnU2VsZXppb25hdG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkQm9vbGVhbkZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgQXR0YWNobWVudEZpZWxkIHBlciBsZSB0YWIgQ1NTICovXHJcbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpZWxkU3R5bGVFbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgICAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0xhYmVsJywgICAgICAgICAgICBsYWJlbDogJ0xhYmVsIC8gaW50ZXN0YXppb25lJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lQWdnaXVuZ2knLCAgbGFiZWw6ICdCb3R0b25lIEFnZ2l1bmdpJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lRG93bmxvYWQnLCAgbGFiZWw6ICdCb3R0b25lIERvd25sb2FkJyB9LFxyXG4gICAgeyBrZXk6ICdCb3R0b25lRWxpbWluYScsICAgbGFiZWw6ICdCb3R0b25lIEVsaW1pbmEnIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVBbnRlcHJpbWEnLCBsYWJlbDogJ0JvdHRvbmUgQW50ZXByaW1hJyB9LFxyXG4gICAgeyBrZXk6ICdDYW1wb05vbWVGaWxlJywgICAgbGFiZWw6ICdDYW1wbyBub21lIGZpbGUnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgYXR0YWNobWVudEZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgIGxhYmVsOiAnTm9ybWFsZScgfSxcclxuICAgIHsga2V5OiAnTW91c2VvdmVyJywgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgbGFiZWw6ICdOb24gVmFsaWRvJyB9LFxyXG4gICAgeyBrZXk6ICdSZWFkb25seScsICBsYWJlbDogJ1NvbGEgTGV0dHVyYScgfSxcclxuICBdO1xyXG5cclxuICBzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIExhYmVsRmllbGQgcGVyIGxlIHRhYiBDU1MgKDEgZWxlbWVudG8sIDIgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgbGFiZWxGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgbGFiZWxGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRMYWJlbEZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgRGF0ZUZpZWxkIHBlciBsZSB0YWIgQ1NTICg4IGVsZW1lbnRpLCA1IHN0YXRpKSAqL1xyXG4gIHJlYWRvbmx5IGRhdGVGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgICAgIGxhYmVsOiAnQ29udGVuaXRvcmUgZXN0ZXJubycgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCAgICAgICAgbGFiZWw6ICdEZXNjcml6aW9uZSAobGFiZWwpJyB9LFxyXG4gICAgeyBrZXk6ICdDb250ZW5pdG9yZUludGVybm8nLCBsYWJlbDogJ0NvbnRlbml0b3JlIGludGVybm8nIH0sXHJcbiAgICB7IGtleTogJ0NhbXBvRGF0YScsICAgICAgICAgIGxhYmVsOiAnQ2FzZWxsYSBkaSB0ZXN0bycgfSxcclxuICAgIHsga2V5OiAnSWNvbmFDYWxlbmRhcmlvJywgICAgbGFiZWw6ICdCb3R0b25lIGNhbGVuZGFyaW8nIH0sXHJcbiAgICB7IGtleTogJ0ljb25hT3JvbG9naW8nLCAgICAgIGxhYmVsOiAnQm90dG9uZSBvcm9sb2dpbycgfSxcclxuICAgIHsga2V5OiAnSWNvbmFDYW5jZWxsYXppb25lJywgbGFiZWw6ICdCb3R0b25lIGNhbmNlbGxhemlvbmUnIH0sXHJcbiAgICB7IGtleTogJ1Rvb2x0aXAnLCAgICAgICAgICAgIGxhYmVsOiAnVG9vbHRpcCcgfSxcclxuICBdO1xyXG5cclxuICByZWFkb25seSBkYXRlRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCBsYWJlbDogJ01vdXNlIFNvcHJhJyB9LFxyXG4gICAgeyBrZXk6ICdGb2N1c2VkJywgICBsYWJlbDogJ1NlbGV6aW9uYXRvJyB9LFxyXG4gICAgeyBrZXk6ICdOb3RWYWxpZCcsICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgIGxhYmVsOiAnU29sYSBMZXR0dXJhJyB9LFxyXG4gIF07XHJcblxyXG4gIHNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgQWN0aW9uQnV0dG9uRmllbGQgcGVyIGxlIHRhYiBDU1MgKDMgZWxlbWVudGksIDMgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgYWN0aW9uQnV0dG9uRmllbGRTdHlsZUVsZW1lbnRzID0gW1xyXG4gICAgeyBrZXk6ICdDb250YWluZXInLCAgIGxhYmVsOiAnQm90dG9uZScgfSxcclxuICAgIHsga2V5OiAnSWNvbmEnLCAgICAgICBsYWJlbDogJ0ljb25hJyB9LFxyXG4gICAgeyBrZXk6ICdEZXNjcml6aW9uZScsIGxhYmVsOiAnRXRpY2hldHRhIChsYWJlbCknIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgYWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlcyA9IFtcclxuICAgIHsga2V5OiAnTm9ybWFsZScsICAgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsICAgbGFiZWw6ICdNb3VzZSBTb3ByYScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25hdG8nLCBsYWJlbDogJ1NlbGV6aW9uYXRvIChjbGljayknIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRBY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvKiogTWV0YWRhdGkgZGVnbGkgZWxlbWVudGkgZGVsIEltYWdlRmllbGQgcGVyIGxlIHRhYiBDU1MgKDMgZWxlbWVudGksIDIgc3RhdGkpICovXHJcbiAgcmVhZG9ubHkgaW1hZ2VGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCAgICBsYWJlbDogJ0Rlc2NyaXppb25lIChsYWJlbCknIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVEaXNlZ25hJywgbGFiZWw6ICdCb3R0b25lIERpc2VnbmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgaW1hZ2VGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRJbWFnZUZpZWxkU3R5bGVTdGF0ZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIC8qKiBNZXRhZGF0aSBkZWdsaSBlbGVtZW50aSBkZWwgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkIHBlciBsZSB0YWIgQ1NTICgzIGVsZW1lbnRpLCAyIHN0YXRpKSAqL1xyXG4gIHJlYWRvbmx5IGltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgIGxhYmVsOiAnQ29udGVuaXRvcmUnIH0sXHJcbiAgICB7IGtleTogJ0Rlc2NyaXppb25lJywgIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZU1hcmNhJywgbGFiZWw6ICdCb3R0b25lIE1hcmNhJyB9LFxyXG4gIF07XHJcblxyXG4gIHJlYWRvbmx5IGltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGVzID0gW1xyXG4gICAgeyBrZXk6ICdOb3JtYWxlJywgICBsYWJlbDogJ05vcm1hbGUnIH0sXHJcbiAgICB7IGtleTogJ01vdXNlb3ZlcicsIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8jcmVnaW9uIExpc3RWYWx1ZUZpZWxkU3R5bGVDU1Mg4oCUIG1ldGFkYXRpIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdFZhbHVlQ29tYm9FbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgICAgICAgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnTGFiZWwnLCAgICAgICAgICAgbGFiZWw6ICdFdGljaGV0dGEnIH0sXHJcbiAgICB7IGtleTogJ0Nhc2VsbGFUcmlnZ2VyJywgIGxhYmVsOiAnQ2FzZWxsYSBTZWxlY3QnIH0sXHJcbiAgICB7IGtleTogJ0JvdHRvbmVDYW5jZWxsYScsIGxhYmVsOiAnQm90dG9uZSBDYW5jZWxsYScgfSxcclxuICBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdFZhbHVlUmFkaW9FbGVtZW50cyA9IFtcclxuICAgIHsga2V5OiAnQ29udGFpbmVyJywgbGFiZWw6ICdDb250ZW5pdG9yZScgfSxcclxuICAgIHsga2V5OiAnTGFiZWwnLCAgICAgbGFiZWw6ICdFdGljaGV0dGEnIH0sXHJcbiAgICB7IGtleTogJ09wemlvbmUnLCAgIGxhYmVsOiAnT3B6aW9uZScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25lJywgbGFiZWw6ICdTZWxlemlvbmUgKHJhZGlvKScgfSxcclxuICBdO1xyXG4gIHByaXZhdGUgcmVhZG9ubHkgbGlzdFZhbHVlQnV0dG9uRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0xhYmVsJywgICBsYWJlbDogJ0V0aWNoZXR0YScgfSxcclxuICAgIHsga2V5OiAnQm90dG9uZScsIGxhYmVsOiAnQm90dG9uZScgfSxcclxuICBdO1xyXG5cclxuICBnZXQgbGlzdFZhbHVlU3R5bGVFbGVtZW50cygpIHtcclxuICAgIGNvbnN0IGx2ID0gdGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZDtcclxuICAgIGNvbnN0IG1vZGUgPSBOdW1iZXIobHY/LlByZXNlbnRhdGlvbk1vZGUpO1xyXG4gICAgaWYgKG1vZGUgPT09IExpc3RQcmVzZW50YXRpb25FbnVtWydDb21ibyBib3gnXSkgcmV0dXJuIHRoaXMubGlzdFZhbHVlQ29tYm9FbGVtZW50cztcclxuICAgIGlmIChtb2RlID09PSBMaXN0UHJlc2VudGF0aW9uRW51bVsnUHVsc2FudGUgY29uIHRlc3RvJ10pIHJldHVybiB0aGlzLmxpc3RWYWx1ZUJ1dHRvbkVsZW1lbnRzO1xyXG4gICAgcmV0dXJuIHRoaXMubGlzdFZhbHVlUmFkaW9FbGVtZW50cztcclxuICB9XHJcblxyXG4gIHJlYWRvbmx5IGxpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCAgIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ1NlbGV6aW9uYXRvJywgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgICAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRMaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xyXG5cclxuICAvLyNlbmRyZWdpb24gTGlzdFZhbHVlRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1Mg4oCUIG1ldGFkYXRpIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIHJlYWRvbmx5IGltYWdlU2VsZWN0b3JGaWVsZFN0eWxlRWxlbWVudHMgPSBbXHJcbiAgICB7IGtleTogJ0NvbnRhaW5lcicsICAgICAgICBsYWJlbDogJ0NvbnRlbml0b3JlJyB9LFxyXG4gICAgeyBrZXk6ICdDYXNlbGxhU2VsZXppb25lJywgbGFiZWw6ICdDYXNlbGxhIGRpIHNlbGV6aW9uZScgfSxcclxuICAgIHsga2V5OiAnRGVzY3JpemlvbmUnLCAgICAgIGxhYmVsOiAnRGVzY3JpemlvbmUgKGxhYmVsKScgfSxcclxuICAgIHsga2V5OiAnU2VsZXppb25pJywgICAgICAgIGxhYmVsOiAnU2VsZXppb25pIChjaGVja2JveCknIH0sXHJcbiAgXTtcclxuXHJcbiAgcmVhZG9ubHkgaW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZXMgPSBbXHJcbiAgICB7IGtleTogJ05vcm1hbGUnLCAgICAgbGFiZWw6ICdOb3JtYWxlJyB9LFxyXG4gICAgeyBrZXk6ICdNb3VzZW92ZXInLCAgIGxhYmVsOiAnTW91c2UgU29wcmEnIH0sXHJcbiAgICB7IGtleTogJ1NlbGV6aW9uYXRvJywgbGFiZWw6ICdTZWxlemlvbmF0bycgfSxcclxuICAgIHsga2V5OiAnTm90VmFsaWQnLCAgICBsYWJlbDogJ05vbiBWYWxpZG8nIH0sXHJcbiAgICB7IGtleTogJ1JlYWRvbmx5JywgICAgbGFiZWw6ICdTb2xhIExldHR1cmEnIH0sXHJcbiAgXTtcclxuXHJcbiAgc2VsZWN0ZWRJbWFnZVNlbGVjdG9yRmllbGRTdHlsZVN0YXRlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgLy8jZW5kcmVnaW9uIEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtQnVpbGRlcjogVW50eXBlZEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBlbnVtSGVscGVyOiBFbnVtSGVscGVyLFxyXG4gICAgcHJpdmF0ZSBkaWFsb2c6IE1hdERpYWxvZyxcclxuICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIHByaXZhdGUgaHR0cENsaWVudDogSHR0cENsaWVudCxcclxuICAgIHByaXZhdGUgdXRpbGl0eUhlbHBlclNlcnZpY2U6IFV0aWxpdHlIZWxwZXJTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgYXN5bmMgbmdPbkluaXQoKSB7XHJcblxyXG4gICAgdGhpcy5jb25maWd1cmVDb2x1bW5zKCk7XHJcbiAgICB0aGlzLmNvbmZpZ3VyZUZpZWxkc0V4dHJhKCk7XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGQuRGF0YUdldHRlciA9PSBudWxsKSB7IHRoaXMuZmllbGQuRGF0YUdldHRlciA9IG5ldyBEYXRhR2V0dGVyKCk7IH1cclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgIT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtW1wiRGEgbW9kdWxvIGRpbmFtaWNvXCJdKSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvbiA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gXCJ1bmRlZmluZWRcIiAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5jcmVhdGVDb2x1bW5LZXlzKHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUuUGFyYW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoXHJcbiAgICAgICF0aGlzLmZpZWxkVHlwZXNUb0V4Y2x1ZGUuaW5jbHVkZXMoRmllbGRUeXBlRW51bVtcIkZvcm0gZGkgZGV0dGFnbGlvXCJdKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmllbGRUeXBlc1RvRXhjbHVkZS5wdXNoKEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5vbkZpZWxkVHlwZUNoYW5nZShmYWxzZSk7XHJcbiAgICB0aGlzLmF2YWlsYWJsZUZpZWxkcyA9IHRoaXMuYXZhaWxhYmxlRmllbGRzXHJcbiAgICAgID8gdGhpcy5hdmFpbGFibGVGaWVsZHMuZmlsdGVyKChmKSA9PiBmICE9IHRoaXMuZmllbGQpXHJcbiAgICAgIDogW107XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBpbXBvc3RhcmUgaSB2YWxvcmkgZGEgc3VnZ2VyaXJlIG5lbGwnYXV0b2NvbXBsZXRlIGRlbCBjYW1wbyBGb3JtdWxhLlxyXG4gICAqIFZpZW5lIHNjYXRlbmF0byBhbCBmb2N1cyAoaW4gcXVlc3RvIGNhc28gdmllbmUgcGFzc2F0byBpbCBwYXJhbWV0cm8gYSBudWxsIHBlciBkaWZmZXJlbnppYXJsb1xyXG4gICAqIGRhbGwnZXZlbnRvIGRpIGNsaWNrIHN1bGxhIHRhc3RpZXJhKSBlIGFsIGtleXVwIHN1bGwnaW5wdXQgKGlsIHBhcmFtZXRybyDDqCBkaXZlcnNvIGRhIG51bGwpLlxyXG4gICAqIEBwYXJhbSBrZXlib2FyZEV2ZW50IEV2ZW50byBzY2F0ZW5hdG8gYWwga2V5dXAgc3VsbGEgdGFzdGllcmEuIFNlIG51bGwgYWxsb3JhIGlsIG1ldG9kbyDDqCBzdGF0byBpbnZvY2F0byBkYWwgZm9jdXMgc3VsbCdpbnB1dC5cclxuICAgKiBAc3VtbWFyeSBBZ2dpb3JuYSBsJ2VsZW5jbyBkZWkgc3VnZ2VyaW1lbnRpIHBlciBsJ2F1dG9jb21wbGV0ZSBzZSBsJ3V0ZW50ZSBlc2VndWUgaWwgZm9jdXMgc3VsbCdpbnB1dFxyXG4gICAqIG9wcHVyZSBhbCBrZXl1cCBzdWxsYSB0YXN0aWVyYSBkaSB1biB0YXN0byBkaXZlcnNvIGRhbGxlIGZyZWNjZS5cclxuICAgKi9cclxuICAvLyBzZXRGb3JtdWxhQXV0b2NvbXBsZXRlT3B0aW9ucyhrZXlib2FyZEV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgLy8gICAvLyBDcmVvIGwnYXJyYXkgcGVyIGwnYXV0b2NvbXBsZXRlIHNvbG8gc2Ugc3RvIGZhY2VuZG8gaWwgZm9jdXMgc3VsbCdpbnB1dCBvIHNlIHN0byBwcmVtZW5kbyB1biB0YXN0b1xyXG4gIC8vICAgLy8gc3VsbGEgdGFzdGllcmEgZGl2ZXJzbyBkYWxsZSBmcmVjY2UgKGluIHF1ZXN0J3VsdGltbyBjYXNvLCBzZSBub24gdmllbmUgZXNlZ3VpdG8gaWwgZmlsdHJvIHN1bGwnZXZlbnRvLFxyXG4gIC8vICAgLy8gbm9uIHNpIHB1w7Igc2VsZXppb25hcmUgdW4gc3VnZ2VyaW1lbnRvIGRlbGwnYXV0b2NvbXBsZXRlIHBlcmNow6ggYWwgY2xpY2sgdmVycmViYmUgcmljYXJpY2F0byBsJ2FycmF5IGVcclxuICAvLyAgIC8vIHNpIHByZWRlcmViYmUgbGEgc2VsZXppb25lIGFwcGVuYSBmYXR0YSkuXHJcbiAgLy8gICBpZiAoIWtleWJvYXJkRXZlbnQgfHwgIWtleWJvYXJkRXZlbnQuY29kZS5pbmNsdWRlcyhcIkFycm93XCIpKSB7XHJcbiAgLy8gICAgIHRoaXMuZm9ybXVsYUF1dG9jb21wbGV0ZU9wdGlvbnMgPSBVdGlsaXR5SGVscGVyU2VydmljZS5HZXRBdXRvY29tcGxldGVPcHRpb25zKHRoaXMuYXZhaWxhYmxlRmllbGRzLCB0aGlzLmZpZWxkLkZvcm11bGEpO1xyXG4gIC8vICAgfVxyXG4gIC8vIH1cclxuICBzZXRWaXNpYmxlSWZBdXRvY29tcGxldGVPcHRpb25zKGtleWJvYXJkRXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgIC8vIENyZW8gbCdhcnJheSBwZXIgbCdhdXRvY29tcGxldGUgc29sbyBzZSBzdG8gZmFjZW5kbyBpbCBmb2N1cyBzdWxsJ2lucHV0IG8gc2Ugc3RvIHByZW1lbmRvIHVuIHRhc3RvXHJcbiAgICAvLyBzdWxsYSB0YXN0aWVyYSBkaXZlcnNvIGRhbGxlIGZyZWNjZSAoaW4gcXVlc3QndWx0aW1vIGNhc28sIHNlIG5vbiB2aWVuZSBlc2VndWl0byBpbCBmaWx0cm8gc3VsbCdldmVudG8sXHJcbiAgICAvLyBub24gc2kgcHXDsiBzZWxlemlvbmFyZSB1biBzdWdnZXJpbWVudG8gZGVsbCdhdXRvY29tcGxldGUgcGVyY2jDqCBhbCBjbGljayB2ZXJyZWJiZSByaWNhcmljYXRvIGwnYXJyYXkgZVxyXG4gICAgLy8gc2kgcHJlZGVyZWJiZSBsYSBzZWxlemlvbmUgYXBwZW5hIGZhdHRhKS5cclxuICAgIGlmICgha2V5Ym9hcmRFdmVudCB8fCAha2V5Ym9hcmRFdmVudC5jb2RlLmluY2x1ZGVzKFwiQXJyb3dcIikpIHtcclxuICAgICAgdGhpcy5WaXNpYmxlSWZBdXRvY29tcGxldGVPcHRpb25zID1cclxuICAgICAgICBVdGlsaXR5SGVscGVyU2VydmljZS5HZXRBdXRvY29tcGxldGVPcHRpb25zKFxyXG4gICAgICAgICAgdGhpcy5hdmFpbGFibGVGaWVsZHMsXHJcbiAgICAgICAgICB0aGlzLmZpZWxkLlZpc2libGVJZlxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50KSB7XHJcbiAgICB2YXIgaztcclxuICAgIGsgPSBldmVudC5rZXlDb2RlOyAvLyAgICAgICAgIGsgPSBldmVudC5rZXlDb2RlOyAgKEJvdGggY2FuIGJlIHVzZWQpXHJcbiAgICBpZiAoayA9PSAzNCkge1xyXG4gICAgICBldmVudC5rZXlDb2RlID0gMDtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYSBpbCBGb3JtR3JvdXAgcGVyIGwnYWdnaXVudGEgZGkgdW4gbnVvdm8gY2FtcG8gYWxsJ2ludGVybm8gZGVsbGEgZm9ybS5cclxuICAgKiBNZXRvZG8gcmljaGlhbWF0byBvZ25pIHZvbHRhIGNoZSBjYW1iaWEgaWwgdGlwbyBkZWwgY2FtcG8gc2NlbHRvIG8gdmllbmUgYWdnaXVudG8vbW9kaWZpY2F0byB1biBGaWVsZFxyXG4gICAqL1xyXG4gIGNyZWF0ZUZpZWxkRm9ybSgpIHtcclxuICAgIHRoaXMuZmllbGRGb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgTGFiZWw6IFtcclxuICAgICAgICB0aGlzLmZpZWxkLkxhYmVsLFxyXG4gICAgICAgIFtcclxuICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bYS16QS1aIF0qJFwiKSxcclxuICAgICAgICBdLFxyXG4gICAgICBdLFxyXG4gICAgICBEZXNjcmlwdGlvbjogW1xyXG4gICAgICAgIHRoaXMuZmllbGQuRGVzY3JpcHRpb24sXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgXSxcclxuICAgICAgUmVhZG9ubHk6IFt0aGlzLmZpZWxkLlJlYWRvbmx5XSxcclxuICAgICAgUmVhZG9ubHlJZjogW3RoaXMuZmllbGQuUmVhZG9ubHlJZl0sXHJcbiAgICAgIFJlcXVpcmVkOiBbdGhpcy5maWVsZC5SZXF1aXJlZF0sXHJcbiAgICAgIEZpZWxkVHlwZTogW1xyXG4gICAgICAgIHRoaXMuZmllbGQuRmllbGRUeXBlLFxyXG4gICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIF0sXHJcbiAgICAgIERNTW9kdWxlOiBbbnVsbF0sXHJcbiAgICAgIERNRmllbGQ6IFtudWxsXSxcclxuICAgICAgRGF0YUdldHRlclR5cGU6IFtcclxuICAgICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUsXHJcbiAgICAgICAgW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICBdLFxyXG4gICAgICBDb2xTcGFuU2l6ZXM6IFt0aGlzLmZpZWxkLkNvbFNwYW5TaXplc10sXHJcbiAgICAgIEluTGlzdFZpZXc6IFt0aGlzLmZpZWxkLkluTGlzdFZpZXddLFxyXG4gICAgICBJbnZpc2liaWxpdHk6IFt0aGlzLmZpZWxkLkludmlzaWJpbGl0eV0sXHJcbiAgICAgIFZpc2libGVJZjogW3RoaXMuZmllbGQuVmlzaWJsZUlmLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIE1haW50YWluX1ZhbHVlOiBbdGhpcy5maWVsZC5NYWludGFpbl9WYWx1ZV0sXHJcbiAgICAgIFRvb2x0aXA6IFt0aGlzLmZpZWxkLlRvb2x0aXAsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgTGFiZWxzdHlsZUNTUzogW3RoaXMuZmllbGQuTGFiZWxzdHlsZUNTUywgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBGaWVsZHN0eWxlQ1NTOiBbdGhpcy5maWVsZC5GaWVsZHN0eWxlQ1NTLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIEZvcm11bGE6IFt0aGlzLmZpZWxkLkZvcm11bGEsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgRGF0YUdldHRlclZhbHVlOiBbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSwgdGhpcy5xdWVzdGlvblBvbGxdLFxyXG4gICAgICBEYXRhR2V0dGVySGFzUmVzZXRCdXR0b246IFt0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckhhc1Jlc2V0QnV0dG9uLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIERhdGFHZXR0ZXJJc011bHRpc2VsZWN0OiBbdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJJc011bHRpc2VsZWN0LCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcblxyXG4gICAgICBBbnN3ZXJTdHlsZUxhYmVsc3R5bGVDU1M6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkxhYmVsc3R5bGVDU1MsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgQW5zd2VyU3R5bGVGaWVsZHN0eWxlQ1NTOiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5GaWVsZHN0eWxlQ1NTLCB0aGlzLnF1ZXN0aW9uUG9sbF0sXHJcbiAgICAgIEFuc3dlclN0eWxlVmlzaWJsZUlmOiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYsIHRoaXMucXVlc3Rpb25Qb2xsXSxcclxuICAgICAgQW5zd2VyU3R5bGVDb2xTcGFuU2l6ZXM6IFt0aGlzLmZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplc10sXHJcbiAgICAgIEFuc3dlclN0eWxlSW5MaXN0VmlldzogW3RoaXMuZmllbGQuQW5zd2VyU3R5bGUuSW5MaXN0Vmlld10sXHJcbiAgICAgIEFuc3dlclN0eWxlSW52aXNpYmlsaXR5OiBbdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5JbnZpc2liaWxpdHldLFxyXG4gICAgfSk7XHJcblxyXG4gICAgR2xvYmFsU2VydmljZS5kZWJ1Z0xvZyhcIkZPUk0gRklFTEQgQ1JFQVRPXCIsIHRoaXMuZmllbGQuRGF0YUdldHRlcik7XHJcblxyXG4gICAgaWYgKHRoaXMuZm9ybUZpZWxkc0dyb3Vwcykge1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJGaWVsZEdyb3VwXCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCh0aGlzLmZpZWxkLkZpZWxkR3JvdXAsIFZhbGlkYXRvcnMucmVxdWlyZWQpXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHF1ZXN0aW9uUG9sbChjb250cm9sOiBGb3JtQ29udHJvbCk6IHsgW3M6IHN0cmluZ106IGJvb2xlYW4gfSB7XHJcbiAgICAvLyBjJ8OoIHVuIEZvcm1Db250cm9sIGNoZSDDqCB2dW90byBjaGUgZGEgcHJvYmxlbWkgKHByb2JhYmlsbWVudGUgdHlwZSBEYXRhLCBjYW1wbyBGb3JtYXRvKVxyXG4gICAgaWYgKGNvbnRyb2wudmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBVdGlsaXR5SGVscGVyU2VydmljZS5zdHJpbmdDaGVja1BhcmVudGVzaXMoXHJcbiAgICAgICAgICBjb250cm9sLnZhbHVlLFxyXG4gICAgICAgICAgY29udHJvbC5oYXNWYWxpZGF0b3IoVmFsaWRhdG9ycy5yZXF1aXJlZClcclxuICAgICAgICApXHJcbiAgICAgICkge1xyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB7IFwiTWlzc2luZyBQYXJlbnRoZXNpc1wiOiB0cnVlIH07XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICBzdHJpbmdTYW5pdGFpemVkVmFsaWRhdG9yKGNvbnRyb2w6IEZvcm1Db250cm9sKTogeyBbczogc3RyaW5nXTogYm9vbGVhbiB9IHtcclxuICAgIC8vIGMnw6ggdW4gRm9ybUNvbnRyb2wgY2hlIMOoIHZ1b3RvIGNoZSBkYSBwcm9ibGVtaSAocHJvYmFiaWxtZW50ZSB0eXBlIERhdGEsIGNhbXBvIEZvcm1hdG8pXHJcbiAgICBpZiAoY29udHJvbC52YWx1ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIFV0aWxpdHlIZWxwZXJTZXJ2aWNlLnN0cmluZ0NoZWNrUGFyZW50ZXNpcyhcclxuICAgICAgICAgIGNvbnRyb2wudmFsdWUsXHJcbiAgICAgICAgICBjb250cm9sLmhhc1ZhbGlkYXRvcihWYWxpZGF0b3JzLnJlcXVpcmVkKVxyXG4gICAgICAgIClcclxuICAgICAgKSB7XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHsgXCJMYSBmb3JtdWxhIG5vbiDDqCB2YWxpZGFcIjogdHJ1ZSB9O1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gZ2V0QWxsRm9ybVZhbGlkYXRpb25FcnJvcnMoKSB7XHJcbiAgLy8gICBPYmplY3Qua2V5cyh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAvLyAgICAgY29uc3QgY29udHJvbEVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9XHJcbiAgLy8gICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoa2V5KS5lcnJvcnM7XHJcbiAgLy8gICAgIGlmIChjb250cm9sRXJyb3JzICE9IG51bGwpIHtcclxuICAvLyAgICAgICBPYmplY3Qua2V5cyhjb250cm9sRXJyb3JzKS5mb3JFYWNoKChrZXlFcnJvcikgPT4ge1xyXG4gIC8vICAgICAgICAgY29uc29sZS5sb2coXHJcbiAgLy8gICAgICAgICAgIFwiS2V5IGNvbnRyb2w6IFwiICsga2V5ICsgXCIsIGtleUVycm9yOiBcIiArIGtleUVycm9yICsgXCIsIGVyciB2YWx1ZTogXCIsXHJcbiAgLy8gICAgICAgICAgIGNvbnRyb2xFcnJvcnNba2V5RXJyb3JdXHJcbiAgLy8gICAgICAgICApO1xyXG4gIC8vICAgICAgIH0pO1xyXG4gIC8vICAgICB9XHJcbiAgLy8gICB9KTtcclxuICAvLyB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBkYWkgbWF0LWVycm9yIHBlciBwcmVuZGVyZSBnbGkgZXJyb3JpIGdlbmVyYXRpIHJlbGF0aXZpIGFsIGNhbXBvLlxyXG4gICAqIEBwYXJhbSBjb250cm9sIMOoIGlsIG5vbWUgZGVsIEdyb3VwQ29udHJvbCBkaSBjdWkgbGVnZ2VyZSBzZSBjaSBzb25vIGVycm9yaVxyXG4gICAqL1xyXG4gIGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKGNvbnRyb2w6IHN0cmluZykge1xyXG4gICAgaWYgKGNvbnRyb2wgPT0gXCJMYWJlbFwiKSBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdnZXRGb3JtVmFsaWRhdGlvbkVycm9ycycsIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJMYWJlbFwiXSk7XHJcblxyXG4gICAgY29uc3QgY29udHJvbEVycm9yczogVmFsaWRhdGlvbkVycm9ycyA9XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbY29udHJvbF0uZXJyb3JzO1xyXG4gICAgbGV0IGVycm9ycyA9IFtdO1xyXG4gICAgbGV0IHZhbHVlcyA9IFtdO1xyXG4gICAgaWYgKGNvbnRyb2xFcnJvcnMgIT0gbnVsbCkge1xyXG4gICAgICBPYmplY3Qua2V5cyhjb250cm9sRXJyb3JzKS5mb3JFYWNoKChrZXlFcnJvcikgPT4ge1xyXG4gICAgICAgIGVycm9ycy5wdXNoKGtleUVycm9yKTtcclxuICAgICAgfSk7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2NvbnRyb2w6ICcsIGNvbnRyb2wpO1xyXG4gICAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKCdlcnJvcnM6ICcsIGVycm9ycyk7XHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ3ZhbHVlczogJywgdmFsdWVzKTtcclxuICAgIH1cclxuICAgIHJldHVybiBlcnJvcnMuam9pbihcIiwgXCIpO1xyXG4gIH1cclxuXHJcbiAgc2V0QWdncmVnYXRpb24oZW51bVR5cGU6IGFueSwgcmVzZXQ6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuYWdncmVnYXRpb25GdW5jdGlvbkVudW0gPSBlbnVtVHlwZTtcclxuICAgIGlmIChyZXNldCkgeyB0aGlzLmZpZWxkLkFnZ3JlZ2F0aW9ucyA9IFtdOyB9XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHsgdGhpcy5hZ2dyZWdhdGlvbkZpZWxkTG9hZGVkID0gdHJ1ZTsgfSwgMTAwKTtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBvbkZpZWxkVHlwZUNoYW5nZVxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBxdWFuZG8gY2FtYmlhIGlsIEZpZWxkVHlwZSBkZWwgQmFzZUZpZWxkIGNoZSBzaSBzdGEgYWdnaXVuZ2VuZG8vbW9kaWZpY2FuZG8uXHJcbiAgICogUmljcmVhIGwnb2dnZXR0byBmaWVsZCBwb3BvbGFuZG8gc29sbyBsZSBwcm9wcmlldMOgIGRlbCBCYXNlRmllbGQgaW5zZXJpdGUgZGFsbCd1dGVudGVcclxuICAgKiAocXVlbGxlIGNvbXVuaSBhIHR1dHRlIGxlIHRpcG9sb2dpZSBkaSBjYW1wbyksIHJpY3JlYSBsYSBmb3JtIGUsIGluIGJhc2UgYWwgRmllbGRUeXBlIHNjZWx0byxcclxuICAgKiBhZ2dpdW5nZSBhbGxhIGZvcm0gaSBGb3JtQ29udHJvbCBuZWNlc3NhcmkgZSBzZWxlemlvbmEgaWwgdGVtcGxhdGUgY29ycmV0dG8gZGEgdXNhcmUuXHJcbiAgICogQHBhcmFtIHJlc3RvcmVGaWVsZCBTZSBUUlVFIHJpcHJpc3RpbmEgaSB2YWxvcmkgYmFzZSAoZXJlZGl0YXRpIGRhbCBtb2RlbGxvIEJhc2VGaWVsZCkgZGVsIGNhbXBvIGFnZ2l1bnRvL21vZGlmaWNhdG9cclxuICAgKi9cclxuICBvbkZpZWxkVHlwZUNoYW5nZShyZXN0b3JlRmllbGQ6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICB0aGlzLmFnZ3JlZ2F0aW9uRmllbGRMb2FkZWQgPSBmYWxzZTtcclxuXHJcblxyXG4gICAgaWYgKHJlc3RvcmVGaWVsZCkge1xyXG4gICAgICB0aGlzLnJlc3RvcmVCYXNlRmllbGRQcm9wZXJ0aWVzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5jcmVhdGVGaWVsZEZvcm0oKTtcclxuICAgIHRoaXMub25Db2xTcGFuU2l6ZVNlbGVjdCgpO1xyXG4gICAgaWYgKCh0aGlzLmZpZWxkIGFzIEJhc2VGaWVsZCkuSW5MaXN0VmlldyA9PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuSW5MaXN0VmlldyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAoKHRoaXMuZmllbGQgYXMgQmFzZUZpZWxkKS5JbnZpc2liaWxpdHkgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpZWxkLkludmlzaWJpbGl0eSA9IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTztcclxuICAgIH1cclxuICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gbnVsbDtcclxuXHJcbiAgICBzd2l0Y2ggKHRoaXMuZmllbGQuRmllbGRUeXBlKSB7XHJcblxyXG4gICAgICAvLyNyZWdpb24gQ0FNUE8gREkgVEVTVE9cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQ2FtcG8gZGkgdGVzdG9cIl06XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2sgIT0gbnVsbCkge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5UZXh0TWFzayA9IE51bWJlcigodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLlRleHRNYXNrKSBhcyBUZXh0TWFza0VudW07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5NaWNyb3Bob25lID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuTWljcm9waG9uZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlRleHRNYXNrXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuVGV4dE1hc2spXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIk1heExlbmdodFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLk1heExlbmdodCwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5MZW5naHRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkKS5NaW5MZW5naHQsIFtcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGwsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWljcm9waG9uZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLk1pY3JvcGhvbmUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25OYW1lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuSWNvbk5hbWUpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkljb25Qb3NpdGlvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25Qb3NpdGlvbilcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2hvd1RleHRGaWVsZEljb24gPSAhISgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25OYW1lKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMudGV4dEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdFRleHRGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIENBTVBPIERJIFRFU1RPXHJcblxyXG4gICAgICAvLyNyZWdpb24gTEFCRUxcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtWydFdGljaGV0dGEnXTpcclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgTGFiZWxGaWVsZCkuRXRpY2hldHRhID09IG51bGwpIHtcclxuICAgICAgICAgIHRoaXMuZmllbGQuRXRpY2hldHRhID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRXRpY2hldHRhXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIExhYmVsRmllbGQpLkV0aWNoZXR0YSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5sYWJlbEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdExhYmVsRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBMQUJFTFxyXG5cclxuICAgICAgLy8jcmVnaW9uIEJVVFRPTlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bJ0JvdHRvbmUnXTpcclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLkJ1dHRvbkNvZGUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5CdXR0b25Db2RlID0gXCJcIjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiQ29kaWNlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5CdXR0b25Db2RlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuQnV0dG9uQ29kZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkJ1dHRvbkNvZGUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uYVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuSWNvbilcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5idXR0b25GaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRBY3Rpb25CdXR0b25GaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEJVVFRPTiAgICAgIFxyXG5cclxuICAgICAgLy8jcmVnaW9uIEFSRUEgREkgVEVTVE9cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiQXJlYSBkaSB0ZXN0b1wiXTpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWljcm9waG9uZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLk1pY3JvcGhvbmUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUm93c1wiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5Sb3dzLCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNYXhMZW5naHRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWF4TGVuZ2h0LCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5MZW5naHRcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuTWluTGVuZ2h0LCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeWzAtOV0qJFwiKSxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaWNyb3Bob25lXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLk1pY3JvcGhvbmUpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJY29uTmFtZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkKS5JY29uTmFtZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvblBvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25Qb3NpdGlvbilcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnNob3dUZXh0YXJlYUZpZWxkSWNvbiA9ICEhKCh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25OYW1lKTtcclxuICAgICAgICB0aGlzLmluaXRUZXh0YXJlYUZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy50ZXh0YXJlYUZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQVJFQSBESSBURVNUT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIEJPT0xFQU5PXHJcbiAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5Cb29sZWFubzpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE5vdE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIklzVHJpc3RhdGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgQm9vbGVhbkZpZWxkKS5Jc1RyaXN0YXRlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUHJlc2V0YXRpb25UeXBlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBCb29sZWFuRmllbGQpLlByZXNldGF0aW9uVHlwZSxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmJvb2xlYWRGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRCb29sZWFuRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBCT09MRUFOT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIERBVEEgRS9JIE9SQVxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJEYXRhIGUvbyBvcmFcIl06XHJcbiAgICAgICAgdGhpcy5zZXRBZ2dyZWdhdGlvbihOb3ROdW1iZXJBZ2dyZWdhdGlvbkZ1bmN0aW9uRW51bSwgcmVzdG9yZUZpZWxkKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZmllbGQuSXNPbmx5RGF0ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLklzT25seURhdGUgPSBEYXRlVGltZVR5cGVFbnVtW1wiU29sbyBkYXRhXCJdO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJc09ubHlEYXRlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuSXNPbmx5RGF0ZSwgW1xyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgIF0pXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5EYXRlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLk1pbkRhdGUsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNYXhEYXRlXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLk1heERhdGUsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJEYXRlRm9ybWF0XCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuRGF0ZUZvcm1hdClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvbnNQb3NpdGlvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBEYXRlRmllbGQpLkljb25zUG9zaXRpb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkNsb3NlSWNvblBvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuQ2xvc2VJY29uUG9zaXRpb24pXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlVzZVRvb2x0aXBcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkKS5Vc2VUb29sdGlwID8/IGZhbHNlKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmRhdGVGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXREYXRlRmllbGRQcmV2aWV3KCk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBEQVRBIEUvSSBPUkFcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBDQU1QTyBOVU1FUklDT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJDYW1wbyBudW1lcmljb1wiXTpcclxuICAgICAgICB0aGlzLnNldEFnZ3JlZ2F0aW9uKE51bWJlckFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtLCByZXN0b3JlRmllbGQpO1xyXG5cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5Jc0ludGVnZXIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5Jc0ludGVnZXIgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJJc0ludGVnZXJcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5Jc0ludGVnZXIpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNaW5WYWx1ZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLk1pblZhbHVlLCBbXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeLT9bMC05XSsoLFswLTldK3xcXC5bMC05XSspPyRcIiksIC8vKFwiXlswLTldKiRcIiksXHJcbiAgICAgICAgICBdKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiTWF4VmFsdWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5NYXhWYWx1ZSwgW1xyXG4gICAgICAgICAgICB0aGlzLnF1ZXN0aW9uUG9sbCxcclxuICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFwiXi0/WzAtOV0rKCxbMC05XSt8XFwuWzAtOV0rKT8kXCIpLCAvLyhcIl5bMC05XSokXCIpLFxyXG4gICAgICAgICAgXSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkRlY2ltYWxTZXBhcmF0b3JcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuRGVjaW1hbFNlcGFyYXRvcixcclxuICAgICAgICAgICAgW3RoaXMucXVlc3Rpb25Qb2xsLCBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeW2EtekEtWiAtLycsLl8vXFxcXF48Pl0rXCIpXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiRGVjaW1hbFByZWNpc2lvblwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5EZWNpbWFsUHJlY2lzaW9uLFxyXG4gICAgICAgICAgICBbdGhpcy5xdWVzdGlvblBvbGwsIFZhbGlkYXRvcnMucGF0dGVybihcIl5bMC05XSskXCIpXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiVGhvdXNhbmRzU2VwYXJhdG9yXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLlRob3VzYW5kc1NlcGFyYXRvcixcclxuICAgICAgICAgICAgW3RoaXMucXVlc3Rpb25Qb2xsLCBWYWxpZGF0b3JzLnBhdHRlcm4oXCJeW2EtekEtWiAtLycsLl8vXFxcXF48Pl0rXCIpXVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiQ3VycmVuY3lTeW1ib2xcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuQ3VycmVuY3lTeW1ib2wsXHJcbiAgICAgICAgICAgIHRoaXMucXVlc3Rpb25Qb2xsXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJNZWFzdXJlVW5pdFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5NZWFzdXJlVW5pdCxcclxuICAgICAgICAgICAgdGhpcy5xdWVzdGlvblBvbGxcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvbk5hbWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5JY29uTmFtZSlcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSWNvblBvc2l0aW9uXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSWNvblBvc2l0aW9uKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zaG93TnVtZXJpY0ZpZWxkSWNvbiA9ICEhKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuSWNvbk5hbWUpO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5udW1lcmljRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0TnVtZXJpY0ZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gQ0FNUE8gTlVNRVJJQ09cclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBBTExFR0FUT1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uQWxsZWdhdG86XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJBbGxvd2VkTWltZVR5cGVzXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQpLkFsbG93ZWRNaW1lVHlwZXNcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiaXNNdWx0aUF0dGFjaFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQpLmlzTXVsdGlBdHRhY2gpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuYXR0YWNobWVudEZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEF0dGFjaG1lbnRGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEFMTEVHQVRPXHJcblxyXG4gICAgICAvLyNyZWdpb24gSU1NQUdJTkVcclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lOlxyXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRHluQXR0YWNobWVudCA9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5EeW5BdHRhY2htZW50ID0gbnVsbDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0eXBlb2YgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuRW5hYmxlRHJhd2luZyA9PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5FbmFibGVEcmF3aW5nID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4LFxyXG4gICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoNDMyMCldXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHggPSAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHggIT0gbnVsbCA/ICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeCA6IDEyODtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJFbmFibGVEcmF3aW5nXCIsXHJcbiAgICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkVuYWJsZURyYXdpbmcpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmltYWdlRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0SW1hZ2VGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuXHJcbiAgICAgIC8qXHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24gPSBuZXcgQXR0YWNobWVudEZpZWxkKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkVuYWJsZURyYXdpbmdcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkVuYWJsZURyYXdpbmcpXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIkltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudFwiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnRcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIC8vIEltcG9zdG8gaSBGb3JtQ29udHJvbCB2YXJpYWJpbGkuXHJcbiAgICAgIHRoaXMub25JbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnRDaGFuZ2UoKTtcclxuICAgICAgdGhpcy5maWVsZFR5cGVGb3JtVGVtcGxhdGUgPSB0aGlzLmltYWdlRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgICAqL1xyXG4gICAgICAvLyNlbmRyZWdpb24gSU1NQUdJTkVcclxuXHJcbiAgICAgIC8vI3JlZ2lvbiBFTEVOQ08gR0VORVJJQ09cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdOlxyXG4gICAgICAgIHRoaXMuc2V0QWdncmVnYXRpb24oTm90TnVtYmVyQWdncmVnYXRpb25GdW5jdGlvbkVudW0sIHJlc3RvcmVGaWVsZCk7XHJcblxyXG4gICAgICAgIGlmICgodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuSW5MaXN0VmlldyA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkluTGlzdFZpZXcgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkludmlzaWJpbGl0eSA9PSBudWxsKSB7XHJcbiAgICAgICAgICB0aGlzLmZpZWxkLkludmlzaWJpbGl0eSA9IEZpZWxkSW52aXNpYmlsaXR5RW51bS5OQVNDT1NUTztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSXNNdWx0aUNob2ljaGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLklzTXVsdGlDaG9pY2hlKVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiUHJlc2VudGF0aW9uTW9kZVwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlByZXNlbnRhdGlvbk1vZGUsXHJcbiAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWRcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5saXN0VmFsdWVGaWVsZEZvcm1UZW1wbGF0ZTtcclxuICAgICAgICB0aGlzLmluaXRMaXN0VmFsdWVGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIEVMRU5DTyBHRU5FUklDT1xyXG5cclxuICAgICAgLy8jcmVnaW9uIEVMRU5DTyBJTU1BR0lOSVxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl06XHJcblxyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICAgIFwiSXNNdWx0aUNob2ljaGVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5Jc011bHRpQ2hvaWNoZSlcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHgsXHJcbiAgICAgICAgICAgIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heCg0MzIwKV1cclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZmllbGRUeXBlRm9ybVRlbXBsYXRlID0gdGhpcy5pbWFnZUZpZWxkU2VsZWN0b3JGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgdGhpcy5pbml0SW1hZ2VTZWxlY3RvckZpZWxkUHJldmlldygpO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAvLyNlbmRyZWdpb24gRUxFTkNPIElNTUFHSU5JXHJcblxyXG4gICAgICAvLyNyZWdpb24gSU1NQUdJTkUgQ09OIE1BUktFUlxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJJbW1hZ2luZSBjb24gbWFya2Vyc1wiXTpcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuUmVzaXplZEltYWdlc0hlaWdodFB4LFxyXG4gICAgICAgICAgICBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXgoNDMyMCldXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMuaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkRm9ybVRlbXBsYXRlO1xyXG4gICAgICAgIHRoaXMuaW5pdEltYWdlV2l0aE1hcmtlcnNGaWVsZFByZXZpZXcoKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgLy8jZW5kcmVnaW9uIElNTUFHSU5FIENPTiBNQVJLRVIgICAgICAgIFxyXG5cclxuICAgICAgLy8jcmVnaW9uIExPT0tVUFxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uTG9va3VwOlxyXG5cclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgICBcIkVudGl0eVNvdXJjZU5hbWVcIixcclxuICAgICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExvb2t1cEZpZWxkKS5FbnRpdHlTb3VyY2VOYW1lLFxyXG4gICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgICAgXCJVc2VBc0dldE9yRGlzY2FyZFwiLFxyXG4gICAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbCgodGhpcy5maWVsZCBhcyBMb29rdXBGaWVsZCkuVXNlQXNHZXRPckRpc2NhcmQpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmZpZWxkVHlwZUZvcm1UZW1wbGF0ZSA9IHRoaXMubG9va3VwRmllbGRGb3JtVGVtcGxhdGU7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIC8vI2VuZHJlZ2lvbiBMT09LVVBcclxuICAgIH1cclxuICAgIGlmIChcclxuICAgICAgW1xyXG4gICAgICAgIEZpZWxkVHlwZUVudW0uQWxsZWdhdG8sXHJcbiAgICAgICAgRmllbGRUeXBlRW51bS5JbW1hZ2luZSxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtW1wiRm9ybSBkaSBkZXR0YWdsaW9cIl0sXHJcbiAgICAgIF0uaW5jbHVkZXModGhpcy5maWVsZC5GaWVsZFR5cGUpXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5maWVsZC5Gb3JtdWxhID0gbnVsbDtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm11bGFcIl0uZGlzYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiSW5MaXN0Vmlld1wiXS5kaXNhYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJJbnZpc2liaWxpdHlcIl0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkZvcm11bGFcIl0uZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJJbkxpc3RWaWV3XCJdLmVuYWJsZSgpO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiSW52aXNpYmlsaXR5XCJdLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICBbXHJcbiAgICAgICAgRmllbGRUeXBlRW51bS5BbGxlZ2F0byxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtLkltbWFnaW5lLFxyXG4gICAgICAgIEZpZWxkVHlwZUVudW1bXCJGb3JtIGRpIGRldHRhZ2xpb1wiXSxcclxuICAgICAgICBGaWVsZFR5cGVFbnVtW1wiRGF0YSBlL28gb3JhXCJdLFxyXG4gICAgICBdLmluY2x1ZGVzKHRoaXMuZmllbGQuRmllbGRUeXBlKVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJMYWJlbHN0eWxlQ1NTXCJdLmRpc2FibGUoKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkZpZWxkc3R5bGVDU1NcIl0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsc3R5bGVDU1NcIl0uZW5hYmxlKCk7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuY29udHJvbHNbXCJGaWVsZHN0eWxlQ1NTXCJdLmVuYWJsZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKFtGaWVsZFR5cGVFbnVtLkJvb2xlYW5vXS5pbmNsdWRlcyh0aGlzLmZpZWxkLkZpZWxkVHlwZSkpIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsc3R5bGVDU1NcIl0uZGlzYWJsZSgpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9sc1tcIkxhYmVsc3R5bGVDU1NcIl0uZW5hYmxlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uRmllbGRUeXBlQ2hhbmdlXHJcblxyXG4gIC8vI3JlZ2lvbiBvbkRhdGFHZXR0ZXJUeXBlQ2hhbmdlXHJcbiAgYXN5bmMgb25EYXRhR2V0dGVyVHlwZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgPT0gRGF0YUdldHRlclR5cGVFbnVtWydEYSBtb2R1bG8gZGluYW1pY28nXSAmJiB0aGlzLmZvcm1zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIHRoaXMuZ2V0QWxsTW9kdWxlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgIT0gRGF0YUdldHRlclR5cGVFbnVtLkZvcm11bGEpIHtcclxuICAgICAgdGhpcy5maWVsZC5Gb3JtdWxhID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID0gbnVsbDtcclxuICAgIHRoaXMuRE1Nb2R1bGUgPSBudWxsO1xyXG4gICAgdGhpcy5ETUZpZWxkID0gbnVsbDtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9uRGF0YUdldHRlclR5cGVDaGFuZ2VcclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGludm9jYXRvIGFsIGNhbWJpbyBkZWwgdmFsb3JlIGRlbGxhIHByb3ByaWV0w6AgSW1hZ2VJc0NvbnRleHR1YWxBdHRhY2htZW50IG5lbCBjYXNvXHJcbiAgICogZGkgY2FtcGkgZGkgdGlwbyBJbW1hZ2luZS4gU2UgVFJVRSBhbGxvcmEgcmltdW92ZSBpIEZvcm1Db250cm9sIHBlciBsZSBwcm9wcmlldMOgIElzTXVsdGlBdHRhY2hcclxuICAgKiBlIEFsbG93ZWRNaW1lVHlwZXMgZSBhZ2dpdW5nZSBpIEZvcm1Db250cm9sIHBlciBsZSBwcm9wcmlldMOgIEltZ05hbWUgZSBDb250ZXh0dWFsQXR0YWNobWVudCxcclxuICAgKiBhbHRyaW1lbnRpIGlsIGNvbnRyYXJpby5cclxuICAgKi9cclxuICBvbkltYWdlSXNDb250ZXh0dWFsQXR0YWNobWVudENoYW5nZSgpIHtcclxuXHJcbiAgICAvKlxyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuSW1nTmFtZSA9IG51bGw7XHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5BdHRhY2hEZWZpbml0aW9uLkFsbG93ZWRNaW1lVHlwZXMgPSBbXTtcclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uSXNNdWx0aUF0dGFjaCA9IGZhbHNlO1xyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQ29udGV4dHVhbEF0dGFjaG1lbnQgPSBudWxsO1xyXG5cclxuICAgIGlmICgodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWFnZUlzQ29udGV4dHVhbEF0dGFjaG1lbnQpIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiSXNNdWx0aUF0dGFjaFwiKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiQWxsb3dlZE1pbWVUeXBlc1wiKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiSW1nTmFtZVwiLFxyXG4gICAgICAgIG5ldyBVbnR5cGVkRm9ybUNvbnRyb2woXHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5JbWdOYW1lLFxyXG4gICAgICAgICAgVmFsaWRhdG9ycy5yZXF1aXJlZFxyXG4gICAgICAgIClcclxuICAgICAgKTsgICAgICBcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5hZGRDb250cm9sKFxyXG4gICAgICAgIFwiQ29udGV4dHVhbEF0dGFjaG1lbnRcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQ29udGV4dHVhbEF0dGFjaG1lbnQsXHJcbiAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiSW1nTmFtZVwiKTtcclxuICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5yZW1vdmVDb250cm9sKFwiQ29udGV4dHVhbEF0dGFjaG1lbnRcIik7XHJcbiAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuYWRkQ29udHJvbChcclxuICAgICAgICBcIklzTXVsdGlBdHRhY2hcIixcclxuICAgICAgICBuZXcgVW50eXBlZEZvcm1Db250cm9sKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZCkuQXR0YWNoRGVmaW5pdGlvbi5Jc011bHRpQXR0YWNoXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmFkZENvbnRyb2woXHJcbiAgICAgICAgXCJBbGxvd2VkTWltZVR5cGVzXCIsXHJcbiAgICAgICAgbmV3IFVudHlwZWRGb3JtQ29udHJvbChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkF0dGFjaERlZmluaXRpb24uQWxsb3dlZE1pbWVUeXBlc1xyXG4gICAgICAgIClcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgICovXHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIHBlciBpbnRlcmNldHRhcmUgbCdhZ2dpdW50YSBkaSB1biBhbGxlZ2F0byBuZWkgY2FtcGkgZGkgdGlwbyBJbW1hZ2luZSBwZXIgYWdnaW9ybmFyZVxyXG4gICAqIGlsIHZhbG9yZSBkZWxsYSBwcm9wcmlldMOgIENvbnRleHR1YWxBdHRhY2htZW50IGUgbGEgdmFsaWRhemlvbmUgZGVsIHJlbGF0aXZvIEZvcm1Db250cm9sLlxyXG4gICAqIEBwYXJhbSBldmVudCBBcnJheSBjb250ZW5lbnRlIGwnZWxlbmNvIGFnZ2lvcm5hdG8gZGVnbGkgYWxsZWdhdGkgY2FyaWNhdGkgKG5lbCBub3N0cm8gY2FzbyBuZSBjb250aWVuZSBhbCBwacO5IDEpLlxyXG4gICAqL1xyXG4gIGNhdGNoQ29udGV4dHVhbEF0dGFjaG1lbnRDaGFuZ2UoZXZlbnQ6IEFycmF5PElBdHRhY2htZW50RFRPPikge1xyXG4gICAgLypcclxuICAgIGlmIChldmVudCAmJiBldmVudC5sZW5ndGggPiAwKSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkNvbnRleHR1YWxBdHRhY2htZW50ID0gZXZlbnRbMF07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5Db250ZXh0dWFsQXR0YWNobWVudCA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzW1wiQ29udGV4dHVhbEF0dGFjaG1lbnRcIl0uc2V0VmFsdWUoXHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkNvbnRleHR1YWxBdHRhY2htZW50XHJcbiAgICApO1xyXG4gICAgKi9cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbGxhIHNlbGV6aW9uZSBkaSB1bmEgY2xhc3NlIG5lbGxhIHNlbGVjdCBwZXIgbGUgY29sb25uZSBkaSBib290c3RyYXBcclxuICAgKiBkYSB1c2FyZSBuZWxsYSB2aXN1YWxpenphemlvbmUgZGVsIGNhbXBvLiBRdWVzdGEgZnVuemlvbmUgbWFuaXBvbGEgbGEgc29yZ2VudGUgZGF0aSBwZXJcclxuICAgKiBsYSBlcXAtc2VsZWN0IGluIG1vZG8gZGEgZXNjbHVkZXJlIGkgdmFsb3JpIGRlbGwnZW51bWVyYXRvcmUgY2hlIGZhbm5vIHJpZmVyaW1lbnRvIGFkXHJcbiAgICogdW5hIGxhcmdoZXp6YSBkaSBzY2hlcm1vIGdpw6Agc2VsZXppb25hdGEuIEVzZW1waW86IHBlciBnbGkgc2NoZXJtaSBwaWNjb2xpIChzbSkgbCd1dGVudGVcclxuICAgKiBzZWxlemlvbmEgbGEgY2xhc3NlIFwiY29sLXNtLTZcIiwgYWwgY2hhbmdlIGRlbCB2YWxvcmUgcXVlc3RvIG1ldG9kbyByaW11b3ZlIGRhbGxhIHNlbGVjdFxyXG4gICAqIHR1dHRpIGdsaSBhbHRyaSB2YWxvcmkgcGVyIGxhIGdyYW5kZXp6YSBkaSBzY2hlcm1vIHNlbGV6aW9uYXRhLlxyXG4gICAqL1xyXG4gIG9uQ29sU3BhblNpemVTZWxlY3QoKSB7XHJcbiAgICAvLyBSZWN1cGVybyBsJ2FycmF5IGRlZ2xpIG9nZ2V0dGkgY2hpYXZlLXZhbG9yZSBjaGUgcmFwcHJlc2V0YSBsJ2VudW1lcmF0b3JlXHJcbiAgICBsZXQgY29sU2l6ZUNsYXNzRW51bUFycmF5ID0gdGhpcy5lbnVtSGVscGVyLmdldEVudW1BcnJheShcclxuICAgICAgQ29sU3BhblNpemVzRW51bSxcclxuICAgICAgZmFsc2UsXHJcbiAgICAgIG51bGxcclxuICAgICk7XHJcbiAgICAvLyBDb3N0cnVpc2NvIGwnYXJyYXkgZGVsbGUgY2xhc3NpIHNlbGV6aW9uYXRlIGRhbGwndXRlbnRlIGluIGZvcm1hdG8gc3RyaW5nYVxyXG4gICAgbGV0IHNlbGVjdGVkRGltZW5zaW9uc0NvbXBpbGF6aW9uZTogQXJyYXk8c3RyaW5nPiA9IHRoaXMuZmllbGQuQ29sU3BhblNpemVzXHJcbiAgICAgID8gdGhpcy5maWVsZC5Db2xTcGFuU2l6ZXMubWFwKChjb2wpID0+IENvbFNwYW5TaXplc0VudW1bY29sXSlcclxuICAgICAgOiBbXTtcclxuICAgIGxldCBzZWxlY3RlZERpbWVuc2lvbnNSaXNwb3N0YTogQXJyYXk8c3RyaW5nPiA9IHRoaXMuZmllbGQuQW5zd2VyU3R5bGUuQ29sU3BhblNpemVzXHJcbiAgICAgID8gdGhpcy5maWVsZC5BbnN3ZXJTdHlsZS5Db2xTcGFuU2l6ZXMubWFwKChjb2wpID0+IENvbFNwYW5TaXplc0VudW1bY29sXSlcclxuICAgICAgOiBbXTtcclxuICAgIC8vIEZpbHRybyBpIHZhbG9yaSBvdHRlbnV0aSBkYWxsJ2VudW1lcmF0b3JlIHBlciBlc2NsdWRlcmUgdHV0dGkgaSB2YWxvcmkgcGVyIGxlXHJcbiAgICAvLyBncmFuZGV6emUgZGkgc2NoZXJtbyBnacOgIHNlbGV6aW9uYXRlYWQgZXNjbHVzaW9uZSBkZWkgdmFsb3JpIHNlbGV6aW9uYXRpLlxyXG4gICAgdGhpcy5hdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmUgPSBjb2xTaXplQ2xhc3NFbnVtQXJyYXkuZmlsdGVyKFxyXG4gICAgICAodmFsdWU6IHsga2V5OiBudW1iZXI7IHZhbHVlOiBzdHJpbmcgfSkgPT5cclxuICAgICAgICAhc2VsZWN0ZWREaW1lbnNpb25zQ29tcGlsYXppb25lLmZpbmQoXHJcbiAgICAgICAgICAoY29sKSA9PlxyXG4gICAgICAgICAgICB2YWx1ZS52YWx1ZS5pbmNsdWRlcyhjb2wuc3Vic3RyaW5nKDQsIDYpKSAmJiB2YWx1ZS52YWx1ZSAhPSBjb2xcclxuICAgICAgICApXHJcbiAgICApO1xyXG4gICAgdGhpcy5hdmFpbGFibGVDb2xTcGFuU2l6ZXNSaXNwb3N0YSA9IGNvbFNpemVDbGFzc0VudW1BcnJheS5maWx0ZXIoXHJcbiAgICAgICh2YWx1ZTogeyBrZXk6IG51bWJlcjsgdmFsdWU6IHN0cmluZyB9KSA9PlxyXG4gICAgICAgICFzZWxlY3RlZERpbWVuc2lvbnNSaXNwb3N0YS5maW5kKFxyXG4gICAgICAgICAgKGNvbCkgPT5cclxuICAgICAgICAgICAgdmFsdWUudmFsdWUuaW5jbHVkZXMoY29sLnN1YnN0cmluZyg0LCA2KSkgJiYgdmFsdWUudmFsdWUgIT0gY29sXHJcbiAgICAgICAgKVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBpbnZvY2F0byBhbCBjYW1iaW8gZGVsIHRpcG8gZGkgdmlzdWFsaXp6YXppb25lIHNjZWx0YSBwZXIgaSBjYW1waSBkaSB0aXBvIGVsZW5jbyBnZW5lcmljby5cclxuICAgKiBTZSB2aWVuZSBzY2VsdGEgbGEgdmlzdWFsaXp6YXppb25lIGFkIGltbWFnaW5pIHN2dW90YSBsYSBsaXN0YSBkZWxsZSBjb3BwaWUgY2hpYXZlLXZhbG9yZSBpbnNlcml0ZVxyXG4gICAqIGluIHByZWNlZGVuemEsIGFsdHJpbWVudGkgc3Z1b3RhIGxhIGxpc3RhIGRlbGxlIGltbWFnaW5pIGNhcmljYXRlLlxyXG4gICAqL1xyXG4gIG9uUHJlc2VudGF0aW9uTW9kZUNoYW5nZSgpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLlByZXNlbnRhdGlvbk1vZGUgPT0gTGlzdFByZXNlbnRhdGlvbkVudW1bJ1JhZGlvIGJ1dHRvbiddKSB7XHJcbiAgICAgIHRoaXMuZmllbGQuSXNNdWx0aUNob2ljaGUgPSBmYWxzZTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBNZXRvZG8gaW52b2NhdG8gYWwgc2FsdmF0YWdnaW8gZGVnbGkgYWxsZWdhdGkgcXVhbmRvIHZpZW5lIGNvbmZpZ3VyYXRvIHVuIGNhbXBvIGRpIHRpcG8gXCJFbGVuY28gZ2VuZXJpY29cIlxyXG4gICAqIGNvbiBpbCB0aXBvIGRpIHZpc3VhbGl6emF6aW9uZSBhZCBpbW1hZ2luaS4gSW50ZXJjZXR0YSBsJ2VsZW5jbyBhZ2dpb3JuYXRvIGRlbGxlIGltbWFnaW5pIGNhcmljYXRlIGUgbG9cclxuICAgKiBtZW1vcml6emEgbmVsbCdvZ2dldHRvIGZpZWxkIGNvcnJlbnRlLlxyXG4gICAqIEBwYXJhbSBhdHRhY2htZW50cyBBcnJheSBhZ2dpb3JuYXRvIGRlZ2xpIGFsbGVnYXRpIGNhcmljYXRpLlxyXG4gICAqL1xyXG4gIGNhdGNoQnV0dG9uSW1hZ2VzQ2hhbmdlKGF0dGFjaG1lbnRzOiBBcnJheTxJQXR0YWNobWVudERUTz4pIHtcclxuXHJcbiAgICAodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkF0dGFjaG1lbnRMaXN0ID0gYXR0YWNobWVudHMgYXMgQXJyYXk8RHluQXR0YWNobWVudD47XHJcblxyXG4gICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5mb3JFYWNoKChhdHRhY2htZW50OiBEeW5BdHRhY2htZW50KSA9PiB7XHJcbiAgICAgIGlmICh0eXBlb2YgYXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID09IFwidW5kZWZpbmVkXCIpIHtcclxuXHJcbiAgICAgICAgdmFyIG15QmFzZTY0ID0gXCJkYXRhOmltYWdlL1wiICsgYXR0YWNobWVudC5GaWxlRXh0ZW5zaW9uLnRvTG93ZXJDYXNlKCkgKyBcIjtiYXNlNjQsXCIgKyBhdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICAgIHZhciBpbWcgPSBuZXcgSW1hZ2UoKTtcclxuXHJcbiAgICAgICAgaW1nLnNyYyA9IG15QmFzZTY0O1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICBpbWcuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgIGF0dGFjaG1lbnQuSW1hZ2VXaWR0aFB4ID0gaW1nLndpZHRoO1xyXG4gICAgICAgICAgYXR0YWNobWVudC5JbWFnZUhlaWdodFB4ID0gaW1nLmhlaWdodDtcclxuICAgICAgICAgIGF0dGFjaG1lbnQuQXR0YWNobWVudEZpZWxkVHlwZSA9IEF0dGFjaG1lbnRGaWVsZFR5cGVFbnVtLkVMRU5DT19JTU1BR0lOSTtcclxuICAgICAgICAgIGlmIChzZWxmLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cykgeyBzZWxmLmltYWdlU2VsZWN0b3JBdHRhY2htZW50cy5yZWxvYWREYXRhKCk7IH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICB9XHJcblxyXG4gIGNhdGNoQnV0dG9uSW1hZ2VDaGFuZ2UoYXR0YWNobWVudHM6IEFycmF5PElBdHRhY2htZW50RFRPPikge1xyXG5cclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQgPSBhdHRhY2htZW50c1sxXSBhcyBEeW5BdHRhY2htZW50O1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQgIT0gbnVsbCAmJiB0eXBlb2YgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPT0gXCJ1bmRlZmluZWRcIikge1xyXG5cclxuICAgICAgdmFyIG15QmFzZTY0ID0gXCJkYXRhOmltYWdlL1wiICsgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVFeHRlbnNpb24udG9Mb3dlckNhc2UoKSArIFwiO2Jhc2U2NCxcIiArIHRoaXMuZmllbGQuRHluQXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NDtcclxuICAgICAgdmFyIGltZyA9IG5ldyBJbWFnZSgpO1xyXG5cclxuICAgICAgaW1nLnNyYyA9IG15QmFzZTY0O1xyXG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XHJcbiAgICAgIGltZy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5JbWFnZVdpZHRoUHggPSBpbWcud2lkdGg7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlSGVpZ2h0UHggPSBpbWcuaGVpZ2h0O1xyXG4gICAgICAgIHNlbGYuZmllbGQuRHluQXR0YWNobWVudC5BdHRhY2htZW50RmllbGRUeXBlID0gQXR0YWNobWVudEZpZWxkVHlwZUVudW0uSU1NQUdJTkU7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBjYXRjaEJ1dHRvbkltYWdlV2l0aE1hcmtlcnNDaGFuZ2UoYXR0YWNobWVudHM6IEFycmF5PElBdHRhY2htZW50RFRPPikge1xyXG5cclxuICAgICh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuRHluQXR0YWNobWVudCA9IGF0dGFjaG1lbnRzWzFdIGFzIER5bkF0dGFjaG1lbnQ7XHJcblxyXG4gICAgaWYgKHRoaXMuZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsICYmIHR5cGVvZiB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9PSBcInVuZGVmaW5lZFwiKSB7XHJcblxyXG4gICAgICB2YXIgbXlCYXNlNjQgPSBcImRhdGE6aW1hZ2UvXCIgKyB0aGlzLmZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZUV4dGVuc2lvbi50b0xvd2VyQ2FzZSgpICsgXCI7YmFzZTY0LFwiICsgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50LkZpbGVEYXRhQmFzZTY0O1xyXG4gICAgICB2YXIgaW1nID0gbmV3IEltYWdlKCk7XHJcblxyXG4gICAgICBpbWcuc3JjID0gbXlCYXNlNjQ7XHJcbiAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgaW1nLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkltYWdlV2lkdGhQeCA9IGltZy53aWR0aDtcclxuICAgICAgICBzZWxmLmZpZWxkLkR5bkF0dGFjaG1lbnQuSW1hZ2VIZWlnaHRQeCA9IGltZy5oZWlnaHQ7XHJcbiAgICAgICAgc2VsZi5maWVsZC5EeW5BdHRhY2htZW50LkF0dGFjaG1lbnRGaWVsZFR5cGUgPSBBdHRhY2htZW50RmllbGRUeXBlRW51bS5JTU1BR0lORV9DT05fTUFSS0VSUztcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBjaGlhbWF0byBhbCBrZXl1cCBkZWdsaSBpbnB1dCB0ZXN0dWFsaSBjaGUgcHJldmVkb25vIGwnYWdnaXVudGEgZGVsIHZhbG9yZSBpbnNlcml0byBpbiB1biBhcnJheS5cclxuICAgKiBTZSBsJ3V0ZW50ZSBwcmVtZSBpbCB0YXN0byBpbnZpbywgaW4gYmFzZSBhbCB0aXBvIGRpIGNhbXBvIGNoZSBzdGEgaW5zZXJlbmRvL21vZGlmaWNhbmRvLCBxdWVzdG8gbWV0b2RvXHJcbiAgICogYWdnaXVuZ2UgaWwgdmFsb3JlIGluc2VyaXRvIGRhbGwndXRlbnRlIG5lbGxhIGxpc3RhIGRpIHN0cmluZ2hlIGNvcnJldHRhIChpbiBpbnB1dCB2aWVuZSBwYXNzYXRvIGlsIG5vbWVcclxuICAgKiBkZWxsYSBwcm9wcmlldMOgIGluIGN1aSBpbnNlcmlyZSBsYSBzdHJpbmdhKS5cclxuICAgKiBAcGFyYW0gZXZlbnQgRXZlbnRvIGNoZSByYXBwcmVzZW50YSBpbCBrZXl1cCBkZWxsJ3V0ZW50ZVxyXG4gICAqIEBwYXJhbSBwcm9wZXJ0eU5hbWUgTm9tZSBkZWxsYSBwcm9wcmlldMOgIGRlbCBmaWVsZCBpbiBjdWkgaW5zZXJpcmUgbGEgc3RyaW5nYSBkaWdpdGF0YS5cclxuICAgKi9cclxuICBvbk11bHRpU2VsZWN0SW5wdXRLZXl1cChldmVudCwgcHJvcGVydHlOYW1lOiBzdHJpbmcpIHtcclxuICAgIGlmIChldmVudC5jb2RlID09PSBcIkVudGVyXCIgfHwgZXZlbnQuY29kZSA9PT0gXCJOdW1wYWRFbnRlclwiKSB7XHJcbiAgICAgIHN3aXRjaCAodGhpcy5maWVsZC5GaWVsZFR5cGUpIHtcclxuICAgICAgICBjYXNlIEZpZWxkVHlwZUVudW0uTG9va3VwOlxyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlRW51bS5BbGxlZ2F0bzpcclxuICAgICAgICAgIGlmICghdGhpcy5maWVsZFtwcm9wZXJ0eU5hbWVdKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRbcHJvcGVydHlOYW1lXSA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLmZpZWxkW3Byb3BlcnR5TmFtZV0ucHVzaChldmVudC5jdXJyZW50VGFyZ2V0LnZhbHVlKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgRmllbGRUeXBlRW51bVtcIkltbWFnaW5lIGNvbiBtYXJrZXJzXCJdOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkltbWFnaW5lOlxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGdlbmVyaWNvXCJdOlxyXG4gICAgICAgICAgaWYgKCF0aGlzLmtleVZhbHVlT2JqZWN0LmtleSB8fCAhdGhpcy5rZXlWYWx1ZU9iamVjdC52YWx1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoISh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKSB7XHJcbiAgICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzID0ge307XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1t0aGlzLmtleVZhbHVlT2JqZWN0LmtleV0gPVxyXG4gICAgICAgICAgICB0aGlzLmtleVZhbHVlT2JqZWN0LnZhbHVlO1xyXG4gICAgICAgICAgdGhpcy5rZXlWYWx1ZU9iamVjdCA9IHsga2V5OiBcIlwiLCB2YWx1ZTogXCJcIiB9O1xyXG4gICAgICAgICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICB9XHJcbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQudmFsdWUgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTWV0b2RvIGNoaWFtYXRvIHBlciBtb3N0cmFyZSBjb21lIGVsZW5jbyBsZSBvcHppb25pIGFnZ2l1bnRlIGluIHVuIGNhbXBvIGRpIHRpcG8gXCJFbGVuY28gZ2VuZXJpY29cIi5cclxuICAgKiBAcmV0dXJucyBSZXN0aXR1aXNjZSB1biBhcnJheSBkaSBvZ2dldHRpIGRlbCB0aXBvIHsga2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcgfSBjb24gaSB2YWxvcmkgaW5zZXJpdGkgZGFsbCd1dGVudGUuXHJcbiAgICovXHJcbiAgZ2V0RGljdGlvbmFyeUtleVZhbHVlKCkge1xyXG4gICAgaWYgKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzKSB7XHJcbiAgICAgIHJldHVybiBPYmplY3Qua2V5cygodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycykubWFwKChrKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgIGtleTogayxcclxuICAgICAgICAgIHZhbHVlOiAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1trXSxcclxuICAgICAgICB9O1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBbXTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmltdW92ZXJlIHVuYSBvcHppb25lIGFnZ2l1bnRhIGFsIGNhbXBvIGRpIHRpcG8gXCJFbGVuY28gZ2VuZXJpY29cIlxyXG4gICAqIEBwYXJhbSBrZXkgTm9tZSBkZWxsYSBjaGlhdmUgZGEgcmltdW92ZXJlXHJcbiAgICovXHJcbiAgZGVsZXRlS2V5RnJvbURpY3Rpb25hcnkoa2V5OiBzdHJpbmcpIHtcclxuICAgIGRlbGV0ZSAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlyc1trZXldO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBvcGVuRm9ybXVsYURpYWxvZ1xyXG4gIG9wZW5Gb3JtdWxhRGlhbG9nKCkge1xyXG4gICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0Zvcm11bGEsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZHM6IHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZmllbGQuRm9ybXVsYSxcclxuICAgICAgICBmb3JtdWxhT2JqZWN0OiB0aGlzLmZvcm11bGFPYmplY3RcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dGb3JtdWxhUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdGhpcy5maWVsZC5Gb3JtdWxhID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9wZW5Gb3JtdWxhRGlhbG9nXHJcblxyXG5cclxuICAvLyNyZWdpb24gYXZhbnRpIGluZGlldHJvXHJcbiAgLy8gYXZhbnRpSW5kaWV0cm8od2hlcmU6IHN0cmluZykge1xyXG4gIC8vICAgdGhpcy5kaWFsb2dBdmFudGlJbmRpZXRyb1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dBdmFudGlJbmRpZXRybywge1xyXG4gIC8vICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gIC8vICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAvLyAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgLy8gICAgIGRhdGE6IHtcclxuICAvLyAgICAgICB3aGVyZTogd2hlcmVcclxuICAvLyAgICAgfSxcclxuICAvLyAgIH0pO1xyXG4gIC8vICAgdGhpcy5kaWFsb2dBdmFudGlJbmRpZXRyb1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgLy8gICAgIGNvbnNvbGUubG9nKHJlc3VsdClcclxuICAvLyAgICAgaWYgKHJlc3VsdD8uYWN0aW9uID09PSAnc2F2ZScpIHtcclxuICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhgSGFpIHNjZWx0byBzYWx2YSAoJHtyZXN1bHQud2hlcmV9KWApO1xyXG4gIC8vICAgICAgIGlmKHdoZXJlID09IFwiYXZhbnRpXCIpe1xyXG4gIC8vICAgICAgICAgdGhpcy5zYXZlQW5kRXhpdEFkZEZpZWxkKHRydWUsIDEpO1xyXG4gIC8vICAgICAgIH0gZWxzZSBpZiAod2hlcmUgPT0gXCJpbmRpZXRyb1wiKXtcclxuICAvLyAgICAgICAgIHRoaXMuc2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlLCAtMSk7XHJcbiAgLy8gICAgICAgfVxyXG4gIC8vICAgICB9XHJcbiAgLy8gICAgIGlmIChyZXN1bHQ/LmFjdGlvbiA9PT0gJ25vc2F2ZScpIHtcclxuICAvLyAgICAgICAvLyBjb25zb2xlLmxvZyhgSGFpIHNjZWx0byB2aWEgc2VuemEgc2FsdmFyZSAoJHtyZXN1bHQud2hlcmV9KWApO1xyXG4gIC8vICAgICAgIGlmKHdoZXJlID09IFwiYXZhbnRpXCIpe1xyXG4gIC8vICAgICAgICAgdGhpcy5zYXZlQW5kRXhpdEFkZEZpZWxkKGZhbHNlLCAxKTtcclxuICAvLyAgICAgICB9IGVsc2UgaWYgKHdoZXJlID09IFwiaW5kaWV0cm9cIil7XHJcbiAgLy8gICAgICAgICB0aGlzLnNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UsIC0xKTtcclxuICAvLyAgICAgICB9XHJcbiAgLy8gICAgIH1cclxuICAvLyAgIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gQ2xvc2VTYXZlKCkge1xyXG4gIC8vICAgdGhpcy5kaWFsb2dBdmFudGlJbmRpZXRyb1JlZi5jbG9zZSh7IGFjdGlvbjogJ3NhdmUnIH0pO1xyXG4gIC8vIH1cclxuXHJcbiAgLy8gQ2xvc2UoKSB7XHJcbiAgLy8gICB0aGlzLmRpYWxvZ0F2YW50aUluZGlldHJvUmVmLmNsb3NlKHsgYWN0aW9uOiAnbm9zYXZlJ30pO1xyXG4gIC8vIH1cclxuICAvLyNlbmRyZWdpb24gYW5hbnRpXHJcblxyXG4gIC8vI3JlZ2lvbiBvcGVuVmlzaWJsZUlmRGlhbG9nXHJcbiAgb3BlblZpc2libGVJZkRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZUlmUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0Zvcm11bGEsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZHM6IHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZmllbGQuVmlzaWJsZUlmLFxyXG4gICAgICAgIGZvcm11bGFPYmplY3Q6IHRoaXMuZm9ybXVsYU9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGVJZlJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGQuVmlzaWJsZUlmID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9wZW5WaXNpYmxlSWZEaWFsb2dcclxuXHJcbiAgLy8jcmVnaW9uIG9wZW5SZWFkT25seUlmRGlhbG9nXHJcbiAgb3BlblJlYWRPbmx5SWZEaWFsb2coKSB7XHJcbiAgICB0aGlzLmRpYWxvZ1JlYWRPbmx5SWZSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKHRoaXMuZGlhbG9nRm9ybXVsYSwge1xyXG4gICAgICBkaXNhYmxlQ2xvc2U6IHRydWUsXHJcbiAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI3NSVcIixcclxuICAgICAgZGF0YToge1xyXG4gICAgICAgIGZpZWxkczogdGhpcy5hdmFpbGFibGVGaWVsZHMsXHJcbiAgICAgICAgZm9ybXVsYTogdGhpcy5maWVsZC5SZWFkb25seUlmLFxyXG4gICAgICAgIGZvcm11bGFPYmplY3Q6IHRoaXMuZm9ybXVsYU9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlYWRPbmx5SWZSZWYuYWZ0ZXJDbG9zZWQoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkLlJlYWRvbmx5SWYgPSByZXN1bHQuZm9ybXVsYS50b1N0cmluZygpID09IFwiXCIgPyBudWxsIDogcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gb3BlblJlYWRPbmx5SWZEaWFsb2dcclxuXHJcbiAgLy8jcmVnaW9uIG9wZW5BbnN3ZXJTdHlsZVZpc2libGVJZkRpYWxvZ1xyXG4gIG9wZW5BbnN3ZXJTdHlsZVZpc2libGVJZkRpYWxvZygpIHtcclxuICAgIHRoaXMuZGlhbG9nVmlzaWJsZUlmUmVmID0gdGhpcy5kaWFsb2cub3Blbih0aGlzLmRpYWxvZ0Zvcm11bGEsIHtcclxuICAgICAgZGlzYWJsZUNsb3NlOiB0cnVlLFxyXG4gICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNzUlXCIsXHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBmaWVsZHM6IHRoaXMuYXZhaWxhYmxlRmllbGRzLFxyXG4gICAgICAgIGZvcm11bGE6IHRoaXMuZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmLFxyXG4gICAgICAgIGZvcm11bGFPYmplY3Q6IHRoaXMuZm9ybXVsYU9iamVjdFxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1Zpc2libGVJZlJlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHRoaXMuZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmID0gcmVzdWx0LmZvcm11bGEudG9TdHJpbmcoKSA9PSBcIlwiID8gbnVsbCA6IHJlc3VsdC5mb3JtdWxhLnRvU3RyaW5nKCk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIG9wZW5BbnN3ZXJTdHlsZVZpc2libGVJZkRpYWxvZ1xyXG5cclxuICBvblRleHRGaWVsZEljb25Ub2dnbGUoZW5hYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFlbmFibGVkKSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIFRleHRGaWVsZCkuSWNvbk5hbWUgPSBudWxsO1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLkljb25Qb3NpdGlvbiA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uTmFtZScpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25OYW1lJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25Qb3NpdGlvbicpKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ0ljb25Qb3NpdGlvbicpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIFRleHRGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIC8qKiBMZWdnZSBpbCB2YWxvcmUgZGkgdW5hIHByb3ByaWV0w6AgQ1NTIGRhIFRleHRGaWVsZFN0eWxlQ1NTICovXHJcbiAgZ2V0U3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBUZXh0RmllbGQpLlRleHRGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIC8qKiBJbXBvc3RhIG8gY2FuY2VsbGEgdW5hIHByb3ByaWV0w6AgQ1NTIGluIFRleHRGaWVsZFN0eWxlQ1NTIGUgYWdnaW9ybmEgbCdhbnRlcHJpbWEgKi9cclxuICBzZXRTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCB0ZiA9IHRoaXMuZmllbGQgYXMgVGV4dEZpZWxkO1xyXG4gICAgaWYgKCF0Zi5UZXh0RmllbGRTdHlsZUNTUykge1xyXG4gICAgICB0Zi5UZXh0RmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgLy8gdW5kZWZpbmVkIHZpZW5lIGVzY2x1c28gZGEgSlNPTi5zdHJpbmdpZnkg4oaSIGlsIEpTT04gcmltYW5lIGNvbXBhdHRvXHJcbiAgICAodGYuVGV4dEZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8qKiBJbml6aWFsaXp6YSBsYSBwcmV2aWV3IGRlbCBUZXh0RmllbGQgKEZvcm1Gb3JtR3JvdXAgKyByZWNvcmQgZHVtbXkpICovXHJcbiAgaW5pdFRleHRGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNUZXh0RmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IHRmID0gdGhpcy5maWVsZCBhcyBUZXh0RmllbGQ7XHJcbiAgICBpZiAoIXRmLlRleHRGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIHRmLlRleHRGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfdGYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06ICcnIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogWycnLCBbXHJcbiAgICAgICAgLi4uKHRmLk1pbkxlbmdodCA/IFtWYWxpZGF0b3JzLm1pbkxlbmd0aChOdW1iZXIodGYuTWluTGVuZ2h0KSldIDogW10pLFxyXG4gICAgICAgIC4uLih0Zi5NYXhMZW5naHQgPyBbVmFsaWRhdG9ycy5tYXhMZW5ndGgoTnVtYmVyKHRmLk1heExlbmdodCkpXSA6IFtdKSxcclxuICAgICAgXV1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8qKiBBZ2dpb3JuYSBOYW1lIGUgRm9ybUZvcm1Hcm91cCBxdWFuZG8gaWwgQ29kaWNlIGNhbWJpYSwgcGVyIG1hbnRlbmVyZSBsYSBwcmV2aWV3IGFsbGluZWF0YSAqL1xyXG4gIG9uTGFiZWxDaGFuZ2VGb3JQcmV2aWV3KG5ld0xhYmVsOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1RleHRGaWVsZCAmJiAhdGhpcy5pc051bWVyaWNGaWVsZCAmJiAhdGhpcy5pc1RleHRhcmVhRmllbGQgJiYgIXRoaXMuaXNCb29sZWFuRmllbGQgJiYgIXRoaXMuaXNBdHRhY2htZW50RmllbGQgJiYgIXRoaXMuaXNMYWJlbEZpZWxkICYmICF0aGlzLmlzRGF0ZUZpZWxkICYmICF0aGlzLmlzQWN0aW9uQnV0dG9uRmllbGQgJiYgIXRoaXMuaXNMaXN0VmFsdWVGaWVsZCkgcmV0dXJuO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gbmV3TGFiZWwgfHwgJ3ByZXZpZXdfdGYnO1xyXG4gICAgY29uc3QgaW5pdFZhbCA9IHRoaXMuaXNBdHRhY2htZW50RmllbGQgPyBbXSA6ICh0aGlzLmlzRGF0ZUZpZWxkID8gbnVsbCA6ICh0aGlzLmlzTGlzdFZhbHVlRmllbGQgPyAoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLklzTXVsdGlDaG9pY2hlID8gW10gOiBudWxsKSA6ICcnKSk7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFt0aGlzLmZpZWxkLk5hbWVdOiBpbml0VmFsIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW3RoaXMuZmllbGQuTmFtZV06IFtpbml0VmFsXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIFRleHRGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBOdW1lcmljRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICAvKiogU2luY3Jvbml6emEgTWluVmFsdWUvTWF4VmFsdWUgZGFsIGZpZWxkRm9ybUdyb3VwIGFsIGNhbXBvIGUgYWdnaW9ybmEgaSB2YWxpZGF0b3IgZGVsbCdhbnRlcHJpbWEgKi9cclxuICBvbk51bWVyaWNNaW5NYXhDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICBjb25zdCBuZiA9IHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkO1xyXG4gICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ01pblZhbHVlJykpIHtcclxuICAgICAgbmYuTWluVmFsdWUgPSB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnTWluVmFsdWUnKS52YWx1ZTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdNYXhWYWx1ZScpKSB7XHJcbiAgICAgIG5mLk1heFZhbHVlID0gdGhpcy5maWVsZEZvcm1Hcm91cC5nZXQoJ01heFZhbHVlJykudmFsdWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgb25OdW1lcmljRmllbGRJY29uVG9nZ2xlKGVuYWJsZWQ6IGJvb2xlYW4pIHtcclxuICAgIGlmICghZW5hYmxlZCkge1xyXG4gICAgICAodGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQpLkljb25OYW1lID0gbnVsbDtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkKS5JY29uUG9zaXRpb24gPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvbk5hbWUnKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uTmFtZScpLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmNvbnRhaW5zKCdJY29uUG9zaXRpb24nKSkge1xyXG4gICAgICAgIHRoaXMuZmllbGRGb3JtR3JvdXAuZ2V0KCdJY29uUG9zaXRpb24nKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGdldE51bWVyaWNTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIE51bWVyaWNGaWVsZCkuTnVtZXJpY0ZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0TnVtZXJpY1N0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IG5mID0gdGhpcy5maWVsZCBhcyBOdW1lcmljRmllbGQ7XHJcbiAgICBpZiAoIW5mLk51bWVyaWNGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIG5mLk51bWVyaWNGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAobmYuTnVtZXJpY0ZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXROdW1lcmljRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTnVtZXJpY0ZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBuZiA9IHRoaXMuZmllbGQgYXMgTnVtZXJpY0ZpZWxkO1xyXG4gICAgaWYgKCFuZi5OdW1lcmljRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBuZi5OdW1lcmljRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgY29uc3QgY29udHJvbE5hbWUgPSB0aGlzLmZpZWxkLkxhYmVsIHx8ICdwcmV2aWV3X25mJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgdGhpcy5wcmV2aWV3UmVjb3JkID0geyBbY29udHJvbE5hbWVdOiAnJyB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7XHJcbiAgICAgIFtjb250cm9sTmFtZV06IFsnJ11cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBOdW1lcmljRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gVGV4dGFyZWFGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIG9uVGV4dGFyZWFGaWVsZEljb25Ub2dnbGUoZW5hYmxlZDogYm9vbGVhbikge1xyXG4gICAgaWYgKCFlbmFibGVkKSB7XHJcbiAgICAgICh0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQpLkljb25OYW1lID0gbnVsbDtcclxuICAgICAgKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuSWNvblBvc2l0aW9uID0gbnVsbDtcclxuICAgICAgaWYgKHRoaXMuZmllbGRGb3JtR3JvdXAuY29udGFpbnMoJ0ljb25OYW1lJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvbk5hbWUnKS5zZXRWYWx1ZShudWxsKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5maWVsZEZvcm1Hcm91cC5jb250YWlucygnSWNvblBvc2l0aW9uJykpIHtcclxuICAgICAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnSWNvblBvc2l0aW9uJykuc2V0VmFsdWUobnVsbCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBnZXRUZXh0YXJlYVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgVGV4dGFyZWFGaWVsZCkuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldFRleHRhcmVhU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgdGEgPSB0aGlzLmZpZWxkIGFzIFRleHRhcmVhRmllbGQ7XHJcbiAgICBpZiAoIXRhLlRleHRhcmVhRmllbGRTdHlsZUNTUykge1xyXG4gICAgICB0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgICh0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRUZXh0YXJlYUZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc1RleHRhcmVhRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IHRhID0gdGhpcy5maWVsZCBhcyBUZXh0YXJlYUZpZWxkO1xyXG4gICAgaWYgKCF0YS5UZXh0YXJlYUZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgdGEuVGV4dGFyZWFGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfdGEnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06ICcnIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogWycnXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIFRleHRhcmVhRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gQm9vbGVhbkZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0Qm9vbGVhblN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgQm9vbGVhbkZpZWxkKS5Cb29sZWFuRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRCb29sZWFuU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgYmYgPSB0aGlzLmZpZWxkIGFzIEJvb2xlYW5GaWVsZDtcclxuICAgIGlmICghYmYuQm9vbGVhbkZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYmYuQm9vbGVhbkZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChiZi5Cb29sZWFuRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEJvb2xlYW5GaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNCb29sZWFuRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGJmID0gdGhpcy5maWVsZCBhcyBCb29sZWFuRmllbGQ7XHJcbiAgICBpZiAoIWJmLkJvb2xlYW5GaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGJmLkJvb2xlYW5GaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfYmYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IGZhbHNlIH07XHJcbiAgICB0aGlzLmZpZWxkLkZvcm1Gb3JtR3JvdXAgPSB0aGlzLmZvcm1CdWlsZGVyLmdyb3VwKHtcclxuICAgICAgW2NvbnRyb2xOYW1lXTogW2ZhbHNlXVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEJvb2xlYW5GaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBBdHRhY2htZW50RmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRBdHRhY2htZW50U3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBBdHRhY2htZW50RmllbGQpLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEF0dGFjaG1lbnRTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBhZiA9IHRoaXMuZmllbGQgYXMgQXR0YWNobWVudEZpZWxkO1xyXG4gICAgaWYgKCFhZi5BdHRhY2htZW50RmllbGRTdHlsZUNTUykge1xyXG4gICAgICBhZi5BdHRhY2htZW50RmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGFmLkF0dGFjaG1lbnRGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0QXR0YWNobWVudEZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0F0dGFjaG1lbnRGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgYWYgPSB0aGlzLmZpZWxkIGFzIEF0dGFjaG1lbnRGaWVsZDtcclxuICAgIGlmICghYWYuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYWYuQXR0YWNobWVudEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIGlmICghYWYuQWxsb3dlZE1pbWVUeXBlcykge1xyXG4gICAgICBhZi5BbGxvd2VkTWltZVR5cGVzID0gQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMuY29uY2F0KEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucykubWFwKGV4dCA9PiBleHQua2V5KTtcclxuICAgIH1cclxuICAgIGNvbnN0IGNvbnRyb2xOYW1lID0gdGhpcy5maWVsZC5MYWJlbCB8fCAncHJldmlld19hZic7XHJcbiAgICB0aGlzLmZpZWxkLk5hbWUgPSBjb250cm9sTmFtZTtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogW10gfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbW11dXHJcbiAgICB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gQXR0YWNobWVudEZpZWxkU3R5bGVDU1NcclxuXHJcbiAgLy8jcmVnaW9uIExhYmVsRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRMYWJlbFN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgTGFiZWxGaWVsZCkuTGFiZWxGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldExhYmVsU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbGYgPSB0aGlzLmZpZWxkIGFzIExhYmVsRmllbGQ7XHJcbiAgICBpZiAoIWxmLkxhYmVsRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBsZi5MYWJlbEZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChsZi5MYWJlbEZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXRMYWJlbEZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0xhYmVsRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGxmID0gdGhpcy5maWVsZCBhcyBMYWJlbEZpZWxkO1xyXG4gICAgaWYgKCFsZi5MYWJlbEZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgbGYuTGFiZWxGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfbGYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICBpZiAoIWxmLkV0aWNoZXR0YSkge1xyXG4gICAgICBsZi5FdGljaGV0dGEgPSB0aGlzLmZpZWxkLkRlc2NyaXB0aW9uIHx8ICdUZXN0byBldGljaGV0dGEgZGkgZXNlbXBpbyc7XHJcbiAgICB9XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IGxmLkV0aWNoZXR0YSB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7IFtjb250cm9sTmFtZV06IFsnJ10gfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIExhYmVsRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gRGF0ZUZpZWxkIOKAlCBoZWxwZXJzIHNwZWNpZmljaGUgZSBDU1NcclxuXHJcbiAgb25EYXRlVHlwZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRmID0gdGhpcy5maWVsZCBhcyBEYXRlRmllbGQ7XHJcbiAgICBsZXQgZm10OiBzdHJpbmc7XHJcbiAgICBzd2l0Y2ggKGRmLklzT25seURhdGUpIHtcclxuICAgICAgY2FzZSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIG9yYXJpbyddOiBmbXQgPSAnSEg6bW0nOyAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIERhdGVUaW1lVHlwZUVudW1bJ0RhdGEgZSBvcmEnXTogIGZtdCA9ICdkZC9NTS95eXl5IEhIOm1tJzsgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXQgPSAnZGQvTU0veXl5eSc7ICAgICAgICBicmVhaztcclxuICAgIH1cclxuICAgIGRmLkRhdGVGb3JtYXQgPSBmbXQ7XHJcbiAgICB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldCgnRGF0ZUZvcm1hdCcpPy5zZXRWYWx1ZShmbXQpO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGdldERhdGVTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIERhdGVGaWVsZCkuRGF0ZUZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0RGF0ZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGRmID0gdGhpcy5maWVsZCBhcyBEYXRlRmllbGQ7XHJcbiAgICBpZiAoIWRmLkRhdGVGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGRmLkRhdGVGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoZGYuRGF0ZUZpZWxkU3R5bGVDU1MgYXMgYW55KVtrZXldID0gdmFsdWUgfHwgdW5kZWZpbmVkO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIGluaXREYXRlRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzRGF0ZUZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBkZiA9IHRoaXMuZmllbGQgYXMgRGF0ZUZpZWxkO1xyXG4gICAgaWYgKCFkZi5EYXRlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBkZi5EYXRlRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgaWYgKGRmLklzT25seURhdGUgPT0gbnVsbCkge1xyXG4gICAgICBkZi5Jc09ubHlEYXRlID0gRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBkYXRhJ107XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfZGYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IG51bGwgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoe1xyXG4gICAgICBbY29udHJvbE5hbWVdOiBbbnVsbF1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBEYXRlRmllbGRTdHlsZUNTU1xyXG5cclxuICAvLyNyZWdpb24gQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRBY3Rpb25CdXR0b25TdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEFjdGlvbkJ1dHRvblN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGFiID0gdGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZDtcclxuICAgIGlmICghYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBhYi5BY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEFjdGlvbkJ1dHRvbkZpZWxkUHJldmlldygpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0FjdGlvbkJ1dHRvbkZpZWxkKSByZXR1cm47XHJcbiAgICBjb25zdCBhYiA9IHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQ7XHJcbiAgICBpZiAoIWFiLkFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgYWIuQWN0aW9uQnV0dG9uRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgdGhpcy5zdHlsZVZlcnNpb24rKztcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBBY3Rpb25CdXR0b25GaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBJbWFnZUZpZWxkU3R5bGVDU1Mg4oCUIGhlbHBlcnMgcGVyIGxlIHRhYiBDU1NcclxuXHJcbiAgZ2V0SW1hZ2VTdHlsZVZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkltYWdlRmllbGRTdHlsZUNTUykgYXMgYW55KT8uW2tleV0gPz8gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRJbWFnZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGNvbnN0IGltZyA9IHRoaXMuZmllbGQgYXMgSW1hZ2VGaWVsZDtcclxuICAgIGlmICghaW1nLkltYWdlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBpbWcuSW1hZ2VGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICAoaW1nLkltYWdlRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEltYWdlRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzSW1hZ2VGaWVsZCkgcmV0dXJuO1xyXG4gICAgY29uc3QgaW1nID0gdGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkO1xyXG4gICAgaWYgKCFpbWcuSW1hZ2VGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGltZy5JbWFnZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gSW1hZ2VGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRJbWFnZVdpdGhNYXJrZXJzU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBJbWFnZVdpdGhNYXJrZXJzRmllbGQpLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEltYWdlV2l0aE1hcmtlcnNTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpd20gPSB0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZDtcclxuICAgIGlmICghaXdtLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGl3bS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGl3bS5JbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEltYWdlV2l0aE1hcmtlcnNGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbWFnZVdpdGhNYXJrZXJzRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGl3bSA9IHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkO1xyXG4gICAgaWYgKCFpd20uSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaXdtLkltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgLy8jZW5kcmVnaW9uIEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTIOKAlCBoZWxwZXJzIHBlciBsZSB0YWIgQ1NTXHJcblxyXG4gIGdldExpc3RWYWx1ZVN0eWxlVmFsdWUoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuICgoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MpIGFzIGFueSk/LltrZXldID8/ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0TGlzdFZhbHVlU3R5bGVWYWx1ZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgY29uc3QgbHYgPSB0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkO1xyXG4gICAgaWYgKCFsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGx2Lkxpc3RWYWx1ZUZpZWxkU3R5bGVDU1MgPSB7fTtcclxuICAgIH1cclxuICAgIChsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTIGFzIGFueSlba2V5XSA9IHZhbHVlIHx8IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICBpbml0TGlzdFZhbHVlRmllbGRQcmV2aWV3KCk6IHZvaWQge1xyXG4gICAgaWYgKCF0aGlzLmlzTGlzdFZhbHVlRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGx2ID0gdGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZDtcclxuICAgIGlmICghbHYuTGlzdFZhbHVlRmllbGRTdHlsZUNTUykge1xyXG4gICAgICBsdi5MaXN0VmFsdWVGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfbHYnO1xyXG4gICAgdGhpcy5maWVsZC5OYW1lID0gY29udHJvbE5hbWU7XHJcbiAgICBjb25zdCBpbml0VmFsID0gbHYuSXNNdWx0aUNob2ljaGUgPyBbXSA6IG51bGw7XHJcbiAgICB0aGlzLnByZXZpZXdSZWNvcmQgPSB7IFtjb250cm9sTmFtZV06IGluaXRWYWwgfTtcclxuICAgIHRoaXMuZmllbGQuRm9ybUZvcm1Hcm91cCA9IHRoaXMuZm9ybUJ1aWxkZXIuZ3JvdXAoeyBbY29udHJvbE5hbWVdOiBbaW5pdFZhbF0gfSk7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgb25Jc011bHRpQ2hvaWNoZUNoYW5nZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5pc0xpc3RWYWx1ZUZpZWxkKSByZXR1cm47XHJcbiAgICB0aGlzLmluaXRMaXN0VmFsdWVGaWVsZFByZXZpZXcoKTtcclxuICB9XHJcblxyXG4gIC8vI2VuZHJlZ2lvbiBMaXN0VmFsdWVGaWVsZFN0eWxlQ1NTXHJcblxyXG4gIC8vI3JlZ2lvbiBJbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyDigJQgaGVscGVycyBwZXIgbGUgdGFiIENTU1xyXG5cclxuICBnZXRJbWFnZVNlbGVjdG9yU3R5bGVWYWx1ZShrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gKCgodGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQpLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTKSBhcyBhbnkpPy5ba2V5XSA/PyAnJztcclxuICB9XHJcblxyXG4gIHNldEltYWdlU2VsZWN0b3JTdHlsZVZhbHVlKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBjb25zdCBpc2YgPSB0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZDtcclxuICAgIGlmICghaXNmLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTKSB7XHJcbiAgICAgIGlzZi5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyA9IHt9O1xyXG4gICAgfVxyXG4gICAgKGlzZi5JbWFnZVNlbGVjdG9yRmllbGRTdHlsZUNTUyBhcyBhbnkpW2tleV0gPSB2YWx1ZSB8fCB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLnN0eWxlVmVyc2lvbisrO1xyXG4gIH1cclxuXHJcbiAgaW5pdEltYWdlU2VsZWN0b3JGaWVsZFByZXZpZXcoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuaXNJbWFnZVNlbGVjdG9yRmllbGQpIHJldHVybjtcclxuICAgIGNvbnN0IGlzZiA9IHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkO1xyXG4gICAgaWYgKCFpc2YuSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1MpIHtcclxuICAgICAgaXNmLkltYWdlU2VsZWN0b3JGaWVsZFN0eWxlQ1NTID0ge307XHJcbiAgICB9XHJcbiAgICBjb25zdCBjb250cm9sTmFtZSA9IHRoaXMuZmllbGQuTGFiZWwgfHwgJ3ByZXZpZXdfaXNmJztcclxuICAgIHRoaXMuZmllbGQuTmFtZSA9IGNvbnRyb2xOYW1lO1xyXG4gICAgY29uc3QgaW5pdFZhbCA9IGlzZi5Jc011bHRpQ2hvaWNoZSA/IFtdIDogbnVsbDtcclxuICAgIHRoaXMucHJldmlld1JlY29yZCA9IHsgW2NvbnRyb2xOYW1lXTogaW5pdFZhbCB9O1xyXG4gICAgdGhpcy5maWVsZC5Gb3JtRm9ybUdyb3VwID0gdGhpcy5mb3JtQnVpbGRlci5ncm91cCh7IFtjb250cm9sTmFtZV06IFtpbml0VmFsXSB9KTtcclxuICAgIHRoaXMuc3R5bGVWZXJzaW9uKys7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb24gSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVDU1NcclxuXHJcbiAgc3RyaW5nU2FuaXRpemVyKHZhbHVlKSB7XHJcbiAgICBpZiAoIVV0aWxpdHlIZWxwZXJTZXJ2aWNlLnN0cmluZ0NoZWNrUGFyZW50ZXNpcyh2YWx1ZSkpIHtcclxuICAgICAgLy8gYWxlcnQoXCJlcnJvcmUhXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIGRpc2FibGVTYXZlRmllbGRcclxuICAvKipcclxuICAgKiBNZXRvZG8gcGVyIGRpc2FiaWxpdGFyZSBpbCBwdWxzYW50ZSBwZXIgc2FsdmFyZSBpbCBjYW1wbyBpbnNlcml0by9tb2RpZmljYXRvLlxyXG4gICAqIEByZXR1cm5zIFJlc3RpdHVpc2NlIHVuIGJvb2xlYW5vLCBzZSB0cnVlIGlsIHNhbHZhdGFnZ2lvIHZpZW5lIGRpc2FiaWxpdGF0by5cclxuICAgKi9cclxuICBkaXNhYmxlU2F2ZUZpZWxkKCk6IGJvb2xlYW4ge1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkRm9ybUdyb3VwLmludmFsaWQpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgc3dpdGNoICh0aGlzLmZpZWxkLkZpZWxkVHlwZSkge1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5Gb3JtdWxhICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkZvcm11bGEgIT0gXCJcIlxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgaWYgKCEodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycykge1xyXG4gICAgICAgICAgICAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVQYWlycyA9IHt9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlU3RyaW5nICE9IHVuZGVmaW5lZCAmJlxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlU3RyaW5nICE9IG51bGwgJiZcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVN0cmluZyAhPSBcIlwiKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2VcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAhKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLlZhbHVlUGFpcnMgfHxcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl06XHJcblxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAhKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdCB8fFxyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5BdHRhY2htZW50TGlzdC5sZW5ndGggPT09IDAgfHxcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QuZmluZChcclxuICAgICAgICAgICAgKGkpID0+IChpLkJ1dHRvbktleSA9PSBudWxsIHx8IGkuQnV0dG9uS2V5ID09PSBcInVuZGVmaW5lZFwiIHx8IGkuQnV0dG9uS2V5ID09ICcnKSB8fCAoaS5CdXR0b25WYWx1ZSA9PSBudWxsIHx8IGkuQnV0dG9uVmFsdWUgPT09IFwidW5kZWZpbmVkXCIgfHwgaS5CdXR0b25WYWx1ZSA9PSAnJylcclxuICAgICAgICAgICkgIT0gbnVsbFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW0uTG9va3VwOlxyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAhKHRoaXMuZmllbGQgYXMgTG9va3VwRmllbGQpLkZpZWxkTmFtZXMgfHxcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExvb2t1cEZpZWxkKS5GaWVsZE5hbWVzLmxlbmd0aCA9PT0gMFxyXG4gICAgICAgICk7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gZGlzYWJsZVNhdmVGaWVsZFxyXG5cclxuICBvblNhdmVDbGljaygpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmRpc2FibGVTYXZlRmllbGQoKSkge1xyXG4gICAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmNvbGxlY3RWYWxpZGF0aW9uRXJyb3JzKCk7XHJcbiAgICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLldhcm5pbmcoXHJcbiAgICAgICAgZXJyb3JzLmxlbmd0aCA+IDAgPyBlcnJvcnMgOiBbJ0lsIGZvcm0gY29udGllbmUgZXJyb3JpIGRpIHZhbGlkYXppb25lLiddLFxyXG4gICAgICAgICdJbXBvc3NpYmlsZSBzYWx2YXJlJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNhdmVBbmRFeGl0QWRkRmllbGQodHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNvbGxlY3RWYWxpZGF0aW9uRXJyb3JzKCk6IHN0cmluZ1tdIHtcclxuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICBjb25zdCBsYWJlbE1hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgTGFiZWw6ICdDb2RpY2UnLFxyXG4gICAgICBEZXNjcmlwdGlvbjogJ0Rlc2NyaXppb25lJyxcclxuICAgICAgRmllbGRUeXBlOiAnVGlwbyBjYW1wbycsXHJcbiAgICAgIEZvcm11bGE6ICdGb3JtdWxhJyxcclxuICAgICAgVmlzaWJsZUlmOiAnVmlzaWJpbGUgc2UnLFxyXG4gICAgICBSZWFkb25seUlmOiAnU29sYSBsZXR0dXJhIHNlJyxcclxuICAgICAgVGV4dE1hc2s6ICdNYXNjaGVyYScsXHJcbiAgICAgIE1heExlbmd0aDogJ0x1bmdoZXp6YSBtYXNzaW1hJyxcclxuICAgICAgTWluVmFsdWU6ICdWYWxvcmUgbWluaW1vJyxcclxuICAgICAgTWF4VmFsdWU6ICdWYWxvcmUgbWFzc2ltbycsXHJcbiAgICAgIERhdGVGb3JtYXQ6ICdGb3JtYXRvIGRhdGEnLFxyXG4gICAgICBFdGljaGV0dGE6ICdUZXN0byBldGljaGV0dGEnLFxyXG4gICAgICBJY29uTmFtZTogJ0ljb25hJyxcclxuICAgICAgQnV0dG9uTGFiZWw6ICdFdGljaGV0dGEgYm90dG9uZScsXHJcbiAgICAgIEluTGlzdFZpZXc6ICdWaXNpYmlsZSBpbiBsaXN0YScsXHJcbiAgICAgIFJlcXVpcmVkOiAnT2JibGlnYXRvcmlvJyxcclxuICAgICAgSW52aXNpYmlsaXR5OiAnSW52aXNpYmlsaXTDoCcsXHJcbiAgICAgIEZpZWxkc3R5bGVDU1M6ICdTdGlsZSBjYW1wbycsXHJcbiAgICAgIExhYmVsc3R5bGVDU1M6ICdTdGlsZSBldGljaGV0dGEnLFxyXG4gICAgICBBbGxvd2VkTWltZVR5cGVzOiAnVGlwaSBNSU1FIGNvbnNlbnRpdGknLFxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBlcnJvck1zZ01hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgcmVxdWlyZWQ6ICfDqCBvYmJsaWdhdG9yaW8nLFxyXG4gICAgICBtaW5sZW5ndGg6ICfDqCB0cm9wcG8gY29ydG8nLFxyXG4gICAgICBtYXhsZW5ndGg6ICfDqCB0cm9wcG8gbHVuZ28nLFxyXG4gICAgICBwYXR0ZXJuOiAnY29udGllbmUgY2FyYXR0ZXJpIG5vbiB2YWxpZGknLFxyXG4gICAgICBtaW46ICfDqCBpbmZlcmlvcmUgYWwgdmFsb3JlIG1pbmltbycsXHJcbiAgICAgIG1heDogJ8OoIHN1cGVyaW9yZSBhbCB2YWxvcmUgbWFzc2ltbycsXHJcbiAgICAgIGVtYWlsOiAnbm9uIMOoIHVuIGluZGlyaXp6byBlbWFpbCB2YWxpZG8nLFxyXG4gICAgICBtYXREYXRlcGlja2VyUGFyc2U6ICdub24gw6ggdW5hIGRhdGEgdmFsaWRhJyxcclxuICAgIH07XHJcblxyXG4gICAgT2JqZWN0LmtleXModGhpcy5maWVsZEZvcm1Hcm91cC5jb250cm9scykuZm9yRWFjaChjb250cm9sTmFtZSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZpZWxkRm9ybUdyb3VwLmdldChjb250cm9sTmFtZSk7XHJcbiAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wuaW52YWxpZCAmJiBjb250cm9sLmVycm9ycykge1xyXG4gICAgICAgIGNvbnN0IGxhYmVsID0gbGFiZWxNYXBbY29udHJvbE5hbWVdIHx8IGNvbnRyb2xOYW1lO1xyXG4gICAgICAgIE9iamVjdC5rZXlzKGNvbnRyb2wuZXJyb3JzKS5mb3JFYWNoKGVycm9yS2V5ID0+IHtcclxuICAgICAgICAgIGNvbnN0IG1zZyA9IGVycm9yTXNnTWFwW2Vycm9yS2V5XSB8fCBgaGEgdW4gZXJyb3JlICgke2Vycm9yS2V5fSlgO1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goYElsIGNhbXBvIFwiJHtsYWJlbH1cIiAke21zZ31gKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgLy8gRXJyb3JpIHNwZWNpZmljaSBwZXIgdGlwbyBjYW1wb1xyXG4gICAgc3dpdGNoICh0aGlzLmZpZWxkLkZpZWxkVHlwZSkge1xyXG4gICAgICBjYXNlIEZpZWxkVHlwZUVudW1bXCJFbGVuY28gZ2VuZXJpY29cIl06IHtcclxuICAgICAgICBjb25zdCBsdiA9IHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQ7XHJcbiAgICAgICAgY29uc3QgaGFzRm9ybXVsYSA9IGx2LkZvcm11bGEgJiYgbHYuRm9ybXVsYSAhPT0gJyc7XHJcbiAgICAgICAgY29uc3QgaGFzVmFsdWVTdHJpbmcgPSBsdi5WYWx1ZVN0cmluZyAmJiBsdi5WYWx1ZVN0cmluZyAhPT0gJyc7XHJcbiAgICAgICAgY29uc3QgaGFzVmFsdWVQYWlycyA9IGx2LlZhbHVlUGFpcnMgJiYgbHYuVmFsdWVQYWlycy5sZW5ndGggPiAwO1xyXG4gICAgICAgIGlmICghaGFzRm9ybXVsYSAmJiAhaGFzVmFsdWVTdHJpbmcgJiYgIWhhc1ZhbHVlUGFpcnMpIHtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKCdMXFwnZWxlbmNvIG5vbiBjb250aWVuZSB2YWxvcmknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtW1wiRWxlbmNvIGltbWFnaW5pXCJdOiB7XHJcbiAgICAgICAgY29uc3QgaXNmID0gdGhpcy5maWVsZCBhcyBJbWFnZVNlbGVjdG9yRmllbGQ7XHJcbiAgICAgICAgaWYgKCFpc2YuQXR0YWNobWVudExpc3QgfHwgaXNmLkF0dGFjaG1lbnRMaXN0Lmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgZXJyb3JzLnB1c2goJ0xcXCdlbGVuY28gaW1tYWdpbmkgbm9uIGNvbnRpZW5lIGVsZW1lbnRpJyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc2YuQXR0YWNobWVudExpc3QuZmluZChcclxuICAgICAgICAgIGkgPT4gIWkuQnV0dG9uS2V5IHx8IGkuQnV0dG9uS2V5ID09PSAndW5kZWZpbmVkJyB8fCBpLkJ1dHRvbktleSA9PT0gJycgfHxcclxuICAgICAgICAgICAgICAgIWkuQnV0dG9uVmFsdWUgfHwgaS5CdXR0b25WYWx1ZSA9PT0gJ3VuZGVmaW5lZCcgfHwgaS5CdXR0b25WYWx1ZSA9PT0gJydcclxuICAgICAgICApKSB7XHJcbiAgICAgICAgICBlcnJvcnMucHVzaCgnQWxjdW5pIGVsZW1lbnRpIGRlbGxcXCdlbGVuY28gaW1tYWdpbmkgbm9uIHNvbm8gY29tcGxldGkgKGNoaWF2ZSBvIHZhbG9yZSBtYW5jYW50aSknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgY2FzZSBGaWVsZFR5cGVFbnVtLkxvb2t1cDoge1xyXG4gICAgICAgIGNvbnN0IGxmID0gdGhpcy5maWVsZCBhcyBMb29rdXBGaWVsZDtcclxuICAgICAgICBpZiAoIWxmLkZpZWxkTmFtZXMgfHwgbGYuRmllbGROYW1lcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIGVycm9ycy5wdXNoKCdJbCBMb29rdXAgbm9uIGhhIG5lc3N1biBjYW1wbyBjb25maWd1cmF0bycpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlcnJvcnM7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gc2F2ZUFuZEV4aXRBZGRGaWVsZFxyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgc2FsdmFyZSBpbCBjYW1wbyBpbnNlcml0by9tb2RpZmljYXRvLlxyXG4gICAqIFNlIMOoIHN0YXRvIGluc2VyaXRvIHVuIGZpZWxkIGNvbiBsYSBzdGVzc2EgbGFiZWwgdmllbmUgZ2VuZXJhdG8gdW4gZXJyb3JlIChsZSBsYWJlbCBkZXZvbm8gZXNzZXJlIHVuaXZvY2hlKS5cclxuICAgKiBVbmEgdm9sdGEgYWdnaXVudG8vYWdnaW9ybmF0byBpbCBjYW1wbyBuZWxsJ2VsZW5jbyBkZWkgRmllbGQgZGVsbGEgRm9ybSBjaGl1ZGUgaWwgZGlhbG9nIGUgcmljYXJpY2EgbGEgdGFiZWxsYVxyXG4gICAqIGNoZSBtb3N0cmEgbCdlbGVuY28gZGVpIGNhbXBpIGFnZ2l1bnRpIGFsbGEgZm9ybS5cclxuICAgKi9cclxuICBzYXZlQW5kRXhpdEFkZEZpZWxkKHNhdmU6IGJvb2xlYW4sIG5leHRSZWxhdGl2ZUluZGV4OiBudW1iZXIgPSAwKSB7XHJcbiAgICB0aGlzLnNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpO1xyXG4gICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzKSB7IHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzLnJlbG9hZERhdGEoKTsgfVxyXG4gICAgaWYgKHNhdmUpIHtcclxuXHJcbiAgICAgIHRoaXMuZmllbGQuTmFtZSA9IHRoaXMuZmllbGQuTGFiZWw7XHJcbiAgICAgIC8vIHJldHJvY29tcGF0aWJpbGl0w6AgY29uIHZhbHVlcGFpcnMgcGVyIEVsZW5jbyBHZW5lcmljb1xyXG4gICAgICBpZiAodGhpcy5maWVsZC5GaWVsZFR5cGUgPT0gRmllbGRUeXBlRW51bVtcIkVsZW5jbyBnZW5lcmljb1wiXSkge1xyXG4gICAgICAgIGlmICgoKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkZvcm11bGEgJiYgKHRoaXMuZmllbGQgYXMgTGlzdFZhbHVlRmllbGQpLkZvcm11bGEgIT0gXCJcIikgfHwgKCh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVN0cmluZyAmJiAodGhpcy5maWVsZCBhcyBMaXN0VmFsdWVGaWVsZCkuVmFsdWVTdHJpbmcgIT0gXCJcIikpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIExpc3RWYWx1ZUZpZWxkKS5WYWx1ZVBhaXJzID0gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW1bXCJFbGVuY28gaW1tYWdpbmlcIl0pIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QubGVuZ3RoID4gMCkpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlU2VsZWN0b3JGaWVsZCkuQXR0YWNobWVudExpc3QuZm9yRWFjaCgoYXR0YWNobWVudCkgPT4ge1xyXG4gICAgICAgICAgICBhdHRhY2htZW50LlJlc2l6ZWRJbWFnZUhlaWdodFB4ID0gKHRoaXMuZmllbGQgYXMgSW1hZ2VTZWxlY3RvckZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZmllbGQuRmllbGRUeXBlID09IEZpZWxkVHlwZUVudW0uSW1tYWdpbmUpIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQgIT0gbnVsbCkpIHtcclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEltYWdlRmllbGQpLkR5bkF0dGFjaG1lbnQuUmVzaXplZEltYWdlSGVpZ2h0UHggPSAodGhpcy5maWVsZCBhcyBJbWFnZUZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtW1wiSW1tYWdpbmUgY29uIG1hcmtlcnNcIl0pIHtcclxuICAgICAgICBpZiAoKCh0aGlzLmZpZWxkIGFzIEltYWdlV2l0aE1hcmtlcnNGaWVsZCkuRHluQXR0YWNobWVudCAhPSBudWxsKSkge1xyXG4gICAgICAgICAgKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5EeW5BdHRhY2htZW50LlJlc2l6ZWRJbWFnZUhlaWdodFB4ID0gKHRoaXMuZmllbGQgYXMgSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkKS5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmZpZWxkLkZpZWxkVHlwZSA9PSBGaWVsZFR5cGVFbnVtW1wiQm90dG9uZVwiXSkge1xyXG4gICAgICAgIGlmICgoKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLmZvcm11bGFzVGVtcCAhPSBudWxsKSkge1xyXG5cclxuICAgICAgICAgICh0aGlzLmZpZWxkIGFzIEFjdGlvbkJ1dHRvbkZpZWxkKS5mb3JtdWxhcyA9IG5ldyBBcnJheTxLZXlUeXBlVmFsdWU+KCk7XHJcblxyXG4gICAgICAgICAgdmFyIGZvcm11bGFzID0gKHRoaXMuZmllbGQgYXMgQWN0aW9uQnV0dG9uRmllbGQpLmZvcm11bGFzVGVtcDtcclxuICAgICAgICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZm9ybXVsYXMpO1xyXG5cclxuICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAga2V5cy5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNBbkFjdGlvbktleShrZXksIHRoaXMuZmllbGQsIGZvcm11bGFzKSkgeyByZXR1cm47IH1cclxuICAgICAgICAgICAgICB2YXIga3R2OiBLZXlUeXBlVmFsdWUgPSBuZXcgS2V5VHlwZVZhbHVlKCk7XHJcbiAgICAgICAgICAgICAga3R2LmtleSA9IGtleTtcclxuICAgICAgICAgICAgICBrdHYudG9vbHRpcCA9IGZvcm11bGFzW2tleV0udG9vbHRpcDtcclxuICAgICAgICAgICAgICBrdHYudHlwZSA9IGZvcm11bGFzW2tleV0udHlwZTtcclxuICAgICAgICAgICAgICBrdHYudmFsdWUgPSBmb3JtdWxhc1trZXldLnZhbHVlO1xyXG4gICAgICAgICAgICAgIC8qKiBwZXIgY2FtcGkgY29uIHZhbG9yaSB2aW5jb2xhdGkgYSB1bmEgbGlzdGEsIHBvcnRvIGRpZXRybyBzaWEgaWwgdmFsb3JlIHNlbGV6aW9uYXRvIGNoZSBxdWVsbGkgYW1taXNzaWJpbGkgKi9cclxuICAgICAgICAgICAgICBrdHYuYWxsb3dlZFZhbHVlcyA9IGZvcm11bGFzW2tleV0uYWxsb3dlZFZhbHVlcztcclxuICAgICAgICAgICAgICBrdHYuc2VsZWN0ZWRBbGxvd2VkVmFsdWUgPSBmb3JtdWxhc1trZXldLnNlbGVjdGVkQWxsb3dlZFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAodGhpcy5maWVsZCBhcyBBY3Rpb25CdXR0b25GaWVsZCkuZm9ybXVsYXMucHVzaChrdHYpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuXHJcblxyXG5cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuc2V0Q29kZVRvRXh0cmFGaWVsZHMoKTtcclxuXHJcbiAgICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coJ2FkZC1mb3JtLWZpZWxkIHNhdmUnLCB0aGlzLmZpZWxkKVxyXG4gICAgICBsZXQgb3V0ID0geyBmaWVsZDogdGhpcy5maWVsZCwgcmVvcGVuOiBuZXh0UmVsYXRpdmVJbmRleCB9XHJcbiAgICAgIHRoaXMuc2F2ZUZpZWxkRXZlbnQuZW1pdChvdXQpO1xyXG5cclxuXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBsZXQgb3V0ID0geyBmaWVsZDogbnVsbCwgcmVvcGVuOiBuZXh0UmVsYXRpdmVJbmRleCB9XHJcbiAgICAgIHRoaXMuc2F2ZUZpZWxkRXZlbnQuZW1pdChvdXQpO1xyXG5cclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHNhdmVBbmRFeGl0QWRkRmllbGRcclxuXHJcbiAgaXNBbkFjdGlvbktleShrZXksIGZpZWxkOiBBY3Rpb25CdXR0b25GaWVsZCwgZm9ybXVsYXM6IEFycmF5PGFueT4pIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJpc0FuQWN0aW9uS2V5IC0ga2V5XCIsIGtleSk7XHJcbiAgICBHbG9iYWxTZXJ2aWNlLmRlYnVnTG9nKFwiaXNBbkFjdGlvbktleSAtIGZpZWxkXCIsIGZpZWxkKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJpc0FuQWN0aW9uS2V5IC0gZm9ybXVsYXNcIiwgZm9ybXVsYXMpO1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgICAvKnZhciBjb2RlID0gZmllbGQuQnV0dG9uQ29kZTtcclxuICAgIHZhciBlbHMgPSBmb3JtdWxhc1tjb2RlXTtcclxuICAgIHJldHVybiAoT2JqZWN0LmtleXMoZWxzKS5maW5kKHggPT4geCA9PSBrZXkpICE9IG51bGwpOyovXHJcbiAgfVxyXG5cclxuICBzZXRDb2RlVG9FeHRyYUZpZWxkcygpIHtcclxuICAgIGlmICh0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMuZmlsdGVyKHggPT4geC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9PT0gdW5kZWZpbmVkKS5mb3JFYWNoKCh1ZmllbGRzKSA9PiB7XHJcbiAgICAgICAgdWZpZWxkcy5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9IHRoaXMuZmllbGQuTmFtZTtcclxuICAgICAgICBpZiAodHlwZW9mIHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA9PSBcImJvb2xlYW5cIikgeyB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPSB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIjsgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgIT0gbnVsbCAmJiB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMuZmlsdGVyKHggPT4geC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9PT0gdW5kZWZpbmVkKS5mb3JFYWNoKCh1ZmllbGRzKSA9PiB7XHJcbiAgICAgICAgdWZpZWxkcy5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9IHRoaXMuZmllbGQuTmFtZTtcclxuICAgICAgICBpZiAodHlwZW9mIHVmaWVsZHMuRmllbGRDb25maWdWYWx1ZSA9PSBcImJvb2xlYW5cIikgeyB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPSB1ZmllbGRzLkZpZWxkQ29uZmlnVmFsdWUgPyBcInRydWVcIiA6IFwiZmFsc2VcIjsgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiByZXN0b3JlQmFzZUZpZWxkUHJvcGVydGllc1xyXG4gIC8qKlxyXG4gICAqIE1ldG9kbyBwZXIgcmlwcmlzdGluYXJlIGwnb2dnZXR0byBmaWVsZCBhbCBjYW1iaW8gZGVsIHRpcG8gc2VsZXppb25hdG8uXHJcbiAgICogTGFzY2lhIHZhbG9yaXp6YXRlIHNvbG8gbGUgcHJvcHJpZXTDoCBkZWxsJ29nZ2V0dG8gQmFzZUZpZWxkIGNvbXVuZSBhIHR1dHRpIGkgdGlwaSBkaSBjYW1wby5cclxuICAgKi9cclxuICBwcml2YXRlIHJlc3RvcmVCYXNlRmllbGRQcm9wZXJ0aWVzKCkge1xyXG4gICAgaWYgKHRoaXMuZmllbGQpIHtcclxuICAgICAgY29uc3QgdG1wQmFzZUZpZWxkID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmZpZWxkLCAoa2V5LCB2YWx1ZSkgPT4ga2V5ID09PSAnRm9ybUZvcm1Hcm91cCcgPyB1bmRlZmluZWQgOiB2YWx1ZSkpO1xyXG4gICAgICB0aGlzLmZpZWxkID0gbmV3IEJhc2VGaWVsZCgpO1xyXG4gICAgICB0aGlzLmZpZWxkLkxhYmVsID0gdG1wQmFzZUZpZWxkLkxhYmVsO1xyXG4gICAgICB0aGlzLmZpZWxkLkRlc2NyaXB0aW9uID0gdG1wQmFzZUZpZWxkLkRlc2NyaXB0aW9uO1xyXG4gICAgICB0aGlzLmZpZWxkLlJlcXVpcmVkID0gdG1wQmFzZUZpZWxkLlJlcXVpcmVkO1xyXG4gICAgICB0aGlzLmZpZWxkLkZpZWxkVHlwZSA9IHRtcEJhc2VGaWVsZC5GaWVsZFR5cGU7XHJcbiAgICAgIHRoaXMuZmllbGQuRm9ybXVsYSA9IHRtcEJhc2VGaWVsZC5Gb3JtdWxhO1xyXG4gICAgICB0aGlzLmZpZWxkLkNvbFNwYW5TaXplcyA9IHRtcEJhc2VGaWVsZC5Db2xTcGFuU2l6ZXM7XHJcbiAgICAgIHRoaXMuZmllbGQuSW5MaXN0VmlldyA9IHRtcEJhc2VGaWVsZC5Jbkxpc3RWaWV3O1xyXG4gICAgICB0aGlzLmZpZWxkLkludmlzaWJpbGl0eSA9IHRtcEJhc2VGaWVsZC5JbnZpc2liaWxpdHk7XHJcbiAgICAgIHRoaXMuZmllbGQuVG9vbHRpcCA9IHRtcEJhc2VGaWVsZC5Ub29sdGlwO1xyXG4gICAgICB0aGlzLmZpZWxkLlJlYWRvbmx5ID0gdG1wQmFzZUZpZWxkLlJlYWRvbmx5O1xyXG4gICAgICB0aGlzLmZpZWxkLkZpZWxkR3JvdXAgPSB0bXBCYXNlRmllbGQuRmllbGRHcm91cDtcclxuICAgICAgdGhpcy5maWVsZC5WaXNpYmxlSWYgPSB0bXBCYXNlRmllbGQuVmlzaWJsZUlmO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyNyZWdpb24gcmVzdG9yZUJhc2VGaWVsZFByb3BlcnRpZXNcclxuXHJcbiAgY291bnRWYWx1ZVBhaXJzKHZhbHVlUGFpcnMpOiBudW1iZXIge1xyXG4gICAgaWYgKHZhbHVlUGFpcnMpIHtcclxuICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHZhbHVlUGFpcnMpLmxlbmd0aDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8jcmVnaW9uIENvbmZpZ3VyZUNvbHVtbnNcclxuICBjb25maWd1cmVDb2x1bW5zKCkge1xyXG5cclxuICAgIC8vIExpc3RhIEdlbmVyaWNhIGRpIGltbWFnaW5pXHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMgPSBbXTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogJ2FjdGlvbicsIGRpc3BsYXk6ICcnLCB0eXBlOiBUeXBlQ29sdW1uLk1lbnVBY3Rpb24sIGJ1dHRvbk1lbnVJY29uOiAnbW9yZV92ZXJ0Jywgc3R5bGVzOiB7IGZsZXg6ICcwIDAgNiUnIH0sXHJcbiAgICAgIGFjdGlvbnM6IFtcclxuICAgICAgICB7IG5hbWU6ICdFbGltaW5hJywgaWNvbjogJ2RlbGV0ZScsIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT4gdGhpcy5kZWxldGVMaXN0SW1hZ2UoZWxlbWVudCwgaW5kZXgsIGNvbCkgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBuYW1lOiBcIlNwb3N0YSBzdVwiLFxyXG4gICAgICAgICAgaWNvbjogXCJhcnJvd191cHdhcmRcIixcclxuICAgICAgICAgIGZuOiAoZWxlbWVudCwgaW5kZXgsIGNvbCkgPT5cclxuICAgICAgICAgICAgdGhpcy5tb3ZlRWxlbWVudChlbGVtZW50LCB0cnVlKSxcclxuICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT4gdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5pbmRleE9mKGVsZW1lbnQpID09PSAwLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogXCJTcG9zdGEgZ2nDuVwiLFxyXG4gICAgICAgICAgaWNvbjogXCJhcnJvd19kb3dud2FyZFwiLFxyXG4gICAgICAgICAgZm46IChlbGVtZW50LCBpbmRleCwgY29sKSA9PlxyXG4gICAgICAgICAgICB0aGlzLm1vdmVFbGVtZW50KGVsZW1lbnQsIGZhbHNlKSxcclxuICAgICAgICAgIGRpc2FibGVkOiAoZWxlbWVudCkgPT5cclxuICAgICAgICAgICAgdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5pbmRleE9mKGVsZW1lbnQpID49IHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QubGVuZ3RoIC0gMSxcclxuICAgICAgICB9LFxyXG4gICAgICBdXHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJGaWxlRGF0YUJhc2U2NFwiLFxyXG4gICAgICBkaXNwbGF5OiBcIkltbWFnaW5lXCIsXHJcbiAgICAgIHR5cGU6IFR5cGVDb2x1bW4uRXh0ZXJuYWxUZW1wbGF0ZSxcclxuICAgICAgZXh0ZXJuYWxUZW1wbGF0ZTogdGhpcy5HZW5lcmljTGlzdEltYWdlc0ltYWdlVGVtcGxhdGUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiBcIkJ1dHRvbktleVwiLFxyXG4gICAgICBkaXNwbGF5OiBcIkNoaWF2ZSpcIixcclxuICAgICAgdHlwZTogVHlwZUNvbHVtbi5FeHRlcm5hbFRlbXBsYXRlLFxyXG4gICAgICBleHRlcm5hbFRlbXBsYXRlOiB0aGlzLkdlbmVyaWNMaXN0SW1hZ2VzS2V5VGVtcGxhdGUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuY29uZmlnQ29sdW1uTGlzdEltYWdlcy5wdXNoKHtcclxuICAgICAga2V5OiBcIkJ1dHRvblZhbHVlXCIsXHJcbiAgICAgIGRpc3BsYXk6IFwiVmFsb3JlKlwiLFxyXG4gICAgICB0eXBlOiBUeXBlQ29sdW1uLkV4dGVybmFsVGVtcGxhdGUsXHJcbiAgICAgIGV4dGVybmFsVGVtcGxhdGU6IHRoaXMuR2VuZXJpY0xpc3RJbWFnZXNWYWx1ZVRlbXBsYXRlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJJbWFnZVdpZHRoUHhcIixcclxuICAgICAgZGlzcGxheTogXCJMYXJnaGV6emFcIlxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmNvbmZpZ0NvbHVtbkxpc3RJbWFnZXMucHVzaCh7XHJcbiAgICAgIGtleTogXCJJbWFnZUhlaWdodFB4XCIsXHJcbiAgICAgIGRpc3BsYXk6IFwiQWx0ZXp6YVwiXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvbiBDb25maWd1cmVDb2x1bW5zXHJcblxyXG4gIC8vI3JlZ2lvbiBtb3ZlRWxlbWVudFxyXG4gIHByaXZhdGUgbW92ZUVsZW1lbnQoXHJcbiAgICBlbGVtZW50OiBEeW5BdHRhY2htZW50LFxyXG4gICAgbW92ZVVwOiBib29sZWFuXHJcbiAgKSB7XHJcbiAgICBjb25zdCBzdGFydGluZ0luZGV4ID0gdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5pbmRleE9mKGVsZW1lbnQpO1xyXG4gICAgY29uc3QgZW5kaW5nSW5kZXggPSBzdGFydGluZ0luZGV4ICsgKG1vdmVVcCA/IC0xIDogMSk7XHJcblxyXG4gICAgdGhpcy5maWVsZC5BdHRhY2htZW50TGlzdC5zcGxpY2Uoc3RhcnRpbmdJbmRleCwgMSk7XHJcbiAgICB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LnNwbGljZShlbmRpbmdJbmRleCwgMCwgZWxlbWVudCk7XHJcblxyXG4gICAgdGhpcy5zZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpO1xyXG4gICAgaWYgKHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzKSB7IHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzLnJlbG9hZERhdGEoKTsgfVxyXG4gIH1cclxuICAvLyNlbmRyZWdpb24gbW92ZUVsZW1lbnRcclxuXHJcbiAgLy8jcmVnaW9uIHNldEZpZWxkT3JkaW5hbFBvc2l0aW9uXHJcbiAgcHJpdmF0ZSBzZXRGaWVsZE9yZGluYWxQb3NpdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0KSB7XHJcbiAgICAgIHRoaXMuZmllbGQuQXR0YWNobWVudExpc3QuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBmaWVsZC5PcmRpbmFsUG9zaXRpb24gPSB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LmluZGV4T2YoZmllbGQpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIHNldEZpZWxkT3JkaW5hbFBvc2l0aW9uXHJcblxyXG4gIHNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpIHtcclxuICAgIHRoaXMucmVzaXplZEltYWdlc0hlaWdodFB4ID0gdGhpcy5maWVsZC5SZXNpemVkSW1hZ2VzSGVpZ2h0UHg7XHJcbiAgfVxyXG5cclxuICBkZWxldGVMaXN0SW1hZ2UoZWw6IER5bkF0dGFjaG1lbnQsIGk6IG51bWJlciwgY29sOiBudW1iZXIpIHtcclxuICAgIEVxcER5bmFtaWNNb2R1bGVEaWFsb2dTZXJ2aWNlLkNvbmZpcm0oJ0VsaW1pbmFyZSBxdWVzdGEgaW1tYWdpbmU/JywgKCkgPT4ge1xyXG4gICAgICB0aGlzLmZpZWxkLkF0dGFjaG1lbnRMaXN0LnNwbGljZShlbC5vcmlnaW5hbEluZGV4LCAxKTtcclxuICAgICAgaWYgKHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzKSB7IHRoaXMuaW1hZ2VTZWxlY3RvckF0dGFjaG1lbnRzLnJlbG9hZERhdGEoKTsgfVxyXG5cclxuICAgIH0sIGZhbHNlLCAnUmljaGllc3RhIGNvbmZlcm1hJyk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVJbWFnZShlbDogRHluQXR0YWNobWVudCkge1xyXG4gICAgdGhpcy5maWVsZC5EeW5BdHRhY2htZW50ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vI3JlZ2lvbiBEQiBHRVRURVJcclxuICBvcGVuREJHZXR0ZXIoKSB7XHJcbiAgICBpZiAodGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudCAhPSBudWxsICYmICF0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLnVzZUR5bmFtaWNNb2R1bGVNb2NrKSB7XHJcblxyXG4gICAgICB0aGlzLlF1ZXJ5RWRpdG9yQ29tcG9uZW50LmlucHV0UGFyYW1zLmNvbmZpZy5tb2RlID0gUXVlcnlFZGl0b3JNb2RlRW51bS5DT01QT1NFUjtcclxuICAgICAgdGhpcy5RdWVyeUVkaXRvckNvbXBvbmVudC5pbnB1dFBhcmFtcy5jb25maWcubG9hZFF1ZXJ5U3RhdHVzZXMgPSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlO1xyXG5cclxuICAgICAgdGhpcy5kaWFsb2dRRVJlZiA9IHRoaXMuZGlhbG9nLm9wZW4odGhpcy5kaWFsb2dRRSwge1xyXG4gICAgICAgIGRpc2FibGVDbG9zZTogdHJ1ZSxcclxuICAgICAgICBoYXNCYWNrZHJvcDogdHJ1ZSxcclxuICAgICAgICBwYW5lbENsYXNzOiAncXVlcnktZWRpdG9yLW1vZGFsJyxcclxuICAgICAgICB3aWR0aDogJzkwJScsXHJcbiAgICAgICAgbWF4SGVpZ2h0OiAnOTB2aCcsXHJcbiAgICAgICAgcG9zaXRpb246IHsgdG9wOiAnMjBweCcgfSxcclxuICAgICAgfSk7XHJcblxyXG4gICAgfSBlbHNlIHtcclxuXHJcbiAgICAgIHRoaXMuaHR0cENsaWVudC5nZXQoJy4vYXNzZXRzL21vY2t1cHMvbW9ja2VkRnJvbVF1ZXJ5RWRpdG9yX1FVRVJZX1dJVEhfUVVFU1RJT04udHh0JywgeyByZXNwb25zZVR5cGU6ICd0ZXh0JyB9KVxyXG4gICAgICAgIC5zdWJzY3JpYmUobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yID0+IHtcclxuICAgICAgICAgIHRoaXMudHJlYXREYXRhRnJvbVF1ZXJ5RWRpdG9yKEpTT04ucGFyc2UobW9ja2VkRnJvbVF1ZXJ5RWRpdG9yKS5QYXJhbXMpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNsb3NlUUVNb2RhbCgpIHtcclxuICAgIHRoaXMuZGlhbG9nUUVSZWYuY2xvc2UoKTtcclxuICB9XHJcblxyXG4gIG9uRXh0ZXJuYWxDb21wb25lbnRPdXQoZXY6IGV2ZW50T3V0KSB7XHJcbiAgICBpZiAoZXYuQmVoYXZpb3Vycy5pbmRleE9mKFwic2VuZC1vdXRcIikgIT0gLTEpIHsgdGhpcy5vdXQuZW1pdChldik7IH1cclxuICAgIGlmIChldi5CZWhhdmlvdXJzLmluZGV4T2YoXCJjbG9zZS1tb2RhbFwiKSAhPSAtMSkgeyB0aGlzLmNsb3NlUUVNb2RhbCgpOyB9XHJcbiAgICBpZiAoZXYuQmVoYXZpb3Vycy5pbmRleE9mKFwic2F2ZS1xdWVyeVwiKSAhPSAtMSkge1xyXG5cclxuICAgICAgdGhpcy50cmVhdERhdGFGcm9tUXVlcnlFZGl0b3IoZXYuUGFyYW1zKTtcclxuXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICB0cmVhdERhdGFGcm9tUXVlcnlFZGl0b3IoZGF0YTogYW55KSB7XHJcbiAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID0gZGF0YTtcclxuICAgIHRoaXMuY3JlYXRlQ29sdW1uS2V5cyhkYXRhKTtcclxuICB9XHJcblxyXG4gIGNyZWF0ZUNvbHVtbktleXMoZGF0YSkge1xyXG4gICAgaWYgKGRhdGEgPT0gbnVsbCAmJiB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGwpIHsgZGF0YSA9IHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWU7IH1cclxuICAgIGlmIChkYXRhID09IG51bGwgfHwgdHlwZW9mIGRhdGEgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcclxuXHJcbiAgICAvLyBWMiAoRGF0YUdldHRlckNvZGVWZXJzaW9uID09PSAyKTogc2VsZWN0ZWRGaWVsZHMgw6ggZGVudHJvIHF1ZXJ5Q29tbWFuZERhdGFiYXNlQ29uZmlndXJhdGlvblxyXG4gICAgY29uc3QgaXNWMiA9IGRhdGEuRGF0YUdldHRlckNvZGVWZXJzaW9uID09PSAyO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRGaWVsZHMgPSBpc1YyXHJcbiAgICAgID8gZGF0YS5xdWVyeUNvbW1hbmREYXRhYmFzZUNvbmZpZ3VyYXRpb24/LnNlbGVjdGVkRmllbGRzXHJcbiAgICAgIDogZGF0YS5zZWxlY3RlZEZpZWxkcztcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWRGaWVsZHMgIT0gbnVsbCAmJiB0eXBlb2Ygc2VsZWN0ZWRGaWVsZHMgIT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICB0aGlzLmNvbHVtbktleXMgPSBuZXcgQXJyYXk8eyBrZXk6IHN0cmluZzsgdmFsdWU6IHN0cmluZyB9PigpO1xyXG4gICAgICBzZWxlY3RlZEZpZWxkcy5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICBjb25zdCBsYWJlbCA9IGtleS5DdXJyZW50VHJhbnNsYXRlIHx8IGtleS5Qcm9wZXJ0eU5hbWU7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5LZXlzLnB1c2goeyBrZXk6IGtleS5EYXRhYmFzZVRhYmxlTmFtZSArIFwiX1wiICsga2V5LlByb3BlcnR5TmFtZSArIFwiX19cIiArIGxhYmVsLnJlcGxhY2UoXCIgXCIsIFwiX1wiKSwgdmFsdWU6IGxhYmVsIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIC8vIFYyOiBzZSBjJ8OoIHVuYSBzb2xhIGNvbG9ubmEgZGlzcG9uaWJpbGUsIHNlbGV6aW9uYWxhIGF1dG9tYXRpY2FtZW50ZVxyXG4gICAgICBpZiAoaXNWMiAmJiB0aGlzLmNvbHVtbktleXMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IHRoaXMuY29sdW1uS2V5c1swXS5rZXk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFYyOiBhdXRvLXNlbGV6aW9uYSBsYSBjb2xvbm5hIHN1Z2dlcml0YSBkYWxsJ0FJIG5lbCBwYW5uZWxsbyBkaSBjb25maWd1cmF6aW9uZVxyXG4gICAgICBpZiAoaXNWMiAmJiBkYXRhLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZT8ua2V5KSB7XHJcbiAgICAgICAgY29uc3QgbWF0Y2ggPSB0aGlzLmNvbHVtbktleXMuZmluZChrID0+IGsua2V5ID09PSBkYXRhLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZS5rZXkpO1xyXG4gICAgICAgIGlmIChtYXRjaCkge1xyXG4gICAgICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IG1hdGNoLmtleTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLy8jZW5kcmVnaW9uIERCIEdFVFRFUlxyXG5cclxuICBnZXRBbGxNb2R1bGVzKCkge1xyXG4gICAgY29uc3QgZHluYW1pY01vZHVsZVBhcmFtczogQXJyYXk8RW5kUG9pbnREYXRhUGFyYW1zPiA9XHJcbiAgICAgIG5ldyBBcnJheTxFbmRQb2ludERhdGFQYXJhbXM+KCk7XHJcbiAgICBkeW5hbWljTW9kdWxlUGFyYW1zLnB1c2goe1xyXG4gICAgICBQYXJhbU5hbWU6IFwib3JnYWlkXCIsXHJcbiAgICAgIFBhcmFtVmFsdWU6IHRoaXMuZm9ybS5PcmdhSUQsXHJcbiAgICAgIFBhcmFtVHlwZTogUGFyYW1UeXBlRW51bVtcIlF1ZXJ5IHBhcmFtXCJdLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLnV0aWxpdHlIZWxwZXJTZXJ2aWNlLlJ1bkVuZFBvaW50Q2FsbChcclxuICAgICAgdGhpcy5lbmRQb2ludENvbmZpZ3VyYXRpb24uRm9ybXMuR2V0QWxsRm9ybUVuZFBvaW50LFxyXG4gICAgICBkeW5hbWljTW9kdWxlUGFyYW1zLFxyXG4gICAgICAocmVzOiBBcnJheTxGb3JtPikgPT4ge1xyXG4gICAgICAgIHRoaXMuZm9ybXMgPSByZXM7XHJcbiAgICAgICAgdGhpcy5mb3JtcyA9IHRoaXMuZm9ybXMuc29ydCgodW5vLCBkdWUpID0+IHVuby5OYW1lLmxvY2FsZUNvbXBhcmUoZHVlLk5hbWUpKTtcclxuXHJcbiAgICAgICAgdGhpcy5ETUZpZWxkID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5ETU1vZHVsZSA9PSBudWxsICYmIHRoaXMuZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgdGhpcy5ETU1vZHVsZSA9IHRoaXMuZm9ybXMuZmluZCh4ID0+IHguQ29kZSA9PSB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlKTtcclxuICAgICAgICAgIHRoaXMuRE1Nb2R1bGUuRmllbGRzID0gSlNPTi5wYXJzZSh0aGlzLkRNTW9kdWxlLkpzb25GaWVsZHMpO1xyXG4gICAgICAgICAgdGhpcy5ETUZpZWxkcyA9IG5ldyBBcnJheTx7IGtleTogc3RyaW5nIH0+KCk7XHJcbiAgICAgICAgICB0aGlzLkRNTW9kdWxlLkZpZWxkcy5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLkRNRmllbGRzLnB1c2goeyBrZXk6IGVsZW1lbnQuVmFsdWUuTmFtZSB9KTtcclxuICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgIHRoaXMuRE1GaWVsZHMgPSB0aGlzLkRNRmllbGRzLnNvcnQoKHVubywgZHVlKSA9PiB1bm8ua2V5LmxvY2FsZUNvbXBhcmUoZHVlLmtleSkpO1xyXG5cclxuICAgICAgICAgIGlmICh0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy5ETUZpZWxkID0gdGhpcy5ETUZpZWxkcy5maW5kKHggPT4geC5rZXkgPT0gdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgfSxcclxuICAgICAgKGVycikgPT4geyB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgb25DaGFuZ2VETU1vZHVsZSgpIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJ0aGlzLi5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZVwiLCB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlKTtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJ0aGlzLkRNTW9kdWxlXCIsIHRoaXMuRE1Nb2R1bGUpO1xyXG4gICAgaWYgKHRoaXMuRE1Nb2R1bGUgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLkRNTW9kdWxlLkZpZWxkcyA9IEpTT04ucGFyc2UodGhpcy5ETU1vZHVsZS5Kc29uRmllbGRzKTtcclxuICAgICAgdGhpcy5ETUZpZWxkcyA9IG5ldyBBcnJheTx7IGtleTogc3RyaW5nIH0+KCk7XHJcbiAgICAgIHRoaXMuRE1Nb2R1bGUuRmllbGRzLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAgICAgdGhpcy5ETUZpZWxkcy5wdXNoKHsga2V5OiBlbGVtZW50LlZhbHVlLk5hbWUgfSk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSA9IHRoaXMuRE1Nb2R1bGUuQ29kZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuRE1Nb2R1bGUgPSBudWxsO1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID0gbnVsbDtcclxuICAgICAgdGhpcy5ETUZpZWxkID0gbnVsbDtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IG51bGw7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZURNRmllbGQoKSB7XHJcbiAgICBpZiAodGhpcy5ETUZpZWxkICE9IG51bGwpIHtcclxuICAgICAgdGhpcy5maWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb2x1bW5Gb3JjZSA9IHRoaXMuRE1GaWVsZC5rZXk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbHVtbkZvcmNlID0gbnVsbDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlRE1Db250ZXN0dWFsaXphdGlvbigpIHtcclxuICAgIEdsb2JhbFNlcnZpY2UuZGVidWdMb2coXCJvbkNoYW5nZURNQ29udGVzdHVhbGl6YXRpb24oKVwiLCB0aGlzLmZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlckNvbnRlc3R1YWxpemF0aW9uKTtcclxuICB9XHJcblxyXG4gIGNoYW5nZWRCdXR0b25GaWVsZChmaWVsZDogQWN0aW9uQnV0dG9uRmllbGQpIHtcclxuICAgIHRoaXMuZmllbGQgPSBmaWVsZDtcclxuICB9XHJcblxyXG4gIGNvbmZpZ3VyZUZpZWxkc0V4dHJhKCkge1xyXG5cclxuICAgIHZhciB0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlczogQXJyYXk8RmllbGRFeHRyYVZhbHVlcz4gPSB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMgPT0gbnVsbCA/IG51bGwgOiB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMuZmlsdGVyKHggPT4geC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9PSB0aGlzLmZpZWxkLk5hbWUpO1xyXG5cclxuICAgIGlmICh0aGlzLmZpZWxkc0V4dHJhQ29uZmlnICE9IG51bGwgJiYgdGhpcy5maWVsZHNFeHRyYUNvbmZpZy5sZW5ndGggPiAwICYmIHRoaXMuZm9ybS5PYmplY3RGbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsICYmICh0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsIHx8IHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzLmxlbmd0aCA9PSAwKSkge1xyXG4gICAgICB0aGlzLmZvcm0uT2JqZWN0RmxkRXh0cmFDb25maWdWYWx1ZXMgPSBuZXcgQXJyYXk8YW55PigpO1xyXG4gICAgICB0aGlzRmllbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9IG5ldyBBcnJheTxGaWVsZEV4dHJhVmFsdWVzPigpO1xyXG4gICAgICB0aGlzLmZpZWxkc0V4dHJhQ29uZmlnLmZvckVhY2goKGZpZWxkRXh0cmFDb25maWcpID0+IHtcclxuXHJcbiAgICAgICAgdmFyIG5ld2ZpZWxkOiBGaWVsZEV4dHJhVmFsdWVzID0gbmV3IEZpZWxkRXh0cmFWYWx1ZXMoKTtcclxuICAgICAgICBuZXdmaWVsZC5GaWVsZENvbmZpZ0NvZGUgPSBmaWVsZEV4dHJhQ29uZmlnLkZpZWxkQ29uZmlnQ29kZTtcclxuICAgICAgICBuZXdmaWVsZC5GaWVsZENvbmZpZ1BhcmVudEZpZWxkQ29kZSA9IHRoaXMuZmllbGQuTmFtZTtcclxuXHJcbiAgICAgICAgaWYgKGZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0Jvb2xlYW5vJ10pIHtcclxuICAgICAgICAgIG5ld2ZpZWxkLkZpZWxkQ29uZmlnVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGZpZWxkRXh0cmFDb25maWcuRmllbGRDb25maWdUeXBlID09IEZpZWxkVHlwZUVudW1bJ0NhbXBvIGRpIHRlc3RvJ10pIHtcclxuICAgICAgICAgIG5ld2ZpZWxkLkZpZWxkQ29uZmlnVmFsdWUgPSBcIlwiO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2gobmV3ZmllbGQpO1xyXG4gICAgICAgIHRoaXNGaWVsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2gobmV3ZmllbGQpO1xyXG5cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID09IG51bGwpIHsgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzID0gbmV3IEFycmF5PEZpZWxkRXh0cmFWYWx1ZXM+KCk7IH1cclxuICAgICAgdGhpc0ZpZWxkRXh0cmFDb25maWdWYWx1ZXMuZm9yRWFjaCgoZWN2KSA9PiB7XHJcbiAgICAgICAgdGhpcy5mb3JtLkZsZEV4dHJhQ29uZmlnVmFsdWVzLnB1c2goZWN2KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmllbGRzRXh0cmFDb25maWcgIT0gbnVsbCAmJiB0aGlzLmZpZWxkc0V4dHJhQ29uZmlnLmxlbmd0aCA+IDAgJiYgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzICE9IG51bGwgJiYgKHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcyA9PSBudWxsIHx8IHRoaXMuZm9ybS5GbGRFeHRyYUNvbmZpZ1ZhbHVlcy5sZW5ndGggPT0gMCkpIHtcclxuICAgICAgdGhpcy5mb3JtLk9iamVjdEZsZEV4dHJhQ29uZmlnVmFsdWVzLmZvckVhY2goKGV4dHJhZmllbGQpID0+IHtcclxuICAgICAgICB0aGlzLmZvcm0uRmxkRXh0cmFDb25maWdWYWx1ZXMucHVzaChleHRyYWZpZWxkKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5sb2FkZWRGaWVsZEV4dHJhID0gdHJ1ZTtcclxuICB9XHJcblxyXG59XHJcbiIsIjxtYXQtY2FyZCBjbGFzcz1cImFkZC1mb3JtLWZpZWxkXCI+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gSEVBREVSIGNvbiBzZm9uZG8gLS0+XHJcbiAgICA8bWF0LWNhcmQtaGVhZGVyIGNsYXNzPVwiYWRkLWZpZWxkLWhlYWRlciB3LTEwMFwiPlxyXG4gICAgICAgIDxtYXQtY2FyZC10aXRsZSBjbGFzcz1cInctMTAwIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBnYXAtMlwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImluZGV4RmllbGQgIT0gbnVsbCAmJiBpbmRleEZpZWxkID4gMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJnLWRhbmdlciB0ZXh0LXdoaXRlXCIgbWF0LXJhaXNlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzYXZlQW5kRXhpdEFkZEZpZWxkKGZhbHNlLCAtMSlcIj7ihpAgQW5udWxsYTwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJnLXN1Y2Nlc3MgdGV4dC13aGl0ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlLCAtMSlcIj7ihpAgU2FsdmE8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJoZWFkZXItdGl0bGVcIiBtYXRUb29sdGlwPVwiSW5kZXgge3tpbmRleEZpZWxkfX1cIj5cclxuICAgICAgICAgICAgICAgIHt7IGluZGV4RmllbGQgIT0gbnVsbCAmJiBpbmRleEZpZWxkID49IDAgPyBcIk1vZGlmaWNhXCIgOiBcIkFnZ2l1bmdpXCIgfX0gY2FtcG9cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaW5kZXhGaWVsZCAhPSBudWxsICYmIGluZGV4RmllbGQgPiAwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc20gYmctZGFuZ2VyIHRleHQtd2hpdGVcIiBtYXQtcmFpc2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UsIDEpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGluZGV4RmllbGQgPT0gdGhpcy5mb3JtLkZpZWxkcy5sZW5ndGggLSAxID8gXCJBbm51bGxhIGUgYWdnaXVuZ2lcIiA6IFwiQW5udWxsYSDihpJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXNtIGJnLXN1Y2Nlc3MgdGV4dC13aGl0ZVwiIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2F2ZUFuZEV4aXRBZGRGaWVsZCh0cnVlLCAxKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpbmRleEZpZWxkID09IHRoaXMuZm9ybS5GaWVsZHMubGVuZ3RoIC0gMSA/IFwiU2FsdmEgZSBhZ2dpdW5naVwiIDogXCJTYWx2YSDihpJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XHJcbiAgICA8L21hdC1jYXJkLWhlYWRlcj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIEhFQURFUiAtLT5cclxuXHJcbiAgICA8ZGl2IGNsYXNzPVwiZmllbGQtYWktYWN0aW9ucy1yb3dcIj5cclxuICAgICAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1haS1maWVsZFwiIChjbGljayk9XCJvbk9wZW5BaUVkaXRGb3JGaWVsZCgpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgTW9kaWZpY2EgY29uIEFJXHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8bWF0LWNhcmQtY29udGVudD5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkIGNvbnRhaW5lckNvbnRlbnRcIj5cclxuICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiIHN0eWxlPVwiaGVpZ2h0OiAxMDAlO1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEFSRUEgUFJJTkNJUEFMRSAoMiByaWdoZSBjb21wYXR0ZSkgLS0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlciBlcXAtZGZvcm0tYWRkLWZvcm0tZmllbGQtbWFpblwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBSSUdBIDE6IFRpcG8sIENvZGljZSwgRGVzY3JpemlvbmUsIFNlemlvbmUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIHRpcG9DYW1wb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRmllbGRUeXBlJ10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0ZpZWxkVHlwZSddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGNhbXBvICpcclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJGaWVsZFR5cGVFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkZpZWxkVHlwZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25GaWVsZFR5cGVDaGFuZ2UoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ZpZWxkVHlwZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VudW1EYXRhVG9FeGNsdWRlXT1cImZpZWxkVHlwZXNUb0V4Y2x1ZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10udG91Y2hlZH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvZGljZSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxcIiByZXF1aXJlZCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkxhYmVsQ2hhbmdlRm9yUHJldmlldygkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5MYWJlbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTGFiZWwnXS5lcnJvcnM/LlsncmVxdWlyZWQnXVwiPk9iYmxpZ2F0b3JpbzwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydMYWJlbCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5Tb2xvIGxldHRlcmUgYS16PC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0xhYmVsJ10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVzY3JpcHRpb24nXS5zdGF0dXMgIT0gJ1ZBTElEJyAmJiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVzY3JpcHRpb24nXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVzY3JpemlvbmUgKlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJEZXNjcmlwdGlvblwiIGZvcm1Db250cm9sTmFtZT1cIkRlc2NyaXB0aW9uXCIgcmVxdWlyZWQgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkRlc2NyaXB0aW9uXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRGVzY3JpcHRpb24pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0Rlc2NyaXB0aW9uJ10uZXJyb3JzPy5bJ3JlcXVpcmVkJ11cIj5PYmJsaWdhdG9yaW88L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snRGVzY3JpcHRpb24nXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2U8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xXCIgKm5nSWY9XCJmb3JtRmllbGRzR3JvdXBzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgW25nQ2xhc3NdPVwieyd0ZXh0LWRhbmdlcic6IGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydGaWVsZEdyb3VwJ10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0ZpZWxkR3JvdXAnXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V6aW9uZSAqXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImZvcm1GaWVsZHNHcm91cHNcIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRmllbGRHcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCInTmFtZSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidOYW1lJ1wiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ZpZWxkR3JvdXAnXCIgcmVxdWlyZWQgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBSSUdBIDEgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFJJR0EgMjogVG9nZ2xlICsgUmVhZE9ubHkgSWYgKyBBZ2dyZWdhemlvbmkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuUmVxdWlyZWRcIiBmb3JtQ29udHJvbE5hbWU9XCJSZXF1aXJlZFwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JibGlnYXRvcmlvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuUmVhZG9ubHlcIiBmb3JtQ29udHJvbE5hbWU9XCJSZWFkb25seVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+UmVhZE9ubHkgSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlJlYWRvbmx5SWZcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJlYWRvbmx5SWZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuUmVhZE9ubHlJZkRpYWxvZygpXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuUmVhZG9ubHlJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0xIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0ICpuZ0lmPVwiYWdncmVnYXRpb25GaWVsZExvYWRlZFwiIFtwbGFjZWhvbGRlcl09XCInQWdncmVnYXppb25pJ1wiIFtpc011bHRpU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2VudW1EYXRhXT1cImFnZ3JlZ2F0aW9uRnVuY3Rpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkFnZ3JlZ2F0aW9uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gUklHQSAyIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gQVJFQSBQUklOQ0lQQUxFIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEFSRUEgVEFCUyAtLT5cclxuICAgICAgICAgICAgICAgIDxtYXQtdGFiLWdyb3VwIGNsYXNzPVwiZXFwLWRmb3JtLWFkZC1mb3JtLWZpZWxkLXRhYnNcIiBtYXQtc3RyZXRjaC10YWJzPVwiZmFsc2VcIiBtYXQtYWxpZ24tdGFicz1cInN0YXJ0XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFNUSUxFIENPTVBJTEFaSU9ORSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LXRhYiBsYWJlbD1cIlN0aWxlIENvbXBpbGF6aW9uZVwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgdGlwaSBOT04gVGV4dEZpZWxkLCBOT04gTnVtZXJpY0ZpZWxkLCBOT04gVGV4dGFyZWFGaWVsZCwgTk9OIEJvb2xlYW5GaWVsZCwgTk9OIEF0dGFjaG1lbnRGaWVsZCwgTk9OIExhYmVsRmllbGQsIE5PTiBEYXRlRmllbGQsIE5PTiBBY3Rpb25CdXR0b25GaWVsZCwgTk9OIEltYWdlRmllbGQsIE5PTiBJbWFnZVdpdGhNYXJrZXJzRmllbGQsIE5PTiBMaXN0VmFsdWVGaWVsZDogc2V6aW9uZSBHZW5lcmFsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc1RleHRGaWVsZCAmJiAhaXNOdW1lcmljRmllbGQgJiYgIWlzVGV4dGFyZWFGaWVsZCAmJiAhaXNCb29sZWFuRmllbGQgJiYgIWlzQXR0YWNobWVudEZpZWxkICYmICFpc0xhYmVsRmllbGQgJiYgIWlzRGF0ZUZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFpc0ltYWdlRmllbGQgJiYgIWlzSW1hZ2VXaXRoTWFya2Vyc0ZpZWxkICYmICFpc0xpc3RWYWx1ZUZpZWxkICYmICFpc0ltYWdlU2VsZWN0b3JGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBUZXh0RmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RleHRGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJ0ZXh0RmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkVGV4dEZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRUZXh0RmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgdGV4dEZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZFRleHRGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0U3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkVGV4dEZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBOdW1lcmljRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc051bWVyaWNGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBMYWJlbHN0eWxlQ1NTIGUgRmllbGRzdHlsZUNTUzogbmFzY29zdGksIG1hbnRlbnV0aSBwZXIgcmV0cm9jb21wYXRpYmlsaXTDoCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkxhYmVsc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkxhYmVsc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkZpZWxkc3R5bGVDU1NcIiB0eXBlPVwiaGlkZGVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkZpZWxkc3R5bGVDU1NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgcHQtMSBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJhdmFpbGFibGVDb2xTcGFuU2l6ZXNDb21waWxhemlvbmVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwib25Db2xTcGFuU2l6ZVNlbGVjdCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc011bHRpU2VsZWN0XT1cInRydWVcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidDb2xTcGFuU2l6ZXMnXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgIT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgIT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jbkxpc3RWaWV3XCIgZm9ybUNvbnRyb2xOYW1lPVwiSW5MaXN0Vmlld1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIiBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0luTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZpc2libGVJZjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlZpc2libGVJZlwiIGZvcm1Db250cm9sTmFtZT1cIlZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5WaXNpYmxlSWZcIiAoY2xpY2spPVwib3BlblZpc2libGVJZkRpYWxvZygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlZpc2libGVJZilcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ub29sdGlwPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVG9vbHRpcFwiIGZvcm1Db250cm9sTmFtZT1cIlRvb2x0aXBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVG9vbHRpcFwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVG9vbHRpcClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkluTGlzdFZpZXcgJiYgKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpcG8gZGkgaW52aXNpYmlsaXTDoFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiZmllbGRJbnZpc2liaWxpdHlFbnVtXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JbnZpc2liaWxpdHlcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJbnZpc2liaWxpdHknXCIgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cIihmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKSAmJiBmaWVsZC5WaXNpYmxlSWYgIT0gJydcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5NYWludGFpbl9WYWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJNYWludGFpbl9WYWx1ZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01haW50YWluX1ZhbHVlJ10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnRpZW5pIGlsIHZhbG9yZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI3JlZ2lvbiBHUkFGSUNBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb24tdGl0bGVcIj5HcmFmaWNhPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2EtYWktcm93XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LXN0cm9rZWQtYnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXN1Z2dlc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc3Bpbm5lciAqbmdJZj1cImFpRmllbGRTdWdnZXN0TG9hZGluZ1wiIGRpYW1ldGVyPVwiMTRcIiBzdHlsZT1cImRpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTttYXJnaW4tcmlnaHQ6NHB4XCI+PC9tYXQtc3Bpbm5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cIiFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5wYWxldHRlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGFpRmllbGRTdWdnZXN0TG9hZGluZyA/ICdFbGFib3JhemlvbmUuLi4nIDogJ1N1Z2dlcmlzY2kgZ3JhZmljYScgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJoaW50LWlucHV0LWdyb3VwXCIgKm5nSWY9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCAmJiAhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1oaW50LXJhbmRvbWl6ZVwiIChjbGljayk9XCJyYW5kb21pemVHcmFwaGljSGludCgpXCIgbWF0VG9vbHRpcD1cIlN1Z2dlcmltZW50byBjYXN1YWxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImdyYXBoaWMtaGludC1pbnB1dFwiIFsobmdNb2RlbCldPVwiZ3JhcGhpY1N1Z2dlc3RIaW50XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cImVzLiB0b25pIGRpIGdyaWdpbywgc3RpbGUgU3VwZXIgTWFyaW8uLi5cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiIG1hdFRvb2x0aXA9XCJBcHBsaWNhIHN1Z2dlcmltZW50byBncmFmaWNvXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtZW5kXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5TdGF0bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJudW1lcmljRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTnVtZXJpY0ZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCBtdC0yXCIgKm5nRm9yPVwibGV0IGVsZW0gb2YgbnVtZXJpY0ZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldE51bWVyaWNTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInNldE51bWVyaWNTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWROdW1lcmljRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIFRleHRhcmVhRmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1RleHRhcmVhRmllbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJnZW5lcmFsZS1zZWN0aW9uLXRpdGxlXCI+R2VuZXJhbGU8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTGFiZWxzdHlsZUNTUyBlIEZpZWxkc3R5bGVDU1M6IG5hc2Nvc3RpLCBtYW50ZW51dGkgcGVyIHJldHJvY29tcGF0aWJpbGl0w6AgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwidGV4dGFyZWFGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIiBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIidsYWJlbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIHRleHRhcmVhRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0VGV4dGFyZWFTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRUZXh0YXJlYUZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRUZXh0YXJlYVN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZFRleHRhcmVhRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEJvb2xlYW5GaWVsZDogc2V6aW9uZSBHZW5lcmFsZSArIHNlemlvbmUgR3JhZmljYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQm9vbGVhbkZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIExhYmVsc3R5bGVDU1MgZSBGaWVsZHN0eWxlQ1NTOiBuYXNjb3N0aSwgbWFudGVudXRpIHBlciByZXRyb2NvbXBhdGliaWxpdMOgIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImJvb2xlYW5GaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRCb29sZWFuRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBib29sZWFuRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0Qm9vbGVhblN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0Qm9vbGVhblN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEJvb2xlYW5GaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgRGF0ZUZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhICg1IGVsZW1lbnRpLCA1IHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzRGF0ZUZpZWxkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ2VuZXJhbGUtc2VjdGlvbi10aXRsZVwiPkdlbmVyYWxlPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkxhYmVsc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5MYWJlbHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkZpZWxkc3R5bGVDU1NcIiBmb3JtQ29udHJvbE5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgdHlwZT1cImhpZGRlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5GaWVsZHN0eWxlQ1NTXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IHB0LTEgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFyZ2hlenphIGNhbXBvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYXZhaWxhYmxlQ29sU3BhblNpemVzQ29tcGlsYXppb25lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Db2xTcGFuU2l6ZXNcIiBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlWYWx1ZVByb3BlcnR5XT1cIid2YWx1ZSdcIiAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ29sU3BhblNpemVTZWxlY3QoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ29sU3BhblNpemVzJ1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSW5MaXN0Vmlld1wiIGZvcm1Db250cm9sTmFtZT1cIkluTGlzdFZpZXdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCIgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydJbkxpc3RWaWV3J10uZGlzYWJsZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpc2liaWxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJWaXNpYmxlSWZcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuVmlzaWJsZUlmXCIgKGNsaWNrKT1cIm9wZW5WaXNpYmxlSWZEaWFsb2coKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VG9vbHRpcDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIlRvb2x0aXBcIiBmb3JtQ29udHJvbE5hbWU9XCJUb29sdGlwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlRvb2x0aXBcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLlRvb2x0aXApXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3cgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5Jbkxpc3RWaWV3ICYmIChmaWVsZC5WaXNpYmxlSWYgPT0gbnVsbCB8fCBmaWVsZC5WaXNpYmxlSWYgPT0gdW5kZWZpbmVkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6BcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSW52aXNpYmlsaXR5XCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZCkgJiYgZmllbGQuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWFpbnRhaW5fVmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiTWFpbnRhaW5fVmFsdWVcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNYWludGFpbl9WYWx1ZSddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW50aWVuaSBpbCB2YWxvcmVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiZGF0ZUZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZERhdGVGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGRhdGVGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXREYXRlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXREYXRlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkRGF0ZUZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBMYWJlbEZpZWxkOiBzZXppb25lIEdlbmVyYWxlICsgc2V6aW9uZSBHcmFmaWNhICgxIGVsZW1lbnRvLCAyIHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTGFiZWxGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImxhYmVsRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBsYWJlbEZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldExhYmVsU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTGFiZWxGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0TGFiZWxTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRMYWJlbEZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBBdHRhY2htZW50RmllbGQ6IHNlemlvbmUgR2VuZXJhbGUgKyBzZXppb25lIEdyYWZpY2EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0F0dGFjaG1lbnRGaWVsZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdlbmVyYWxlLXNlY3Rpb24tdGl0bGVcIj5HZW5lcmFsZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJMYWJlbHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiTGFiZWxzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTGFiZWxzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJGaWVsZHN0eWxlQ1NTXCIgZm9ybUNvbnRyb2xOYW1lPVwiRmllbGRzdHlsZUNTU1wiIHR5cGU9XCJoaWRkZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRmllbGRzdHlsZUNTU1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBwdC0xIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkxhcmdoZXp6YSBjYW1wbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc0NvbXBpbGF6aW9uZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQ29sU3BhblNpemVzXCIgW2FycmF5S2V5UHJvcGVydHldPVwiJ2tleSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0NvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiAhPSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiAhPSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkluTGlzdFZpZXdcIiBmb3JtQ29udHJvbE5hbWU9XCJJbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snSW5MaXN0VmlldyddLmRpc2FibGVkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+VmlzaWJsZUlmPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiVmlzaWJsZUlmXCIgZm9ybUNvbnRyb2xOYW1lPVwiVmlzaWJsZUlmXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLlZpc2libGVJZlwiIChjbGljayk9XCJvcGVuVmlzaWJsZUlmRGlhbG9nKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuVmlzaWJsZUlmKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlRvb2x0aXA8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9XCJUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVG9vbHRpcFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5Ub29sdGlwXCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Ub29sdGlwKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiZmllbGQuSW5MaXN0VmlldyAmJiAoZmllbGQuVmlzaWJsZUlmID09IG51bGwgfHwgZmllbGQuVmlzaWJsZUlmID09IHVuZGVmaW5lZClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGlwbyBkaSBpbnZpc2liaWxpdMOgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJmaWVsZEludmlzaWJpbGl0eUVudW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkludmlzaWJpbGl0eVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ludmlzaWJpbGl0eSdcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtoaWRkZW5dPVwiKGZpZWxkLlZpc2libGVJZiA9PSBudWxsIHx8IGZpZWxkLlZpc2libGVJZiA9PSB1bmRlZmluZWQpICYmIGZpZWxkLlZpc2libGVJZiAhPSAnJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1haW50YWluX1ZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIk1haW50YWluX1ZhbHVlXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWFpbnRhaW5fVmFsdWUnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFudGllbmkgaWwgdmFsb3JlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRBdHRhY2htZW50RmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBhdHRhY2htZW50RmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0QXR0YWNobWVudFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0QXR0YWNobWVudFN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEF0dGFjaG1lbnRGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgQWN0aW9uQnV0dG9uRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoMyBlbGVtZW50aSwgMyBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0FjdGlvbkJ1dHRvbkZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiYWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkQWN0aW9uQnV0dG9uRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEFjdGlvbkJ1dHRvblN0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEFjdGlvbkJ1dHRvbkZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRBY3Rpb25CdXR0b25TdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRBY3Rpb25CdXR0b25GaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgSW1hZ2VGaWVsZDogc2V6aW9uZSBHcmFmaWNhICgzIGVsZW1lbnRpLCAyIHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VGaWVsZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImltYWdlRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBpbWFnZUZpZWxkU3R5bGVFbGVtZW50c1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbCBjbGFzcz1cImNzcy1maWVsZC1sYWJlbFwiPnt7IGVsZW0ubGFiZWwgfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW3BsYWNlaG9sZGVyXT1cIidlcy4gY29sb3I6cmVkO2ZvbnQtc2l6ZToxNHB4J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImdldEltYWdlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0SW1hZ2VTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRJbWFnZUZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFBlciBJbWFnZVdpdGhNYXJrZXJzRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoMyBlbGVtZW50aSwgMiBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0ltYWdlV2l0aE1hcmtlcnNGaWVsZFwiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIEdSQUZJQ0EgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImdyYWZpY2Etc2VjdGlvbi10aXRsZVwiPkdyYWZpY2E8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1haS1yb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dCA9ICFzaG93R3JhcGhpY1N1Z2dlc3RJbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zcGlubmVyICpuZ0lmPVwiYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgZGlhbWV0ZXI9XCIxNFwiIHN0eWxlPVwiZGlzcGxheTppbmxpbmUtYmxvY2s7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDo0cHhcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPnBhbGV0dGU8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgYWlGaWVsZFN1Z2dlc3RMb2FkaW5nID8gJ0VsYWJvcmF6aW9uZS4uLicgOiAnU3VnZ2VyaXNjaSBncmFmaWNhJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWhpbnQtcmFuZG9taXplXCIgKGNsaWNrKT1cInJhbmRvbWl6ZUdyYXBoaWNIaW50KClcIiBtYXRUb29sdGlwPVwiU3VnZ2VyaW1lbnRvIGNhc3VhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+dGlwc19hbmRfdXBkYXRlczwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZ3JhcGhpYy1oaW50LWlucHV0XCIgWyhuZ01vZGVsKV09XCJncmFwaGljU3VnZ2VzdEhpbnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLCBzdGlsZSBTdXBlciBNYXJpby4uLlwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1ncmFwaGljLXNlbmRcIiAoY2xpY2spPVwib25HcmFwaGljU3VnZ2VzdCgpXCIgbWF0VG9vbHRpcD1cIkFwcGxpY2Egc3VnZ2VyaW1lbnRvIGdyYWZpY29cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+YXV0b19maXhfaGlnaDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtMyBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlN0YXRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwic2VsZWN0ZWRJbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00IG10LTJcIiAqbmdGb3I9XCJsZXQgZWxlbSBvZiBpbWFnZVdpdGhNYXJrZXJzRmllbGRTdHlsZUVsZW1lbnRzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiY3NzLWZpZWxkLWxhYmVsXCI+e3sgZWxlbS5sYWJlbCB9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbcGxhY2Vob2xkZXJdPVwiJ2VzLiBjb2xvcjpyZWQ7Zm9udC1zaXplOjE0cHgnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0SW1hZ2VXaXRoTWFya2Vyc1N0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0SW1hZ2VXaXRoTWFya2Vyc1N0eWxlVmFsdWUoZWxlbS5rZXkgKyBzZWxlY3RlZEltYWdlV2l0aE1hcmtlcnNGaWVsZFN0eWxlU3RhdGUsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gR1JBRklDQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXIgTGlzdFZhbHVlRmllbGQ6IHNlemlvbmUgR3JhZmljYSAoZWxlbWVudGkgZGluYW1pY2kgcGVyIG1vZGFsaXTDoCwgNSBzdGF0aSkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xpc3RWYWx1ZUZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwibGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cInNlbGVjdGVkTGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ2xhYmVsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJzZWxlY3RlZExpc3RWYWx1ZUZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGxpc3RWYWx1ZVN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRMaXN0VmFsdWVTdHlsZVZhbHVlKGVsZW0ua2V5ICsgc2VsZWN0ZWRMaXN0VmFsdWVGaWVsZFN0eWxlU3RhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic2V0TGlzdFZhbHVlU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkTGlzdFZhbHVlRmllbGRTdHlsZVN0YXRlLCAkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0jZW5kcmVnaW9uIEdSQUZJQ0EgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gUGVyIEltYWdlU2VsZWN0b3JGaWVsZDogc2V6aW9uZSBHcmFmaWNhICgzIGVsZW1lbnRpLCA1IHN0YXRpKSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzSW1hZ2VTZWxlY3RvckZpZWxkXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gR1JBRklDQSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLXNlY3Rpb25cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JhZmljYS1zZWN0aW9uLXRpdGxlXCI+R3JhZmljYTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJncmFmaWNhLWFpLXJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zdWdnZXN0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ID0gIXNob3dHcmFwaGljU3VnZ2VzdElucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjE0XCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLXJpZ2h0OjRweFwiPjwvbWF0LXNwaW5uZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBhaUZpZWxkU3VnZ2VzdExvYWRpbmcgPyAnRWxhYm9yYXppb25lLi4uJyA6ICdTdWdnZXJpc2NpIGdyYWZpY2EnIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaGludC1pbnB1dC1ncm91cFwiICpuZ0lmPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgJiYgIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj50aXBzX2FuZF91cGRhdGVzPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlcy4gdG9uaSBkaSBncmlnaW8sIHN0aWxlIFN1cGVyIE1hcmlvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc2VuZFwiIChjbGljayk9XCJvbkdyYXBoaWNTdWdnZXN0KClcIiBtYXRUb29sdGlwPVwiQXBwbGljYSBzdWdnZXJpbWVudG8gZ3JhZmljb1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5hdXRvX2ZpeF9oaWdoPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zIG10LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+U3RhdG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiaW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJzZWxlY3RlZEltYWdlU2VsZWN0b3JGaWVsZFN0eWxlU3RhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJ0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTQgbXQtMlwiICpuZ0Zvcj1cImxldCBlbGVtIG9mIGltYWdlU2VsZWN0b3JGaWVsZFN0eWxlRWxlbWVudHNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWwgY2xhc3M9XCJjc3MtZmllbGQtbGFiZWxcIj57eyBlbGVtLmxhYmVsIH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCInZXMuIGNvbG9yOnJlZDtmb250LXNpemU6MTRweCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRJbWFnZVNlbGVjdG9yU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJzZXRJbWFnZVNlbGVjdG9yU3R5bGVWYWx1ZShlbGVtLmtleSArIHNlbGVjdGVkSW1hZ2VTZWxlY3RvckZpZWxkU3R5bGVTdGF0ZSwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ01vZGVsT3B0aW9uc109XCJ7c3RhbmRhbG9uZTogdHJ1ZX1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBHUkFGSUNBIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBTVElMRSBDT01QSUxBWklPTkUgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFNUSUxFIFJJU1BPU1RBIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtdGFiIGxhYmVsPVwiU3RpbGUgUmlzcG9zdGFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYXJnaGV6emEgY2FtcG88L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImF2YWlsYWJsZUNvbFNwYW5TaXplc1Jpc3Bvc3RhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkFuc3dlclN0eWxlLkNvbFNwYW5TaXplc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCIgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkNvbFNwYW5TaXplU2VsZWN0KClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aVNlbGVjdF09XCJ0cnVlXCIgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidBbnN3ZXJTdHlsZUNvbFNwYW5TaXplcydcIiBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+TGFiZWwgY3NzPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkFuc3dlclN0eWxlTGFiZWxzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkFuc3dlclN0eWxlTGFiZWxzdHlsZUNTU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkFuc3dlclN0eWxlLkxhYmVsc3R5bGVDU1NcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5BbnN3ZXJTdHlsZS5MYWJlbHN0eWxlQ1NTKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+RmllbGQgY3NzPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbmFtZT1cIkFuc3dlclN0eWxlRmllbGRzdHlsZUNTU1wiIGZvcm1Db250cm9sTmFtZT1cIkFuc3dlclN0eWxlRmllbGRzdHlsZUNTU1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkFuc3dlclN0eWxlLkZpZWxkc3R5bGVDU1NcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5BbnN3ZXJTdHlsZS5GaWVsZHN0eWxlQ1NTKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCIoZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmICE9IG51bGwgfHwgZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmICE9IHVuZGVmaW5lZCkgJiYgZmllbGQuQW5zd2VyU3R5bGUuVmlzaWJsZUlmICE9ICcnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5Jbkxpc3RWaWV3XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiQW5zd2VyU3R5bGVJbkxpc3RWaWV3XCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydBbnN3ZXJTdHlsZUluTGlzdFZpZXcnXS5kaXNhYmxlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaXNpYmlsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkFuc3dlclN0eWxlLkluTGlzdFZpZXdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXBvIGRpIGludmlzaWJpbGl0w6AgZGVsIGNhbXBvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImZpZWxkSW52aXNpYmlsaXR5RW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5BbnN3ZXJTdHlsZS5JbnZpc2liaWxpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0Fuc3dlclN0eWxlSW52aXNpYmlsaXR5J1wiIFtpbmNsdWRlRnVsbE9iamVjdF09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WaXNpYmxlSWY8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPVwiQW5zd2VyU3R5bGVWaXNpYmxlSWZcIiBmb3JtQ29udHJvbE5hbWU9XCJBbnN3ZXJTdHlsZVZpc2libGVJZlwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkFuc3dlclN0eWxlLlZpc2libGVJZlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkFuc3dlclN0eWxlVmlzaWJsZUlmRGlhbG9nKClcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5BbnN3ZXJTdHlsZS5WaXNpYmxlSWYpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gU1RJTEUgUklTUE9TVEEgLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0jcmVnaW9uIFNQRUNJRklDSEUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJTcGVjaWZpY2hlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWVsZFR5cGVGb3JtVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC10YWI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNlbmRyZWdpb24gU1BFQ0lGSUNIRSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gTU9EQUxJVEEnIFJFQ1VQRVJPIERBVEkgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJNb2RhbGl0w6AgcmVjdXBlcm8gZGF0aVwiICpuZ0lmPVwiZmllbGQuRmllbGRUeXBlICE9IEZpZWxkVHlwZUVudW1bJ0JvdHRvbmUgYXppb25lJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cImRhdGFHZXR0ZXJUeXBlRW51bVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGVcIiBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkRhdGFHZXR0ZXJUeXBlQ2hhbmdlKClcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInRGF0YUdldHRlclR5cGUnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlkZGVuXT1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclR5cGUgIT0gZGF0YUdldHRlclR5cGVFbnVtLk1hbnVhbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlZhbG9yZSBkaSBEZWZhdWx0PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRGF0YUdldHRlclZhbHVlXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlICE9IGRhdGFHZXR0ZXJUeXBlRW51bS5Gb3JtdWxhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Gb3JtdWxhIChKYXZhc2NyaXB0KTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkZvcm11bGFcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkZvcm11bGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5Gb3JtdWxhRGlhbG9nKClcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Gb3JtdWxhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVHlwZSA9PSBkYXRhR2V0dGVyVHlwZUVudW1bJ0RhIGRhdGFiYXNlJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTQgY29uZmlndXJhUXVlcnlFZGl0b3JcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMFwiPkNvbmZpZ3VyYSBpbiBRdWVyeSBFZGl0b3I8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwib3BlbkRCR2V0dGVyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlID09IG51bGxcIj5Qcm9jZWRpPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tc3VjY2Vzc1wiIChjbGljayk9XCJvcGVuREJHZXR0ZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbFwiPk1vZGlmaWNhPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlNlbGV6aW9uYSBjb2xvbm5hPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbYXJyYXlEYXRhXT1cImNvbHVtbktleXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ29sdW1uRm9yY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIna2V5J1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlB1bHNhbnRlIHJlc2V0PzwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIkRhdGFHZXR0ZXJIYXNSZXNldEJ1dHRvblwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJUeXBlID09IGRhdGFHZXR0ZXJUeXBlRW51bVsnRGEgbW9kdWxvIGRpbmFtaWNvJ11cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG10LTRcIiAqbmdJZj1cImZvcm1zLmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+TW9kdWxvPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbcGxhY2Vob2xkZXJdPVwiJ1NlbGV6aW9uYSBtb2R1bG8nXCIgW2FycmF5RGF0YV09XCJmb3Jtc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJETU1vZHVsZVwiIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidDb2RlJ1wiIFthcnJheVZhbHVlUHJvcGVydHldPVwiJ05hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidETU1vZHVsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRE1Nb2R1bGUoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkLkRhdGFHZXR0ZXIuRGF0YUdldHRlclZhbHVlICE9IG51bGwgJiYgRE1Nb2R1bGUgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+Q2FtcG88L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtwbGFjZWhvbGRlcl09XCInU2VsZXppb25hIGNhbXBvJ1wiIFthcnJheURhdGFdPVwiRE1GaWVsZHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiRE1GaWVsZFwiIFtpc1NlYXJjaGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIna2V5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInRE1GaWVsZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRE1GaWVsZCgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJWYWx1ZSAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTZcIj5DYXJkaW5hbGl0w6A8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJETUdldHRlckNhcmRpbmFsaXRpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyQ2FyZGluYWxpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZmllbGQuRGF0YUdldHRlci5EYXRhR2V0dGVyVmFsdWUgIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+Q29udGVzdHVhbGl6emF6aW9uZTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC02XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJjb250ZXN0dWFsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcnJheUtleVByb3BlcnR5XT1cIidlbnRpdHlUYWJsZU5hbWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInZW50aXR5VGFibGVOYW1lJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5EYXRhR2V0dGVyLkRhdGFHZXR0ZXJDb250ZXN0dWFsaXphdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2FuY2VsQnV0dG9uXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uQ2hhbmdlRE1Db250ZXN0dWFsaXphdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBNT0RBTElUQScgUkVDVVBFUk8gREFUSSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSNyZWdpb24gRVhUUkEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPG1hdC10YWIgbGFiZWw9XCJFeHRyYVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZmllbGRzRXh0cmFDb25maWcgIT0gbnVsbCAmJiBmaWVsZHNFeHRyYUNvbmZpZy5sZW5ndGggPiAwICYmIGxvYWRlZEZpZWxkRXh0cmFcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBmaWVsZEV4dHJhQ29uZmlnXCIgKm5nRm9yPVwibGV0IGZpZWxkRXh0cmFDb25maWcgb2YgZmllbGRzRXh0cmFDb25maWdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4ICNmaWVsZEV4dHJhQ29uZmlnVGVtcGxhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkRXh0cmFDb25maWddPVwiZmllbGRFeHRyYUNvbmZpZ1wiIFtmb3JtXT1cImZvcm1cIiBbZmllbGRdPVwiZmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHluYW1pYy1tb2R1bGUtZmllbGQtZXh0cmEtZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LXRhYj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBFWFRSQSAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICA8L21hdC10YWItZ3JvdXA+XHJcbiAgICAgICAgICAgICAgICA8IS0tI2VuZHJlZ2lvbiBBUkVBIFRBQlMgLS0+XHJcblxyXG4gICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XHJcblxyXG4gICAgPG1hdC1jYXJkLWZvb3Rlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtYmV0d2VlbiBweC0zIHB5LTIgZm9vdGVyLXJvd1wiPlxyXG4gICAgICAgICAgICA8IS0tIEFudGVwcmltYSBsaXZlIChUZXh0RmllbGQsIE51bWVyaWNGaWVsZCwgVGV4dGFyZWFGaWVsZCwgQm9vbGVhbkZpZWxkLCBBdHRhY2htZW50RmllbGQsIExhYmVsRmllbGQsIERhdGVGaWVsZCwgQWN0aW9uQnV0dG9uRmllbGQsIExpc3RWYWx1ZUZpZWxkKSAtLT5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByZXZpZXctYXJlYVwiICpuZ0lmPVwiKGlzVGV4dEZpZWxkIHx8IGlzTnVtZXJpY0ZpZWxkIHx8IGlzVGV4dGFyZWFGaWVsZCB8fCBpc0Jvb2xlYW5GaWVsZCB8fCBpc0F0dGFjaG1lbnRGaWVsZCB8fCBpc0xhYmVsRmllbGQgfHwgaXNEYXRlRmllbGQgfHwgaXNBY3Rpb25CdXR0b25GaWVsZCB8fCBpc0xpc3RWYWx1ZUZpZWxkIHx8IGlzSW1hZ2VTZWxlY3RvckZpZWxkKSAmJiAoaXNBY3Rpb25CdXR0b25GaWVsZCB8fCAoZmllbGQ/LkZvcm1Gb3JtR3JvdXAgJiYgcHJldmlld1JlY29yZCkpXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBnYXAtMiBtYi0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmV2aWV3LWxhYmVsXCI+QW50ZXByaW1hOjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IFsobmdNb2RlbCldPVwicHJldmlld0ZvcmNlU3RhdGVcIiBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJmb3JtLXNlbGVjdCBmb3JtLXNlbGVjdC1zbSBwcmV2aWV3LXN0YXRlLXNlbGVjdFwiIHN0eWxlPVwid2lkdGg6IDEzMHB4O1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj5BdXRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJOb3JtYWxlXCI+Tm9ybWFsZTwvb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8b3B0aW9uIHZhbHVlPVwiTW91c2VvdmVyXCI+TW91c2UgU29wcmE8L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIkZvY3VzZWRcIiAqbmdJZj1cIiFpc0F0dGFjaG1lbnRGaWVsZCAmJiAhaXNMYWJlbEZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFpc0xpc3RWYWx1ZUZpZWxkICYmICFpc0ltYWdlU2VsZWN0b3JGaWVsZFwiPlNlbGV6aW9uYXRvPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9XCJTZWxlemlvbmF0b1wiICpuZ0lmPVwiaXNBY3Rpb25CdXR0b25GaWVsZCB8fCBpc0xpc3RWYWx1ZUZpZWxkIHx8IGlzSW1hZ2VTZWxlY3RvckZpZWxkXCI+U2VsZXppb25hdG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIk5vdFZhbGlkXCIgKm5nSWY9XCIhaXNCb29sZWFuRmllbGQgJiYgIWlzTGFiZWxGaWVsZCAmJiAhaXNBY3Rpb25CdXR0b25GaWVsZFwiPk5vbiBWYWxpZG88L29wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiB2YWx1ZT1cIlJlYWRvbmx5XCIgKm5nSWY9XCIhaXNMYWJlbEZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkXCI+U29sYSBMZXR0dXJhPC9vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtc3Ryb2tlZC1idXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLWdyYXBoaWMtc3VnZ2VzdC1zbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd0dyYXBoaWNTdWdnZXN0SW5wdXQgPSAhc2hvd0dyYXBoaWNTdWdnZXN0SW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiU3VnZ2VyaXNjaSBncmFmaWNhIGNvbiBBSVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNwaW5uZXIgKm5nSWY9XCJhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIiBkaWFtZXRlcj1cIjEyXCIgc3R5bGU9XCJkaXNwbGF5OmlubGluZS1ibG9jazt2ZXJ0aWNhbC1hbGlnbjptaWRkbGVcIj48L21hdC1zcGlubmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCIhYWlGaWVsZFN1Z2dlc3RMb2FkaW5nXCIgc3R5bGU9XCJmb250LXNpemU6MTZweDt3aWR0aDoxNnB4O2hlaWdodDoxNnB4XCI+cGFsZXR0ZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWFpRmllbGRTdWdnZXN0TG9hZGluZ1wiPlN1Z2dlcmlzY2k8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImhpbnQtaW5wdXQtZ3JvdXBcIiAqbmdJZj1cInNob3dHcmFwaGljU3VnZ2VzdElucHV0ICYmICFhaUZpZWxkU3VnZ2VzdExvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4taGludC1yYW5kb21pemVcIiAoY2xpY2spPVwicmFuZG9taXplR3JhcGhpY0hpbnQoKVwiIG1hdFRvb2x0aXA9XCJTdWdnZXJpbWVudG8gY2FzdWFsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnRpcHNfYW5kX3VwZGF0ZXM8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJncmFwaGljLWhpbnQtaW5wdXRcIiBbKG5nTW9kZWwpXT1cImdyYXBoaWNTdWdnZXN0SGludFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiZXMuIHRvbmkgZGkgZ3JpZ2lvLi4uXCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZ3JhcGhpYy1zZW5kXCIgKGNsaWNrKT1cIm9uR3JhcGhpY1N1Z2dlc3QoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPmF1dG9fZml4X2hpZ2g8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPHRleHQtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc1RleHRGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvdGV4dC1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxudW1lcmljLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNOdW1lcmljRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L251bWVyaWMtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8dGV4dGFyZWEtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc1RleHRhcmVhRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L3RleHRhcmVhLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGJvb2xlYW4tZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0Jvb2xlYW5GaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvYm9vbGVhbi1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxhdHRhY2htZW50LWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNBdHRhY2htZW50RmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2F0dGFjaG1lbnQtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bGFiZWwtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0xhYmVsRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xhYmVsLWZpZWxkLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPGRhdGUtZmllbGQtdGVtcGxhdGUgKm5nSWY9XCJpc0RhdGVGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvZGF0ZS1maWVsZC10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDxhY3Rpb24tYnV0dG9uLWZpZWxkLXRlbXBsYXRlICpuZ0lmPVwiaXNBY3Rpb25CdXR0b25GaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInt9XCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2FjdGlvbi1idXR0b24tZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bGlzdC12YWx1ZS1maWVsZC10ZW1wbGF0ZSAqbmdJZj1cImlzTGlzdFZhbHVlRmllbGRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3JlY29yZF09XCJwcmV2aWV3UmVjb3JkXCJcclxuICAgICAgICAgICAgICAgICAgICBbaW5Db25maWddPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlVmVyc2lvbl09XCJzdHlsZVZlcnNpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JjZVN0YXRlXT1cInByZXZpZXdGb3JjZVN0YXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8L2xpc3QtdmFsdWUtZmllbGQtdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8aW1hZ2UtZmllbGQtc2VsZWN0b3ItdGVtcGxhdGUgKm5nSWY9XCJpc0ltYWdlU2VsZWN0b3JGaWVsZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcclxuICAgICAgICAgICAgICAgICAgICBbcmVjb3JkXT1cInByZXZpZXdSZWNvcmRcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtpbkNvbmZpZ109XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICBbc3R5bGVWZXJzaW9uXT1cInN0eWxlVmVyc2lvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2ZvcmNlU3RhdGVdPVwicHJldmlld0ZvcmNlU3RhdGVcIj5cclxuICAgICAgICAgICAgICAgIDwvaW1hZ2UtZmllbGQtc2VsZWN0b3ItdGVtcGxhdGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiKCFpc1RleHRGaWVsZCAmJiAhaXNOdW1lcmljRmllbGQgJiYgIWlzVGV4dGFyZWFGaWVsZCAmJiAhaXNCb29sZWFuRmllbGQgJiYgIWlzQXR0YWNobWVudEZpZWxkICYmICFpc0xhYmVsRmllbGQgJiYgIWlzRGF0ZUZpZWxkICYmICFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFpc0xpc3RWYWx1ZUZpZWxkICYmICFpc0ltYWdlU2VsZWN0b3JGaWVsZCkgfHwgKCFpc0FjdGlvbkJ1dHRvbkZpZWxkICYmICFmaWVsZD8uRm9ybUZvcm1Hcm91cClcIj48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gUHVsc2FudGkgLS0+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZ2FwLTJcIj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gbWF0LXJhaXNlZC1idXR0b24gYmctZGFuZ2VyIHRleHQtd2hpdGUgY2FuY2VsXCIgKGNsaWNrKT1cInNhdmVBbmRFeGl0QWRkRmllbGQoZmFsc2UpXCJcclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAg4p2MIEFubnVsbGFcclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBbY2xhc3MuYmctc3VjY2Vzc109XCIhZGlzYWJsZVNhdmVGaWVsZCgpXCIgW2NsYXNzLmJnLWRhbmdlcl09XCJkaXNhYmxlU2F2ZUZpZWxkKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC13aGl0ZSBzYXZlXCIgbWF0LXJhaXNlZC1idXR0b25cclxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TYXZlQ2xpY2soKVwiIHR5cGU9XCJidXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJkaXNhYmxlU2F2ZUZpZWxkKClcIiBzdHlsZT1cImZvbnQtc2l6ZToxOHB4O3dpZHRoOjE4cHg7aGVpZ2h0OjE4cHg7dmVydGljYWwtYWxpZ246bWlkZGxlO21hcmdpbi1yaWdodDoycHhcIj5sb2NrPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICDwn5K+IFNhbHZhXHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L21hdC1jYXJkLWZvb3Rlcj5cclxuXHJcbjwvbWF0LWNhcmQ+XHJcblxyXG5cclxuXHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgREkgVEVTVE8gLS0+XHJcbjxuZy10ZW1wbGF0ZSAjdGV4dEZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPCEtLSNyZWdpb24gTUFTQ0hFUkEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC0zXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5NYXNjaGVyYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFtlbnVtRGF0YV09XCJUZXh0TWFza0VudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuVGV4dE1hc2tcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ1RleHRNYXNrJ1wiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gTUFTQ0hFUkEgLS0+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gTFVOR0hFWlpBIE1JTklNQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTNcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbCBbbmdDbGFzc109XCJ7J3RleHQtZGFuZ2VyJzogZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLnN0YXR1cyAhPSAnVkFMSUQnICYmIGZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS50b3VjaGVkfVwiPlxyXG4gICAgICAgICAgICBMdW5naGV6emEgbWluaW1hXHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJsZW5ndGhNaW5cIiBmb3JtQ29udHJvbE5hbWU9XCJNaW5MZW5naHRcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluTGVuZ2h0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NaW5MZW5naHQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01pbkxlbmdodCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBMVU5HSEVaWkEgTUlOSU1BIC0tPlxyXG5cclxuICAgIDwhLS0jcmVnaW9uIExVTkdIRVpaQSBNQVNTSU1BIC0tPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtM1wiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsIFtuZ0NsYXNzXT1cInsndGV4dC1kYW5nZXInOiBmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uc3RhdHVzICE9ICdWQUxJRCcgJiYgZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLnRvdWNoZWR9XCI+XHJcbiAgICAgICAgICAgIEx1bmdoZXp6YSBtYXNzaW1hXHJcbiAgICAgICAgPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJsZW5ndGhNYXhcIiBmb3JtQ29udHJvbE5hbWU9XCJNYXhMZW5naHRcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWF4TGVuZ2h0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NYXhMZW5naHQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBMVU5HSEVaWkEgTUFTU0lNQSAtLT5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBTUEVFQ0ggVE8gVEVYVCAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTMgbXQtMiBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIlxyXG4gICAgICAgIFtoaWRkZW5dPVwiZmllbGQuUmVhZG9ubHkgfHwgcGxhdGZvcm0gIT0gJ3dlYidcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLk1pY3JvcGhvbmVcIiBmb3JtQ29udHJvbE5hbWU9XCJNaWNyb3Bob25lXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgIFNwZWVjaC1Uby1UZXh0XHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBTUEVFQ0ggVE8gVEVYVCAtLT5cclxuXHJcbiAgICA8IS0tI3JlZ2lvbiBJQ09OQSAtLT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwic2hvd1RleHRGaWVsZEljb25cIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25UZXh0RmllbGRJY29uVG9nZ2xlKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEljb25hXHJcbiAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93VGV4dEZpZWxkSWNvblwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+SWNvbmEgTWF0ZXJpYWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiSWNvbk5hbWVcIiB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuSWNvbk5hbWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBwbGFjZWhvbGRlcj1cImVzLiBzZWFyY2gsIHBlcnNvbiwgaG9tZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93VGV4dEZpZWxkSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmFtZW50bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIlRleHRGaWVsZEljb25Qb3NpdGlvbkVudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuSWNvblBvc2l0aW9uXCJcclxuICAgICAgICAgICAgICAgICAgICBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0ljb25Qb3NpdGlvbidcIlxyXG4gICAgICAgICAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPCEtLSNlbmRyZWdpb24gSUNPTkEgLS0+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBESSBURVNUTyAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBFVElDSEVUVEEgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbGFiZWxGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8dGV4dGFyZWEgbmFtZT1cIkV0aWNoZXR0YVwiIHBsYWNlaG9sZGVyPVwiRXRpY2hldHRhXCIgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRXRpY2hldHRhXCJcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuRXRpY2hldHRhXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBFVElDSEVUVEEgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQVJFQSBESSBURVNUTyAtLT5cclxuPG5nLXRlbXBsYXRlICN0ZXh0YXJlYUZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UmlnaGU8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJyaWdoZVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJyb3dzXCIgZm9ybUNvbnRyb2xOYW1lPVwiUm93c1wiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJvd3NcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5Sb3dzKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgPHVsPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydSb3dzJ10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydSb3dzJ10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiXHJcbiAgICAgICAgW2hpZGRlbl09XCJmaWVsZC5SZWFkb25seSB8fCBwbGF0Zm9ybSAhPSAnd2ViJ1wiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuTWljcm9waG9uZVwiIGZvcm1Db250cm9sTmFtZT1cIk1pY3JvcGhvbmVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgU3BlZWNoLVRvLVRleHRcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkx1bmdoZXp6YSBtaW5pbWE8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBpZD1cImxlbmd0aE1pblwiIGZvcm1Db250cm9sTmFtZT1cIk1pbkxlbmdodFwiIHR5cGU9XCJudW1iZXJcIiBbbWluXT1cIjBcIiBtYXRJbnB1dFxyXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5MZW5naHRcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1pbkxlbmdodClcIj5cclxuICAgICAgICAgICAgPG1hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWluTGVuZ2h0J10uZXJyb3JzPy5bJ3BhdHRlcm4nXVwiPkluc2VyaXJlIHVuIHZhbG9yZSBudW1lcmljby48L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdJZj1cImZpZWxkRm9ybUdyb3VwLmNvbnRyb2xzWydNaW5MZW5naHQnXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkx1bmdoZXp6YSBtYXNzaW1hPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgaWQ9XCJsZW5ndGhNYXhcIiBmb3JtQ29udHJvbE5hbWU9XCJNYXhMZW5naHRcIiB0eXBlPVwibnVtYmVyXCIgW21pbl09XCIwXCIgbWF0SW5wdXRcclxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWF4TGVuZ2h0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCIgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5NYXhMZW5naHQpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ01heExlbmdodCddLmVycm9ycz8uWydwYXR0ZXJuJ11cIj5JbnNlcmlyZSB1biB2YWxvcmUgbnVtZXJpY28uPC9saT5cclxuICAgICAgICAgICAgICAgICAgICA8bGkgKm5nSWY9XCJmaWVsZEZvcm1Hcm91cC5jb250cm9sc1snTWF4TGVuZ2h0J10uZXJyb3JzPy5bJ01pc3NpbmcgUGFyZW50aGVzaXMnXVwiPlBhcmVudGVzaSBub24gY2hpdXNlLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gSUNPTkEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cInNob3dUZXh0YXJlYUZpZWxkSWNvblwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblRleHRhcmVhRmllbGRJY29uVG9nZ2xlKCRldmVudC5jaGVja2VkKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIEljb25hXHJcbiAgICAgICAgICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00XCIgKm5nSWY9XCJzaG93VGV4dGFyZWFGaWVsZEljb25cIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkljb25hIE1hdGVyaWFsPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkljb25OYW1lXCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkljb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJlcy4gbm90ZXMsIGRlc2NyaXB0aW9uLCBlZGl0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dUZXh0YXJlYUZpZWxkSWNvblwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmFtZW50bzwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIlRleHRhcmVhRmllbGRJY29uUG9zaXRpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLkljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJY29uUG9zaXRpb24nXCJcclxuICAgICAgICAgICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDwhLS0jZW5kcmVnaW9uIElDT05BIC0tPlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgQVJFQSBESSBURVNUTyAtLT5cclxuXHJcbjwhLS0jcmVnaW9uIEZPUk0gUFJPUFJJRVTDgCBDQU1QSSBCT09MRUFOSSAtLT5cclxuPG5nLXRlbXBsYXRlICNib29sZWFkRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTIgIGFsaWduLXNlbGYtY2VudGVyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIFsobmdNb2RlbCldPVwiZmllbGQuSXNUcmlzdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cIklzVHJpc3RhdGVcIiBjb2xvcj1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgQSB0cmUgc3RhdGlcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VGlwbyBkaSBwcmVzZW50YXppb25lICo8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiQm9vbFByZXNlbnRhbnRpb0VudW1cIiBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuUHJlc2V0YXRpb25UeXBlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ1ByZXNldGF0aW9uVHlwZSdcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEJPT0xFQU5JIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIERBVEEgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGF0ZUZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRpIGRhdGE8L21hdC1sYWJlbD5cclxuICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiRGF0ZVRpbWVUeXBlRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5Jc09ubHlEYXRlXCIgcmVxdWlyZWRcclxuICAgICAgICAgICAgW3Nob3dDYW5jZWxCdXR0b25dPVwiZmFsc2VcIiBbZm9ybUdyb3VwSW5wdXRdPVwiZmllbGRGb3JtR3JvdXBcIiBbZm9ybUNvbnRyb2xOYW1lSW5wdXRdPVwiJ0lzT25seURhdGUnXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJvbkRhdGVUeXBlQ2hhbmdlKClcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkZvcm1hdG88L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEYXRlRm9ybWF0XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5EYXRlRm9ybWF0XCJcclxuICAgICAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIidJbmRpY2FyZSBpbCBmb3JtYXRvIHNlZ3VlbmRvIGxhIGd1aWRhIGRlbCBwYWNjaGV0dG8gbW9tZW50anMuJ1wiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuRm9ybWF0bylcIlxyXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+RGF0YSBtaW5pbWE8L21hdC1sYWJlbD5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIGRhdGEnXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluRGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuREFURVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ2RkL01NL3l5eXknXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnRGF0YSBlIG9yYSddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NaW5EYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5EQVRFVElNRVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ2RkL01NL3l5eXkgSEg6bW0nXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICAgICAgPHRtdy1kYXRldGltZXBpY2tlciAqbmdJZj1cImZpZWxkLklzT25seURhdGUgPT0gRGF0ZVRpbWVUeXBlRW51bVsnU29sbyBvcmFyaW8nXVwiIGNsYXNzPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuTWluRGF0ZVwiIFtwaWNrZXJNb2RlXT1cIm1vZGUuVElNRVBJQ0tFUlwiIFtvdXRwdXRGb3JtYXRdPVwiJ0hIOm1tJ1wiXHJcbiAgICAgICAgICAgIFtzaG93U2Vjb25kc109XCJmYWxzZVwiPjwvdG13LWRhdGV0aW1lcGlja2VyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkRhdGEgbWFzc2ltYTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDx0bXctZGF0ZXRpbWVwaWNrZXIgKm5nSWY9XCJmaWVsZC5Jc09ubHlEYXRlID09IERhdGVUaW1lVHlwZUVudW1bJ1NvbG8gZGF0YSddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhEYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5EQVRFUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInZGQvTU0veXl5eSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydEYXRhIGUgb3JhJ11cIiBjbGFzcz1cImRhdGVcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLk1heERhdGVcIiBbcGlja2VyTW9kZV09XCJtb2RlLkRBVEVUSU1FUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInZGQvTU0veXl5eSBISDptbSdcIlxyXG4gICAgICAgICAgICBbc2hvd1NlY29uZHNdPVwiZmFsc2VcIj48L3Rtdy1kYXRldGltZXBpY2tlcj5cclxuICAgICAgICA8dG13LWRhdGV0aW1lcGlja2VyICpuZ0lmPVwiZmllbGQuSXNPbmx5RGF0ZSA9PSBEYXRlVGltZVR5cGVFbnVtWydTb2xvIG9yYXJpbyddXCIgY2xhc3M9XCJkYXRlXCJcclxuICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmaWVsZC5NYXhEYXRlXCIgW3BpY2tlck1vZGVdPVwibW9kZS5USU1FUElDS0VSXCIgW291dHB1dEZvcm1hdF09XCInSEg6bW0nXCJcclxuICAgICAgICAgICAgW3Nob3dTZWNvbmRzXT1cImZhbHNlXCI+PC90bXctZGF0ZXRpbWVwaWNrZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+UG9zaXppb25lIGljb25lIChjYWxlbmRhcmlvIC8gb3JvbG9naW8pPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJkYXRlVGltZUljb25Qb3NpdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIndmFsdWUnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JY29uc1Bvc2l0aW9uXCJcclxuICAgICAgICAgICAgW2Zvcm1Hcm91cElucHV0XT1cImZpZWxkRm9ybUdyb3VwXCIgW2Zvcm1Db250cm9sTmFtZUlucHV0XT1cIidJY29uc1Bvc2l0aW9uJ1wiXHJcbiAgICAgICAgICAgIChuZ01vZGVsSW5wdXRDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgIDwvZXFwLXNlbGVjdD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5Qb3NpemlvbmUgYm90dG9uZSBjYW5jZWxsYXppb25lPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2FycmF5RGF0YV09XCJkYXRlVGltZUljb25Qb3NpdGlvbk9wdGlvbnNcIlxyXG4gICAgICAgICAgICBbYXJyYXlLZXlQcm9wZXJ0eV09XCIndmFsdWUnXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCInbGFiZWwnXCJcclxuICAgICAgICAgICAgW2luY2x1ZGVGdWxsT2JqZWN0XT1cImZhbHNlXCIgW3Nob3dDYW5jZWxCdXR0b25dPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5DbG9zZUljb25Qb3NpdGlvblwiXHJcbiAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQ2xvc2VJY29uUG9zaXRpb24nXCJcclxuICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC00IG10LTIgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Vc2VUb29sdGlwXCIgZm9ybUNvbnRyb2xOYW1lPVwiVXNlVG9vbHRpcFwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj5cclxuICAgICAgICAgICAgTW9zdHJhIHRvb2x0aXBcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIERBVEEgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTlVNRVJJQ0kgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjbnVtZXJpY0ZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLklzSW50ZWdlclwiIGZvcm1Db250cm9sTmFtZT1cIklzSW50ZWdlclwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICBWYWxvcmUgaW50ZXJvXHJcbiAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiIWZpZWxkLklzSW50ZWdlclwiIGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5TZXBhcmF0b3JlIGRlY2ltYWxpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiRGVjaW1hbFNlcGFyYXRvclwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRGVjaW1hbFNlcGFyYXRvclwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkRlY2ltYWxTZXBhcmF0b3IpXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0RlY2ltYWxTZXBhcmF0b3InXS5lcnJvcnM/LlsncGF0dGVybiddXCI+Tm9uIMOoIHBvc3NpYmlsZSBpbnNlcmlyZSBkZWkgbnVtZXJpLjwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0RlY2ltYWxTZXBhcmF0b3InXS5lcnJvcnM/LlsnTWlzc2luZyBQYXJlbnRoZXNpcyddXCI+UGFyZW50ZXNpIG5vbiBjaGl1c2UuPC9saT5cclxuICAgICAgICAgICAgICAgIDwvdWw+XHJcbiAgICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCIhZmllbGQuSXNJbnRlZ2VyXCIgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTYgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPlByZWNpc2lvbmUgZGVjaW1hbGk8L21hdC1sYWJlbD5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJEZWNpbWFsUHJlY2lzaW9uXCIgdHlwZT1cIm51bWJlclwiIFttaW5dPVwiMFwiIG1hdElucHV0XHJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZpZWxkLkRlY2ltYWxQcmVjaXNpb25cIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIlxyXG4gICAgICAgICAgICAgICAgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLkRlY2ltYWxQcmVjaXNpb24pXCI+XHJcbiAgICAgICAgICAgIDxtYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgPGxpICpuZ0lmPVwiZmllbGRGb3JtR3JvdXAuY29udHJvbHNbJ0RlY2ltYWxQcmVjaXNpb24nXS5lcnJvcnM/LlsncGF0dGVybiddXCI+SW5zZXJpcmUgdW4gdmFsb3JlIG51bWVyaWNvLjwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5TZXBhcmF0b3JlIG1pZ2xpYWlhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiVGhvdXNhbmRzU2VwYXJhdG9yXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5UaG91c2FuZHNTZXBhcmF0b3JcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5UaG91c2FuZHNTZXBhcmF0b3IpXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgbWF0VG9vbHRpcD1cIlNpbWJvbG8gcHJpbWEgZGVsIHZhbG9yZVwiPlNpbWJvbG8gdmFsdXRhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiQ3VycmVuY3lTeW1ib2xcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkN1cnJlbmN5U3ltYm9sXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuQ3VycmVuY3lTeW1ib2wpXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWwgbWF0VG9vbHRpcD1cIlNpbWJvbG8gZG9wbyBpbCB2YWxvcmVcIj5Vbml0w6AgZGkgbWlzdXJhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiTWVhc3VyZVVuaXRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLk1lYXN1cmVVbml0XCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChrZXlwcmVzcyk9XCJvbWl0X3NwZWNpYWxfY2hhcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgIChmb2N1c291dCk9XCJzdHJpbmdTYW5pdGl6ZXIoZmllbGQuTWVhc3VyZVVuaXQpXCI+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNiBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlIG1pbmltbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIk1pblZhbHVlXCIgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuTWluVmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1pblZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTnVtZXJpY01pbk1heENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgIHBhdHRlcm49XCJeLT9bMC05XSsoLFswLTldK3xcXC5bMC05XSspPyRcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC02IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmUgbWFzc2ltbzwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIk1heFZhbHVlXCIgdHlwZT1cIm51bWJlclwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuTWF4VmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiAoZm9jdXNvdXQpPVwic3RyaW5nU2FuaXRpemVyKGZpZWxkLk1heFZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTnVtZXJpY01pbk1heENoYW5nZSgpXCJcclxuICAgICAgICAgICAgICAgIHBhdHRlcm49XCJeLT9bMC05XSsoLFswLTldK3xcXC5bMC05XSspPyRcIj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPCEtLSNyZWdpb24gSUNPTkEgLS0+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yIGFsaWduLXNlbGYtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cInNob3dOdW1lcmljRmllbGRJY29uXCIgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTnVtZXJpY0ZpZWxkSWNvblRvZ2dsZSgkZXZlbnQuY2hlY2tlZClcIj5cclxuICAgICAgICAgICAgICAgICAgICBJY29uYVxyXG4gICAgICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNFwiICpuZ0lmPVwic2hvd051bWVyaWNGaWVsZEljb25cIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPkljb25hIE1hdGVyaWFsPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkljb25OYW1lXCIgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkljb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgcGxhY2Vob2xkZXI9XCJlcy4gZXVybywgbW9uaXRvcl93ZWlnaHQsIGZhdm9yaXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwic3R5bGVWZXJzaW9uID0gc3R5bGVWZXJzaW9uICsgMVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTRcIiAqbmdJZj1cInNob3dOdW1lcmljRmllbGRJY29uXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPlBvc2l6aW9uYW1lbnRvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8ZXFwLXNlbGVjdCBbZW51bURhdGFdPVwiTnVtZXJpY0ZpZWxkSWNvblBvc2l0aW9uRW51bVwiIFsobmdNb2RlbElucHV0KV09XCJmaWVsZC5JY29uUG9zaXRpb25cIlxyXG4gICAgICAgICAgICAgICAgICAgIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInSWNvblBvc2l0aW9uJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgKG5nTW9kZWxJbnB1dENoYW5nZSk9XCJzdHlsZVZlcnNpb24gPSBzdHlsZVZlcnNpb24gKyAxXCI+XHJcbiAgICAgICAgICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8IS0tI2VuZHJlZ2lvbiBJQ09OQSAtLT5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIE5VTUVSSUNJIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEFMTEVHQVRPIC0tPlxyXG48bmctdGVtcGxhdGUgI2F0dGFjaG1lbnRGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5pc011bHRpQXR0YWNoXCIgZm9ybUNvbnRyb2xOYW1lPVwiaXNNdWx0aUF0dGFjaFwiIGNvbG9yPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICBBbGxlZ2F0aSBtdWx0aXBsaVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5Fc3RlbnNpb25pIGFjY2V0dGF0ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxlcXAtc2VsZWN0IFthcnJheURhdGFdPVwiQXZhaWxhYmxlRmlsZUV4dGVuc2lvbnMuY29uY2F0KEF2YWlsYWJsZUltYWdlRXh0ZW5zaW9ucylcIlxyXG4gICAgICAgICAgICBbKG5nTW9kZWxJbnB1dCldPVwiZmllbGQuQWxsb3dlZE1pbWVUeXBlc1wiIFthcnJheUtleVByb3BlcnR5XT1cIidrZXknXCIgW2FycmF5VmFsdWVQcm9wZXJ0eV09XCIndmFsdWUnXCJcclxuICAgICAgICAgICAgW2lzTXVsdGlTZWxlY3RdPVwidHJ1ZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInQWxsb3dlZE1pbWVUeXBlcydcIlxyXG4gICAgICAgICAgICBbaW5jbHVkZUZ1bGxPYmplY3RdPVwiZmFsc2VcIj5cclxuICAgICAgICA8L2VxcC1zZWxlY3Q+XHJcbiAgICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIEFMTEVHQVRPIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gRk9STSBQUk9QUklFVMOAIENBTVBJIExJU1RBIERJIFZBTE9SSSAtLT5cclxuPG5nLXRlbXBsYXRlICNsaXN0VmFsdWVGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMiAgYWxpZ24tc2VsZi1jZW50ZXJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgW2hpZGRlbl09XCJmaWVsZC5QcmVzZW50YXRpb25Nb2RlID09IExpc3RQcmVzZW50YXRpb25FbnVtWydSYWRpbyBidXR0b24nXVwiXHJcbiAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZmllbGQuSXNNdWx0aUNob2ljaGVcIiBmb3JtQ29udHJvbE5hbWU9XCJJc011bHRpQ2hvaWNoZVwiIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25Jc011bHRpQ2hvaWNoZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgICAgIFNjZWx0YSBtdWx0aXBsYVxyXG4gICAgICAgIDwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yXCI+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5UaXBvIGRpIHByZXNlbnRhemlvbmUqPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgPGVxcC1zZWxlY3QgW2VudW1EYXRhXT1cIkxpc3RQcmVzZW50YXRpb25FbnVtXCIgWyhuZ01vZGVsSW5wdXQpXT1cImZpZWxkLlByZXNlbnRhdGlvbk1vZGVcIiByZXF1aXJlZFxyXG4gICAgICAgICAgICBbc2hvd0NhbmNlbEJ1dHRvbl09XCJmYWxzZVwiIFtmb3JtR3JvdXBJbnB1dF09XCJmaWVsZEZvcm1Hcm91cFwiIFtmb3JtQ29udHJvbE5hbWVJbnB1dF09XCInUHJlc2VudGF0aW9uTW9kZSdcIlxyXG4gICAgICAgICAgICAobmdNb2RlbElucHV0Q2hhbmdlKT1cIm9uUHJlc2VudGF0aW9uTW9kZUNoYW5nZSgpXCI+XHJcbiAgICAgICAgPC9lcXAtc2VsZWN0PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIG10LTJcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPkFyZWEgZGVpIHZhbG9yaSBkYSBpbnNlcmlyZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IHBsYWNlaG9sZGVyPVwia2V5MXx2YWx1ZTE7a2V5Mnx2YWx1ZTJcIiBbKG5nTW9kZWwpXT1cImZpZWxkLlZhbHVlU3RyaW5nXCIgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChuZ01vZGVsQ2hhbmdlKT1cInN0eWxlVmVyc2lvbiA9IHN0eWxlVmVyc2lvbiArIDFcIj48L3RleHRhcmVhPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiY291bnRWYWx1ZVBhaXJzKGZpZWxkLlZhbHVlUGFpcnMpID4gMFwiPlxyXG4gICAgICAgICAgICA8aDQgY2xhc3M9XCJrZXktdmFsdWUtbGlzdC1zZWN0aW9uLXRpdGxlXCI+IDwvaDQ+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5MYWJlbCBvcHppb25lIChpbnZpbyBwZXIgY29uZmVybWFyZSk8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJrZXlWYWx1ZU9iamVjdC5rZXlcIiAoa2V5dXApPVwib25NdWx0aVNlbGVjdElucHV0S2V5dXAoJGV2ZW50LCBudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmUgb3B6aW9uZSAoaW52aW8gcGVyIGNvbmZlcm1hcmUpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwia2V5VmFsdWVPYmplY3QudmFsdWVcIiAoa2V5dXApPVwib25NdWx0aVNlbGVjdElucHV0S2V5dXAoJGV2ZW50LCBudWxsKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNCAgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItM1wiPk9wemlvbmkgaW5zZXJpdGU6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPHVsIGNsYXNzPVwidmFsdWUtcGFpcnMtbGlzdFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxsaSAqbmdGb3I9XCJsZXQga2V5VmFsdWVQYWlyIG9mIGdldERpY3Rpb25hcnlLZXlWYWx1ZSgpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1yLTFcIiAoY2xpY2spPVwiZGVsZXRlS2V5RnJvbURpY3Rpb25hcnkoa2V5VmFsdWVQYWlyLmtleSlcIj5jbG9zZTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPjxiPkxhYmVsOiA8L2I+e3trZXlWYWx1ZVBhaXIua2V5fX0gLSA8Yj5WYWxvcmU6IDwvYj57e2tleVZhbHVlUGFpci52YWx1ZX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTElTVEEgREkgVkFMT1JJIC0tPlxyXG5cclxuPCEtLSNyZWdpb24gQk9UVE9ORSBBWklPTkUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjYnV0dG9uRmllbGRGb3JtVGVtcGxhdGU+XHJcbiAgICA8YWN0aW9uLWJ1dHRvbi1jcmVhdG9yIFtJbkZpZWxkXT1cInRydWVcIiBbZW5kUG9pbnRDb25maWd1cmF0aW9uXT1cImVuZFBvaW50Q29uZmlndXJhdGlvblwiIFtmb3JtXT1cImZvcm1cIlxyXG4gICAgICAgIFtmb3JtdWxhc109XCJhY3Rpb25CdXR0b25zXCIgW2Zvcm11bGFPYmplY3RdPVwiZm9ybXVsYU9iamVjdFwiIFthY3Rpb25CdXR0b25GaWVsZF09XCJmaWVsZFwiXHJcbiAgICAgICAgKG9uQ2hhbmdlU29tZXRoaW5nKT1cImNoYW5nZWRCdXR0b25GaWVsZCgkZXZlbnQpXCI+XHJcbiAgICA8L2FjdGlvbi1idXR0b24tY3JlYXRvcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPCEtLSNlbmRyZWdpb24gQk9UVE9ORSBBWklPTkUgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIExJU1RBIElNTUFHSU5JIC0tPlxyXG48bmctdGVtcGxhdGUgI2ltYWdlRmllbGRTZWxlY3RvckZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTMgY29sLXhzLTEyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8bWF0LWxhYmVsPkFsdGV6emEgaW4gUGl4ZWwgZGVsbGUgaW1tYWdpbmkgc2NhbGF0ZSo8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuUmVzaXplZEltYWdlc0hlaWdodFB4XCJcclxuICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAoY2hhbmdlKT1cInNldFJlc2l6ZWRJbWFnZXNIZWlnaHRQeCgpXCI+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWVycm9yPnt7IGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKCdSZXNpemVkSW1hZ2VzSGVpZ2h0UHgnKSB9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMyBjb2wteHMtMTIgY29sLW1pZGRsZVwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgWyhuZ01vZGVsKV09XCJmaWVsZC5Jc011bHRpQ2hvaWNoZVwiIGZvcm1Db250cm9sTmFtZT1cIklzTXVsdGlDaG9pY2hlXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICBTY2VsdGEgbXVsdGlwbGFcclxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZXFwLWF0dGFjaG1lbnRzICNpbWFnZVNlbGVjdG9yQXR0YWNobWVudHMgW2F0dGFjaG1lbnRzTGlzdF09XCJmaWVsZC5BdHRhY2htZW50TGlzdFwiIFtzaG93TWF0Q2FyZF09XCJmYWxzZVwiXHJcbiAgICAgICAgW2FsbG93T25seUltYWdlc109XCJ0cnVlXCIgW2lzRGlzYWJsZWRdPVwiZmFsc2VcIiBbc2hvd0lubGluZVByZXZpZXddPVwidHJ1ZVwiIFttdWx0aXBsZUF0dGFjaG1lbnRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIiBbYWxsb3dlZFR5cGVzXT1cIltBdHRhY2htZW50VHlwZS5GSUxFXVwiXHJcbiAgICAgICAgKGxvY2FsRWRpdGVkQXR0YWNobWVudHMpPVwiY2F0Y2hCdXR0b25JbWFnZXNDaGFuZ2UoJGV2ZW50KVwiIFthdHRhY2htZW50c0NvbHVtbnNdPVwiY29uZmlnQ29sdW1uTGlzdEltYWdlc1wiPlxyXG4gICAgPC9lcXAtYXR0YWNobWVudHM+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjwhLS0jZW5kcmVnaW9uIEZPUk0gTElTVEEgSU1NQUdJTkkgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VGaWVsZEZvcm1UZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLkVuYWJsZURyYXdpbmdcIiBmb3JtQ29udHJvbE5hbWU9XCJFbmFibGVEcmF3aW5nXCIgY29sb3I9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICBJbW1hZ2luZSBkaXNlZ25hYmlsZT9cclxuICAgICAgICAgICAgPC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5BbHRlenphIGluIFBpeGVsIGRlbGxlIGltbWFnaW5pIHNjYWxhdGUqPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJSZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIiBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLlJlc2l6ZWRJbWFnZXNIZWlnaHRQeFwiXHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGNoYW5nZSk9XCJzZXRSZXNpemVkSW1hZ2VzSGVpZ2h0UHgoKVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1lcnJvcj57eyBnZXRGb3JtVmFsaWRhdGlvbkVycm9ycygnUmVzaXplZEltYWdlc0hlaWdodFB4JykgfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5FdGljaGV0dGE8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25LZXlcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTQgY29sLXhzLTEyXCIgKm5nSWY9XCJmaWVsZC5EeW5BdHRhY2htZW50ICE9IG51bGxcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmU8L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFsobmdNb2RlbCldPVwiZmllbGQuRHluQXR0YWNobWVudC5CdXR0b25WYWx1ZVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIGNvbC1tZC04IG10LTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgPGVxcC1hdHRhY2htZW50cyBbYXR0YWNobWVudHNMaXN0XT1cImZpZWxkLkR5bkF0dGFjaG1lbnQgPyBbZmllbGQuRHluQXR0YWNobWVudF0gOiBbXVwiIFtzaG93TWF0Q2FyZF09XCJmYWxzZVwiIFthbGxvd09ubHlJbWFnZXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgIFtpc0Rpc2FibGVkXT1cImZhbHNlXCIgW3Nob3dJbmxpbmVQcmV2aWV3XT1cInRydWVcIiBbbXVsdGlwbGVBdHRhY2htZW50XT1cImZhbHNlXCIgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbYWxsb3dlZFR5cGVzXT1cIltBdHRhY2htZW50VHlwZS5GSUxFXVwiIChsb2NhbEVkaXRlZEF0dGFjaG1lbnRzKT1cImNhdGNoQnV0dG9uSW1hZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkRlbGV0ZUF0dGFjaG1lbnQpPVwiZGVsZXRlSW1hZ2UoJGV2ZW50KVwiICNpbWFnZUF0dGFjaG1lbnQ+XHJcbiAgICAgICAgPC9lcXAtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seVByb2ZpbGVJbWFnZT5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiZGF0YTp7e2ZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZUNvbnRlbnRUeXBlfX07YmFzZTY0LHt7ZmllbGQuRHluQXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NH19XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgQ09OIE1BUktFUlMgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjaW1hZ2VXaXRoTWFya2Vyc0ZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtNCBjb2wteHMtMTJcIiBbZm9ybUdyb3VwXT1cImZpZWxkRm9ybUdyb3VwXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+QWx0ZXp6YSBpbiBQaXhlbCBkZWxsZSBpbW1hZ2luaSBzY2FsYXRlKjwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiUmVzaXplZEltYWdlc0hlaWdodFB4XCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWVsZC5SZXNpemVkSW1hZ2VzSGVpZ2h0UHhcIlxyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkIHNwZWxsY2hlY2s9XCJmYWxzZVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIChjaGFuZ2UpPVwic2V0UmVzaXplZEltYWdlc0hlaWdodFB4KClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtZXJyb3I+e3sgZ2V0Rm9ybVZhbGlkYXRpb25FcnJvcnMoJ1Jlc2l6ZWRJbWFnZXNIZWlnaHRQeCcpIH19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+RXRpY2hldHRhPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uS2V5XCIgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC00IGNvbC14cy0xMlwiICpuZ0lmPVwiZmllbGQuRHluQXR0YWNobWVudCAhPSBudWxsXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+VmFsb3JlPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkR5bkF0dGFjaG1lbnQuQnV0dG9uVmFsdWVcIiBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtOCBtdC0yXCIgW2Zvcm1Hcm91cF09XCJmaWVsZEZvcm1Hcm91cFwiPlxyXG4gICAgICAgIDxlcXAtYXR0YWNobWVudHMgW2F0dGFjaG1lbnRzTGlzdF09XCJmaWVsZC5EeW5BdHRhY2htZW50ID8gW2ZpZWxkLkR5bkF0dGFjaG1lbnRdIDogW11cIiBbc2hvd01hdENhcmRdPVwiZmFsc2VcIiBbYWxsb3dPbmx5SW1hZ2VzXT1cInRydWVcIlxyXG4gICAgICAgICAgICBbaXNEaXNhYmxlZF09XCJmYWxzZVwiIFtzaG93SW5saW5lUHJldmlld109XCJ0cnVlXCIgW211bHRpcGxlQXR0YWNobWVudF09XCJmYWxzZVwiIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2FsbG93ZWRUeXBlc109XCJbQXR0YWNobWVudFR5cGUuRklMRV1cIiAobG9jYWxFZGl0ZWRBdHRhY2htZW50cyk9XCJjYXRjaEJ1dHRvbkltYWdlV2l0aE1hcmtlcnNDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgIChvbkRlbGV0ZUF0dGFjaG1lbnQpPVwiZGVsZXRlSW1hZ2UoJGV2ZW50KVwiICNpbWFnZUF0dGFjaG1lbnQ+XHJcbiAgICAgICAgPC9lcXAtYXR0YWNobWVudHM+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlICNyZWFkb25seVByb2ZpbGVJbWFnZT5cclxuICAgICAgICAgICAgPGltZyAqbmdJZj1cImZpZWxkLkR5bkF0dGFjaG1lbnRcIlxyXG4gICAgICAgICAgICAgICAgc3JjPVwiZGF0YTp7e2ZpZWxkLkR5bkF0dGFjaG1lbnQuRmlsZUNvbnRlbnRUeXBlfX07YmFzZTY0LHt7ZmllbGQuRHluQXR0YWNobWVudC5GaWxlRGF0YUJhc2U2NH19XCIgYWx0PVwiXCI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgSU1NQUdJTkUgQ09OIE1BUktFUlMgLS0+XHJcblxyXG48IS0tI3JlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTE9PS1VQIC0tPlxyXG48bmctdGVtcGxhdGUgI2xvb2t1cEZpZWxkRm9ybVRlbXBsYXRlPlxyXG4gICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMiBjb2wtbWQtNCBtdC0yICBhbGlnbi1zZWxmLWNlbnRlclwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBbKG5nTW9kZWwpXT1cImZpZWxkLlVzZUFzR2V0T3JEaXNjYXJkXCIgZm9ybUNvbnRyb2xOYW1lPVwiVXNlQXNHZXRPckRpc2NhcmRcIiBjb2xvcj1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiU2UgdHJ1ZSBsYSBsb29rdXAgdmllbmUgdmlzdWFsaXp6YXRhIGluIHVuYSBtb2RhbGUgcGVyIGxvIHNjZWdsaSBzY2FydGFcIj5cclxuICAgICAgICAgICAgVXNhIHBlciBzY2VnbGkgbyBzY2FydGFcclxuICAgICAgICA8L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTIgY29sLW1kLTQgbXQtMlwiIFtmb3JtR3JvdXBdPVwiZmllbGRGb3JtR3JvdXBcIj5cclxuICAgICAgICA8bWF0LWxhYmVsPk5vbWUgZW50aXTDoDwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBtYXRUb29sdGlwPVwiTm9tZSBkZWxsJ2VudGl0w6AgcmVsYXppb25hdGFcIj5cclxuICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cIkVudGl0eVNvdXJjZU5hbWVcIiByZXF1aXJlZCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cImZpZWxkLkVudGl0eVNvdXJjZU5hbWVcIlxyXG4gICAgICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgKGZvY3Vzb3V0KT1cInN0cmluZ1Nhbml0aXplcihmaWVsZC5FbnRpdHlTb3VyY2VOYW1lKVwiPlxyXG4gICAgICAgICAgICA8bWF0LWVycm9yPnt7IGdldEZvcm1WYWxpZGF0aW9uRXJyb3JzKCdFbnRpdHlTb3VyY2VOYW1lJykgfX08L21hdC1lcnJvcj5cclxuICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIG10LTJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNFwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1sYWJlbD5Ob21pIGRlaSBjYW1waSAoaW52aW8gcGVyIGNvbmZlcm1hcmUpPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgbWF0VG9vbHRpcD1cIkVsZW5jbyBkaSBjYW1waSBvcmRpbmF0byBjaGUgdmVycsOgIHZpc3VhbGl6emF0byBuZWxsYSBsb29rdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgKGtleXVwKT1cIm9uTXVsdGlTZWxlY3RJbnB1dEtleXVwKCRldmVudCwgJ0ZpZWxkTmFtZXMnKVwiIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtOCAgYWxpZ24tc2VsZi1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXItM1wiPk5vbWkgc2VsZXppb25hdGk6PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImV4dGVuc2lvbi1jb250YWluZXJcIiAqbmdGb3I9XCJsZXQgZXh0ZW5zaW9uIG9mIGZpZWxkLkZpZWxkTmFtZXM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e2V4dGVuc2lvbn19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1sLTFcIiAoY2xpY2spPVwiZmllbGQuRmllbGROYW1lcy5zcGxpY2UoaSwxKVwiPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG48IS0tI2VuZHJlZ2lvbiBGT1JNIFBST1BSSUVUw4AgQ0FNUEkgTE9PS1VQIC0tPlxyXG5cclxuPG5nLXRlbXBsYXRlICNidXR0b25JbWFnZXNLZXlWYWx1ZUlucHV0Q29sdW1uIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD57e2NvbC5kaXNwbGF5fX08L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJyb3dbY29sLmtleV1cIiByZXF1aXJlZCBzcGVsbGNoZWNrPVwiZmFsc2VcIiBhdXRvY29tcGxldGU9XCJvZmZcIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tRElBTE9HIFBFUiBTRU1QTElGSUNBUkUgTEEgU0NSSVRUVVJBIERFTCBDQU1QTyBGT1JNVUxBLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nRm9ybXVsYT5cclxuICAgIDxlcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG4gICAgPC9lcXAtZHluYW1pYy1tb2R1bGUtYWRkLWZvcm11bGEtY29tcG9uZW50PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPG5nLXRlbXBsYXRlICNHZW5lcmljTGlzdEltYWdlc0ltYWdlVGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1jb2w9XCJjb2xcIj5cclxuICAgIDxpbWcgc3JjPVwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwge3tyb3dbY29sLmtleV19fVwiIGNsYXNzPVwiR2VuZXJpY0xpc3RJbWFnZXNJbWFnZVRlbXBsYXRlXCI+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48bmctdGVtcGxhdGUgI0dlbmVyaWNMaXN0SW1hZ2VzS2V5VGVtcGxhdGUgbGV0LXJvdz1cInJvd1wiIGxldC1jb2w9XCJjb2xcIj5cclxuICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWxhYmVsPkNoaWF2ZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgIDxpbnB1dCBtYXRJbnB1dCBbKG5nTW9kZWwpXT1cInJvd1tjb2wua2V5XVwiPlxyXG4gICAgPC9tYXQtZm9ybS1maWVsZD5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjR2VuZXJpY0xpc3RJbWFnZXNWYWx1ZVRlbXBsYXRlIGxldC1yb3c9XCJyb3dcIiBsZXQtY29sPVwiY29sXCI+XHJcbiAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1sYWJlbD5WYWxvcmU8L21hdC1sYWJlbD5cclxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJyb3dbY29sLmtleV1cIj5cclxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tIFRFTVBMQVRFIFBFUiBRVUVSWSBFRElUT1IgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjZGlhbG9nUUU+XHJcbiAgICA8bmctdGVtcGxhdGUgW2FwcER5bmFtaWNMb2FkZXJdIFtkYXRhXT1cIlF1ZXJ5RWRpdG9yQ29tcG9uZW50XCIgKG91dCk9XCJvbkV4dGVybmFsQ29tcG9uZW50T3V0KCRldmVudCk7XCI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L25nLXRlbXBsYXRlPlxyXG4iXX0=
|