@bnsights/bbsf-admin-portal 1.0.38 → 1.0.39
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 +4 -0
- package/{bnsights-bbsf-admin-portal-1.0.38.tgz → bnsights-bbsf-admin-portal-1.0.39.tgz} +0 -0
- package/bundles/bnsights-bbsf-admin-portal.umd.js +20 -20
- package/bundles/bnsights-bbsf-admin-portal.umd.js.map +1 -1
- package/esm2015/lib/Pages/localizations/localizations.component.js +2 -2
- package/esm2015/lib/Pages/lookups/lookup/lookup.component.js +2 -2
- package/esm2015/lib/Pages/notifications/templates/templates.component.js +3 -3
- package/esm2015/lib/Pages/providers/provider/provider.component.js +3 -3
- package/esm2015/lib/Pages/users/users.component.js +5 -5
- package/fesm2015/bnsights-bbsf-admin-portal.js +20 -20
- package/fesm2015/bnsights-bbsf-admin-portal.js.map +1 -1
- package/package.json +2 -2
|
@@ -280,8 +280,8 @@ export class ProviderComponent {
|
|
|
280
280
|
this.utilityService.stopBlockUI();
|
|
281
281
|
}
|
|
282
282
|
resetFilters() {
|
|
283
|
-
this.ProviderForm.controls["providerTypesFilterOption"].setValue(
|
|
284
|
-
this.ProviderForm.controls["sortingFilterOption"].setValue(
|
|
283
|
+
this.ProviderForm.controls["providerTypesFilterOption"].setValue(null);
|
|
284
|
+
this.ProviderForm.controls["sortingFilterOption"].setValue(null);
|
|
285
285
|
this.ProviderForm.controls["searchTextBox"].setValue(null);
|
|
286
286
|
let element = this.pagingElement;
|
|
287
287
|
element.ReinitializePaging();
|
|
@@ -625,4 +625,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.13", ngImpo
|
|
|
625
625
|
type: ViewChild,
|
|
626
626
|
args: ['ConfirmationModalControl', { static: false }]
|
|
627
627
|
}] } });
|
|
628
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQXFCLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVTLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFLckYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7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LENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7K0dBdnVCVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixxZkN2QjlCLDAzc0JBMmNBOzRGRHBiYSxpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFdBQVcsRUFBRSwyQkFBMkI7aUJBQ3pDO3lSQW1CNEQsYUFBYTtzQkFBdkUsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBUVAsZ0JBQWdCO3NCQUFqRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRSxnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQW1DVSx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFJhZGlvQnV0dG9uT3B0aW9ucywgVGV4dEFyZWFPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgUmFkaW9CdXR0b25JdGVtLCBGb3JtT3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlLCBIdG1sRWRpdG9yT3B0aW9ucywgUGhvbmVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvcHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb3ZpZGVyTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1Byb3ZpZGVyTW9kZWxzL1Byb3ZpZGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBQcm92aWRlckF0dHJpYnV0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Qcm92aWRlck1vZGVscy9Qcm92aWRlckF0dHJpYnV0ZU1vZGVsJztcclxuaW1wb3J0IHsgRGVmYXVsdFByb3ZpZGVyTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1Byb3ZpZGVyTW9kZWxzL0RlZmF1bHRQcm92aWRlck1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvdmlkZXJUeXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL0VudW1zL1Byb3ZpZGVyVHlwZSc7XHJcbmltcG9ydCB7IEVtYWlsUHJvdmlkZXJUZXN0ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUHJvdmlkZXJNb2RlbHMvRW1haWxQcm92aWRlclRlc3Rlck1vZGVsJztcclxuaW1wb3J0IHsgU01TUHJvdmlkZXJUZXN0ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUHJvdmlkZXJNb2RlbHMvU01TUHJvdmlkZXJUZXN0ZXJNb2RlbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcHJvdmlkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm92aWRlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL1Byb3ZpZGVyL1wiO1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgcHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHByb3ZpZGVyVHlwZXNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgc29ydGluZ0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHNvcnRpbmdGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQcm92aWRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBQcm92aWRlclBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ1Byb3ZpZGVyUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBQcm92aWRlclR5cGVzRmlsdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBTb3J0aW5nRmlsdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBUeXBlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgTG9hZGVkUHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIE9yZ2FuaXphdGlvbnNMaXN0ID0gW107XHJcbiAgQFZpZXdDaGlsZCgncHJvdmlkZXJUeXBlc0RETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm92aWRlclR5cGVzRERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3NvcnRpbmdGaWx0ZXJEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgc29ydGluZ0ZpbHRlckRETDogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gIC8vUHJvdmlkZXIgYXR0cmlidXRlc1xyXG4gIFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgUHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgSXNBdHRyaWJ1dGVzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd05vQXR0cmlidXRlc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkUHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkUHJvdmlkZXJGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBBZGROYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBBZGREZXNjcmlwdGlvbjogVGV4dEFyZWFPcHRpb25zO1xyXG4gIEFkZE9yZ2FuaXphdGlvbk9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRUeXBlT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEOiBzdHJpbmc7XHJcblxyXG5cclxuICAvLy8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0UHJvdmlkZXJGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBFZGl0TmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdERlc2NyaXB0aW9uOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRWRpdFR5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEOiBzdHJpbmc7XHJcbiAgRWRpdFByb3ZpZGVyT3JnYW5pemF0aW9uSURfR1VJRDogc3RyaW5nO1xyXG4gIEVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIEVkaXRQcm92aWRlckF0dHJpYnV0ZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBQcm92aWRlcklkOiBzdHJpbmc7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZVByb3ZpZGVySWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICAvL1NlbGVjdCBEZWZhdWx0IFByb3ZpZGVyc1xyXG4gIERlZmF1bHRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBEZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBEZWZhdWx0UHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIERlZmF1bHRQcm92aWRlcnNSYWRpb0J0bk9wdGlvbnM6IFJhZGlvQnV0dG9uT3B0aW9uc1tdO1xyXG5cclxuICAvL1Rlc3QgUHJvdmlkZXIgZnVuY3Rpb25zXHJcbiAgZW1haWxQcm92aWRlclR5cGUgPSBQcm92aWRlclR5cGUuRW1haWxzO1xyXG4gIHNtc1Byb3ZpZGVyVHlwZSA9IFByb3ZpZGVyVHlwZS5TTVM7XHJcbiAgLy9UZXN0IEVtYWlsIE1vZGVsIGNvbnRyb2xzXHJcbiAgdGVzdEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHRlc3RFbWFpbEZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIGVtYWlsVG86IFRleHRCb3hPcHRpb25zO1xyXG4gIGVtYWlsU3ViamVjdDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZW1haWxCb2R5OiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgdGVzdEVtYWlsUHJvdmlkZXJJZDogc3RyaW5nO1xyXG4gIHRlc3RFbWFpbFByb3ZpZGVyTmFtZTogc3RyaW5nO1xyXG5cclxuICAvL1Rlc3QgU01TIE1vZGVsIGNvbnRyb2xzXHJcbiAgdGVzdFNNU0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICB0ZXN0U01TRm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zXHJcbiAgc21zVG86IFBob25lT3B0aW9ucztcclxuICBzbXNCb2R5OiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgdGVzdFNNU1Byb3ZpZGVySWQ6IHN0cmluZztcclxuICB0ZXN0U01TUHJvdmlkZXJOYW1lOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yXHJcbiAgICAoXHJcbiAgICAgIHByaXZhdGUgUHJvdmlkZXJTZXJ2aWNlOiBQcm92aWRlclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgLy9QYWdlIGhlYWRlciAoYnJlYWRjcnVtYiBhbmQgdGl0bGUpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VydmljZVByb3ZpZGVyc1wiKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcblxyXG4gICAgLy9vbiBsYW5nIGNoYW5nZWRcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICAvL2luaXRpYWxpemUgcGFnZVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIC8vIFByb3ZpZGVyIFR5cGVzIEZpbHRlciBJbml0ICAgXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24uTmFtZSA9IFwicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24uTGFiZWxLZXkgPSBcIlByb3ZpZGVyVHlwZXNcIlxyXG5cclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJwcm92aWRlclR5cGVzRmlsdGVyT3B0aW9uXCJcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJ0eXBlc1wiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcblxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLk5hbWUgPSBcInNvcnRpbmdGaWx0ZXJPcHRpb25cIlxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLkxhYmVsS2V5ID0gXCJTb3J0XCJcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlck9wdGlvbi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic29ydGluZ0ZpbHRlck9wdGlvblwiXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic29ydElEXCJcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkRyb3Bkb3duTGlzdDtcclxuXHJcblxyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRQcm92aWRlcnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVGV4dEJveFwiXTtcclxuICAgIHRoaXMuUHJvdmlkZXJQYWdpbmcuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiLCBcInNvcnRpbmdGaWx0ZXJPcHRpb25cIl07XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXIsIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlciwgdGhpcy5zb3J0aW5nRmlsdGVyXVxyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpO1xyXG5cclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9Mb2FkIGZpbHRlcnMgbGlzdHNcclxuICBsb2FkTGlzdHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuSXNGaWx0ZXJEYXRhTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGxldCBEcm9wZG93bkxpc3RzID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICAgIC8vdGhpcy5Pcmdhbml6YXRpb25zTGlzdCA9IERyb3Bkb3duTGlzdHMub3JnYW5pemF0aW9ucztcclxuICAgICAgICAvL3RoaXMuVHlwZXNMaXN0ID0gRHJvcGRvd25MaXN0cy5wcm92aWRlclR5cGVzO1xyXG4gICAgICAgIHRoaXMuUHJvdmlkZXJUeXBlc0ZpbHRlckxpc3QgPSBEcm9wZG93bkxpc3RzLnByb3ZpZGVyVHlwZXNGaWx0ZXI7XHJcbiAgICAgICAgdGhpcy5Tb3J0aW5nRmlsdGVyTGlzdCA9IERyb3Bkb3duTGlzdHMuc29ydGluZ0ZpbHRlckxpc3Q7XHJcblxyXG4gICAgICAgIGxldCBwcm92aWRlclR5cGVzRWxlbWVudCA9IHRoaXMucHJvdmlkZXJUeXBlc0RETCBhcyBhbnk7XHJcbiAgICAgICAgbGV0IHNvcnRpbmdGaWx0ZXJFbGVtZW50ID0gdGhpcy5zb3J0aW5nRmlsdGVyRERMIGFzIGFueTtcclxuXHJcblxyXG4gICAgICAgIHByb3ZpZGVyVHlwZXNFbGVtZW50LlVwZGF0ZURhdGFTb3VyY2UodGhpcy5Qcm92aWRlclR5cGVzRmlsdGVyTGlzdCk7XHJcblxyXG4gICAgICAgIHNvcnRpbmdGaWx0ZXJFbGVtZW50LlVwZGF0ZURhdGFTb3VyY2UodGhpcy5Tb3J0aW5nRmlsdGVyTGlzdCk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLklzRmlsdGVyRGF0YUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0UHJvdmlkZXJMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG4gIH1cclxuICByZXNldEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLlByb3ZpZGVyRm9ybS5jb250cm9sc1tcInByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb25cIl0uc2V0VmFsdWUoW10pO1xyXG4gICAgdGhpcy5Qcm92aWRlckZvcm0uY29udHJvbHNbXCJzb3J0aW5nRmlsdGVyT3B0aW9uXCJdLnNldFZhbHVlKFtdKTtcclxuICAgIHRoaXMuUHJvdmlkZXJGb3JtLmNvbnRyb2xzW1wic2VhcmNoVGV4dEJveFwiXS5zZXRWYWx1ZShudWxsKTtcclxuICAgIGxldCBlbGVtZW50ID0gdGhpcy5wYWdpbmdFbGVtZW50IGFzIGFueTtcclxuICAgIGVsZW1lbnQuUmVpbml0aWFsaXplUGFnaW5nKCk7XHJcbiAgfVxyXG4gIHNlYXJjaENsaWVudFNpZGUoc2VhcmNoVmFsdWUpIHtcclxuICAgIGlmIChzZWFyY2hWYWx1ZSlcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0LmZpbHRlcihcclxuICAgICAgICBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ucHJvdmlkZXJOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKSk7XHJcbiAgICAgICAgfSlcclxuICAgIGVsc2VcclxuICAgICAgdGhpcy5jbGllbnRTaWRlUGFnaW5nUmVzdWx0ID0gdGhpcy5Qcm92aWRlclBhZ2luZ1Jlc3VsdDtcclxuICB9XHJcblxyXG4gIC8vQXR0cmlidXRlc0Z1bmN0aW9uXHJcbiAgc2V0QWRkUHJvdmlkZXJBdHRyaWJ1dGVzKHR5cGVGdWxsTmFtZSkge1xyXG4gICAgdGhpcy5Qcm92aWRlclNlcnZpY2UuR2V0UHJvdmlkZXJBdHRyaWJ1dGVzKHR5cGVGdWxsTmFtZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIC8vU2V0IFByb3ZpZGVyIHR5cGUgaWQgb24gdHlwZSBjaGFuZ2VcclxuICAgICAgdGhpcy5Mb2FkZWRQcm92aWRlcnMgPSByZXN1bHRPYmoubG9hZGVkUHJvdmlkZXJzO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRQcm92aWRlclR5cGUgPSB0aGlzLkxvYWRlZFByb3ZpZGVycy5maW5kKG9iaiA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG9iai5mdWxsTmFtZSA9PT0gdHlwZUZ1bGxOYW1lXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEID0gc2VsZWN0ZWRQcm92aWRlclR5cGUucHJvdmlkZXJUeXBlSURfR1VJRDtcclxuXHJcbiAgICAgIC8vU2V0IGF0dHJpYnV0ZXMgYW5kIGNvdW50XHJcbiAgICAgIGxldCBhdHRyaWJ1dGVzID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMgPSBbXTtcclxuICAgICAgbGV0IGRhdGE6IGFueSA9IHRoaXMuZ2V0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyhhdHRyaWJ1dGVzLCB0cnVlKTtcclxuICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zID0gZGF0YVswXTtcclxuICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNDb3VudCA9IGRhdGFbMV07XHJcbiAgICAgIHRoaXMuSXNBdHRyaWJ1dGVzTG9hZGVkID0gdHJ1ZTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHNldEVkaXRQcm92aWRlckF0dHJpYnV0ZXModHlwZUZ1bGxOYW1lKSB7XHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5HZXRQcm92aWRlckF0dHJpYnV0ZXModHlwZUZ1bGxOYW1lKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICB2YXIgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgLy9TZXQgUHJvdmlkZXIgdHlwZSBpZCBvbiB0eXBlIGNoYW5nZVxyXG4gICAgICB0aGlzLkxvYWRlZFByb3ZpZGVycyA9IHJlc3VsdE9iai5sb2FkZWRQcm92aWRlcnM7XHJcbiAgICAgIGxldCBzZWxlY3RlZFByb3ZpZGVyVHlwZSA9IHRoaXMuTG9hZGVkUHJvdmlkZXJzLmZpbmQob2JqID0+IHtcclxuICAgICAgICByZXR1cm4gb2JqLmZ1bGxOYW1lID09PSB0eXBlRnVsbE5hbWVcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEID0gc2VsZWN0ZWRQcm92aWRlclR5cGUucHJvdmlkZXJUeXBlSURfR1VJRDtcclxuXHJcbiAgICAgIC8vU2V0IGF0dHJpYnV0ZXMgYW5kIGNvdW50XHJcbiAgICAgIGxldCBhdHRyaWJ1dGVzID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zID0gW107XHJcbiAgICAgIGxldCBkYXRhOiBhbnkgPSB0aGlzLmdldFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMoYXR0cmlidXRlcywgZmFsc2UpO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zID0gZGF0YVswXTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQgPSBkYXRhWzFdO1xyXG5cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyhwcm92aWRlckF0dHJpYnV0ZXM6IGFueVtdLCBpc0FkZDogYm9vbGVhbikge1xyXG4gICAgbGV0IGF0dHJpYnV0ZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IGF0dHJpYnV0ZXNDb3VudDogbnVtYmVyID0gMDtcclxuICAgIGxldCBhY3Rpb25JbmRpY2F0ZTogc3RyaW5nID0gaXNBZGQgPyBcIkFkZFwiIDogXCJFZGl0XCI7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHByb3ZpZGVyQXR0cmlidXRlcy5sZW5ndGg7IGkrKykge1xyXG5cclxuICAgICAgbGV0IG9iamVjdEF0dHJpYnV0ZU9wdGlvbnM6IGFueVtdID0gW107XHJcbiAgICAgIGxldCBpc0VuY3J5cHRlZDogYm9vbGVhbiA9IHByb3ZpZGVyQXR0cmlidXRlc1tpXS5pc0VuY3J5cHRlZDtcclxuXHJcbiAgICAgIGxldCBBdHRyaWJ1dGVOYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIEF0dHJpYnV0ZU5hbWUuTmFtZSA9IGFjdGlvbkluZGljYXRlICsgXCJBdHRyaWJ1dGVOYW1lXCIgKyBpO1xyXG4gICAgICBBdHRyaWJ1dGVOYW1lLkhpZGVMYWJlbCA9IHRydWU7XHJcbiAgICAgIEF0dHJpYnV0ZU5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICBBdHRyaWJ1dGVOYW1lLlZhbHVlID0gcHJvdmlkZXJBdHRyaWJ1dGVzW2ldLm5hbWU7XHJcbiAgICAgIEF0dHJpYnV0ZU5hbWUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuXHJcbiAgICAgIGxldCBBdHRyaWJ1dGVWYWx1ZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5OYW1lID0gYWN0aW9uSW5kaWNhdGUgKyBcIkF0dHJpYnV0ZVZhbHVlXCIgKyBpO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5UeXBlID0gaXNFbmNyeXB0ZWQgPyBJbnB1dFR5cGUuUGFzc3dvcmQgOiBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuVmFsdWUgPSBwcm92aWRlckF0dHJpYnV0ZXNbaV0udmFsdWU7XHJcbiAgICAgIEF0dHJpYnV0ZVZhbHVlLlJlbW92ZURlZmF1bHRQYXNzd29yZFZhbGlkYXRpb24gPSB0cnVlO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICBsZXQgQXR0cmlidXRlRW5jcnlwdGVkID0gbmV3IENoZWNrQm94T3B0aW9ucygpO1xyXG4gICAgICBBdHRyaWJ1dGVFbmNyeXB0ZWQuTmFtZSA9IGFjdGlvbkluZGljYXRlICsgXCJBdHRyaWJ1dGVFbmNyeXB0ZWRcIiArIGk7XHJcbiAgICAgIEF0dHJpYnV0ZUVuY3J5cHRlZC5WYWx1ZSA9IHByb3ZpZGVyQXR0cmlidXRlc1tpXS5pc0VuY3J5cHRlZDtcclxuXHJcbiAgICAgIG9iamVjdEF0dHJpYnV0ZU9wdGlvbnMucHVzaChBdHRyaWJ1dGVOYW1lLCBBdHRyaWJ1dGVWYWx1ZSwgQXR0cmlidXRlRW5jcnlwdGVkKTtcclxuICAgICAgYXR0cmlidXRlc09wdGlvbnMucHVzaChvYmplY3RBdHRyaWJ1dGVPcHRpb25zKTtcclxuICAgICAgYXR0cmlidXRlc0NvdW50ICs9IDE7XHJcblxyXG4gICAgfVxyXG4gICAgcmV0dXJuIFthdHRyaWJ1dGVzT3B0aW9ucywgYXR0cmlidXRlc0NvdW50XTtcclxuICB9XHJcblxyXG4gIGRlbGV0ZUF0dHJpYnV0ZShkZWxldGVkQXR0cmlidXRlOiBhbnksIGlzQWRkOiBib29sZWFuKSB7XHJcbiAgICBpZiAoaXNBZGQpIHtcclxuICAgICAgbGV0IGRlbGV0ZWRBdHRySW5kZXg6IG51bWJlciA9IHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRBdHRyaWJ1dGUpO1xyXG4gICAgICBpZiAoZGVsZXRlZEF0dHJJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRBdHRySW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEF0dHJpYnV0ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm0ucmVtb3ZlQ29udHJvbChkZWxldGVkQXR0cmlidXRlW2ldLk5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIGxldCBkZWxldGVkQXR0ckluZGV4OiBudW1iZXIgPSB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLmluZGV4T2YoZGVsZXRlZEF0dHJpYnV0ZSk7XHJcbiAgICAgIGlmIChkZWxldGVkQXR0ckluZGV4ICE9PSAtMSkge1xyXG4gICAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMuc3BsaWNlKGRlbGV0ZWRBdHRySW5kZXgsIDEpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVsZXRlZEF0dHJpYnV0ZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZEF0dHJpYnV0ZVtpXS5OYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIGVuY3J5cHRlZENoYW5nZShpc0NoZWNrZWQsIG9wdGlvbiwgaXNBZGQpIHtcclxuICAgIGxldCB2YWx1ZUF0dHJpYnV0ZUluZGljYXRvciA9IGlzQWRkID8gXCJBZGRBdHRyaWJ1dGVWYWx1ZVwiIDogXCJFZGl0QXR0cmlidXRlVmFsdWVcIjtcclxuICAgIGxldCByZWFsdGVkVmFsdWVPcHRpb24gPSBvcHRpb24uZmluZChvYmogPT4ge1xyXG4gICAgICByZXR1cm4gb2JqLk5hbWUuc3RhcnRzV2l0aCh2YWx1ZUF0dHJpYnV0ZUluZGljYXRvcilcclxuICAgIH0pO1xyXG4gICAgaWYgKGlzQ2hlY2tlZClcclxuICAgICAgcmVhbHRlZFZhbHVlT3B0aW9uLlR5cGUgPSBJbnB1dFR5cGUuUGFzc3dvcmQ7XHJcbiAgICBlbHNlXHJcbiAgICAgIHJlYWx0ZWRWYWx1ZU9wdGlvbi5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIC8vQWRkIHByb3ZpZGVyXHJcbiAgc2hvd0FkZFByb3ZpZGVyTW9kYWwoYWRkUHJvdmlkZXJNb2RhbCkge1xyXG4gICAgdGhpcy5zaG93Tm9BdHRyaWJ1dGVzRXJyb3IgPSBmYWxzZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5sb2FkQWRkRHJvcGRvd25zKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgbGV0IHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIHRoaXMuT3JnYW5pemF0aW9uc0xpc3QgPSByZXN1bHRPYmoub3JnYW5pemF0aW9ucztcclxuICAgICAgdGhpcy5UeXBlc0xpc3QgPSByZXN1bHRPYmoucHJvdmlkZXJUeXBlcztcclxuXHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IFtdO1xyXG4gICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc0NvdW50ID0gMDtcclxuICAgICAgdGhpcy5Jc0F0dHJpYnV0ZXNMb2FkZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSlcclxuXHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5BZGRQcm92aWRlckZvcm1cclxuICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldEFkZFByb3ZpZGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEFkZFByb3ZpZGVyRnVuY3Rpb247XHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIHRoaXMuQWRkTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuTmFtZSA9IFwiUHJvdmlkZXJOYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5MYWJlbEtleSA9IFwiUHJvdmlkZXJOYW1lXCI7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5UeXBlID0gSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGROYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcblxyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLk5hbWUgPSBcIkRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTGFiZWxLZXkgPSBcIlByb3ZpZGVyRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5WYWx1ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uTWF4TGVuZ3RoID0gMjUwO1xyXG5cclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuTmFtZSA9IFwiT3JnYW5pemF0aW9uSURfR1VJRFwiXHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5MYWJlbEtleSA9IFwiT3JnYW5pemF0aW9uXCJcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLk9yZ2FuaXphdGlvbnNMaXN0XHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLk5hbWUgPSBcIlR5cGVGdWxsTmFtZVwiXHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuTGFiZWxLZXkgPSBcIlByb3ZpZGVyVHlwZVwiXHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuVHlwZXNMaXN0XHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5BbGxvd1NlYXJjaEZpbHRlciA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKGFkZFByb3ZpZGVyTW9kYWwpO1xyXG4gICAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgICB9KTtcclxuXHJcblxyXG4gIH1cclxuICBnZXRBZGRQcm92aWRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkFkZFByb3ZpZGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBBZGRNb2RlbDogUHJvdmlkZXJNb2RlbCA9IG5ldyBQcm92aWRlck1vZGVsKCk7XHJcbiAgICBBZGRNb2RlbC5Qcm92aWRlck5hbWUgPSBSZXN1bHRNb2RlbC5Qcm92aWRlck5hbWU7XHJcbiAgICBBZGRNb2RlbC5EZXNjcmlwdGlvbiA9IFJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uO1xyXG5cclxuICAgIEFkZE1vZGVsLk9yZ2FuaXphdGlvbklEX0dVSUQgPSBSZXN1bHRNb2RlbC5Pcmdhbml6YXRpb25JRF9HVUlEO1xyXG4gICAgQWRkTW9kZWwuUHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQgPSB0aGlzLkFkZFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEO1xyXG4gICAgQWRkTW9kZWwuVHlwZUZ1bGxOYW1lID0gUmVzdWx0TW9kZWwuVHlwZUZ1bGxOYW1lO1xyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGFkZEF0dHJpYnV0ZU5hbWUgPSBSZXN1bHRNb2RlbFtcIkFkZEF0dHJpYnV0ZU5hbWVcIiArIGpdO1xyXG4gICAgICBpZiAoYWRkQXR0cmlidXRlTmFtZSA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgY29udGludWU7XHJcblxyXG4gICAgICBsZXQgYWRkQXR0cmlidXRlVmFsdWUgPSBSZXN1bHRNb2RlbFtcIkFkZEF0dHJpYnV0ZVZhbHVlXCIgKyBqXTtcclxuICAgICAgbGV0IGFkZEF0dHJpYnV0ZUVuY3J5cHRlZCA9IFJlc3VsdE1vZGVsW1wiQWRkQXR0cmlidXRlRW5jcnlwdGVkXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBwcm92aWRlckF0dHI6IFByb3ZpZGVyQXR0cmlidXRlTW9kZWwgPSBuZXcgUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCgpO1xyXG4gICAgICBwcm92aWRlckF0dHIuTmFtZSA9IGFkZEF0dHJpYnV0ZU5hbWU7XHJcbiAgICAgIHByb3ZpZGVyQXR0ci5WYWx1ZSA9IGFkZEF0dHJpYnV0ZVZhbHVlO1xyXG4gICAgICBwcm92aWRlckF0dHIuSXNFbmNyeXB0ZWQgPSBhZGRBdHRyaWJ1dGVFbmNyeXB0ZWQ7XHJcbiAgICAgIEFkZE1vZGVsLlByb3ZpZGVyQXR0cmlidXRlcy5wdXNoKHByb3ZpZGVyQXR0cik7XHJcbiAgICB9XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEFkZE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0QWRkUHJvdmlkZXJGdW5jdGlvbiA9IChBZGRNb2RlbDogUHJvdmlkZXJNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICBpZiAoQWRkTW9kZWwuUHJvdmlkZXJBdHRyaWJ1dGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5zaG93Tm9BdHRyaWJ1dGVzRXJyb3IgPSBmYWxzZTtcclxuICAgICAgcmV0dXJuIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkFkZFByb3ZpZGVyKEFkZE1vZGVsKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dOb0F0dHJpYnV0ZXNFcnJvciA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRWRpdCBwcm92aWRlclxyXG4gIHNob3dFZGl0UHJvdmlkZXJNb2RhbChwcm92aWRlcklEOiBzdHJpbmcsIGVkaXRQcm92aWRlck1vZGFsKSB7XHJcbiAgICB0aGlzLnNob3dOb0F0dHJpYnV0ZXNFcnJvciA9IGZhbHNlO1xyXG4gICAgdGhpcy5Qcm92aWRlcklkID0gcHJvdmlkZXJJRDtcclxuXHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5HZXRFZGl0UHJvdmlkZXJEYXRhKHByb3ZpZGVySUQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICBsZXQgcHJvdmlkZXIgPSByZXN1bHRPYmoubW9kZWw7XHJcbiAgICAgIGxldCBsaXN0cyA9IHJlc3VsdE9iai5saXN0cztcclxuICAgICAgdGhpcy5UeXBlc0xpc3QgPSBsaXN0cy5wcm92aWRlclR5cGVzO1xyXG5cclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkVkaXRQcm92aWRlckZvcm1cclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0UHJvdmlkZXJNb2RlbDtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldEVkaXRQcm92aWRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zLlBhZ2luZ0FjdGlvbk1vZGUgPSBQYWdpbmdBY3Rpb25Nb2RlLlVwZGF0ZVxyXG5cclxuXHJcbiAgICAgIHRoaXMuRWRpdE5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5OYW1lID0gXCJQcm92aWRlck5hbWVcIjtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5MYWJlbEtleSA9IFwiUHJvdmlkZXJOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkVkaXROYW1lLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLlZhbHVlID0gcHJvdmlkZXIucHJvdmlkZXJOYW1lO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5OYW1lID0gXCJEZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbi5MYWJlbEtleSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uVmFsdWUgPSBwcm92aWRlci5kZXNjcmlwdGlvbjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uTWF4TGVuZ3RoID0gMjUwO1xyXG5cclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMgPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLk5hbWUgPSBcIlR5cGVGdWxsTmFtZVwiXHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLkxhYmVsS2V5ID0gXCJQcm92aWRlclR5cGVcIlxyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5UeXBlc0xpc3RcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5QbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5TZWxlY3RlZEl0ZW1zID0gcHJvdmlkZXIudHlwZUZ1bGxOYW1lO1xyXG5cclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQgPSBwcm92aWRlci5wcm92aWRlclR5cGVJdGVtSURfR1VJRD8udG9Mb3dlckNhc2UoKTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyT3JnYW5pemF0aW9uSURfR1VJRCA9IHByb3ZpZGVyLm9yZ2FuaXphdGlvbklEX0dVSUQ/LnRvTG93ZXJDYXNlKClcclxuICAgICAgbGV0IGVkaXRBdHRyaWJ1dGVzUmVzdWx0OiBhbnkgPSB0aGlzLmdldFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMocHJvdmlkZXIucHJvdmlkZXJBdHRyaWJ1dGVzLCBmYWxzZSk7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMgPSBlZGl0QXR0cmlidXRlc1Jlc3VsdFswXTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQgPSBlZGl0QXR0cmlidXRlc1Jlc3VsdFsxXTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihlZGl0UHJvdmlkZXJNb2RhbCk7XHJcbiAgICB9KVxyXG5cclxuICB9XHJcbiAgZ2V0RWRpdFByb3ZpZGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRWRpdFByb3ZpZGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBFZGl0TW9kZWwgPSBuZXcgUHJvdmlkZXJNb2RlbCgpO1xyXG5cclxuICAgIEVkaXRNb2RlbC5JRF9HVUlEID0gdGhpcy5Qcm92aWRlcklkO1xyXG4gICAgRWRpdE1vZGVsLlByb3ZpZGVyTmFtZSA9IFJlc3VsdE1vZGVsLlByb3ZpZGVyTmFtZTsgLy8oIyMxKVxyXG4gICAgRWRpdE1vZGVsLkRlc2NyaXB0aW9uID0gUmVzdWx0TW9kZWwuRGVzY3JpcHRpb25cclxuICAgIEVkaXRNb2RlbC5UeXBlRnVsbE5hbWUgPSBSZXN1bHRNb2RlbC5UeXBlRnVsbE5hbWU7XHJcbiAgICBFZGl0TW9kZWwuUHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQgPSB0aGlzLkVkaXRQcm92aWRlclR5cGVJdGVtSURfR1VJRDtcclxuICAgIEVkaXRNb2RlbC5Pcmdhbml6YXRpb25JRF9HVUlEID0gdGhpcy5FZGl0UHJvdmlkZXJPcmdhbml6YXRpb25JRF9HVUlEO1xyXG5cclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQ7IGorKykge1xyXG4gICAgICBsZXQgZWRpdEF0dHJpYnV0ZU5hbWUgPSBSZXN1bHRNb2RlbFtcIkVkaXRBdHRyaWJ1dGVOYW1lXCIgKyBqXTtcclxuICAgICAgaWYgKGVkaXRBdHRyaWJ1dGVOYW1lID09IHVuZGVmaW5lZClcclxuICAgICAgICAgY29udGludWU7XHJcbiAgICAgIGxldCBlZGl0QXR0cmlidXRlVmFsdWUgPSBSZXN1bHRNb2RlbFtcIkVkaXRBdHRyaWJ1dGVWYWx1ZVwiICsgal07XHJcbiAgICAgIGxldCBlZGl0QXR0cmlidXRlRW5jcnlwdGVkID0gUmVzdWx0TW9kZWxbXCJFZGl0QXR0cmlidXRlRW5jcnlwdGVkXCIgKyBqXTtcclxuXHJcbiAgICAgIGxldCBwcm92aWRlckF0dHI6IFByb3ZpZGVyQXR0cmlidXRlTW9kZWwgPSBuZXcgUHJvdmlkZXJBdHRyaWJ1dGVNb2RlbCgpO1xyXG4gICAgICBwcm92aWRlckF0dHIuTmFtZSA9IGVkaXRBdHRyaWJ1dGVOYW1lO1xyXG4gICAgICBwcm92aWRlckF0dHIuVmFsdWUgPSBlZGl0QXR0cmlidXRlVmFsdWU7XHJcbiAgICAgIHByb3ZpZGVyQXR0ci5Jc0VuY3J5cHRlZCA9IGVkaXRBdHRyaWJ1dGVFbmNyeXB0ZWQ7XHJcbiAgICAgIEVkaXRNb2RlbC5Qcm92aWRlckF0dHJpYnV0ZXMucHVzaChwcm92aWRlckF0dHIpO1xyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKEVkaXRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEVkaXRQcm92aWRlckZ1bmN0aW9uID0gKEVkaXRNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICBpZiAoRWRpdE1vZGVsLlByb3ZpZGVyQXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd05vQXR0cmlidXRlc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5FZGl0UHJvdmlkZXIoRWRpdE1vZGVsKVxyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd05vQXR0cmlidXRlc0Vycm9yID0gdHJ1ZTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9EZWxldGUgcHJvdmlkZXJcclxuICBzaG93RGVsZXRlUHJvdmlkZXJNb2RhbChwcm92aWRlcklEOiBzdHJpbmcpIHtcclxuICAgIHRoaXMuZGVsZXRlUHJvdmlkZXJJZCA9IHByb3ZpZGVySUQ7XHJcblxyXG4gICAgLy9hcnJheSBzZW50IHRvIHNlcnZpY2UgZnVuY3Rpb25cclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRoaXMuZGVsZXRlUHJvdmlkZXJJZCk7XHJcblxyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zID0gbmV3IENvbmZpcm1hdGlvbk1vZGFsT3B0aW9ucygpO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZGVsZXRlUHJvdmlkZXI7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuU2VydmljZVN1Ym1pdE1vZGVsID0gcGFyYW1BcnJheTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnQ7XHJcblxyXG4gICAgdGhpcy5kZWxldGVDb250cm9sTG9hZGVkID0gdHJ1ZTtcclxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICB0aGlzLkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbC5zaG93TW9kYWwoKTtcclxuICAgIH0sIDIwMCk7XHJcbiAgfVxyXG5cclxuICBkZWxldGVQcm92aWRlciA9IChpZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5EZWxldGVQcm92aWRlcihpZCk7XHJcbiAgfVxyXG5cclxuICAvL0RlZmF1bHQgcHJvdmlkZXJcclxuICBzaG93RGVmYXVsdFByb3ZpZGVyTW9kYWwoZGVmYXVsdFByb3ZpZGVyTW9kYWwpIHtcclxuICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVycyA9IFtdO1xyXG4gICAgdGhpcy5Qcm92aWRlclNlcnZpY2UuR2V0RGVmYXVsdFByb3ZpZGVycygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBsaXN0ID0gcmVzdWx0IGFzIGFueTtcclxuXHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm1cclxuICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXREZWZhdWx0UHJvdmlkZXJNb2RlbDtcclxuICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmdldERlZmF1bHRQcm92aWRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zLlBhZ2luZ1JlZmVyZW5jZSA9IHRoaXMucGFnaW5nRWxlbWVudFxyXG5cclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHByb3ZpZGVyOiBhbnkgPSBsaXN0W2ldO1xyXG5cclxuICAgICAgICBsZXQgUHJvdmlkZXJPcHRpb24gPSBuZXcgUmFkaW9CdXR0b25PcHRpb25zKCk7XHJcbiAgICAgICAgUHJvdmlkZXJPcHRpb24uTmFtZSA9IFwicHJvdmlkZXJPcHRpb25fXCIgKyBwcm92aWRlci5wcm92aWRlclR5cGVJdGVtSURfR1VJRDtcclxuICAgICAgICBQcm92aWRlck9wdGlvbi5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLklzUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLlZpZXdUeXBlID0gQ29udHJvbExheW91dC5Ib3Jpem9udGFsO1xyXG4gICAgICAgIGxldCBpdGVtczogUmFkaW9CdXR0b25JdGVtW10gPSBbXTtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHByb3ZpZGVyLnByb3ZpZGVycy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgbGV0IHByb3ZpZGVySXRlbSA9IHByb3ZpZGVyLnByb3ZpZGVyc1tqXTtcclxuICAgICAgICAgIGxldCBpdGVtID0gbmV3IFJhZGlvQnV0dG9uSXRlbSgpO1xyXG4gICAgICAgICAgaXRlbS5UZXh0ID0gcHJvdmlkZXJJdGVtLnRleHQ7XHJcbiAgICAgICAgICBpdGVtLlZhbHVlID0gcHJvdmlkZXJJdGVtLnZhbHVlO1xyXG4gICAgICAgICAgaXRlbXMucHVzaChpdGVtKTtcclxuICAgICAgICAgIFByb3ZpZGVyT3B0aW9uLkl0ZW1zID0gaXRlbXM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc2VsZWN0ZWRQcm92aWRlciA9IHByb3ZpZGVyLnByb3ZpZGVycy5maWx0ZXIoKGl0ZW0pID0+IHsgcmV0dXJuIGl0ZW0uc2VsZWN0ZWQgPT0gdHJ1ZTsgfSlbMF07XHJcbiAgICAgICAgUHJvdmlkZXJPcHRpb24uVmFsdWUgPSB7XHJcbiAgICAgICAgICBUZXh0OiBzZWxlY3RlZFByb3ZpZGVyLnRleHQsXHJcbiAgICAgICAgICBWYWx1ZTogc2VsZWN0ZWRQcm92aWRlci52YWx1ZVxyXG4gICAgICAgIH07XHJcblxyXG5cclxuXHJcbiAgICAgICAgbGV0IGRlZlByb3ZpZGVyID0ge1xyXG4gICAgICAgICAgTmFtZTogcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbU5hbWUsXHJcbiAgICAgICAgICBJRDogcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQsXHJcbiAgICAgICAgICBQcm92aWRlcnNPcHRpb246IFByb3ZpZGVyT3B0aW9uXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLkRlZmF1bHRQcm92aWRlcnMucHVzaChkZWZQcm92aWRlcik7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihkZWZhdWx0UHJvdmlkZXJNb2RhbCk7XHJcblxyXG4gICAgfSlcclxuICB9XHJcbiAgZ2V0RGVmYXVsdFByb3ZpZGVyTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCBSZXN1bHRNb2RlbCA9IHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybS52YWx1ZTtcclxuICAgIGxldCBkZWZhdWx0UHJvdmlkZXJzTW9kZWw6IERlZmF1bHRQcm92aWRlck1vZGVsW10gPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuRGVmYXVsdFByb3ZpZGVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgcHJvdmlkZXJJRCA9IHRoaXMuRGVmYXVsdFByb3ZpZGVyc1tpXS5JRDtcclxuICAgICAgbGV0IHNlbGVjdGVkRGVmUHJvdmlkZXJJRCA9IFJlc3VsdE1vZGVsW1wicHJvdmlkZXJPcHRpb25fXCIgKyBwcm92aWRlcklEXTtcclxuICAgICAgbGV0IGRlZlByb3ZpZGVNb2RlbDogRGVmYXVsdFByb3ZpZGVyTW9kZWwgPSB7XHJcbiAgICAgICAgUHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQ6IHByb3ZpZGVySUQsXHJcbiAgICAgICAgU2VsZWN0ZWRQcm92aWRlcklEX0dVSUQ6IHNlbGVjdGVkRGVmUHJvdmlkZXJJRCxcclxuICAgICAgICBQcm92aWRlclR5cGVJdGVtTmFtZTogXCJcIixcclxuICAgICAgICBQcm92aWRlcnM6IFtdXHJcbiAgICAgIH07XHJcbiAgICAgIGRlZmF1bHRQcm92aWRlcnNNb2RlbC5wdXNoKGRlZlByb3ZpZGVNb2RlbCk7XHJcblxyXG4gICAgfVxyXG4gICAgcGFyYW1BcnJheS5wdXNoKGRlZmF1bHRQcm92aWRlcnNNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldERlZmF1bHRQcm92aWRlckZ1bmN0aW9uID0gKERlZmF1bHRQcm92aWRlck1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5TdWJtaXREZWZhdWx0UHJvdmlkZXJzKERlZmF1bHRQcm92aWRlck1vZGVsKVxyXG4gIH1cclxuXHJcbiAgLy9HZW5lcmF0ZSBwcm92aWRlciBqc29uXHJcbiAgZ2VuZXJhdGVQcm92aWRlckpzb24oKSB7XHJcbiAgICB0aGlzLlByb3ZpZGVyU2VydmljZS5HZW5lcmF0ZVByb3ZpZGVySnNvbigpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCBGaWxlRFRPID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICBjb25zdCBmaWxlID0gbmV3IEJsb2IoW0ZpbGVEVE9dLCB7IHR5cGU6IFwiYXBwbGljYXRpb24vanNvblwiIH0pO1xyXG4gICAgICBsZXQgZmlsZU5hbWUgPSB0aGlzLnV0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlcnNcIikgKyBcIi5qc29uXCI7XHJcbiAgICAgIHNhdmVBcyhmaWxlLCBmaWxlTmFtZSk7XHJcbiAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcclxuICAgIH0pXHJcbiAgfVxyXG4gIC8vVGVzdCBFbWFpbCBmdW5jdGlvbnNcclxuICBzaG93VGVzdEVtYWlsTW9kYWwocHJvdmlkZXJJRDogc3RyaW5nLCBwcm92aWRlck5hbWU6IHN0cmluZywgdGVzdEVNYWlsTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlc3RFbWFpbFByb3ZpZGVySWQgPSBwcm92aWRlcklEO1xyXG4gICAgdGhpcy50ZXN0RW1haWxQcm92aWRlck5hbWUgPSBwcm92aWRlck5hbWU7XHJcblxyXG4gICAgdGhpcy50ZXN0RW1haWxGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLnRlc3RFbWFpbEZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICB0aGlzLnRlc3RFbWFpbEZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMudGVzdEVtYWlsRm9ybVxyXG4gICAgdGhpcy50ZXN0RW1haWxGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0RW1haWxNb2RlbDtcclxuICAgIHRoaXMudGVzdEVtYWlsRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0RW1haWxGdW5jdGlvbjtcclxuXHJcblxyXG4gICAgdGhpcy5lbWFpbFRvID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLmVtYWlsVG8uTmFtZSA9IFwiZW1haWxUb1wiO1xyXG4gICAgdGhpcy5lbWFpbFRvLkxhYmVsS2V5ID0gXCJUb1wiO1xyXG4gICAgdGhpcy5lbWFpbFRvLlR5cGUgPSBJbnB1dFR5cGUuRW1haWw7XHJcbiAgICB0aGlzLmVtYWlsVG8uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5lbWFpbFN1YmplY3QgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuZW1haWxTdWJqZWN0Lk5hbWUgPSBcImVtYWlsU3ViamVjdFwiO1xyXG4gICAgdGhpcy5lbWFpbFN1YmplY3QuTGFiZWxLZXkgPSBcIkVtYWlsU3ViamVjdFwiO1xyXG4gICAgdGhpcy5lbWFpbFN1YmplY3QuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgdGhpcy5lbWFpbFN1YmplY3QuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5lbWFpbEJvZHkgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICB0aGlzLmVtYWlsQm9keS5OYW1lID0gXCJlbWFpbEJvZHlcIjtcclxuICAgIHRoaXMuZW1haWxCb2R5LkxhYmVsS2V5ID0gXCJFbWFpbEJvZHlcIjtcclxuICAgIHRoaXMuZW1haWxCb2R5LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4odGVzdEVNYWlsTW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVzdEVtYWlsTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMudGVzdEVtYWlsRm9ybS52YWx1ZTtcclxuICAgIGxldCB0ZXN0RW1haWxNb2RlbCA9IG5ldyBFbWFpbFByb3ZpZGVyVGVzdGVyTW9kZWwoKTtcclxuXHJcbiAgICB0ZXN0RW1haWxNb2RlbC5Qcm92aWRlcklEID0gdGhpcy50ZXN0RW1haWxQcm92aWRlcklkO1xyXG4gICAgdGVzdEVtYWlsTW9kZWwuUHJvdmlkZXJOYW1lID0gdGhpcy50ZXN0RW1haWxQcm92aWRlck5hbWU7XHJcbiAgICB0ZXN0RW1haWxNb2RlbC5Ub0VtYWlsID0gcmVzdWx0TW9kZWwuZW1haWxUb1xyXG4gICAgdGVzdEVtYWlsTW9kZWwuU3ViamVjdCA9IHJlc3VsdE1vZGVsLmVtYWlsU3ViamVjdDtcclxuICAgIHRlc3RFbWFpbE1vZGVsLkJvZHkgPSByZXN1bHRNb2RlbC5lbWFpbEJvZHk7XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRlc3RFbWFpbE1vZGVsKTtcclxuICAgIHJldHVybiBwYXJhbUFycmF5O1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVzdEVtYWlsRnVuY3Rpb24gPSAodGVzdEVtYWlsTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLlRlc3RFbWFpbCh0ZXN0RW1haWxNb2RlbClcclxuICB9XHJcblxyXG4gIC8vVGVzdCBTTVMgZnVuY3Rpb25zXHJcbiAgc2hvd1Rlc3RTTVNNb2RhbChwcm92aWRlcklEOiBzdHJpbmcsIHByb3ZpZGVyTmFtZTogc3RyaW5nLCB0ZXN0U01TTW9kYWwpIHtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RhcnRCbG9ja1VJKCk7XHJcbiAgICB0aGlzLnRlc3RTTVNQcm92aWRlcklkID0gcHJvdmlkZXJJRDtcclxuICAgIHRoaXMudGVzdFNNU1Byb3ZpZGVyTmFtZSA9IHByb3ZpZGVyTmFtZTtcclxuXHJcbiAgICB0aGlzLnRlc3RTTVNGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgICB0aGlzLnRlc3RTTVNGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy50ZXN0U01TRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy50ZXN0U01TRm9ybVxyXG4gICAgdGhpcy50ZXN0U01TRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdFNNU01vZGVsO1xyXG4gICAgdGhpcy50ZXN0U01TRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRUZXN0U01TRnVuY3Rpb247XHJcblxyXG5cclxuICAgIHRoaXMuc21zVG8gPSBuZXcgUGhvbmVPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNtc1RvLk5hbWUgPSBcInNtc1RvXCI7XHJcbiAgICB0aGlzLnNtc1RvLkxhYmVsS2V5ID0gXCJUb1wiO1xyXG4gICAgdGhpcy5zbXNUby5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLnNtc0JvZHkgPSBuZXcgVGV4dEFyZWFPcHRpb25zKCk7XHJcbiAgICB0aGlzLnNtc0JvZHkuTmFtZSA9IFwic21zQm9keVwiO1xyXG4gICAgdGhpcy5zbXNCb2R5LkxhYmVsS2V5ID0gXCJTTVNcIjtcclxuICAgIHRoaXMuc21zQm9keS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRlc3RTTVNNb2RhbCk7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0b3BCbG9ja1VJKCk7XHJcbiAgfVxyXG5cclxuICBnZXRUZXN0U01TTW9kZWwgPSAoKSA9PiB7XHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIGxldCByZXN1bHRNb2RlbCA9IHRoaXMudGVzdFNNU0Zvcm0udmFsdWU7XHJcbiAgICBsZXQgdGVzdFNNU01vZGVsID0gbmV3IFNNU1Byb3ZpZGVyVGVzdGVyTW9kZWwoKTtcclxuXHJcbiAgICBsZXQgaW50ZXJuYXRpb25hbE51bWJlcjogc3RyaW5nID0gbnVsbDtcclxuICAgIGlmIChyZXN1bHRNb2RlbC5zbXNUbyAhPSBudWxsKSB7XHJcbiAgICAgIGludGVybmF0aW9uYWxOdW1iZXIgPSByZXN1bHRNb2RlbC5zbXNUby5pbnRlcm5hdGlvbmFsTnVtYmVyIGFzIHN0cmluZztcclxuICAgICAgaW50ZXJuYXRpb25hbE51bWJlciA9IGludGVybmF0aW9uYWxOdW1iZXIucmVwbGFjZSgvXFxzL2csIFwiXCIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRlc3RTTVNNb2RlbC5Qcm92aWRlcklEID0gdGhpcy50ZXN0U01TUHJvdmlkZXJJZDtcclxuICAgIHRlc3RTTVNNb2RlbC5Qcm92aWRlck5hbWUgPSB0aGlzLnRlc3RTTVNQcm92aWRlck5hbWU7XHJcbiAgICB0ZXN0U01TTW9kZWwuVG9Nb2JpbGVOdW1iZXIgPSBpbnRlcm5hdGlvbmFsTnVtYmVyXHJcbiAgICB0ZXN0U01TTW9kZWwuTWVzc2FnZSA9IHJlc3VsdE1vZGVsLnNtc0JvZHk7XHJcblxyXG4gICAgcGFyYW1BcnJheS5wdXNoKHRlc3RTTVNNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RTTVNGdW5jdGlvbiA9ICh0ZXN0U01TTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLlRlc3RTTVModGVzdFNNU01vZGVsKVxyXG4gIH1cclxuICAvL09uIGRlc3Ryb3lcclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMucmVxdWVzdEhhbmRsZXJTZXJ2aWNlLmRlc3Ryb3lIYW5kbGVyKCk7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGJsb2NrLXVpPjwvYmxvY2stdWk+XHJcbjwhLS0gUGFnZSBDb250ZW50IC0tPlxyXG48ZGl2IGNsYXNzPVwiY29udGFpbmVyLWZsdWlkXCI+XHJcbiAgPGRpdiAqbmdJZj1cIlNob3dQYWdlQ29udGVudFwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImNhcmQgY2FyZC1jdXN0b20taFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1oZWFkZXIgYm9yZGVyLTAgcHQtNVwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRpdGxlIGFsaWduLWl0ZW1zLXN0YXJ0IGZsZXgtY29sdW1uXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiPlxyXG4gICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgPCEtLShPbkNoYW5nZSk9XCJzZWFyY2hDbGllbnRTaWRlKCRldmVudClcIiAtLT5cclxuICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJzZWFyY2hUZXh0Qm94XCIgW2dyb3VwXT1cIlByb3ZpZGVyRm9ybVwiPjwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgPC9mb3JtPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLXRvb2xiYXJcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46Ok1lbnUgLS0+XHJcbiAgICAgICAgICA8ZGl2IG5nYkRyb3Bkb3duIGNsYXNzPVwiZC1pbmxpbmUtYmxvY2tcIiBbbmdTdHlsZV09XCJ7J2Rpc3BsYXknOiBTaG93UGFnZUNvbnRlbnQ9PXRydWU/J2Jsb2NrJzonbm9uZSd9XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cImxvYWRMaXN0cygpXCIgbmdiRHJvcGRvd25Ub2dnbGUgaHJlZj1cImphdmFzY3JpcHQ6O1wiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWxpZ2h0LXByaW1hcnkgbWUtM1wiIGlkPVwiRmlsdGVyc0Ryb3Bkb3duXCIgdGl0bGU9XCJGaWx0ZXJcIj5cclxuICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWx0ZXIgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJGaWx0ZXJcIil9fVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCIgbmdiRHJvcGRvd25NZW51IGFyaWEtbGFiZWxsZWRieT1cIkZpbHRlcnNEcm9wZG93blwiIGNsYXNzPVwiIGZpbHRlci1jb250YWluZXIgbWVudSBtZW51LXN1YiBtZW51LXN1Yi1kcm9wZG93biBtZW51LWNvbHVtbiBtZW51LXJvdW5kZWQgbWVudS1ncmF5LTgwMCBtZW51LXN0YXRlLWJnLWxpZ2h0LXByaW1hcnkgIHctMjUwcHggdy1tZC01MDBweCBmdy1ib2xkIHB5LTMgXCI+XHJcbiAgICAgICAgICAgICAgPGZvcm0gW2Zvcm1Hcm91cF09XCJQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJweC03IHB5LTVcIj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI3Byb3ZpZGVyVHlwZXNEREwgW29wdGlvbnNdPVwicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiIFtncm91cF09XCJQcm92aWRlckZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTEwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCAjc29ydGluZ0ZpbHRlckRETCBbb3B0aW9uc109XCJzb3J0aW5nRmlsdGVyT3B0aW9uXCIgW2dyb3VwXT1cIlByb3ZpZGVyRm9ybVwiPjwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeSBwdi1yZXNldCBidG4tc21cIiBkPVwiYXBwbHlGaWx0ZXJzQnRuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZXNldEZpbHRlcnMoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUmVzZXRcIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxidXR0b24gaHJlZj1cImphdmFzY3JpcHQ6O1wiIChjbGljayk9XCJnZW5lcmF0ZVByb3ZpZGVySnNvbigpXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTMgYm5zaWdodHMtYnRuLWV4cG9ydFwiPlxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1maWxlLWV4cG9ydCBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJHZW5lcmF0ZVByb3ZpZGVySnNvblwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT0ndXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbGVjdERlZmF1bHRQcm92aWRlclwiKScgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTMgXCIgKGNsaWNrKT1cInNob3dEZWZhdWx0UHJvdmlkZXJNb2RhbChEZWZhdWx0UHJvdmlkZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtaGFuZC1wb2ludGVyIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbGVjdERlZmF1bHRQcm92aWRlclwiKX19XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRpdGxlPSd1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpJyBjbGFzcz1cImJ0biBidG4tc20gYnRuLXByaW1hcnlcIiAoY2xpY2spPVwic2hvd0FkZFByb3ZpZGVyTW9kYWwoQWRkUHJvdmlkZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1cyBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+ICAgICAgICA8IS0tIGVuZDo6TWVudSAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDwhLS0gZW5kOjpIZWFkZXIgLS0+XHJcbiAgICAgIDwhLS0gYmVnaW46OkJvZHkgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWJvZHkgcHktM1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdGF0dXNcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkRlZmF1bHRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBpZD1cImxpc3RpbmdDb250YWluZXJcIiAqbmdGb3I9XCJsZXQgcHJvdmlkZXJHcm91cCBvZiBjbGllbnRTaWRlUGFnaW5nUmVzdWx0XCIgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuXHJcbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm92aWRlciBvZiBwcm92aWRlckdyb3VwLnByb3ZpZGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1kYXJrXCI+e3twcm92aWRlci5wcm92aWRlck5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt7cHJvdmlkZXIuZGVzY3JpcHRpb259fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCIgKm5nSWY9XCJwcm92aWRlci5pc1J1bm5pbmc7ZWxzZSBvdGhlcl9jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUnVubmluZ1wiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNvdGhlcl9jb250ZW50PlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTdG9wcGVkXCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1zdWNjZXNzIGZ3LWJvbGRlclwiICpuZ0lmPVwicHJvdmlkZXIuaXNEZWZhdWx0O2Vsc2UgZGVmYXVsdF9ub1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlllc1wiKX19XHJcbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0X25vPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQgZnctYm9sZGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJOb1wiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGRpdj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gW21hdE1lbnVUcmlnZ2VyRm9yXT1cIm1lbnVcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWxpZ2h0IGJ0bi1hY3RpdmUtbGlnaHQtcHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYSBmYS1lbGxpcHNpcy1oXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxtYXQtbWVudSAjbWVudT1cIm1hdE1lbnVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIiBuZ2JEcm9wZG93bkl0ZW0gKGNsaWNrKT1cInNob3dFZGl0UHJvdmlkZXJNb2RhbChwcm92aWRlci5pRF9HVUlELCBFZGl0UHJvdmlkZXJNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgaWQ9XCJidG5SZXNldFBhc3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEZWxldGVQcm92aWRlck1vZGFsKHByb3ZpZGVyLmlEX0dVSUQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWxldGVcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICAgIDxhICpuZ0lmPVwicHJvdmlkZXIuaXNFTWFpbCAmJiBwcm92aWRlci5pc1J1bm5pbmdcIiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Rlc3RFbWFpbE1vZGFsKHByb3ZpZGVyLmlEX0dVSUQscHJvdmlkZXIucHJvdmlkZXJOYW1lLFRlc3RFbWFpbE1vZGFsKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdEVtYWlsXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cInByb3ZpZGVyLmlzU01TICYmIHByb3ZpZGVyLmlzUnVubmluZ1wiIG5nYkRyb3Bkb3duSXRlbSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93VGVzdFNNU01vZGFsKHByb3ZpZGVyLmlEX0dVSUQscHJvdmlkZXIucHJvdmlkZXJOYW1lLFRlc3RTTVNNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RTTVNcIil9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgICAgICA8L21hdC1tZW51PlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJwcm92aWRlckdyb3VwLnByb3ZpZGVycy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgICA8dGJvZHkgKm5nSWY9XCJjbGllbnRTaWRlUGFnaW5nUmVzdWx0Lmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWZvb3RlciBib3JkZXItMFwiPlxyXG4gICAgICAgIDxCQlNGLVBhZ2luZyAoSXRlbXMpPVwic2V0UHJvdmlkZXJMaXN0UmVzdWx0KCRldmVudClcIiAqbmdJZj1cIklzRmlsdGVyTG9hZGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiUHJvdmlkZXJQYWdpbmdcIiBbZ3JvdXBdPVwiUHJvdmlkZXJGb3JtXCIgI1Byb3ZpZGVyUGFnaW5nVmlld0VsZW1lbnQ+XHJcbiAgICAgICAgPC9CQlNGLVBhZ2luZz5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG4gIDwvZGl2PlxyXG5cclxuICA8IS0tZW5kOjpQcm92aWRlcnMgbGlzdC0tPlxyXG48L2Rpdj5cclxuXHJcbjwhLS0gQWRkIE1vZGFsIC0tPlxyXG48bmctdGVtcGxhdGUgI0FkZFByb3ZpZGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKX19IHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyXCIpfX1cclxuICAgICAgPC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJBZGRQcm92aWRlckZvcm1PcHRpb25zXCI+XHJcblxyXG4gICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkFkZE5hbWVcIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJBZGREZXNjcmlwdGlvblwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiQWRkT3JnYW5pemF0aW9uT3B0aW9uc1wiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZFR5cGVPcHRpb25zXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiIChPbkNoYW5nZSk9XCJzZXRBZGRQcm92aWRlckF0dHJpYnV0ZXMoJGV2ZW50KVwiPlxyXG4gICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiSXNBdHRyaWJ1dGVzTG9hZGVkXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlckF0dHJpYnV0ZU5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyQXR0cmlidXRlVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuY3J5cHRlZFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblsxXVwiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCIgKE9uQ2hhbmdlKT1cImVuY3J5cHRlZENoYW5nZSgkZXZlbnQsb3B0aW9uLHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJkZWxldGVBdHRyaWJ1dGUob3B0aW9uLHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCIgZmEgZmEtdHJhc2ggaGlkZGVuXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9pPlxyXG4gICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwiUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dOb0F0dHJpYnV0ZXNFcnJvclwiIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBdExlYXN0T25lSXRlbVJlcXVpcmVkXCIpfX1cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlUHJvdmlkZXJNb2RhbCBpZD1cIkNsb3NlQWRkUHJvdmlkZXJNb2RhbFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIlxyXG4gICAgICAgICAgICAgICAgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2F2ZUxhYmVsXCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcblxyXG48IS0tIEVkaXQgbW9kZWwgLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRWRpdFByb3ZpZGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVkaXRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlclwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiRWRpdE5hbWVcIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cIkVkaXREZXNjcmlwdGlvblwiIFtncm91cF09XCJFZGl0UHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJFZGl0VHlwZU9wdGlvbnNcIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiIChPbkNoYW5nZSk9XCJzZXRFZGl0UHJvdmlkZXJBdHRyaWJ1dGVzKCRldmVudClcIj5cclxuICAgICAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cclxuICAgICAgICAgIDwhLS0gYmVnaW46OlRhYmxlIC0tPlxyXG4gICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYWxpZ24tbWlkZGxlIHRhYmxlLXJvdy1kYXNoZWQgZnMtNiBneS01IGRhdGFUYWJsZSBuby1mb290ZXIgdGFibGUtdy1jb250cm9sXCI+XHJcbiAgICAgICAgICAgIDx0aGVhZD5cclxuICAgICAgICAgICAgICA8dHIgY2xhc3M9XCJ0ZXh0LXN0YXJ0IHRleHQtZ3JheS00MDAgZnctYm9sZGVyIGZzLTcgdGV4dC11cHBlcmNhc2UgZ3MtMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlckF0dHJpYnV0ZU5hbWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlByb3ZpZGVyQXR0cmlidXRlVmFsdWVcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkVuY3J5cHRlZFwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBY3Rpb25cIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90aGVhZD5cclxuICAgICAgICAgICAgPHRib2R5IGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgRWRpdFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnM7bGV0IGk9aW5kZXg7XCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIm9wdGlvblswXVwiIFtncm91cF09XCJFZGl0UHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLUNoZWNrQm94IFtvcHRpb25zXT1cIm9wdGlvblsyXVwiIFtncm91cF09XCJFZGl0UHJvdmlkZXJGb3JtXCIgKE9uQ2hhbmdlKT1cImVuY3J5cHRlZENoYW5nZSgkZXZlbnQsb3B0aW9uLHRydWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1DaGVja0JveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImJ0biBidG4taWNvbiBidG4tbGlnaHQtZGFuZ2VyIGJ0bi1zbVwiIChjbGljayk9XCJkZWxldGVBdHRyaWJ1dGUob3B0aW9uLGZhbHNlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cIkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICAgICAgICA8dGQgY29sc3Bhbj1cIjRcIj5cclxuICAgICAgICAgICAgICAgICAgPGxpYi1lbXB0eS1kYXRhPjwvbGliLWVtcHR5LWRhdGE+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd05vQXR0cmlidXRlc0Vycm9yXCIgY29sc3Bhbj1cIjRcIiBjbGFzcz1cInRleHQtZGFuZ2VyXCI+XHJcbiAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkF0TGVhc3RPbmVJdGVtUmVxdWlyZWRcIil9fVxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3Rib2R5PlxyXG4gICAgICAgICAgPC90YWJsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VFZGl0UHJvdmlkZXJNb2RhbCBpZD1cIkNsb3NlRWRpdFByb3ZpZGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tZGVsZXRlIE1vZGFsLS0+XHJcbjxCQlNGLUNvbmZpcm1hdGlvbk1vZGFsICpuZ0lmPVwiZGVsZXRlQ29udHJvbExvYWRlZFwiIFtvcHRpb25zXT1cIkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnNcIiBpZD1cIkNvbmZpcm1hdGlvbk1vZGFsQ29udHJvbFwiICNDb25maXJtYXRpb25Nb2RhbENvbnRyb2w+PC9CQlNGLUNvbmZpcm1hdGlvbk1vZGFsPlxyXG5cclxuPCEtLURlZmF1bHQgUHJvdmlkZXIgIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjRGVmYXVsdFByb3ZpZGVyTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlbGVjdERlZmF1bHRQcm92aWRlclwiKX19PC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJEZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiICpuZ0Zvcj1cImxldCBkZWZQcm92aWRlciBvZiBEZWZhdWx0UHJvdmlkZXJzO2xldCBpPWluZGV4O1wiPlxyXG4gICAgICAgICAgPGgzIGNsYXNzPVwidGV4dC1tdXRlZCBtYi00IGZ3LWJvbGRlc3RcIj57e2RlZlByb3ZpZGVyLk5hbWV9fTwvaDM+XHJcbiAgICAgICAgICA8aW5wdXQgdHlwZT1cImhpZGRlblwiIHZhbHVlPVwie3tkZWZQcm92aWRlci5JRH19XCIgLz5cclxuICAgICAgICAgIDxCQlNGLVJhZGlvQnV0dG9uIFtvcHRpb25zXT1cImRlZlByb3ZpZGVyLlByb3ZpZGVyc09wdGlvblwiIFtncm91cF09XCJEZWZhdWx0UHJvdmlkZXJGb3JtXCI+PC9CQlNGLVJhZGlvQnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZURlZmF1bHRQcm92aWRlck1vZGFsIGlkPVwiQ2xvc2VEZWZhdWx0UHJvdmlkZXJNb2RhbFwiIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGJ0bi1zbSBtZS0zIFwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcblxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLVRlc3QgRW1haWwgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNUZXN0RW1haWxNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdEVtYWlsU2VydmljZVByb3ZpZGVyXCIpfX1cclxuICAgICAgPC9oMT5cclxuICAgIDwvZGl2PlxyXG4gICAgPEJCU0YtRm9ybSBbb3B0aW9uc109XCJ0ZXN0RW1haWxGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJlbWFpbFRvXCIgW2dyb3VwXT1cInRlc3RFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZW1haWxTdWJqZWN0XCIgW2dyb3VwXT1cInRlc3RFbWFpbEZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cImVtYWlsQm9keVwiIFtncm91cF09XCJ0ZXN0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0XCIpfX08L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1UZXN0IFNNUyBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI1Rlc3RTTVNNb2RhbCBsZXQtbW9kYWw+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlciBwYi0wIGJvcmRlci0wIGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgIDxoNSBjbGFzcz1cIm1vZGFsLXRpdGxlXCIgaWQ9XCJleGFtcGxlTW9kYWxMYWJlbFwiPjwvaDU+XHJcbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4taWNvbiBidG4tYWN0aXZlLWNvbG9yLXByaW1hcnlcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwic3ZnLWljb24gc3ZnLWljb24tMVwiPlxyXG4gICAgICAgIDxzcGFuIFtpbmxpbmVTVkddPVwiJy4vc3JjL2Fzc2V0cy9pbWFnZXMvYXJyMDYxLnN2ZydcIj48L3NwYW4+XHJcbiAgICAgIDwvc3Bhbj5cclxuICAgIDwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5IHNjcm9sbC15IHB4LTEwIHB4LWxnLTE1IHB0LTAgcGItMTVcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJtYi0xMyB0ZXh0LWNlbnRlclwiPlxyXG4gICAgICA8aDEgY2xhc3M9XCJtYi0zXCI+XHJcbiAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFNNU1NlcnZpY2VQcm92aWRlclwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwidGVzdFNNU0Zvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1QaG9uZSBbb3B0aW9uc109XCJzbXNUb1wiIFtncm91cF09XCJ0ZXN0U01TRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVBob25lPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRBcmVhIFtvcHRpb25zXT1cInNtc0JvZHlcIiBbZ3JvdXBdPVwidGVzdFNNU0Zvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG4iXX0=
|
|
628
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmJzZi1hZG1pbi1wb3J0YWwvc3JjL2xpYi9QYWdlcy9wcm92aWRlcnMvcHJvdmlkZXIvcHJvdmlkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQXNCLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxhQUFhLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSxlQUFlLEVBQUUsY0FBYyxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsd0JBQXdCLEVBQUUsZ0JBQWdCLEVBQXFCLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRTVTLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrREFBa0QsQ0FBQztBQUNqRixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUVuRyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sb0RBQW9ELENBQUM7QUFLckYsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUVwQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sNkRBQTZELENBQUM7QUFDdkcsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sMkRBQTJELENBQUM7Ozs7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LENBQUMsY0FBYyxFQUFFLENBQUM7SUFDOUMsQ0FBQzs7K0dBdnVCVSxpQkFBaUI7bUdBQWpCLGlCQUFpQixxZkN2QjlCLDAzc0JBMmNBOzRGRHBiYSxpQkFBaUI7a0JBSjdCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGNBQWM7b0JBQ3hCLFdBQVcsRUFBRSwyQkFBMkI7aUJBQ3pDO3lSQW1CNEQsYUFBYTtzQkFBdkUsU0FBUzt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBUVAsZ0JBQWdCO3NCQUFqRSxTQUFTO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFDRSxnQkFBZ0I7c0JBQWpFLFNBQVM7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQW1DVSx3QkFBd0I7c0JBQWpGLFNBQVM7dUJBQUMsMEJBQTBCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IENoZWNrQm94T3B0aW9ucywgQ29udHJvbExheW91dCwgRHJvcGRvd25PcHRpb25zLCBGaWx0ZXJJdGVtLCBGaWx0ZXJUeXBlLCBJbnB1dFR5cGUsIFBhZ2luZ09wdGlvbnMsIFJhZGlvQnV0dG9uT3B0aW9ucywgVGV4dEFyZWFPcHRpb25zLCBUZXh0Qm94T3B0aW9ucywgUmFkaW9CdXR0b25JdGVtLCBGb3JtT3B0aW9ucywgQ29uZmlybWF0aW9uTW9kYWxPcHRpb25zLCBQYWdpbmdBY3Rpb25Nb2RlLCBIdG1sRWRpdG9yT3B0aW9ucywgUGhvbmVPcHRpb25zIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtY29udHJvbHMnO1xyXG5pbXBvcnQgeyBQcm92aWRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zaGFyZWQvU2VydmljZXMvcHJvdmlkZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFByb3ZpZGVyTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1Byb3ZpZGVyTW9kZWxzL1Byb3ZpZGVyTW9kZWwnO1xyXG5pbXBvcnQgeyBQcm92aWRlckF0dHJpYnV0ZU1vZGVsIH0gZnJvbSAnLi4vLi4vc2hhcmVkL21vZGVscy9Qcm92aWRlck1vZGVscy9Qcm92aWRlckF0dHJpYnV0ZU1vZGVsJztcclxuaW1wb3J0IHsgRGVmYXVsdFByb3ZpZGVyTW9kZWwgfSBmcm9tICcuLi8uLi9zaGFyZWQvbW9kZWxzL1Byb3ZpZGVyTW9kZWxzL0RlZmF1bHRQcm92aWRlck1vZGVsJztcclxuaW1wb3J0IHsgUGFnZUluZm9TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vX21ldHJvbmljL2NvcmUvc2VydmljZXMvcGFnZS1pbmZvLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBOZ2JNb2RhbCB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UsIFV0aWxpdHlTZXJ2aWNlLCBCQlNGVHJhbnNsYXRlU2VydmljZSwgUmVxdWVzdEhhbmRsZXJTZXJ2aWNlIH0gZnJvbSAnQGJuc2lnaHRzL2Jic2YtdXRpbGl0aWVzJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQYWdpbmdDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvUGFnaW5nL1BhZ2luZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBzYXZlQXMgfSBmcm9tICdmaWxlLXNhdmVyJztcclxuaW1wb3J0IHsgQ29uZmlybWF0aW9uTW9kYWxDb21wb25lbnQgfSBmcm9tICdAYm5zaWdodHMvYmJzZi1jb250cm9scy9saWIvY29udHJvbHMvQ29uZmlybWF0aW9uTW9kYWwvQ29uZmlybWF0aW9uTW9kYWwuY29tcG9uZW50JztcclxuaW1wb3J0IHsgUHJvdmlkZXJUeXBlIH0gZnJvbSAnLi4vLi4vc2hhcmVkL0VudW1zL1Byb3ZpZGVyVHlwZSc7XHJcbmltcG9ydCB7IEVtYWlsUHJvdmlkZXJUZXN0ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUHJvdmlkZXJNb2RlbHMvRW1haWxQcm92aWRlclRlc3Rlck1vZGVsJztcclxuaW1wb3J0IHsgU01TUHJvdmlkZXJUZXN0ZXJNb2RlbCB9IGZyb20gJy4uLy4uL3NoYXJlZC9tb2RlbHMvUHJvdmlkZXJNb2RlbHMvU01TUHJvdmlkZXJUZXN0ZXJNb2RlbCc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItcHJvdmlkZXInLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9wcm92aWRlci5jb21wb25lbnQuaHRtbCdcclxufSlcclxuZXhwb3J0IGNsYXNzIFByb3ZpZGVyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuICAvL1BhZ2UgcmVxdWlyZW1lbnRzXHJcbiAgU2hvd1BhZ2VDb250ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgQXBpVXJsID0gXCIvYXBpL2FkbWluL1Byb3ZpZGVyL1wiO1xyXG5cclxuICAvL0ZpbHRlciBhbmQgcGFnaW5nIGNvbXBvbmVudHNcclxuICBQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBzZWFyY2hUZXh0Qm94OiBUZXh0Qm94T3B0aW9ucztcclxuICBUZXh0SW5wdXRGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgcHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHByb3ZpZGVyVHlwZXNGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgc29ydGluZ0ZpbHRlck9wdGlvbjogRHJvcGRvd25PcHRpb25zO1xyXG4gIHNvcnRpbmdGaWx0ZXI6IEZpbHRlckl0ZW07XHJcbiAgSXNGaWx0ZXJMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBJc0ZpbHRlckRhdGFMb2FkZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBQcm92aWRlclBhZ2luZzogUGFnaW5nT3B0aW9ucztcclxuICBQcm92aWRlclBhZ2luZ1Jlc3VsdDogYW55W10gPSBbXTtcclxuICBjbGllbnRTaWRlUGFnaW5nUmVzdWx0OiBhbnlbXSA9IFtdO1xyXG4gIEBWaWV3Q2hpbGQoJ1Byb3ZpZGVyUGFnaW5nVmlld0VsZW1lbnQnLCB7IHN0YXRpYzogZmFsc2UgfSkgcGFnaW5nRWxlbWVudDogUGFnaW5nQ29tcG9uZW50PGFueT47XHJcblxyXG4gIC8vUmVxdWlyZWQgbGlzdHNcclxuICBQcm92aWRlclR5cGVzRmlsdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBTb3J0aW5nRmlsdGVyTGlzdDogYW55W10gPSBbXTtcclxuICBUeXBlc0xpc3Q6IGFueVtdID0gW107XHJcbiAgTG9hZGVkUHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIE9yZ2FuaXphdGlvbnNMaXN0ID0gW107XHJcbiAgQFZpZXdDaGlsZCgncHJvdmlkZXJUeXBlc0RETCcsIHsgc3RhdGljOiBmYWxzZSB9KSBwcm92aWRlclR5cGVzRERMOiBFbGVtZW50UmVmO1xyXG4gIEBWaWV3Q2hpbGQoJ3NvcnRpbmdGaWx0ZXJEREwnLCB7IHN0YXRpYzogZmFsc2UgfSkgc29ydGluZ0ZpbHRlckRETDogRWxlbWVudFJlZjtcclxuXHJcblxyXG4gIC8vUHJvdmlkZXIgYXR0cmlidXRlc1xyXG4gIFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnM6IGFueVtdID0gW107XHJcbiAgUHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgSXNBdHRyaWJ1dGVzTG9hZGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2hvd05vQXR0cmlidXRlc0Vycm9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8vQWRkIE1vZGVsIENvbnRyb2xzXHJcbiAgQWRkUHJvdmlkZXJGb3JtID0gbmV3IEZvcm1Hcm91cCh7fSk7XHJcbiAgQWRkUHJvdmlkZXJGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBBZGROYW1lOiBUZXh0Qm94T3B0aW9ucztcclxuICBBZGREZXNjcmlwdGlvbjogVGV4dEFyZWFPcHRpb25zO1xyXG4gIEFkZE9yZ2FuaXphdGlvbk9wdGlvbnM6IERyb3Bkb3duT3B0aW9ucztcclxuICBBZGRUeXBlT3B0aW9uczogRHJvcGRvd25PcHRpb25zO1xyXG4gIEFkZFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEOiBzdHJpbmc7XHJcblxyXG5cclxuICAvLy8vRWRpdCBNb2RlbCBDb250cm9sc1xyXG4gIEVkaXRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBFZGl0UHJvdmlkZXJGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBFZGl0TmFtZTogVGV4dEJveE9wdGlvbnM7XHJcbiAgRWRpdERlc2NyaXB0aW9uOiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgRWRpdFR5cGVPcHRpb25zOiBEcm9wZG93bk9wdGlvbnM7XHJcbiAgRWRpdFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEOiBzdHJpbmc7XHJcbiAgRWRpdFByb3ZpZGVyT3JnYW5pemF0aW9uSURfR1VJRDogc3RyaW5nO1xyXG4gIEVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gIEVkaXRQcm92aWRlckF0dHJpYnV0ZXNDb3VudDogbnVtYmVyID0gMDtcclxuICBQcm92aWRlcklkOiBzdHJpbmc7XHJcblxyXG4gIC8vZGVsZXRlICBNb2RlbCBDb250cm9sc1xyXG4gIGRlbGV0ZVByb3ZpZGVySWQ6IHN0cmluZztcclxuICBEZWxldGVDb25maXJtYXRpb25PcHRpb25zOiBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnM7XHJcbiAgZGVsZXRlQ29udHJvbExvYWRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBWaWV3Q2hpbGQoJ0NvbmZpcm1hdGlvbk1vZGFsQ29udHJvbCcsIHsgc3RhdGljOiBmYWxzZSB9KSBDb25maXJtYXRpb25Nb2RhbENvbnRyb2w6IENvbmZpcm1hdGlvbk1vZGFsQ29tcG9uZW50O1xyXG5cclxuICAvL1NlbGVjdCBEZWZhdWx0IFByb3ZpZGVyc1xyXG4gIERlZmF1bHRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICBEZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9uczogRm9ybU9wdGlvbnNcclxuICBEZWZhdWx0UHJvdmlkZXJzOiBhbnlbXSA9IFtdO1xyXG4gIERlZmF1bHRQcm92aWRlcnNSYWRpb0J0bk9wdGlvbnM6IFJhZGlvQnV0dG9uT3B0aW9uc1tdO1xyXG5cclxuICAvL1Rlc3QgUHJvdmlkZXIgZnVuY3Rpb25zXHJcbiAgZW1haWxQcm92aWRlclR5cGUgPSBQcm92aWRlclR5cGUuRW1haWxzO1xyXG4gIHNtc1Byb3ZpZGVyVHlwZSA9IFByb3ZpZGVyVHlwZS5TTVM7XHJcbiAgLy9UZXN0IEVtYWlsIE1vZGVsIGNvbnRyb2xzXHJcbiAgdGVzdEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gIHRlc3RFbWFpbEZvcm1PcHRpb25zOiBGb3JtT3B0aW9uc1xyXG4gIGVtYWlsVG86IFRleHRCb3hPcHRpb25zO1xyXG4gIGVtYWlsU3ViamVjdDogVGV4dEJveE9wdGlvbnM7XHJcbiAgZW1haWxCb2R5OiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgdGVzdEVtYWlsUHJvdmlkZXJJZDogc3RyaW5nO1xyXG4gIHRlc3RFbWFpbFByb3ZpZGVyTmFtZTogc3RyaW5nO1xyXG5cclxuICAvL1Rlc3QgU01TIE1vZGVsIGNvbnRyb2xzXHJcbiAgdGVzdFNNU0Zvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KTtcclxuICB0ZXN0U01TRm9ybU9wdGlvbnM6IEZvcm1PcHRpb25zXHJcbiAgc21zVG86IFBob25lT3B0aW9ucztcclxuICBzbXNCb2R5OiBUZXh0QXJlYU9wdGlvbnM7XHJcbiAgdGVzdFNNU1Byb3ZpZGVySWQ6IHN0cmluZztcclxuICB0ZXN0U01TUHJvdmlkZXJOYW1lOiBzdHJpbmc7XHJcblxyXG4gIGNvbnN0cnVjdG9yXHJcbiAgICAoXHJcbiAgICAgIHByaXZhdGUgUHJvdmlkZXJTZXJ2aWNlOiBQcm92aWRlclNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBOZ2JNb2RhbCxcclxuICAgICAgcHJpdmF0ZSBhdXRoU2VydmljZTogQXV0aFNlcnZpY2UsXHJcbiAgICAgIHByaXZhdGUgYmJzZlRyYW5zbGF0ZVNlcnZpY2U6IEJCU0ZUcmFuc2xhdGVTZXJ2aWNlLFxyXG4gICAgICBwdWJsaWMgdXRpbGl0eVNlcnZpY2U6IFV0aWxpdHlTZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHBhZ2VJbmZvU2VydmljZTogUGFnZUluZm9TZXJ2aWNlLFxyXG4gICAgICBwcml2YXRlIHJlcXVlc3RIYW5kbGVyU2VydmljZTogUmVxdWVzdEhhbmRsZXJTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuXHJcblxyXG4gIGFzeW5jIG5nT25Jbml0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSB0cnVlO1xyXG4gICAgLy9QYWdlIGhlYWRlciAoYnJlYWRjcnVtYiBhbmQgdGl0bGUpXHJcbiAgICBQYWdlSW5mb1NlcnZpY2UuUGFnZVRpdGxlID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU2VydmljZVByb3ZpZGVyc1wiKVxyXG4gICAgUGFnZUluZm9TZXJ2aWNlLlBhZ2VCcmVhZGNydW1icyA9IFtcclxuICAgICAgeyB0aXRsZTogdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiSG9tZVwiKSwgcGF0aDogJy9BZG1pbi9Ib21lJywgaXNTZXBhcmF0b3I6IGZhbHNlLCBpc0FjdGl2ZTogZmFsc2UgfSxcclxuICAgICAgeyB0aXRsZTogJycsIHBhdGg6ICcnLCBpc1NlcGFyYXRvcjogdHJ1ZSwgaXNBY3RpdmU6IGZhbHNlIH1cclxuXHJcbiAgICBdO1xyXG4gICAgdGhpcy5wYWdlSW5mb1NlcnZpY2UuY2FsY3VsYXRlVGl0bGUoKTtcclxuICAgIHRoaXMucGFnZUluZm9TZXJ2aWNlLmNhbGN1bGF0ZUJyZWFkY3J1bWJzKCk7XHJcblxyXG4gICAgLy9vbiBsYW5nIGNoYW5nZWRcclxuICAgIHRoaXMuYmJzZlRyYW5zbGF0ZVNlcnZpY2Uub25MYW5nQ2hhbmdlLnN1YnNjcmliZSgoZXZlbnQpID0+IHtcclxuICAgICAgdGhpcy5TaG93UGFnZUNvbnRlbnQgPSBmYWxzZTtcclxuICAgICAgdGhpcy5uZ09uSW5pdCgpO1xyXG4gICAgfSlcclxuXHJcbiAgICAvL2luaXRpYWxpemUgcGFnZVxyXG4gICAgdGhpcy5pbml0aWFsaXplUGFnZSgpO1xyXG4gIH1cclxuXHJcbiAgLy9Jbml0aWFsaXplIGZpbHRlcnMgYW5kIHBhZ2luZ1xyXG4gIGluaXRpYWxpemVQYWdlKCkge1xyXG4gICAgLy8gVGV4dEJveCBpbml0XHJcbiAgICB0aGlzLnNlYXJjaFRleHRCb3ggPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5OYW1lID0gXCJzZWFyY2hUZXh0Qm94XCJcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5UeXBlID0gSW5wdXRUeXBlLlRleHRcclxuICAgIHRoaXMuc2VhcmNoVGV4dEJveC5QbGFjZWhvbGRlciA9IHRoaXMudXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNlYXJjaEJ5TmFtZVwiKVxyXG4gICAgdGhpcy5zZWFyY2hUZXh0Qm94LkhpZGVMYWJlbCA9IHRydWVcclxuXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Gb3JtQ29udHJvbE5hbWUgPSBcInNlYXJjaFRleHRCb3hcIlxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic2VhcmNoVGV4dFwiXHJcbiAgICB0aGlzLlRleHRJbnB1dEZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5UZXh0SW5wdXRGaWx0ZXIuRmlsdGVyVHlwZSA9IEZpbHRlclR5cGUuVGV4dEJveFxyXG5cclxuICAgIC8vIFByb3ZpZGVyIFR5cGVzIEZpbHRlciBJbml0ICAgXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24gPSBuZXcgRHJvcGRvd25PcHRpb25zKCk7XHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24uTmFtZSA9IFwicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb24uTGFiZWxLZXkgPSBcIlByb3ZpZGVyVHlwZXNcIlxyXG5cclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlciA9IG5ldyBGaWx0ZXJJdGVtKCk7XHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuRm9ybUNvbnRyb2xOYW1lID0gXCJwcm92aWRlclR5cGVzRmlsdGVyT3B0aW9uXCJcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlci5BY3Rpb25QYXJhbWV0ZXJOYW1lID0gXCJ0eXBlc1wiXHJcbiAgICB0aGlzLnByb3ZpZGVyVHlwZXNGaWx0ZXIuSXNGb3JtQ29udHJvbCA9IHRydWVcclxuICAgIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlci5GaWx0ZXJUeXBlID0gRmlsdGVyVHlwZS5Ecm9wZG93bkxpc3RcclxuXHJcblxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLk5hbWUgPSBcInNvcnRpbmdGaWx0ZXJPcHRpb25cIlxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLkxhYmVsS2V5ID0gXCJTb3J0XCJcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlck9wdGlvbi5TaW5nbGVTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyT3B0aW9uLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXIgPSBuZXcgRmlsdGVySXRlbSgpO1xyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyLkZvcm1Db250cm9sTmFtZSA9IFwic29ydGluZ0ZpbHRlck9wdGlvblwiXHJcbiAgICB0aGlzLnNvcnRpbmdGaWx0ZXIuQWN0aW9uUGFyYW1ldGVyTmFtZSA9IFwic29ydElEXCJcclxuICAgIHRoaXMuc29ydGluZ0ZpbHRlci5Jc0Zvcm1Db250cm9sID0gdHJ1ZVxyXG4gICAgdGhpcy5zb3J0aW5nRmlsdGVyLkZpbHRlclR5cGUgPSBGaWx0ZXJUeXBlLkRyb3Bkb3duTGlzdDtcclxuXHJcblxyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZyA9IG5ldyBQYWdpbmdPcHRpb25zKCk7XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLkFjdGlvblBvc3RVUkwgPSB0aGlzLkFwaVVybCArICdHZXRQcm92aWRlcnNCeUZpbHRlcic7XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLk9uS2V5UHJlc3NGaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wic2VhcmNoVGV4dEJveFwiXTtcclxuICAgIHRoaXMuUHJvdmlkZXJQYWdpbmcuRHJvcGRvd25GaWx0ZXJzQ29udHJvbE5hbWVzID0gW1wicHJvdmlkZXJUeXBlc0ZpbHRlck9wdGlvblwiLCBcInNvcnRpbmdGaWx0ZXJPcHRpb25cIl07XHJcbiAgICB0aGlzLlByb3ZpZGVyUGFnaW5nLkZpbHRlcnMgPSBbdGhpcy5UZXh0SW5wdXRGaWx0ZXIsIHRoaXMucHJvdmlkZXJUeXBlc0ZpbHRlciwgdGhpcy5zb3J0aW5nRmlsdGVyXVxyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZy5WYWxpZGF0aW9uVG9rZW4gPSB0aGlzLmF1dGhTZXJ2aWNlLmF1dGhvcml6YXRpb25IZWFkZXJWYWx1ZSgpO1xyXG5cclxuICAgIHRoaXMuSXNGaWx0ZXJMb2FkZWQgPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgLy9Mb2FkIGZpbHRlcnMgbGlzdHNcclxuICBsb2FkTGlzdHMoKSB7XHJcbiAgICBpZiAoIXRoaXMuSXNGaWx0ZXJEYXRhTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkxvYWRkcm9wZG93bnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICAgIGxldCBEcm9wZG93bkxpc3RzID0gcmVzdWx0IGFzIGFueVxyXG4gICAgICAgIC8vdGhpcy5Pcmdhbml6YXRpb25zTGlzdCA9IERyb3Bkb3duTGlzdHMub3JnYW5pemF0aW9ucztcclxuICAgICAgICAvL3RoaXMuVHlwZXNMaXN0ID0gRHJvcGRvd25MaXN0cy5wcm92aWRlclR5cGVzO1xyXG4gICAgICAgIHRoaXMuUHJvdmlkZXJUeXBlc0ZpbHRlckxpc3QgPSBEcm9wZG93bkxpc3RzLnByb3ZpZGVyVHlwZXNGaWx0ZXI7XHJcbiAgICAgICAgdGhpcy5Tb3J0aW5nRmlsdGVyTGlzdCA9IERyb3Bkb3duTGlzdHMuc29ydGluZ0ZpbHRlckxpc3Q7XHJcblxyXG4gICAgICAgIGxldCBwcm92aWRlclR5cGVzRWxlbWVudCA9IHRoaXMucHJvdmlkZXJUeXBlc0RETCBhcyBhbnk7XHJcbiAgICAgICAgbGV0IHNvcnRpbmdGaWx0ZXJFbGVtZW50ID0gdGhpcy5zb3J0aW5nRmlsdGVyRERMIGFzIGFueTtcclxuXHJcblxyXG4gICAgICAgIHByb3ZpZGVyVHlwZXNFbGVtZW50LlVwZGF0ZURhdGFTb3VyY2UodGhpcy5Qcm92aWRlclR5cGVzRmlsdGVyTGlzdCk7XHJcblxyXG4gICAgICAgIHNvcnRpbmdGaWx0ZXJFbGVtZW50LlVwZGF0ZURhdGFTb3VyY2UodGhpcy5Tb3J0aW5nRmlsdGVyTGlzdCk7XHJcblxyXG5cclxuICAgICAgICB0aGlzLklzRmlsdGVyRGF0YUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy9QYWdpbmcgZnVuY3Rpb25zXHJcbiAgc2V0UHJvdmlkZXJMaXN0UmVzdWx0KHJlc3VsdCkge1xyXG4gICAgdGhpcy5Qcm92aWRlclBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHJlc3VsdDtcclxuICAgIHRoaXMuU2hvd1BhZ2VDb250ZW50ID0gdHJ1ZTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKVxyXG4gIH1cclxuICByZXNldEZpbHRlcnMoKSB7XHJcbiAgICB0aGlzLlByb3ZpZGVyRm9ybS5jb250cm9sc1tcInByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb25cIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLlByb3ZpZGVyRm9ybS5jb250cm9sc1tcInNvcnRpbmdGaWx0ZXJPcHRpb25cIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICB0aGlzLlByb3ZpZGVyRm9ybS5jb250cm9sc1tcInNlYXJjaFRleHRCb3hcIl0uc2V0VmFsdWUobnVsbCk7XHJcbiAgICBsZXQgZWxlbWVudCA9IHRoaXMucGFnaW5nRWxlbWVudCBhcyBhbnk7XHJcbiAgICBlbGVtZW50LlJlaW5pdGlhbGl6ZVBhZ2luZygpO1xyXG4gIH1cclxuICBzZWFyY2hDbGllbnRTaWRlKHNlYXJjaFZhbHVlKSB7XHJcbiAgICBpZiAoc2VhcmNoVmFsdWUpXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5maWx0ZXIoXHJcbiAgICAgICAgZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLnByb3ZpZGVyTmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgIH0pXHJcbiAgICBlbHNlXHJcbiAgICAgIHRoaXMuY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdCA9IHRoaXMuUHJvdmlkZXJQYWdpbmdSZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvL0F0dHJpYnV0ZXNGdW5jdGlvblxyXG4gIHNldEFkZFByb3ZpZGVyQXR0cmlidXRlcyh0eXBlRnVsbE5hbWUpIHtcclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkdldFByb3ZpZGVyQXR0cmlidXRlcyh0eXBlRnVsbE5hbWUpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIHZhciByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICAvL1NldCBQcm92aWRlciB0eXBlIGlkIG9uIHR5cGUgY2hhbmdlXHJcbiAgICAgIHRoaXMuTG9hZGVkUHJvdmlkZXJzID0gcmVzdWx0T2JqLmxvYWRlZFByb3ZpZGVycztcclxuICAgICAgbGV0IHNlbGVjdGVkUHJvdmlkZXJUeXBlID0gdGhpcy5Mb2FkZWRQcm92aWRlcnMuZmluZChvYmogPT4ge1xyXG4gICAgICAgIHJldHVybiBvYmouZnVsbE5hbWUgPT09IHR5cGVGdWxsTmFtZVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5BZGRQcm92aWRlclR5cGVJdGVtSURfR1VJRCA9IHNlbGVjdGVkUHJvdmlkZXJUeXBlLnByb3ZpZGVyVHlwZUlEX0dVSUQ7XHJcblxyXG4gICAgICAvL1NldCBhdHRyaWJ1dGVzIGFuZCBjb3VudFxyXG4gICAgICBsZXQgYXR0cmlidXRlcyA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zID0gW107XHJcbiAgICAgIGxldCBkYXRhOiBhbnkgPSB0aGlzLmdldFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMoYXR0cmlidXRlcywgdHJ1ZSk7XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuUHJvdmlkZXJBdHRyaWJ1dGVzQ291bnQgPSBkYXRhWzFdO1xyXG4gICAgICB0aGlzLklzQXR0cmlidXRlc0xvYWRlZCA9IHRydWU7XHJcblxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0UHJvdmlkZXJBdHRyaWJ1dGVzKHR5cGVGdWxsTmFtZSkge1xyXG4gICAgdGhpcy5Qcm92aWRlclNlcnZpY2UuR2V0UHJvdmlkZXJBdHRyaWJ1dGVzKHR5cGVGdWxsTmFtZSkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcclxuICAgICAgdmFyIHJlc3VsdE9iaiA9IHJlc3VsdCBhcyBhbnk7XHJcbiAgICAgIC8vU2V0IFByb3ZpZGVyIHR5cGUgaWQgb24gdHlwZSBjaGFuZ2VcclxuICAgICAgdGhpcy5Mb2FkZWRQcm92aWRlcnMgPSByZXN1bHRPYmoubG9hZGVkUHJvdmlkZXJzO1xyXG4gICAgICBsZXQgc2VsZWN0ZWRQcm92aWRlclR5cGUgPSB0aGlzLkxvYWRlZFByb3ZpZGVycy5maW5kKG9iaiA9PiB7XHJcbiAgICAgICAgcmV0dXJuIG9iai5mdWxsTmFtZSA9PT0gdHlwZUZ1bGxOYW1lXHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlclR5cGVJdGVtSURfR1VJRCA9IHNlbGVjdGVkUHJvdmlkZXJUeXBlLnByb3ZpZGVyVHlwZUlEX0dVSUQ7XHJcblxyXG4gICAgICAvL1NldCBhdHRyaWJ1dGVzIGFuZCBjb3VudFxyXG4gICAgICBsZXQgYXR0cmlidXRlcyA9IHJlc3VsdE9iai5tb2RlbDtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IFtdO1xyXG4gICAgICBsZXQgZGF0YTogYW55ID0gdGhpcy5nZXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zKGF0dHJpYnV0ZXMsIGZhbHNlKTtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucyA9IGRhdGFbMF07XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc0NvdW50ID0gZGF0YVsxXTtcclxuXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMocHJvdmlkZXJBdHRyaWJ1dGVzOiBhbnlbXSwgaXNBZGQ6IGJvb2xlYW4pIHtcclxuICAgIGxldCBhdHRyaWJ1dGVzT3B0aW9uczogYW55W10gPSBbXTtcclxuICAgIGxldCBhdHRyaWJ1dGVzQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgICBsZXQgYWN0aW9uSW5kaWNhdGU6IHN0cmluZyA9IGlzQWRkID8gXCJBZGRcIiA6IFwiRWRpdFwiO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwcm92aWRlckF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHtcclxuXHJcbiAgICAgIGxldCBvYmplY3RBdHRyaWJ1dGVPcHRpb25zOiBhbnlbXSA9IFtdO1xyXG4gICAgICBsZXQgaXNFbmNyeXB0ZWQ6IGJvb2xlYW4gPSBwcm92aWRlckF0dHJpYnV0ZXNbaV0uaXNFbmNyeXB0ZWQ7XHJcblxyXG4gICAgICBsZXQgQXR0cmlidXRlTmFtZSA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgICBBdHRyaWJ1dGVOYW1lLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiQXR0cmlidXRlTmFtZVwiICsgaTtcclxuICAgICAgQXR0cmlidXRlTmFtZS5IaWRlTGFiZWwgPSB0cnVlO1xyXG4gICAgICBBdHRyaWJ1dGVOYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgQXR0cmlidXRlTmFtZS5WYWx1ZSA9IHByb3ZpZGVyQXR0cmlidXRlc1tpXS5uYW1lO1xyXG4gICAgICBBdHRyaWJ1dGVOYW1lLk1heExlbmd0aCA9IDEwMDtcclxuXHJcblxyXG4gICAgICBsZXQgQXR0cmlidXRlVmFsdWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuTmFtZSA9IGFjdGlvbkluZGljYXRlICsgXCJBdHRyaWJ1dGVWYWx1ZVwiICsgaTtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuVHlwZSA9IGlzRW5jcnlwdGVkID8gSW5wdXRUeXBlLlBhc3N3b3JkIDogSW5wdXRUeXBlLlRleHQ7XHJcbiAgICAgIEF0dHJpYnV0ZVZhbHVlLlZhbHVlID0gcHJvdmlkZXJBdHRyaWJ1dGVzW2ldLnZhbHVlO1xyXG4gICAgICBBdHRyaWJ1dGVWYWx1ZS5SZW1vdmVEZWZhdWx0UGFzc3dvcmRWYWxpZGF0aW9uID0gdHJ1ZTtcclxuICAgICAgQXR0cmlidXRlVmFsdWUuTWF4TGVuZ3RoID0gMTAwO1xyXG5cclxuICAgICAgbGV0IEF0dHJpYnV0ZUVuY3J5cHRlZCA9IG5ldyBDaGVja0JveE9wdGlvbnMoKTtcclxuICAgICAgQXR0cmlidXRlRW5jcnlwdGVkLk5hbWUgPSBhY3Rpb25JbmRpY2F0ZSArIFwiQXR0cmlidXRlRW5jcnlwdGVkXCIgKyBpO1xyXG4gICAgICBBdHRyaWJ1dGVFbmNyeXB0ZWQuVmFsdWUgPSBwcm92aWRlckF0dHJpYnV0ZXNbaV0uaXNFbmNyeXB0ZWQ7XHJcblxyXG4gICAgICBvYmplY3RBdHRyaWJ1dGVPcHRpb25zLnB1c2goQXR0cmlidXRlTmFtZSwgQXR0cmlidXRlVmFsdWUsIEF0dHJpYnV0ZUVuY3J5cHRlZCk7XHJcbiAgICAgIGF0dHJpYnV0ZXNPcHRpb25zLnB1c2gob2JqZWN0QXR0cmlidXRlT3B0aW9ucyk7XHJcbiAgICAgIGF0dHJpYnV0ZXNDb3VudCArPSAxO1xyXG5cclxuICAgIH1cclxuICAgIHJldHVybiBbYXR0cmlidXRlc09wdGlvbnMsIGF0dHJpYnV0ZXNDb3VudF07XHJcbiAgfVxyXG5cclxuICBkZWxldGVBdHRyaWJ1dGUoZGVsZXRlZEF0dHJpYnV0ZTogYW55LCBpc0FkZDogYm9vbGVhbikge1xyXG4gICAgaWYgKGlzQWRkKSB7XHJcbiAgICAgIGxldCBkZWxldGVkQXR0ckluZGV4OiBudW1iZXIgPSB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMuaW5kZXhPZihkZWxldGVkQXR0cmlidXRlKTtcclxuICAgICAgaWYgKGRlbGV0ZWRBdHRySW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLnNwbGljZShkZWxldGVkQXR0ckluZGV4LCAxKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRBdHRyaWJ1dGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtLnJlbW92ZUNvbnRyb2woZGVsZXRlZEF0dHJpYnV0ZVtpXS5OYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBsZXQgZGVsZXRlZEF0dHJJbmRleDogbnVtYmVyID0gdGhpcy5FZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5pbmRleE9mKGRlbGV0ZWRBdHRyaWJ1dGUpO1xyXG4gICAgICBpZiAoZGVsZXRlZEF0dHJJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zLnNwbGljZShkZWxldGVkQXR0ckluZGV4LCAxKTtcclxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0ZWRBdHRyaWJ1dGUubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybS5yZW1vdmVDb250cm9sKGRlbGV0ZWRBdHRyaWJ1dGVbaV0uTmFtZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBlbmNyeXB0ZWRDaGFuZ2UoaXNDaGVja2VkLCBvcHRpb24sIGlzQWRkKSB7XHJcbiAgICBsZXQgdmFsdWVBdHRyaWJ1dGVJbmRpY2F0b3IgPSBpc0FkZCA/IFwiQWRkQXR0cmlidXRlVmFsdWVcIiA6IFwiRWRpdEF0dHJpYnV0ZVZhbHVlXCI7XHJcbiAgICBsZXQgcmVhbHRlZFZhbHVlT3B0aW9uID0gb3B0aW9uLmZpbmQob2JqID0+IHtcclxuICAgICAgcmV0dXJuIG9iai5OYW1lLnN0YXJ0c1dpdGgodmFsdWVBdHRyaWJ1dGVJbmRpY2F0b3IpXHJcbiAgICB9KTtcclxuICAgIGlmIChpc0NoZWNrZWQpXHJcbiAgICAgIHJlYWx0ZWRWYWx1ZU9wdGlvbi5UeXBlID0gSW5wdXRUeXBlLlBhc3N3b3JkO1xyXG4gICAgZWxzZVxyXG4gICAgICByZWFsdGVkVmFsdWVPcHRpb24uVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG5cclxuICB9XHJcblxyXG5cclxuICAvL0FkZCBwcm92aWRlclxyXG4gIHNob3dBZGRQcm92aWRlck1vZGFsKGFkZFByb3ZpZGVyTW9kYWwpIHtcclxuICAgIHRoaXMuc2hvd05vQXR0cmlidXRlc0Vycm9yID0gZmFsc2U7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy5Qcm92aWRlclNlcnZpY2UubG9hZEFkZERyb3Bkb3ducygpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XHJcbiAgICAgIGxldCByZXN1bHRPYmogPSByZXN1bHQgYXMgYW55O1xyXG4gICAgICB0aGlzLk9yZ2FuaXphdGlvbnNMaXN0ID0gcmVzdWx0T2JqLm9yZ2FuaXphdGlvbnM7XHJcbiAgICAgIHRoaXMuVHlwZXNMaXN0ID0gcmVzdWx0T2JqLnByb3ZpZGVyVHlwZXM7XHJcblxyXG4gICAgICB0aGlzLlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMgPSBbXTtcclxuICAgICAgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNDb3VudCA9IDA7XHJcbiAgICAgIHRoaXMuSXNBdHRyaWJ1dGVzTG9hZGVkID0gZmFsc2U7XHJcblxyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pXHJcblxyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRQcm92aWRlckZvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMuQWRkUHJvdmlkZXJGb3JtXHJcbiAgICAgIHRoaXMuQWRkUHJvdmlkZXJGb3JtT3B0aW9ucy5HZXRNb2RlbEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRQcm92aWRlck1vZGVsO1xyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRBZGRQcm92aWRlckZ1bmN0aW9uO1xyXG4gICAgICB0aGlzLkFkZFByb3ZpZGVyRm9ybU9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50XHJcblxyXG4gICAgICB0aGlzLkFkZE5hbWUgPSBuZXcgVGV4dEJveE9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGROYW1lLk5hbWUgPSBcIlByb3ZpZGVyTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuTGFiZWxLZXkgPSBcIlByb3ZpZGVyTmFtZVwiO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuVHlwZSA9IElucHV0VHlwZS5UZXh0O1xyXG4gICAgICB0aGlzLkFkZE5hbWUuVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZE5hbWUuSXNSZXF1aXJlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkTmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG5cclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbiA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGREZXNjcmlwdGlvbi5OYW1lID0gXCJEZXNjcmlwdGlvblwiO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLkxhYmVsS2V5ID0gXCJQcm92aWRlckRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuQWRkRGVzY3JpcHRpb24uVmFsdWUgPSBudWxsO1xyXG4gICAgICB0aGlzLkFkZERlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1MDtcclxuXHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLk5hbWUgPSBcIk9yZ2FuaXphdGlvbklEX0dVSURcIlxyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuTGFiZWxLZXkgPSBcIk9yZ2FuaXphdGlvblwiXHJcbiAgICAgIHRoaXMuQWRkT3JnYW5pemF0aW9uT3B0aW9ucy5EYXRhU291cmNlID0gdGhpcy5Pcmdhbml6YXRpb25zTGlzdFxyXG4gICAgICB0aGlzLkFkZE9yZ2FuaXphdGlvbk9wdGlvbnMuU2luZ2xlU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5BZGRPcmdhbml6YXRpb25PcHRpb25zLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucyA9IG5ldyBEcm9wZG93bk9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5OYW1lID0gXCJUeXBlRnVsbE5hbWVcIlxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLkxhYmVsS2V5ID0gXCJQcm92aWRlclR5cGVcIlxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLkRhdGFTb3VyY2UgPSB0aGlzLlR5cGVzTGlzdFxyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuQWRkVHlwZU9wdGlvbnMuQWxsb3dTZWFyY2hGaWx0ZXIgPSB0cnVlO1xyXG4gICAgICB0aGlzLkFkZFR5cGVPcHRpb25zLlBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgdGhpcy5BZGRUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihhZGRQcm92aWRlck1vZGFsKTtcclxuICAgICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gICAgfSk7XHJcblxyXG5cclxuICB9XHJcbiAgZ2V0QWRkUHJvdmlkZXJNb2RlbCA9ICgpID0+IHtcclxuICAgIGxldCBwYXJhbUFycmF5OiBhbnlbXSA9IFtdO1xyXG4gICAgbGV0IFJlc3VsdE1vZGVsID0gdGhpcy5BZGRQcm92aWRlckZvcm0udmFsdWU7XHJcbiAgICBsZXQgQWRkTW9kZWw6IFByb3ZpZGVyTW9kZWwgPSBuZXcgUHJvdmlkZXJNb2RlbCgpO1xyXG4gICAgQWRkTW9kZWwuUHJvdmlkZXJOYW1lID0gUmVzdWx0TW9kZWwuUHJvdmlkZXJOYW1lO1xyXG4gICAgQWRkTW9kZWwuRGVzY3JpcHRpb24gPSBSZXN1bHRNb2RlbC5EZXNjcmlwdGlvbjtcclxuXHJcbiAgICBBZGRNb2RlbC5Pcmdhbml6YXRpb25JRF9HVUlEID0gUmVzdWx0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRDtcclxuICAgIEFkZE1vZGVsLlByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEID0gdGhpcy5BZGRQcm92aWRlclR5cGVJdGVtSURfR1VJRDtcclxuICAgIEFkZE1vZGVsLlR5cGVGdWxsTmFtZSA9IFJlc3VsdE1vZGVsLlR5cGVGdWxsTmFtZTtcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5Qcm92aWRlckF0dHJpYnV0ZXNDb3VudDsgaisrKSB7XHJcbiAgICAgIGxldCBhZGRBdHRyaWJ1dGVOYW1lID0gUmVzdWx0TW9kZWxbXCJBZGRBdHRyaWJ1dGVOYW1lXCIgKyBqXTtcclxuICAgICAgaWYgKGFkZEF0dHJpYnV0ZU5hbWUgPT0gdW5kZWZpbmVkKVxyXG4gICAgICAgIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IGFkZEF0dHJpYnV0ZVZhbHVlID0gUmVzdWx0TW9kZWxbXCJBZGRBdHRyaWJ1dGVWYWx1ZVwiICsgal07XHJcbiAgICAgIGxldCBhZGRBdHRyaWJ1dGVFbmNyeXB0ZWQgPSBSZXN1bHRNb2RlbFtcIkFkZEF0dHJpYnV0ZUVuY3J5cHRlZFwiICsgal07XHJcblxyXG4gICAgICBsZXQgcHJvdmlkZXJBdHRyOiBQcm92aWRlckF0dHJpYnV0ZU1vZGVsID0gbmV3IFByb3ZpZGVyQXR0cmlidXRlTW9kZWwoKTtcclxuICAgICAgcHJvdmlkZXJBdHRyLk5hbWUgPSBhZGRBdHRyaWJ1dGVOYW1lO1xyXG4gICAgICBwcm92aWRlckF0dHIuVmFsdWUgPSBhZGRBdHRyaWJ1dGVWYWx1ZTtcclxuICAgICAgcHJvdmlkZXJBdHRyLklzRW5jcnlwdGVkID0gYWRkQXR0cmlidXRlRW5jcnlwdGVkO1xyXG4gICAgICBBZGRNb2RlbC5Qcm92aWRlckF0dHJpYnV0ZXMucHVzaChwcm92aWRlckF0dHIpO1xyXG4gICAgfVxyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaChBZGRNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldEFkZFByb3ZpZGVyRnVuY3Rpb24gPSAoQWRkTW9kZWw6IFByb3ZpZGVyTW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKEFkZE1vZGVsLlByb3ZpZGVyQXR0cmlidXRlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuc2hvd05vQXR0cmlidXRlc0Vycm9yID0gZmFsc2U7XHJcbiAgICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5BZGRQcm92aWRlcihBZGRNb2RlbCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Tm9BdHRyaWJ1dGVzRXJyb3IgPSB0cnVlO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvL0VkaXQgcHJvdmlkZXJcclxuICBzaG93RWRpdFByb3ZpZGVyTW9kYWwocHJvdmlkZXJJRDogc3RyaW5nLCBlZGl0UHJvdmlkZXJNb2RhbCkge1xyXG4gICAgdGhpcy5zaG93Tm9BdHRyaWJ1dGVzRXJyb3IgPSBmYWxzZTtcclxuICAgIHRoaXMuUHJvdmlkZXJJZCA9IHByb3ZpZGVySUQ7XHJcblxyXG4gICAgdGhpcy5Qcm92aWRlclNlcnZpY2UuR2V0RWRpdFByb3ZpZGVyRGF0YShwcm92aWRlcklEKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgcmVzdWx0T2JqID0gcmVzdWx0IGFzIGFueTtcclxuICAgICAgbGV0IHByb3ZpZGVyID0gcmVzdWx0T2JqLm1vZGVsO1xyXG4gICAgICBsZXQgbGlzdHMgPSByZXN1bHRPYmoubGlzdHM7XHJcbiAgICAgIHRoaXMuVHlwZXNMaXN0ID0gbGlzdHMucHJvdmlkZXJUeXBlcztcclxuXHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5FZGl0UHJvdmlkZXJGb3JtXHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RWRpdFByb3ZpZGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXRFZGl0UHJvdmlkZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuICAgICAgdGhpcy5FZGl0UHJvdmlkZXJGb3JtT3B0aW9ucy5QYWdpbmdBY3Rpb25Nb2RlID0gUGFnaW5nQWN0aW9uTW9kZS5VcGRhdGVcclxuXHJcblxyXG4gICAgICB0aGlzLkVkaXROYW1lID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTmFtZSA9IFwiUHJvdmlkZXJOYW1lXCI7XHJcbiAgICAgIHRoaXMuRWRpdE5hbWUuTGFiZWxLZXkgPSBcIlByb3ZpZGVyTmFtZVwiO1xyXG4gICAgICB0aGlzLkVkaXROYW1lLlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5WYWx1ZSA9IHByb3ZpZGVyLnByb3ZpZGVyTmFtZTtcclxuICAgICAgdGhpcy5FZGl0TmFtZS5NYXhMZW5ndGggPSAxMDA7XHJcblxyXG4gICAgICB0aGlzLkVkaXREZXNjcmlwdGlvbiA9IG5ldyBUZXh0QXJlYU9wdGlvbnMoKTtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uTmFtZSA9IFwiRGVzY3JpcHRpb25cIjtcclxuICAgICAgdGhpcy5FZGl0RGVzY3JpcHRpb24uTGFiZWxLZXkgPSBcIkRlc2NyaXB0aW9uXCI7XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLlZhbHVlID0gcHJvdmlkZXIuZGVzY3JpcHRpb247XHJcbiAgICAgIHRoaXMuRWRpdERlc2NyaXB0aW9uLk1heExlbmd0aCA9IDI1MDtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zID0gbmV3IERyb3Bkb3duT3B0aW9ucygpO1xyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5OYW1lID0gXCJUeXBlRnVsbE5hbWVcIlxyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5MYWJlbEtleSA9IFwiUHJvdmlkZXJUeXBlXCJcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuRGF0YVNvdXJjZSA9IHRoaXMuVHlwZXNMaXN0XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLlNpbmdsZVNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICAgIHRoaXMuRWRpdFR5cGVPcHRpb25zLkFsbG93U2VhcmNoRmlsdGVyID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuUGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICB0aGlzLkVkaXRUeXBlT3B0aW9ucy5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5FZGl0VHlwZU9wdGlvbnMuU2VsZWN0ZWRJdGVtcyA9IHByb3ZpZGVyLnR5cGVGdWxsTmFtZTtcclxuXHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEID0gcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQ/LnRvTG93ZXJDYXNlKCk7XHJcblxyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlck9yZ2FuaXphdGlvbklEX0dVSUQgPSBwcm92aWRlci5vcmdhbml6YXRpb25JRF9HVUlEPy50b0xvd2VyQ2FzZSgpXHJcbiAgICAgIGxldCBlZGl0QXR0cmlidXRlc1Jlc3VsdDogYW55ID0gdGhpcy5nZXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zKHByb3ZpZGVyLnByb3ZpZGVyQXR0cmlidXRlcywgZmFsc2UpO1xyXG4gICAgICB0aGlzLkVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zID0gZWRpdEF0dHJpYnV0ZXNSZXN1bHRbMF07XHJcbiAgICAgIHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc0NvdW50ID0gZWRpdEF0dHJpYnV0ZXNSZXN1bHRbMV07XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZWRpdFByb3ZpZGVyTW9kYWwpO1xyXG4gICAgfSlcclxuXHJcbiAgfVxyXG4gIGdldEVkaXRQcm92aWRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkVkaXRQcm92aWRlckZvcm0udmFsdWU7XHJcbiAgICBsZXQgRWRpdE1vZGVsID0gbmV3IFByb3ZpZGVyTW9kZWwoKTtcclxuXHJcbiAgICBFZGl0TW9kZWwuSURfR1VJRCA9IHRoaXMuUHJvdmlkZXJJZDtcclxuICAgIEVkaXRNb2RlbC5Qcm92aWRlck5hbWUgPSBSZXN1bHRNb2RlbC5Qcm92aWRlck5hbWU7IC8vKCMjMSlcclxuICAgIEVkaXRNb2RlbC5EZXNjcmlwdGlvbiA9IFJlc3VsdE1vZGVsLkRlc2NyaXB0aW9uXHJcbiAgICBFZGl0TW9kZWwuVHlwZUZ1bGxOYW1lID0gUmVzdWx0TW9kZWwuVHlwZUZ1bGxOYW1lO1xyXG4gICAgRWRpdE1vZGVsLlByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEID0gdGhpcy5FZGl0UHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQ7XHJcbiAgICBFZGl0TW9kZWwuT3JnYW5pemF0aW9uSURfR1VJRCA9IHRoaXMuRWRpdFByb3ZpZGVyT3JnYW5pemF0aW9uSURfR1VJRDtcclxuXHJcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuRWRpdFByb3ZpZGVyQXR0cmlidXRlc0NvdW50OyBqKyspIHtcclxuICAgICAgbGV0IGVkaXRBdHRyaWJ1dGVOYW1lID0gUmVzdWx0TW9kZWxbXCJFZGl0QXR0cmlidXRlTmFtZVwiICsgal07XHJcbiAgICAgIGlmIChlZGl0QXR0cmlidXRlTmFtZSA9PSB1bmRlZmluZWQpXHJcbiAgICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICBsZXQgZWRpdEF0dHJpYnV0ZVZhbHVlID0gUmVzdWx0TW9kZWxbXCJFZGl0QXR0cmlidXRlVmFsdWVcIiArIGpdO1xyXG4gICAgICBsZXQgZWRpdEF0dHJpYnV0ZUVuY3J5cHRlZCA9IFJlc3VsdE1vZGVsW1wiRWRpdEF0dHJpYnV0ZUVuY3J5cHRlZFwiICsgal07XHJcblxyXG4gICAgICBsZXQgcHJvdmlkZXJBdHRyOiBQcm92aWRlckF0dHJpYnV0ZU1vZGVsID0gbmV3IFByb3ZpZGVyQXR0cmlidXRlTW9kZWwoKTtcclxuICAgICAgcHJvdmlkZXJBdHRyLk5hbWUgPSBlZGl0QXR0cmlidXRlTmFtZTtcclxuICAgICAgcHJvdmlkZXJBdHRyLlZhbHVlID0gZWRpdEF0dHJpYnV0ZVZhbHVlO1xyXG4gICAgICBwcm92aWRlckF0dHIuSXNFbmNyeXB0ZWQgPSBlZGl0QXR0cmlidXRlRW5jcnlwdGVkO1xyXG4gICAgICBFZGl0TW9kZWwuUHJvdmlkZXJBdHRyaWJ1dGVzLnB1c2gocHJvdmlkZXJBdHRyKTtcclxuICAgIH1cclxuICAgIHBhcmFtQXJyYXkucHVzaChFZGl0TW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0UHJvdmlkZXJGdW5jdGlvbiA9IChFZGl0TW9kZWwpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG4gICAgaWYgKEVkaXRNb2RlbC5Qcm92aWRlckF0dHJpYnV0ZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNob3dOb0F0dHJpYnV0ZXNFcnJvciA9IGZhbHNlO1xyXG4gICAgICByZXR1cm4gdGhpcy5Qcm92aWRlclNlcnZpY2UuRWRpdFByb3ZpZGVyKEVkaXRNb2RlbClcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dOb0F0dHJpYnV0ZXNFcnJvciA9IHRydWU7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vRGVsZXRlIHByb3ZpZGVyXHJcbiAgc2hvd0RlbGV0ZVByb3ZpZGVyTW9kYWwocHJvdmlkZXJJRDogc3RyaW5nKSB7XHJcbiAgICB0aGlzLmRlbGV0ZVByb3ZpZGVySWQgPSBwcm92aWRlcklEO1xyXG5cclxuICAgIC8vYXJyYXkgc2VudCB0byBzZXJ2aWNlIGZ1bmN0aW9uXHJcbiAgICBsZXQgcGFyYW1BcnJheTogYW55W10gPSBbXTtcclxuICAgIHBhcmFtQXJyYXkucHVzaCh0aGlzLmRlbGV0ZVByb3ZpZGVySWQpO1xyXG5cclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucyA9IG5ldyBDb25maXJtYXRpb25Nb2RhbE9wdGlvbnMoKTtcclxuICAgIHRoaXMuRGVsZXRlQ29uZmlybWF0aW9uT3B0aW9ucy5TZXJ2aWNlU3VibWl0RnVuY3Rpb24gPSB0aGlzLmRlbGV0ZVByb3ZpZGVyO1xyXG4gICAgdGhpcy5EZWxldGVDb25maXJtYXRpb25PcHRpb25zLlNlcnZpY2VTdWJtaXRNb2RlbCA9IHBhcmFtQXJyYXk7XHJcbiAgICB0aGlzLkRlbGV0ZUNvbmZpcm1hdGlvbk9wdGlvbnMuUGFnaW5nUmVmZXJlbmNlID0gdGhpcy5wYWdpbmdFbGVtZW50O1xyXG5cclxuICAgIHRoaXMuZGVsZXRlQ29udHJvbExvYWRlZCA9IHRydWU7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGhpcy5Db25maXJtYXRpb25Nb2RhbENvbnRyb2wuc2hvd01vZGFsKCk7XHJcbiAgICB9LCAyMDApO1xyXG4gIH1cclxuXHJcbiAgZGVsZXRlUHJvdmlkZXIgPSAoaWQ6IHN0cmluZyk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Qcm92aWRlclNlcnZpY2UuRGVsZXRlUHJvdmlkZXIoaWQpO1xyXG4gIH1cclxuXHJcbiAgLy9EZWZhdWx0IHByb3ZpZGVyXHJcbiAgc2hvd0RlZmF1bHRQcm92aWRlck1vZGFsKGRlZmF1bHRQcm92aWRlck1vZGFsKSB7XHJcbiAgICB0aGlzLkRlZmF1bHRQcm92aWRlcnMgPSBbXTtcclxuICAgIHRoaXMuUHJvdmlkZXJTZXJ2aWNlLkdldERlZmF1bHRQcm92aWRlcnMoKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgbGlzdCA9IHJlc3VsdCBhcyBhbnk7XHJcblxyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm0gPSBuZXcgRm9ybUdyb3VwKHt9KVxyXG4gICAgICB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm1PcHRpb25zID0gbmV3IEZvcm1PcHRpb25zKCk7XHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMuRm9ybUdyb3VwID0gdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtXHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0RGVmYXVsdFByb3ZpZGVyTW9kZWw7XHJcbiAgICAgIHRoaXMuRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnMuU2VydmljZVN1Ym1pdEZ1bmN0aW9uID0gdGhpcy5nZXREZWZhdWx0UHJvdmlkZXJGdW5jdGlvbjtcclxuICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJGb3JtT3B0aW9ucy5QYWdpbmdSZWZlcmVuY2UgPSB0aGlzLnBhZ2luZ0VsZW1lbnRcclxuXHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCBwcm92aWRlcjogYW55ID0gbGlzdFtpXTtcclxuXHJcbiAgICAgICAgbGV0IFByb3ZpZGVyT3B0aW9uID0gbmV3IFJhZGlvQnV0dG9uT3B0aW9ucygpO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLk5hbWUgPSBcInByb3ZpZGVyT3B0aW9uX1wiICsgcHJvdmlkZXIucHJvdmlkZXJUeXBlSXRlbUlEX0dVSUQ7XHJcbiAgICAgICAgUHJvdmlkZXJPcHRpb24uSGlkZUxhYmVsID0gdHJ1ZTtcclxuICAgICAgICBQcm92aWRlck9wdGlvbi5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuICAgICAgICBQcm92aWRlck9wdGlvbi5WaWV3VHlwZSA9IENvbnRyb2xMYXlvdXQuSG9yaXpvbnRhbDtcclxuICAgICAgICBsZXQgaXRlbXM6IFJhZGlvQnV0dG9uSXRlbVtdID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwcm92aWRlci5wcm92aWRlcnMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGxldCBwcm92aWRlckl0ZW0gPSBwcm92aWRlci5wcm92aWRlcnNbal07XHJcbiAgICAgICAgICBsZXQgaXRlbSA9IG5ldyBSYWRpb0J1dHRvbkl0ZW0oKTtcclxuICAgICAgICAgIGl0ZW0uVGV4dCA9IHByb3ZpZGVySXRlbS50ZXh0O1xyXG4gICAgICAgICAgaXRlbS5WYWx1ZSA9IHByb3ZpZGVySXRlbS52YWx1ZTtcclxuICAgICAgICAgIGl0ZW1zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICBQcm92aWRlck9wdGlvbi5JdGVtcyA9IGl0ZW1zO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHNlbGVjdGVkUHJvdmlkZXIgPSBwcm92aWRlci5wcm92aWRlcnMuZmlsdGVyKChpdGVtKSA9PiB7IHJldHVybiBpdGVtLnNlbGVjdGVkID09IHRydWU7IH0pWzBdO1xyXG4gICAgICAgIFByb3ZpZGVyT3B0aW9uLlZhbHVlID0ge1xyXG4gICAgICAgICAgVGV4dDogc2VsZWN0ZWRQcm92aWRlci50ZXh0LFxyXG4gICAgICAgICAgVmFsdWU6IHNlbGVjdGVkUHJvdmlkZXIudmFsdWVcclxuICAgICAgICB9O1xyXG5cclxuXHJcblxyXG4gICAgICAgIGxldCBkZWZQcm92aWRlciA9IHtcclxuICAgICAgICAgIE5hbWU6IHByb3ZpZGVyLnByb3ZpZGVyVHlwZUl0ZW1OYW1lLFxyXG4gICAgICAgICAgSUQ6IHByb3ZpZGVyLnByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlELFxyXG4gICAgICAgICAgUHJvdmlkZXJzT3B0aW9uOiBQcm92aWRlck9wdGlvblxyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5EZWZhdWx0UHJvdmlkZXJzLnB1c2goZGVmUHJvdmlkZXIpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW4oZGVmYXVsdFByb3ZpZGVyTW9kYWwpO1xyXG5cclxuICAgIH0pXHJcbiAgfVxyXG4gIGdldERlZmF1bHRQcm92aWRlck1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgUmVzdWx0TW9kZWwgPSB0aGlzLkRlZmF1bHRQcm92aWRlckZvcm0udmFsdWU7XHJcbiAgICBsZXQgZGVmYXVsdFByb3ZpZGVyc01vZGVsOiBEZWZhdWx0UHJvdmlkZXJNb2RlbFtdID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLkRlZmF1bHRQcm92aWRlcnMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHByb3ZpZGVySUQgPSB0aGlzLkRlZmF1bHRQcm92aWRlcnNbaV0uSUQ7XHJcbiAgICAgIGxldCBzZWxlY3RlZERlZlByb3ZpZGVySUQgPSBSZXN1bHRNb2RlbFtcInByb3ZpZGVyT3B0aW9uX1wiICsgcHJvdmlkZXJJRF07XHJcbiAgICAgIGxldCBkZWZQcm92aWRlTW9kZWw6IERlZmF1bHRQcm92aWRlck1vZGVsID0ge1xyXG4gICAgICAgIFByb3ZpZGVyVHlwZUl0ZW1JRF9HVUlEOiBwcm92aWRlcklELFxyXG4gICAgICAgIFNlbGVjdGVkUHJvdmlkZXJJRF9HVUlEOiBzZWxlY3RlZERlZlByb3ZpZGVySUQsXHJcbiAgICAgICAgUHJvdmlkZXJUeXBlSXRlbU5hbWU6IFwiXCIsXHJcbiAgICAgICAgUHJvdmlkZXJzOiBbXVxyXG4gICAgICB9O1xyXG4gICAgICBkZWZhdWx0UHJvdmlkZXJzTW9kZWwucHVzaChkZWZQcm92aWRlTW9kZWwpO1xyXG5cclxuICAgIH1cclxuICAgIHBhcmFtQXJyYXkucHVzaChkZWZhdWx0UHJvdmlkZXJzTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXREZWZhdWx0UHJvdmlkZXJGdW5jdGlvbiA9IChEZWZhdWx0UHJvdmlkZXJNb2RlbCk6IE9ic2VydmFibGU8YW55PiA9PiB7XHJcbiAgICByZXR1cm4gdGhpcy5Qcm92aWRlclNlcnZpY2UuU3VibWl0RGVmYXVsdFByb3ZpZGVycyhEZWZhdWx0UHJvdmlkZXJNb2RlbClcclxuICB9XHJcblxyXG4gIC8vR2VuZXJhdGUgcHJvdmlkZXIganNvblxyXG4gIGdlbmVyYXRlUHJvdmlkZXJKc29uKCkge1xyXG4gICAgdGhpcy5Qcm92aWRlclNlcnZpY2UuR2VuZXJhdGVQcm92aWRlckpzb24oKS5zdWJzY3JpYmUoKHJlc3VsdCkgPT4ge1xyXG4gICAgICBsZXQgRmlsZURUTyA9IHJlc3VsdCBhcyBhbnlcclxuICAgICAgY29uc3QgZmlsZSA9IG5ldyBCbG9iKFtGaWxlRFRPXSwgeyB0eXBlOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9KTtcclxuICAgICAgbGV0IGZpbGVOYW1lID0gdGhpcy51dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJzXCIpICsgXCIuanNvblwiO1xyXG4gICAgICBzYXZlQXMoZmlsZSwgZmlsZU5hbWUpO1xyXG4gICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XHJcbiAgICB9KVxyXG4gIH1cclxuICAvL1Rlc3QgRW1haWwgZnVuY3Rpb25zXHJcbiAgc2hvd1Rlc3RFbWFpbE1vZGFsKHByb3ZpZGVySUQ6IHN0cmluZywgcHJvdmlkZXJOYW1lOiBzdHJpbmcsIHRlc3RFTWFpbE1vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy50ZXN0RW1haWxQcm92aWRlcklkID0gcHJvdmlkZXJJRDtcclxuICAgIHRoaXMudGVzdEVtYWlsUHJvdmlkZXJOYW1lID0gcHJvdmlkZXJOYW1lO1xyXG5cclxuICAgIHRoaXMudGVzdEVtYWlsRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgdGhpcy50ZXN0RW1haWxGb3JtT3B0aW9ucyA9IG5ldyBGb3JtT3B0aW9ucygpO1xyXG4gICAgdGhpcy50ZXN0RW1haWxGb3JtT3B0aW9ucy5Gb3JtR3JvdXAgPSB0aGlzLnRlc3RFbWFpbEZvcm1cclxuICAgIHRoaXMudGVzdEVtYWlsRm9ybU9wdGlvbnMuR2V0TW9kZWxGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdEVtYWlsTW9kZWw7XHJcbiAgICB0aGlzLnRlc3RFbWFpbEZvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdEVtYWlsRnVuY3Rpb247XHJcblxyXG5cclxuICAgIHRoaXMuZW1haWxUbyA9IG5ldyBUZXh0Qm94T3B0aW9ucygpO1xyXG4gICAgdGhpcy5lbWFpbFRvLk5hbWUgPSBcImVtYWlsVG9cIjtcclxuICAgIHRoaXMuZW1haWxUby5MYWJlbEtleSA9IFwiVG9cIjtcclxuICAgIHRoaXMuZW1haWxUby5UeXBlID0gSW5wdXRUeXBlLkVtYWlsO1xyXG4gICAgdGhpcy5lbWFpbFRvLklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZW1haWxTdWJqZWN0ID0gbmV3IFRleHRCb3hPcHRpb25zKCk7XHJcbiAgICB0aGlzLmVtYWlsU3ViamVjdC5OYW1lID0gXCJlbWFpbFN1YmplY3RcIjtcclxuICAgIHRoaXMuZW1haWxTdWJqZWN0LkxhYmVsS2V5ID0gXCJFbWFpbFN1YmplY3RcIjtcclxuICAgIHRoaXMuZW1haWxTdWJqZWN0LlR5cGUgPSBJbnB1dFR5cGUuVGV4dDtcclxuICAgIHRoaXMuZW1haWxTdWJqZWN0LklzUmVxdWlyZWQgPSB0cnVlO1xyXG5cclxuICAgIHRoaXMuZW1haWxCb2R5ID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgdGhpcy5lbWFpbEJvZHkuTmFtZSA9IFwiZW1haWxCb2R5XCI7XHJcbiAgICB0aGlzLmVtYWlsQm9keS5MYWJlbEtleSA9IFwiRW1haWxCb2R5XCI7XHJcbiAgICB0aGlzLmVtYWlsQm9keS5Jc1JlcXVpcmVkID0gdHJ1ZTtcclxuXHJcbiAgICB0aGlzLm1vZGFsU2VydmljZS5vcGVuKHRlc3RFTWFpbE1vZGFsKTtcclxuICAgIHRoaXMudXRpbGl0eVNlcnZpY2Uuc3RvcEJsb2NrVUkoKTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RFbWFpbE1vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLnRlc3RFbWFpbEZvcm0udmFsdWU7XHJcbiAgICBsZXQgdGVzdEVtYWlsTW9kZWwgPSBuZXcgRW1haWxQcm92aWRlclRlc3Rlck1vZGVsKCk7XHJcblxyXG4gICAgdGVzdEVtYWlsTW9kZWwuUHJvdmlkZXJJRCA9IHRoaXMudGVzdEVtYWlsUHJvdmlkZXJJZDtcclxuICAgIHRlc3RFbWFpbE1vZGVsLlByb3ZpZGVyTmFtZSA9IHRoaXMudGVzdEVtYWlsUHJvdmlkZXJOYW1lO1xyXG4gICAgdGVzdEVtYWlsTW9kZWwuVG9FbWFpbCA9IHJlc3VsdE1vZGVsLmVtYWlsVG9cclxuICAgIHRlc3RFbWFpbE1vZGVsLlN1YmplY3QgPSByZXN1bHRNb2RlbC5lbWFpbFN1YmplY3Q7XHJcbiAgICB0ZXN0RW1haWxNb2RlbC5Cb2R5ID0gcmVzdWx0TW9kZWwuZW1haWxCb2R5O1xyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaCh0ZXN0RW1haWxNb2RlbCk7XHJcbiAgICByZXR1cm4gcGFyYW1BcnJheTtcclxuICB9XHJcblxyXG4gIGdldFRlc3RFbWFpbEZ1bmN0aW9uID0gKHRlc3RFbWFpbE1vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5UZXN0RW1haWwodGVzdEVtYWlsTW9kZWwpXHJcbiAgfVxyXG5cclxuICAvL1Rlc3QgU01TIGZ1bmN0aW9uc1xyXG4gIHNob3dUZXN0U01TTW9kYWwocHJvdmlkZXJJRDogc3RyaW5nLCBwcm92aWRlck5hbWU6IHN0cmluZywgdGVzdFNNU01vZGFsKSB7XHJcbiAgICB0aGlzLnV0aWxpdHlTZXJ2aWNlLnN0YXJ0QmxvY2tVSSgpO1xyXG4gICAgdGhpcy50ZXN0U01TUHJvdmlkZXJJZCA9IHByb3ZpZGVySUQ7XHJcbiAgICB0aGlzLnRlc3RTTVNQcm92aWRlck5hbWUgPSBwcm92aWRlck5hbWU7XHJcblxyXG4gICAgdGhpcy50ZXN0U01TRm9ybSA9IG5ldyBGb3JtR3JvdXAoe30pO1xyXG4gICAgdGhpcy50ZXN0U01TRm9ybU9wdGlvbnMgPSBuZXcgRm9ybU9wdGlvbnMoKTtcclxuICAgIHRoaXMudGVzdFNNU0Zvcm1PcHRpb25zLkZvcm1Hcm91cCA9IHRoaXMudGVzdFNNU0Zvcm1cclxuICAgIHRoaXMudGVzdFNNU0Zvcm1PcHRpb25zLkdldE1vZGVsRnVuY3Rpb24gPSB0aGlzLmdldFRlc3RTTVNNb2RlbDtcclxuICAgIHRoaXMudGVzdFNNU0Zvcm1PcHRpb25zLlNlcnZpY2VTdWJtaXRGdW5jdGlvbiA9IHRoaXMuZ2V0VGVzdFNNU0Z1bmN0aW9uO1xyXG5cclxuXHJcbiAgICB0aGlzLnNtc1RvID0gbmV3IFBob25lT3B0aW9ucygpO1xyXG4gICAgdGhpcy5zbXNUby5OYW1lID0gXCJzbXNUb1wiO1xyXG4gICAgdGhpcy5zbXNUby5MYWJlbEtleSA9IFwiVG9cIjtcclxuICAgIHRoaXMuc21zVG8uSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5zbXNCb2R5ID0gbmV3IFRleHRBcmVhT3B0aW9ucygpO1xyXG4gICAgdGhpcy5zbXNCb2R5Lk5hbWUgPSBcInNtc0JvZHlcIjtcclxuICAgIHRoaXMuc21zQm9keS5MYWJlbEtleSA9IFwiU01TXCI7XHJcbiAgICB0aGlzLnNtc0JvZHkuSXNSZXF1aXJlZCA9IHRydWU7XHJcblxyXG4gICAgdGhpcy5tb2RhbFNlcnZpY2Uub3Blbih0ZXN0U01TTW9kYWwpO1xyXG4gICAgdGhpcy51dGlsaXR5U2VydmljZS5zdG9wQmxvY2tVSSgpO1xyXG4gIH1cclxuXHJcbiAgZ2V0VGVzdFNNU01vZGVsID0gKCkgPT4ge1xyXG4gICAgbGV0IHBhcmFtQXJyYXk6IGFueVtdID0gW107XHJcbiAgICBsZXQgcmVzdWx0TW9kZWwgPSB0aGlzLnRlc3RTTVNGb3JtLnZhbHVlO1xyXG4gICAgbGV0IHRlc3RTTVNNb2RlbCA9IG5ldyBTTVNQcm92aWRlclRlc3Rlck1vZGVsKCk7XHJcblxyXG4gICAgbGV0IGludGVybmF0aW9uYWxOdW1iZXI6IHN0cmluZyA9IG51bGw7XHJcbiAgICBpZiAocmVzdWx0TW9kZWwuc21zVG8gIT0gbnVsbCkge1xyXG4gICAgICBpbnRlcm5hdGlvbmFsTnVtYmVyID0gcmVzdWx0TW9kZWwuc21zVG8uaW50ZXJuYXRpb25hbE51bWJlciBhcyBzdHJpbmc7XHJcbiAgICAgIGludGVybmF0aW9uYWxOdW1iZXIgPSBpbnRlcm5hdGlvbmFsTnVtYmVyLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcclxuICAgIH1cclxuXHJcbiAgICB0ZXN0U01TTW9kZWwuUHJvdmlkZXJJRCA9IHRoaXMudGVzdFNNU1Byb3ZpZGVySWQ7XHJcbiAgICB0ZXN0U01TTW9kZWwuUHJvdmlkZXJOYW1lID0gdGhpcy50ZXN0U01TUHJvdmlkZXJOYW1lO1xyXG4gICAgdGVzdFNNU01vZGVsLlRvTW9iaWxlTnVtYmVyID0gaW50ZXJuYXRpb25hbE51bWJlclxyXG4gICAgdGVzdFNNU01vZGVsLk1lc3NhZ2UgPSByZXN1bHRNb2RlbC5zbXNCb2R5O1xyXG5cclxuICAgIHBhcmFtQXJyYXkucHVzaCh0ZXN0U01TTW9kZWwpO1xyXG4gICAgcmV0dXJuIHBhcmFtQXJyYXk7XHJcbiAgfVxyXG5cclxuICBnZXRUZXN0U01TRnVuY3Rpb24gPSAodGVzdFNNU01vZGVsKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuICAgIHJldHVybiB0aGlzLlByb3ZpZGVyU2VydmljZS5UZXN0U01TKHRlc3RTTVNNb2RlbClcclxuICB9XHJcbiAgLy9PbiBkZXN0cm95XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlcXVlc3RIYW5kbGVyU2VydmljZS5kZXN0cm95SGFuZGxlcigpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiIsIjxibG9jay11aT48L2Jsb2NrLXVpPlxyXG48IS0tIFBhZ2UgQ29udGVudCAtLT5cclxuPGRpdiBjbGFzcz1cImNvbnRhaW5lci1mbHVpZFwiPlxyXG4gIDxkaXYgKm5nSWY9XCJTaG93UGFnZUNvbnRlbnRcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJjYXJkIGNhcmQtY3VzdG9tLWhcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImNhcmQtaGVhZGVyIGJvcmRlci0wIHB0LTVcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10aXRsZSBhbGlnbi1pdGVtcy1zdGFydCBmbGV4LWNvbHVtblwiICpuZ0lmPVwiSXNGaWx0ZXJMb2FkZWRcIj5cclxuICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICAgIDwhLS0oT25DaGFuZ2UpPVwic2VhcmNoQ2xpZW50U2lkZSgkZXZlbnQpXCIgLS0+XHJcbiAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwic2VhcmNoVGV4dEJveFwiIFtncm91cF09XCJQcm92aWRlckZvcm1cIj48L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgIDwvZm9ybT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY2FyZC10b29sYmFyXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpNZW51IC0tPlxyXG4gICAgICAgICAgPGRpdiBuZ2JEcm9wZG93biBjbGFzcz1cImQtaW5saW5lLWJsb2NrXCIgW25nU3R5bGVdPVwieydkaXNwbGF5JzogU2hvd1BhZ2VDb250ZW50PT10cnVlPydibG9jayc6J25vbmUnfVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJsb2FkTGlzdHMoKVwiIG5nYkRyb3Bkb3duVG9nZ2xlIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1saWdodC1wcmltYXJ5IG1lLTNcIiBpZD1cIkZpbHRlcnNEcm9wZG93blwiIHRpdGxlPVwiRmlsdGVyXCI+XHJcbiAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsdGVyIG1lLTFcIj48L2k+XHJcbiAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRmlsdGVyXCIpfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiIG5nYkRyb3Bkb3duTWVudSBhcmlhLWxhYmVsbGVkYnk9XCJGaWx0ZXJzRHJvcGRvd25cIiBjbGFzcz1cIiBmaWx0ZXItY29udGFpbmVyIG1lbnUgbWVudS1zdWIgbWVudS1zdWItZHJvcGRvd24gbWVudS1jb2x1bW4gbWVudS1yb3VuZGVkIG1lbnUtZ3JheS04MDAgbWVudS1zdGF0ZS1iZy1saWdodC1wcmltYXJ5ICB3LTI1MHB4IHctbWQtNTAwcHggZnctYm9sZCBweS0zIFwiPlxyXG4gICAgICAgICAgICAgIDxmb3JtIFtmb3JtR3JvdXBdPVwiUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHgtNyBweS01XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItMTBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPEJCU0YtRHJvcGRvd25MaXN0ICNwcm92aWRlclR5cGVzRERMIFtvcHRpb25zXT1cInByb3ZpZGVyVHlwZXNGaWx0ZXJPcHRpb25cIiBbZ3JvdXBdPVwiUHJvdmlkZXJGb3JtXCI+PC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbGctMTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0xMFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgI3NvcnRpbmdGaWx0ZXJEREwgW29wdGlvbnNdPVwic29ydGluZ0ZpbHRlck9wdGlvblwiIFtncm91cF09XCJQcm92aWRlckZvcm1cIj48L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnkgcHYtcmVzZXQgYnRuLXNtXCIgZD1cImFwcGx5RmlsdGVyc0J0blwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVzZXRGaWx0ZXJzKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJlc2V0XCIpfX1cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICA8L2Zvcm0+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8YnV0dG9uIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiAoY2xpY2spPVwiZ2VuZXJhdGVQcm92aWRlckpzb24oKVwiIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zIGJuc2lnaHRzLWJ0bi1leHBvcnRcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtZmlsZS1leHBvcnQgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiR2VuZXJhdGVQcm92aWRlckpzb25cIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGl0bGU9J3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWxlY3REZWZhdWx0UHJvdmlkZXJcIiknIGNsYXNzPVwiYnRuIGJ0bi1zbSBidG4tbGlnaHQtcHJpbWFyeSBtZS0zIFwiIChjbGljayk9XCJzaG93RGVmYXVsdFByb3ZpZGVyTW9kYWwoRGVmYXVsdFByb3ZpZGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLWhhbmQtcG9pbnRlciBtZS0xXCI+PC9pPlxyXG4gICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWxlY3REZWZhdWx0UHJvdmlkZXJcIil9fVxyXG4gICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiB0aXRsZT0ndXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFkZFwiKScgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5XCIgKGNsaWNrKT1cInNob3dBZGRQcm92aWRlck1vZGFsKEFkZFByb3ZpZGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLXBsdXMgbWUtMVwiPjwvaT5cclxuICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWRkXCIpfX1cclxuICAgICAgICAgIDwvYnV0dG9uPiAgICAgICAgPCEtLSBlbmQ6Ok1lbnUgLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGVuZDo6SGVhZGVyIC0tPlxyXG4gICAgICA8IS0tIGJlZ2luOjpCb2R5IC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1ib2R5IHB5LTNcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxyXG4gICAgICAgICAgPCEtLSBiZWdpbjo6VGFibGUgLS0+XHJcbiAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBhbGlnbi1taWRkbGUgdGFibGUtcm93LWRhc2hlZCBmcy02IGd5LTUgZGF0YVRhYmxlIG5vLWZvb3RlclwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTmFtZVwiKX19PC90aD5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3RhdHVzXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJEZWZhdWx0XCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgaWQ9XCJsaXN0aW5nQ29udGFpbmVyXCIgKm5nRm9yPVwibGV0IHByb3ZpZGVyR3JvdXAgb2YgY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdFwiIGNsYXNzPVwiZnctYm9sZCB0ZXh0LWdyYXktNjAwIGJvcmRlci0wXCI+XHJcblxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvdmlkZXIgb2YgcHJvdmlkZXJHcm91cC5wcm92aWRlcnNcIj5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtZGFya1wiPnt7cHJvdmlkZXIucHJvdmlkZXJOYW1lfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj57e3Byb3ZpZGVyLmRlc2NyaXB0aW9ufX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiICpuZ0lmPVwicHJvdmlkZXIuaXNSdW5uaW5nO2Vsc2Ugb3RoZXJfY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlJ1bm5pbmdcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjb3RoZXJfY29udGVudD5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiU3RvcHBlZFwiKX19XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtc3VjY2VzcyBmdy1ib2xkZXJcIiAqbmdJZj1cInByb3ZpZGVyLmlzRGVmYXVsdDtlbHNlIGRlZmF1bHRfbm9cIj5cclxuICAgICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJZZXNcIil9fVxyXG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdF9ubz5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImJhZGdlIGJhZGdlLWxpZ2h0IGZ3LWJvbGRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiTm9cIil9fVxyXG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtYnV0dG9uIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51XCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1saWdodCBidG4tYWN0aXZlLWxpZ2h0LXByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmEgZmEtZWxsaXBzaXMtaFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8bWF0LW1lbnUgI21lbnU9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz1cImRyb3AtaXRlbSBweC0zXCIgbmdiRHJvcGRvd25JdGVtIChjbGljayk9XCJzaG93RWRpdFByb3ZpZGVyTW9kYWwocHJvdmlkZXIuaURfR1VJRCwgRWRpdFByb3ZpZGVyTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiIGlkPVwiYnRuUmVzZXRQYXNzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzaG93RGVsZXRlUHJvdmlkZXJNb2RhbChwcm92aWRlci5pRF9HVUlEKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3AtbGluayBweC0zXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiRGVsZXRlXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8YSAqbmdJZj1cInByb3ZpZGVyLmlzRU1haWwgJiYgcHJvdmlkZXIuaXNSdW5uaW5nXCIgbmdiRHJvcGRvd25JdGVtIGNsYXNzPVwiZHJvcC1pdGVtIHB4LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNob3dUZXN0RW1haWxNb2RhbChwcm92aWRlci5pRF9HVUlELHByb3ZpZGVyLnByb3ZpZGVyTmFtZSxUZXN0RW1haWxNb2RhbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wLWxpbmsgcHgtM1wiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RFbWFpbFwiKX19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgICAgICAgPGEgKm5nSWY9XCJwcm92aWRlci5pc1NNUyAmJiBwcm92aWRlci5pc1J1bm5pbmdcIiBuZ2JEcm9wZG93bkl0ZW0gY2xhc3M9XCJkcm9wLWl0ZW0gcHgtM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwic2hvd1Rlc3RTTVNNb2RhbChwcm92aWRlci5pRF9HVUlELHByb3ZpZGVyLnByb3ZpZGVyTmFtZSxUZXN0U01TTW9kYWwpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcC1saW5rIHB4LTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJUZXN0U01TXCIpfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgICAgPHRyICpuZ0lmPVwicHJvdmlkZXJHcm91cC5wcm92aWRlcnMubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgICAgPHRib2R5ICpuZ0lmPVwiY2xpZW50U2lkZVBhZ2luZ1Jlc3VsdC5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FyZC1mb290ZXIgYm9yZGVyLTBcIj5cclxuICAgICAgICA8QkJTRi1QYWdpbmcgKEl0ZW1zKT1cInNldFByb3ZpZGVyTGlzdFJlc3VsdCgkZXZlbnQpXCIgKm5nSWY9XCJJc0ZpbHRlckxvYWRlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlByb3ZpZGVyUGFnaW5nXCIgW2dyb3VwXT1cIlByb3ZpZGVyRm9ybVwiICNQcm92aWRlclBhZ2luZ1ZpZXdFbGVtZW50PlxyXG4gICAgICAgIDwvQkJTRi1QYWdpbmc+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgIDwvZGl2PlxyXG5cclxuICA8L2Rpdj5cclxuXHJcbiAgPCEtLWVuZDo6UHJvdmlkZXJzIGxpc3QtLT5cclxuPC9kaXY+XHJcblxyXG48IS0tIEFkZCBNb2RhbCAtLT5cclxuPG5nLXRlbXBsYXRlICNBZGRQcm92aWRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBZGRcIil9fSB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlclwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiQWRkUHJvdmlkZXJGb3JtT3B0aW9uc1wiPlxyXG5cclxuICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJBZGROYW1lXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgPEJCU0YtVGV4dEFyZWEgW29wdGlvbnNdPVwiQWRkRGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgIDwvQkJTRi1UZXh0QXJlYT5cclxuICAgICAgPEJCU0YtRHJvcGRvd25MaXN0IFtvcHRpb25zXT1cIkFkZE9yZ2FuaXphdGlvbk9wdGlvbnNcIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgIDwvQkJTRi1Ecm9wZG93bkxpc3Q+XHJcbiAgICAgIDxCQlNGLURyb3Bkb3duTGlzdCBbb3B0aW9uc109XCJBZGRUeXBlT3B0aW9uc1wiIFtncm91cF09XCJBZGRQcm92aWRlckZvcm1cIiAoT25DaGFuZ2UpPVwic2V0QWRkUHJvdmlkZXJBdHRyaWJ1dGVzKCRldmVudClcIj5cclxuICAgICAgPC9CQlNGLURyb3Bkb3duTGlzdD5cclxuICAgICAgPGRpdiAqbmdJZj1cIklzQXR0cmlidXRlc0xvYWRlZFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJBdHRyaWJ1dGVOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlckF0dHJpYnV0ZVZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmNyeXB0ZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy0xNTBweFwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkFjdGlvblwiKX19PC90aD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICA8L3RoZWFkPlxyXG4gICAgICAgICAgICA8dGJvZHkgY2xhc3M9XCJmdy1ib2xkIHRleHQtZ3JheS02MDAgYm9yZGVyLTBcIj5cclxuICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMF1cIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMV1cIiBbZ3JvdXBdPVwiQWRkUHJvdmlkZXJGb3JtXCI+XHJcbiAgICAgICAgICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtQ2hlY2tCb3ggW29wdGlvbnNdPVwib3B0aW9uWzJdXCIgW2dyb3VwXT1cIkFkZFByb3ZpZGVyRm9ybVwiIChPbkNoYW5nZSk9XCJlbmNyeXB0ZWRDaGFuZ2UoJGV2ZW50LG9wdGlvbix0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlQXR0cmlidXRlKG9wdGlvbix0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiIGZhIGZhLXRyYXNoIGhpZGRlblwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvaT5cclxuICAgICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdJZj1cIlByb3ZpZGVyQXR0cmlidXRlc09wdGlvbnMubGVuZ3RoID09IDBcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPVwiNFwiPlxyXG4gICAgICAgICAgICAgICAgICA8bGliLWVtcHR5LWRhdGE+PC9saWItZW1wdHktZGF0YT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHI+XHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93Tm9BdHRyaWJ1dGVzRXJyb3JcIiBjb2xzcGFuPVwiNFwiIGNsYXNzPVwidGV4dC1kYW5nZXJcIj5cclxuICAgICAgICAgICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQXRMZWFzdE9uZUl0ZW1SZXF1aXJlZFwiKX19XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGJvZHk+XHJcbiAgICAgICAgICA8L3RhYmxlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInRleHQtY2VudGVyIHB0LTdcIj5cclxuICAgICAgICA8YnV0dG9uICNDbG9zZVByb3ZpZGVyTW9kYWwgaWQ9XCJDbG9zZUFkZFByb3ZpZGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCJcclxuICAgICAgICAgICAgICAgIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlNhdmVMYWJlbFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG5cclxuPCEtLSBFZGl0IG1vZGVsIC0tPlxyXG48bmctdGVtcGxhdGUgI0VkaXRQcm92aWRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj5cclxuICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFZGl0XCIpfX0ge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cIkVkaXRQcm92aWRlckZvcm1PcHRpb25zXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cIkVkaXROYW1lXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1UZXh0Qm94PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJFZGl0RGVzY3JpcHRpb25cIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1Ecm9wZG93bkxpc3QgW29wdGlvbnNdPVwiRWRpdFR5cGVPcHRpb25zXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIiAoT25DaGFuZ2UpPVwic2V0RWRpdFByb3ZpZGVyQXR0cmlidXRlcygkZXZlbnQpXCI+XHJcbiAgICAgICAgICA8L0JCU0YtRHJvcGRvd25MaXN0PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0YWJsZS1yZXNwb25zaXZlXCI+XHJcbiAgICAgICAgICA8IS0tIGJlZ2luOjpUYWJsZSAtLT5cclxuICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIGFsaWduLW1pZGRsZSB0YWJsZS1yb3ctZGFzaGVkIGZzLTYgZ3ktNSBkYXRhVGFibGUgbm8tZm9vdGVyIHRhYmxlLXctY29udHJvbFwiPlxyXG4gICAgICAgICAgICA8dGhlYWQ+XHJcbiAgICAgICAgICAgICAgPHRyIGNsYXNzPVwidGV4dC1zdGFydCB0ZXh0LWdyYXktNDAwIGZ3LWJvbGRlciBmcy03IHRleHQtdXBwZXJjYXNlIGdzLTBcIj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cIm1pbi13LTE1MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiUHJvdmlkZXJBdHRyaWJ1dGVOYW1lXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJQcm92aWRlckF0dHJpYnV0ZVZhbHVlXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwibWluLXctMTUwcHhcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJFbmNyeXB0ZWRcIil9fTwvdGg+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJtaW4tdy01MHB4XCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQWN0aW9uXCIpfX08L3RoPlxyXG4gICAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgICAgIDwvdGhlYWQ+XHJcbiAgICAgICAgICAgIDx0Ym9keSBjbGFzcz1cImZ3LWJvbGQgdGV4dC1ncmF5LTYwMCBib3JkZXItMFwiPlxyXG4gICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIEVkaXRQcm92aWRlckF0dHJpYnV0ZXNPcHRpb25zO2xldCBpPWluZGV4O1wiPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPEJCU0YtVGV4dEJveCBbb3B0aW9uc109XCJvcHRpb25bMF1cIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICA8dGQ+XHJcbiAgICAgICAgICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwib3B0aW9uWzFdXCIgW2dyb3VwXT1cIkVkaXRQcm92aWRlckZvcm1cIj5cclxuICAgICAgICAgICAgICAgICAgPC9CQlNGLVRleHRCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgPHRkPlxyXG4gICAgICAgICAgICAgICAgICA8QkJTRi1DaGVja0JveCBbb3B0aW9uc109XCJvcHRpb25bMl1cIiBbZ3JvdXBdPVwiRWRpdFByb3ZpZGVyRm9ybVwiIChPbkNoYW5nZSk9XCJlbmNyeXB0ZWRDaGFuZ2UoJGV2ZW50LG9wdGlvbix0cnVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICA8L0JCU0YtQ2hlY2tCb3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDx0ZD5cclxuICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9XCJidG4gYnRuLWljb24gYnRuLWxpZ2h0LWRhbmdlciBidG4tc21cIiAoY2xpY2spPVwiZGVsZXRlQXR0cmlidXRlKG9wdGlvbixmYWxzZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cIiBmYSBmYS10cmFzaCBoaWRkZW5cIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L2k+XHJcbiAgICAgICAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgICA8dHIgKm5nSWY9XCJFZGl0UHJvdmlkZXJBdHRyaWJ1dGVzT3B0aW9ucy5sZW5ndGggPT0gMFwiPlxyXG4gICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49XCI0XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsaWItZW1wdHktZGF0YT48L2xpYi1lbXB0eS1kYXRhPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgICAgICAgIDx0cj5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dOb0F0dHJpYnV0ZXNFcnJvclwiIGNvbHNwYW49XCI0XCIgY2xhc3M9XCJ0ZXh0LWRhbmdlclwiPlxyXG4gICAgICAgICAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJBdExlYXN0T25lSXRlbVJlcXVpcmVkXCIpfX1cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgPC90cj5cclxuICAgICAgICAgICAgPC90Ym9keT5cclxuICAgICAgICAgIDwvdGFibGU+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gI0Nsb3NlRWRpdFByb3ZpZGVyTW9kYWwgaWQ9XCJDbG9zZUVkaXRQcm92aWRlck1vZGFsXCIgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIiBjbGFzcz1cImJ0biBidG4tbGlnaHQgbWUtMyBidG4tc21cIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuPCEtLWRlbGV0ZSBNb2RhbC0tPlxyXG48QkJTRi1Db25maXJtYXRpb25Nb2RhbCAqbmdJZj1cImRlbGV0ZUNvbnRyb2xMb2FkZWRcIiBbb3B0aW9uc109XCJEZWxldGVDb25maXJtYXRpb25PcHRpb25zXCIgaWQ9XCJDb25maXJtYXRpb25Nb2RhbENvbnRyb2xcIiAjQ29uZmlybWF0aW9uTW9kYWxDb250cm9sPjwvQkJTRi1Db25maXJtYXRpb25Nb2RhbD5cclxuXHJcbjwhLS1EZWZhdWx0IFByb3ZpZGVyICBNb2RhbC0tPlxyXG48bmctdGVtcGxhdGUgI0RlZmF1bHRQcm92aWRlck1vZGFsIGxldC1tb2RhbD5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtaGVhZGVyIHBiLTAgYm9yZGVyLTAganVzdGlmeS1jb250ZW50LWVuZFwiPlxyXG4gICAgPGg1IGNsYXNzPVwibW9kYWwtdGl0bGVcIiBpZD1cImV4YW1wbGVNb2RhbExhYmVsXCI+PC9oNT5cclxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgY2xhc3M9XCJidG4gYnRuLXNtIGJ0bi1pY29uIGJ0bi1hY3RpdmUtY29sb3ItcHJpbWFyeVwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdmctaWNvbiBzdmctaWNvbi0xXCI+XHJcbiAgICAgICAgPHNwYW4gW2lubGluZVNWR109XCInLi9zcmMvYXNzZXRzL2ltYWdlcy9hcnIwNjEuc3ZnJ1wiPjwvc3Bhbj5cclxuICAgICAgPC9zcGFuPlxyXG4gICAgPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHkgc2Nyb2xsLXkgcHgtMTAgcHgtbGctMTUgcHQtMCBwYi0xNVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cIm1iLTEzIHRleHQtY2VudGVyXCI+XHJcbiAgICAgIDxoMSBjbGFzcz1cIm1iLTNcIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTZWxlY3REZWZhdWx0UHJvdmlkZXJcIil9fTwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwiRGVmYXVsdFByb3ZpZGVyRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIiAqbmdGb3I9XCJsZXQgZGVmUHJvdmlkZXIgb2YgRGVmYXVsdFByb3ZpZGVycztsZXQgaT1pbmRleDtcIj5cclxuICAgICAgICAgIDxoMyBjbGFzcz1cInRleHQtbXV0ZWQgbWItNCBmdy1ib2xkZXN0XCI+e3tkZWZQcm92aWRlci5OYW1lfX08L2gzPlxyXG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJoaWRkZW5cIiB2YWx1ZT1cInt7ZGVmUHJvdmlkZXIuSUR9fVwiIC8+XHJcbiAgICAgICAgICA8QkJTRi1SYWRpb0J1dHRvbiBbb3B0aW9uc109XCJkZWZQcm92aWRlci5Qcm92aWRlcnNPcHRpb25cIiBbZ3JvdXBdPVwiRGVmYXVsdFByb3ZpZGVyRm9ybVwiPjwvQkJTRi1SYWRpb0J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiAjQ2xvc2VEZWZhdWx0UHJvdmlkZXJNb2RhbCBpZD1cIkNsb3NlRGVmYXVsdFByb3ZpZGVyTW9kYWxcIiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBidG4tc20gbWUtMyBcIiBkYXRhLWRpc21pc3M9XCJtb2RhbFwiIChjbGljayk9XCJtb2RhbC5kaXNtaXNzKClcIj5cclxuICAgICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIkNhbmNlbExhYmVsXCIpfX1cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJzdWJtaXRcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBidG4tc21cIj57e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJTYXZlTGFiZWxcIil9fTwvYnV0dG9uPlxyXG5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L0JCU0YtRm9ybT5cclxuICA8L2Rpdj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuXHJcbjwhLS1UZXN0IEVtYWlsIE1vZGFsLS0+XHJcbjxuZy10ZW1wbGF0ZSAjVGVzdEVtYWlsTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RFbWFpbFNlcnZpY2VQcm92aWRlclwiKX19XHJcbiAgICAgIDwvaDE+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxCQlNGLUZvcm0gW29wdGlvbnNdPVwidGVzdEVtYWlsRm9ybU9wdGlvbnNcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTJcIj5cclxuICAgICAgICAgIDxCQlNGLVRleHRCb3ggW29wdGlvbnNdPVwiZW1haWxUb1wiIFtncm91cF09XCJ0ZXN0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0Qm94IFtvcHRpb25zXT1cImVtYWlsU3ViamVjdFwiIFtncm91cF09XCJ0ZXN0RW1haWxGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEJveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJlbWFpbEJvZHlcIiBbZ3JvdXBdPVwidGVzdEVtYWlsRm9ybVwiPlxyXG4gICAgICAgICAgPC9CQlNGLVRleHRBcmVhPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWNlbnRlciBwdC03XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiAoY2xpY2spPVwibW9kYWwuZGlzbWlzcygpXCIgY2xhc3M9XCJidG4gYnRuLWxpZ2h0IG1lLTMgYnRuLXNtXCI+XHJcbiAgICAgICAgICB7e3V0aWxpdHlTZXJ2aWNlLmdldFJlc291cmNlVmFsdWUoXCJDYW5jZWxMYWJlbFwiKX19XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwic3VibWl0XCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgYnRuLXNtXCI+e3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiVGVzdFwiKX19PC9idXR0b24+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9CQlNGLUZvcm0+XHJcbiAgPC9kaXY+XHJcbjwvbmctdGVtcGxhdGU+XHJcblxyXG48IS0tVGVzdCBTTVMgTW9kYWwtLT5cclxuPG5nLXRlbXBsYXRlICNUZXN0U01TTW9kYWwgbGV0LW1vZGFsPlxyXG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1oZWFkZXIgcGItMCBib3JkZXItMCBqdXN0aWZ5LWNvbnRlbnQtZW5kXCI+XHJcbiAgICA8aDUgY2xhc3M9XCJtb2RhbC10aXRsZVwiIGlkPVwiZXhhbXBsZU1vZGFsTGFiZWxcIj48L2g1PlxyXG4gICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgZGF0YS1kaXNtaXNzPVwibW9kYWxcIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIiBjbGFzcz1cImJ0biBidG4tc20gYnRuLWljb24gYnRuLWFjdGl2ZS1jb2xvci1wcmltYXJ5XCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN2Zy1pY29uIHN2Zy1pY29uLTFcIj5cclxuICAgICAgICA8c3BhbiBbaW5saW5lU1ZHXT1cIicuL3NyYy9hc3NldHMvaW1hZ2VzL2FycjA2MS5zdmcnXCI+PC9zcGFuPlxyXG4gICAgICA8L3NwYW4+XHJcbiAgICA8L2J1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwibW9kYWwtYm9keSBzY3JvbGwteSBweC0xMCBweC1sZy0xNSBwdC0wIHBiLTE1XCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwibWItMTMgdGV4dC1jZW50ZXJcIj5cclxuICAgICAgPGgxIGNsYXNzPVwibWItM1wiPlxyXG4gICAgICAgIHt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RTTVNTZXJ2aWNlUHJvdmlkZXJcIil9fVxyXG4gICAgICA8L2gxPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8QkJTRi1Gb3JtIFtvcHRpb25zXT1cInRlc3RTTVNGb3JtT3B0aW9uc1wiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxyXG4gICAgICAgICAgPEJCU0YtUGhvbmUgW29wdGlvbnNdPVwic21zVG9cIiBbZ3JvdXBdPVwidGVzdFNNU0Zvcm1cIj5cclxuICAgICAgICAgIDwvQkJTRi1QaG9uZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XHJcbiAgICAgICAgICA8QkJTRi1UZXh0QXJlYSBbb3B0aW9uc109XCJzbXNCb2R5XCIgW2dyb3VwXT1cInRlc3RTTVNGb3JtXCI+XHJcbiAgICAgICAgICA8L0JCU0YtVGV4dEFyZWE+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwidGV4dC1jZW50ZXIgcHQtN1wiPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGRhdGEtZGlzbWlzcz1cIm1vZGFsXCIgKGNsaWNrKT1cIm1vZGFsLmRpc21pc3MoKVwiIGNsYXNzPVwiYnRuIGJ0bi1saWdodCBtZS0zIGJ0bi1zbVwiPlxyXG4gICAgICAgICAge3t1dGlsaXR5U2VydmljZS5nZXRSZXNvdXJjZVZhbHVlKFwiQ2FuY2VsTGFiZWxcIil9fVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDxidXR0b24gdHlwZT1cInN1Ym1pdFwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IGJ0bi1zbVwiPnt7dXRpbGl0eVNlcnZpY2UuZ2V0UmVzb3VyY2VWYWx1ZShcIlRlc3RcIil9fTwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQkJTRi1Gb3JtPlxyXG4gIDwvZGl2PlxyXG48L25nLXRlbXBsYXRlPlxyXG5cclxuIl19
|