@ieeesa-npm/events-and-meetings 0.1.8 → 0.2.0
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/esm2022/lib/assets/constants.json +1 -1
- package/esm2022/lib/components/create-modify-event/create-modify-event.component.mjs +2 -1
- package/esm2022/lib/events-and-meetings.component.mjs +3 -3
- package/fesm2022/ieeesa-npm-events-and-meetings.mjs +4 -3
- package/fesm2022/ieeesa-npm-events-and-meetings.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -647,6 +647,7 @@ export class CreateOrModifyEventComponent {
|
|
|
647
647
|
next: (res) => {
|
|
648
648
|
if (res?.status) {
|
|
649
649
|
this.isEventCreated = true;
|
|
650
|
+
this.eventActionType = EventAndMeetingFunctionType.EDIT;
|
|
650
651
|
this.isAddMeetingDisabled = false;
|
|
651
652
|
if (this.addMeetingButton)
|
|
652
653
|
this.addMeetingButton.disabled = false;
|
|
@@ -1068,4 +1069,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
1068
1069
|
}], formCancel: [{
|
|
1069
1070
|
type: Output
|
|
1070
1071
|
}] } });
|
|
1071
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZGlmeS1ldmVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtbW9kaWZ5LWV2ZW50L2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZlbnRzLWFuZC1tZWV0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1ldmVudC9jcmVhdGUtbW9kaWZ5LWV2ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osY0FBYyxFQUdkLGVBQWUsRUFFZixlQUFlLEVBRWYsMEJBQTBCLEVBRTFCLGtCQUFrQixFQUNsQixvQkFBb0IsR0FFckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBGLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBSVQsU0FBUyxHQUNWLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUd4RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFLaEUsT0FBTyxFQUFFLDJCQUEyQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFJOUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0NBQXNDLENBQUM7QUFDM0UsT0FBTyxPQUFPLE1BQU0sUUFBUSxDQUFDO0FBRTdCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNwRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saURBQWlELENBQUM7Ozs7Ozs7QUFFaEYsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLE1BQU0sVUFBVSxHQUFHO0lBQ2pCLGNBQWMsRUFBRSxlQUFlO0lBQy9CLEtBQUssRUFBRSxlQUFlO0lBQ3RCLFFBQVEsRUFBRSxVQUFVO0NBQ3JCLENBQUM7QUFFRjs7Ozs7R0FLRztBQVNILE1BQU0sT0FBTyw0QkFBNEI7SUErRHZDO0lBQ0UsMENBQTBDO0lBQ25DLE1BQWlCO0lBQ3hCLDBDQUEwQztJQUNsQyx3QkFBa0Q7SUFDMUQsMENBQTBDO0lBQ25DLFlBQTJCO0lBQ2xDLDBDQUEwQztJQUNsQyx5QkFBb0Q7SUFDNUQsMENBQTBDO0lBQ25DLE1BQWM7UUFSZCxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBRWhCLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFFbkQsaUJBQVksR0FBWixZQUFZLENBQWU7UUFFMUIsOEJBQXlCLEdBQXpCLHlCQUF5QixDQUEyQjtRQUVyRCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBcEV2QixhQUFRLEdBQUcsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNsQyw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFdBQVcsQ0FBQztRQUM3QixlQUFVLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxlQUFlLENBQUM7UUFDN0MsZ0JBQVcsR0FBRyxJQUFJLENBQUMsU0FBUyxFQUFFLG1CQUFtQixDQUFDO1FBQ2xELGVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQztRQUMxQyxrQkFBYSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsWUFBWSxFQUFFLE9BQU8sQ0FBQztRQUN4RCxvQkFBZSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQztRQUMzRCxxQkFBZ0IsR0FBRyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztRQUM3RCx3QkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQztRQUNsRCxvQkFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsZUFBZSxDQUFDO1FBQ25ELDJCQUFzQixHQUFHLElBQUksQ0FBQztRQUM5QixhQUFRLEdBQWEsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUNoRSxhQUFRLEdBQWMsRUFBRSxDQUFDO1FBRXpCLHNCQUFpQixHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7UUFDbkMsZUFBVSxHQUFtQixFQUFFLENBQUM7UUFDaEMsMEJBQXFCLEdBQWEsRUFBRSxDQUFDO1FBQ3JDLHFDQUFnQyxHQUFHLEtBQUssQ0FBQztRQUV6QyxtQkFBYyxHQUFxQixJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQztRQUV2RCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxXQUFNLEdBQW1CLEVBQUUsQ0FBQztRQUc1QixnQ0FBMkIsR0FBRywyQkFBMkIsQ0FBQztRQUkxRCxvQkFBZSxHQUFvQjtZQUNqQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdEQsZUFBZSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsZUFBZTtZQUNsRCxZQUFZLEVBQUUsQ0FBQztTQUNoQixDQUFDO1FBR0YsbUJBQWMsR0FBRztZQUNmLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLFlBQVksRUFBRSxLQUFLO1lBQ25CLGtCQUFrQixFQUFFLElBQUk7U0FDekIsQ0FBQztRQUVGLG1CQUFjLEdBQUcsS0FBSyxDQUFDO1FBQ3ZCLHVCQUFrQixHQUFhLEVBQUUsQ0FBQztRQUVsQyx5QkFBb0IsR0FBRyxLQUFLLENBQUM7UUFDN0IscUJBQWdCLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUdsRCx3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsMkJBQXNCLEdBQ3BCLElBQUksQ0FBQyxTQUFTLEVBQUUsMEJBQTBCO1lBQ3hDLEVBQUUsMkNBQTJDLENBQUM7UUFjaEQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCO1lBQ3BDLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUNuRCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxnQkFBZ0I7WUFDcEMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUNuQyxRQUFRLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUN6QixRQUFRLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7Ozs7OztPQU9HO0lBQ0gsYUFBYTtRQUtYLElBQUksSUFBSSxDQUFDLHdCQUF3QixFQUFFLGlDQUFpQyxFQUFFLEVBQUU7WUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsd0JBQXdCLEVBQUUscUJBQXFCLENBQ25FLElBQUksQ0FBQyx1QkFBdUIsQ0FDN0IsQ0FBQztZQUNGLE9BQU8sSUFBSSxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsQ0FBQztTQUN0QztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWM7WUFDaEMsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FDMUMsY0FBYyxDQUFDLGNBQWMsQ0FDOUIsQ0FBQztRQUNKLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsR0FBRztZQUM3QixlQUFlLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLGVBQWU7WUFDN0QsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLGdCQUFnQjtZQUMvRCxhQUFhLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLGFBQWE7WUFDekQsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLE1BQU07U0FDcEMsQ0FBQztRQUNGLElBQUksQ0FBQyx3QkFBd0IsRUFBRSx3QkFBd0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxlQUFlLENBQUM7UUFDdEUsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7UUFDN0IsSUFDRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVTtZQUN4QywyQkFBMkIsQ0FBQyxJQUFJLEVBQ2hDO1lBQ0EsSUFBSSxDQUFDLGVBQWUsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLG9CQUFvQixDQUFDO2dCQUN4QixPQUFPLEVBQUU7b0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRTtvQkFDM0QsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVk7b0JBQ2pELGNBQWMsRUFBRSxJQUFJO29CQUNwQixJQUFJLEVBQUUsQ0FBQztvQkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxjQUFjO2lCQUMzQzthQUNGLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsd0JBQXdCLEVBQUUsZUFBZSxDQUFDLENBQUM7U0FDdkU7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLGNBQWMsQ0FDdEUsY0FBYyxDQUFDLGNBQWMsQ0FDOUIsQ0FBQztRQUNGLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztRQUMzRCxJQUNFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVO1lBQ3RDLDJCQUEyQixDQUFDLE1BQU07WUFDcEMsSUFBSSxDQUFDLGVBQWUsRUFDcEI7WUFDQSxJQUFJLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3hCLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGtCQUFrQixFQUFFO29CQUMzRCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWTtvQkFDakQsY0FBYyxFQUFFLElBQUk7b0JBQ3BCLElBQUksRUFBRSxDQUFDO29CQUNQLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGNBQWM7aUJBQzNDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGVBQWUsR0FBRywyQkFBMkIsQ0FBQyxJQUFJLENBQUM7WUFDeEQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxlQUFlLENBQUMsQ0FBQztZQUN0RSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztTQUM1QjtRQUNELElBQUksQ0FBQyx3QkFBd0IsRUFBRSx3QkFBd0I7WUFDckQsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRTtZQUN0QixJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUM5QixJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsd0JBQXdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3RFO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gseUJBQXlCO1FBQ3ZCLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxZQUFZO1lBQ2hDLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWTtnQkFDM0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHlCQUF5QixDQUNyRCxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FDOUIsQ0FBQztJQUNSLENBQUM7SUFFRDs7O09BR0c7SUFDSCxzQkFBc0I7UUFDcEIsSUFBSSxDQUFDLFlBQVksR0FBRztZQUNsQjtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxTQUFTLEVBQUUsZUFBZSxDQUFDLE1BQU07Z0JBQ2pDLE9BQU8sRUFBRSxFQUFFO2dCQUNYLFVBQVUsRUFBRSxlQUFlLENBQUMsTUFBTTtnQkFDbEMsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRTtnQkFDL0MsY0FBYyxFQUFFLElBQUk7YUFDckI7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxTQUFTLEVBQUUsZUFBZSxDQUFDLElBQUk7Z0JBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUk7Z0JBQ2pDLFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtnQkFDaEMsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFDckQsY0FBYyxFQUFFLElBQUk7YUFDckI7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxTQUFTLEVBQUUsZUFBZSxDQUFDLElBQUk7Z0JBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLGdCQUFnQjtnQkFDN0MsVUFBVSxFQUFFLGVBQWUsQ0FBQyxJQUFJO2dCQUNoQyw4REFBOEQ7Z0JBQzlELFFBQVEsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFLENBQ3pCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQ3JDLFdBQVcsQ0FBQyxhQUFhLENBQzFCLE9BQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQzFDLFdBQVcsQ0FBQyxVQUFVLENBQ3ZCLEVBQUU7Z0JBQ0wsY0FBYyxFQUFFLElBQUk7YUFDckI7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxTQUFTLEVBQUUsVUFBVSxFQUFFLGNBQWM7Z0JBQ3JDLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLGNBQWM7Z0JBQzNDLFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtnQkFDaEMsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUN6QixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUNyQyxXQUFXLENBQUMsYUFBYSxDQUMxQixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUMxQyxXQUFXLENBQUMsVUFBVSxDQUN2QixFQUFFO2dCQUNMLGNBQWMsRUFBRSxJQUFJO2FBQ3JCO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsU0FBUyxFQUFFLFVBQVUsRUFBRSxLQUFLO2dCQUM1QixPQUFPLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLO2dCQUNsQyxVQUFVLEVBQUUsZUFBZSxDQUFDLElBQUk7Z0JBQ2hDLDhEQUE4RDtnQkFDOUQsUUFBUSxFQUFFLENBQUMsT0FBWSxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxTQUFTLEVBQUU7YUFDbkQ7WUFDRDtnQkFDRSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxTQUFTLEVBQUUsVUFBVSxFQUFFLFFBQVE7Z0JBQy9CLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLFFBQVE7Z0JBQ3JDLFVBQVUsRUFBRSxlQUFlLENBQUMsSUFBSTtnQkFDaEMsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLGVBQWUsRUFBRTthQUN6RDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxDQUFDO2dCQUNMLFNBQVMsRUFBRSxlQUFlLENBQUMsT0FBTztnQkFDbEMsT0FBTyxFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUUsTUFBTTtnQkFDbkMsVUFBVSxFQUFFLGVBQWUsQ0FBQyxPQUFPO2dCQUNuQyw4REFBOEQ7Z0JBQzlELFFBQVEsRUFBRSxDQUFDLE9BQVksRUFBRSxFQUFFLENBQUMsR0FBRyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUMvQyxpQkFBaUIsRUFBRSxJQUFJO2FBQ3hCO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFDRDs7O09BR0c7SUFDSCxxQkFBcUI7UUFDbkIsSUFBSSxDQUFDLDZCQUE2QixHQUFHO1lBQ25DLFNBQVMsRUFBRTtnQkFDVDtvQkFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsWUFBWTtvQkFDOUMsUUFBUSxFQUFFO3dCQUNSOzRCQUNFLElBQUksRUFBRSxlQUFlLENBQUMsTUFBTTs0QkFDNUIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVksR0FBRyxHQUFHOzRCQUNsRCxXQUFXLEVBQUUsY0FBYzs0QkFDM0IsZUFBZSxFQUFFLElBQUksQ0FBQyxNQUFNOzRCQUM1QixVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDOzRCQUNqQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWTs0QkFDeEQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsWUFBWTs0QkFDM0QsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsWUFBWTs0QkFDMUQsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTOzRCQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLEdBQUc7NEJBQy9DLFdBQVcsRUFBRSxXQUFXOzRCQUN4QixVQUFVLEVBQUU7Z0NBQ1YsVUFBVSxDQUFDLFFBQVE7Z0NBQ25CLFVBQVUsQ0FBQyxPQUFPLENBQ2hCLG1DQUFtQyxDQUFDLCtCQUErQixDQUNwRTtnQ0FDRCxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDOzZCQUNqRDs0QkFDRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVOzRCQUN4QyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUzs0QkFDckQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2hFLG1CQUFtQixFQUNqQixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGtCQUFrQjs0QkFDL0QsZUFBZSxFQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsaUJBQWlCOzRCQUM1RCxVQUFVLEVBQUUsS0FBSzs0QkFDakIsYUFBYSxFQUFFLElBQUk7NEJBQ25CLFFBQVEsRUFBRSxJQUFJOzRCQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUzs0QkFDeEQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUzt5QkFDeEQ7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxNQUFNOzRCQUM1QixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxHQUFHLEdBQUc7NEJBQy9DLFdBQVcsRUFBRSxXQUFXOzRCQUN4QixlQUFlLEVBQUUsSUFBSSxDQUFDLFVBQVU7NEJBQ2hDLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxTQUFTOzRCQUNyRCxjQUFjLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsU0FBUzs0QkFDeEQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUzs0QkFDeEQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUzt5QkFDeEQ7cUJBQ0Y7aUJBQ0Y7Z0JBQ0Q7b0JBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxFQUFFLFdBQVc7b0JBQzdDLFFBQVEsRUFBRTt3QkFDUjs0QkFDRSxJQUFJLEVBQUUsZUFBZSxDQUFDLElBQUk7NEJBQzFCLFVBQVUsRUFBRTtnQ0FDVixZQUFZLEVBQUUsWUFBWSxDQUFDLHFCQUFxQjtnQ0FDaEQsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsR0FBRyxHQUFHO2dDQUMvQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxJQUFJOzZCQUN0RDs0QkFDRCxXQUFXLEVBQUUsV0FBVzs0QkFDeEIsa0JBQWtCLEVBQUUsS0FBSzs0QkFDekIsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQzs0QkFDakMsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVE7NEJBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUzs0QkFDeEQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsU0FBUzt5QkFDeEQ7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxJQUFJOzRCQUMxQixVQUFVLEVBQUU7Z0NBQ1YsWUFBWSxFQUFFLFlBQVksQ0FBQyxxQkFBcUI7Z0NBQ2hELEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPLEdBQUcsR0FBRztnQ0FDN0MsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsSUFBSTs2QkFDdEQ7NEJBQ0QsV0FBVyxFQUFFLFNBQVM7NEJBQ3RCLGtCQUFrQixFQUFFLEtBQUs7NEJBQ3pCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ2pDLGVBQWUsRUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsMEJBQTBCOzRCQUM5RCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTs0QkFDaEUsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPOzRCQUN0RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxPQUFPO3lCQUN0RDt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsZUFBZSxDQUFDLE1BQU07NEJBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEdBQUcsR0FBRzs0QkFDOUMsV0FBVyxFQUFFLFVBQVU7NEJBQ3ZCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUM7NEJBQ2pDLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxRQUFROzRCQUNwRCxvQkFBb0IsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUTs0QkFDaEUsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFROzRCQUN2RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxRQUFROzRCQUN0RCxlQUFlLEVBQUUsSUFBSSxDQUFDLFNBQVM7NEJBQy9CLFFBQVEsRUFBRSxJQUFJO3lCQUNmO3FCQUNGO2lCQUNGO2dCQUNEO29CQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxRQUFRO29CQUMxQyxRQUFRLEVBQUU7d0JBQ1I7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTOzRCQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsT0FBTzs0QkFDdkMsV0FBVyxFQUFFLFNBQVM7NEJBQ3RCLFVBQVUsRUFBRTtnQ0FDVixVQUFVLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLE9BQU8sQ0FBQztnQ0FDL0QsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQzs2QkFDbEQ7NEJBQ0QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU87NEJBQ25ELFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVU7NEJBQ3pDLGVBQWUsRUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGVBQWU7NEJBQzFELFVBQVUsRUFBRSxLQUFLOzRCQUNqQixhQUFhLEVBQUUsSUFBSTs0QkFDbkIsUUFBUSxFQUFFLElBQUk7NEJBQ2QsbUJBQW1CLEVBQ2pCLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTzs0QkFDcEQsU0FBUyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPOzRCQUN0RCxpQkFBaUIsRUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxPQUFPO3lCQUN0RDt3QkFDRDs0QkFDRSxJQUFJLEVBQUUsZUFBZSxDQUFDLE1BQU07NEJBQzVCLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxPQUFPOzRCQUN2QyxXQUFXLEVBQUUsU0FBUzs0QkFDdEIsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLE9BQU87NEJBQ25ELFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTzs0QkFDdEQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsT0FBTzs0QkFDckQsZUFBZSxFQUFFLElBQUksQ0FBQyxTQUFTOzRCQUMvQixRQUFRLEVBQUUsSUFBSTt5QkFDZjtxQkFDRjtpQkFDRjtnQkFDRDtvQkFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsU0FBUztvQkFDM0MsUUFBUSxFQUFFO3dCQUNSOzRCQUNFLElBQUksRUFBRSxlQUFlLENBQUMsUUFBUTs0QkFDOUIsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWEsR0FBRyxHQUFHOzRCQUNuRCxXQUFXLEVBQUUsZUFBZTs0QkFDNUIsb0JBQW9CLEVBQUUsQ0FBQzs0QkFDdkIsZUFBZSxFQUFFLElBQUksQ0FBQyxjQUFjOzRCQUNwQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGFBQWE7NEJBQzVELGlCQUFpQixFQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGFBQWE7NEJBQzNELG9CQUFvQixFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFROzRCQUNoRSxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDO3lCQUNsQztxQkFDRjtpQkFDRjtnQkFDRDtvQkFDRSxNQUFNLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLEVBQUUsTUFBTTtvQkFDeEMsUUFBUSxFQUFFO3dCQUNSOzRCQUNFLElBQUksRUFBRSxlQUFlLENBQUMsS0FBSzs0QkFDM0IsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGFBQWE7NEJBQzdDLFdBQVcsRUFBRSxlQUFlOzRCQUM1QixVQUFVLEVBQUU7Z0NBQ1YsVUFBVSxDQUFDLE9BQU8sQ0FDaEIsbUNBQW1DLENBQUMsYUFBYSxDQUNsRDtnQ0FDRCxVQUFVLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDOzZCQUNoRDs0QkFDRCxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTOzRCQUN2QyxlQUFlLEVBQ2IsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxxQkFBcUI7NEJBQ2hFLFdBQVcsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxhQUFhOzRCQUN6RCxtQkFBbUIsRUFDakIsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxhQUFhOzRCQUMxRCxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGFBQWE7NEJBQzVELGlCQUFpQixFQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGFBQWE7eUJBQzVEO3dCQUNEOzRCQUNFLElBQUksRUFBRSxlQUFlLENBQUMsU0FBUzs0QkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGNBQWM7NEJBQzlDLFdBQVcsRUFBRSxnQkFBZ0I7NEJBQzdCLFVBQVUsRUFBRTtnQ0FDVixJQUFJLENBQUMsd0JBQXdCLENBQUMsdUJBQXVCLENBQ25ELElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLHNCQUFzQixDQUNoRDs2QkFDRjs0QkFDRCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsY0FBYzs0QkFDMUQsYUFBYSxFQUFFLElBQUk7NEJBQ25CLFFBQVEsRUFBRSxJQUFJOzRCQUNkLGNBQWMsRUFDWixJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSx3QkFBd0I7NEJBQ3pELG1CQUFtQixFQUNqQixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLGNBQWM7NEJBQzNELGVBQWUsRUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLHNCQUFzQjs0QkFDakUsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLHNCQUFzQjs0QkFDOUQseUJBQXlCLEVBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsdUJBQXVCOzRCQUMzQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLGNBQWM7NEJBQzdELGlCQUFpQixFQUNmLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFFLGNBQWM7eUJBQzdEO3FCQUNGO2lCQUNGO2dCQUNEO29CQUNFLE1BQU0sRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sRUFBRSxXQUFXO29CQUM3QyxRQUFRLEVBQUU7d0JBQ1I7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxTQUFTOzRCQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsV0FBVzs0QkFDM0MsV0FBVyxFQUFFLGFBQWE7NEJBQzFCLFVBQVUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQzs0QkFDL0QsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVzs0QkFDekMsZUFBZSxFQUNiLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsbUJBQW1COzRCQUM5RCxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsV0FBVzs0QkFDdkQsYUFBYSxFQUFFLElBQUk7NEJBQ25CLFFBQVEsRUFBRSxJQUFJOzRCQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsV0FBVzs0QkFDMUQsaUJBQWlCLEVBQ2YsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsaUJBQWlCLEVBQUUsV0FBVzt5QkFDMUQ7d0JBQ0Q7NEJBQ0UsSUFBSSxFQUFFLGVBQWUsQ0FBQyxRQUFROzRCQUM5QixXQUFXLEVBQUUsbUJBQW1COzRCQUNoQyxlQUFlLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxpQkFBaUI7NEJBQ3BELGNBQWMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxpQkFBaUI7NEJBQ2hFLFNBQVMsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsaUJBQWlCOzRCQUNoRSxpQkFBaUIsRUFDZixJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxpQkFBaUIsRUFBRSxpQkFBaUI7eUJBQ2hFO3FCQUNGO2lCQUNGO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUNEOzs7T0FHRztJQUNILFlBQVk7UUFDVixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhO1lBQ3hDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxxQkFBcUIsQ0FBQztRQUNyRCxJQUFJLENBQUMsTUFBTSxFQUFFLGFBQWEsQ0FDeEIsSUFBSSxDQUFDLHdCQUF3QixFQUFFLGFBQWEsRUFBRSxFQUFFLGlCQUFpQixDQUNsRSxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7T0FHRztJQUNILGFBQWE7UUFDWCxJQUFJLENBQUMsd0JBQXdCO2FBQzFCLGFBQWEsRUFBRTthQUNmLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO2dCQUNqQixRQUFRLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFO29CQUNwQyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQzt3QkFDcEIsRUFBRSxFQUFFLFNBQVMsRUFBRSxhQUFhO3dCQUM1QixJQUFJLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLFdBQVc7cUJBQy9DLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQ3BELFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsSUFBSSxDQUFDLFVBQVUsRUFDZixJQUFJLENBQUMsb0JBQW9CLENBQzFCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO3FCQUN0QyxHQUFHLENBQUMsV0FBVyxDQUFDO29CQUNqQixFQUFFLFFBQVEsQ0FDUixJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FDbkIsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUNaLFNBQVMsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLGlCQUFpQixFQUFFLFNBQVMsQ0FDckQsQ0FDRixDQUFDO1lBQ04sQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxvQkFBb0IsQ0FBQyxPQUFvQztRQUN2RCxJQUFJLENBQUMsd0JBQXdCO2FBQzFCLG9CQUFvQixDQUFDLE9BQU8sQ0FBQzthQUM3QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRTtnQkFDakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ25CLElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWTtvQkFDL0IsUUFBUSxFQUFFLElBQUksRUFBRSxZQUFZLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUM7Z0JBQ3hELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztnQkFDbkQsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUM1RCxJQUFJLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDO29CQUN0QyxJQUFJLENBQUMsbUJBQW1CO3dCQUN0QixJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRSxVQUFVOzRCQUN4QyxHQUFHOzRCQUNILElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVc7NEJBQ3pDLEdBQUc7NEJBQ0gsSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDOztvQkFFMUMsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQyxtQkFBbUI7d0JBQ2pELENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVU7d0JBQzdCLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDO1lBQ2pELENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFlBQVksQ0FBQyxVQUF1QjtRQUNsQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsaUNBQWlDLENBQzdELFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FDakQsQ0FBQztRQUNGLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUMzQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLE1BQU0sS0FBSyxVQUFVLENBQUMsT0FBTyxDQUN4RCxDQUFDO1FBQ0YsSUFDRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlELEVBQUUsVUFBVSxFQUNkO1lBQ0EsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU87Z0JBQzVFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxXQUFXLENBQUMsRUFBRSxLQUFLLENBQUM7U0FDNUM7UUFDRCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDO1FBQ2pDLElBQUksSUFBSSxDQUFDLGdCQUFnQjtZQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ25FLENBQUM7SUFDRDs7O09BR0c7SUFDSCxTQUFTO1FBQ1AsSUFBSSxDQUFDLHdCQUF3QjthQUMxQixTQUFTLEVBQUU7YUFDWCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFxQixFQUFFLEVBQUU7Z0JBQzlCLEdBQUcsRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsS0FBZ0IsRUFBRSxFQUFFO29CQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQzt3QkFDaEIsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPO3dCQUNsQixJQUFJLEVBQUUsR0FBRyxLQUFLLEVBQUUsU0FBUyxNQUFNLEtBQUssRUFBRSxZQUFZLEVBQUU7cUJBQ3JELENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUMsQ0FBQztnQkFDSCxJQUFJLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQ3BELGNBQWMsRUFDZCxpQkFBaUIsRUFDakIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQ3RELElBQUksQ0FBQyxvQkFBb0IsQ0FDMUIsQ0FBQztnQkFDRixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7cUJBQ3RDLEdBQUcsQ0FBQyxjQUFjLENBQUM7b0JBQ3BCLEVBQUUsUUFBUSxDQUNSLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUNmLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQ3hELENBQ0YsQ0FBQztZQUNOLENBQUM7WUFDRCw4REFBOEQ7WUFDOUQsS0FBSyxFQUFFLENBQUMsS0FBVSxFQUFFLEVBQUU7Z0JBQ3BCLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxVQUF1QjtRQUNsQyxJQUNFLFVBQVUsQ0FBQyxLQUFLLENBQ2QsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxLQUFLLENBQ2hFLEVBQ0Q7WUFDQSxJQUNFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxVQUFVO2dCQUN4QywyQkFBMkIsQ0FBQyxNQUFNLEVBQ2xDO2dCQUNBLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDOUI7aUJBQU0sSUFDTCxJQUFJLENBQUMsd0JBQXdCLENBQUMsVUFBVTtnQkFDeEMsMkJBQTJCLENBQUMsSUFBSSxFQUNoQztnQkFDQSxJQUFJLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2FBQzVCO1NBQ0Y7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsVUFBdUI7UUFDakMsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN6RCxNQUFNLHVCQUF1QixHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQy9ELE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUQsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM1RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FDbEUsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FDdkMsV0FBVyxDQUFDLG9CQUFvQixDQUNqQyxDQUNGLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsb0JBQW9CLENBQ2hFLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLENBQzNFLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUE2QjtZQUNuRCxPQUFPLEVBQUU7Z0JBQ1AsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVM7Z0JBQ3ZDLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLEVBQUUsRUFBRTtnQkFDM0MsT0FBTyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxlQUFlLElBQUksSUFBSTtnQkFDOUQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxFQUFFO2dCQUM1QyxTQUFTLEVBQUUsU0FBUztnQkFDcEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSTtnQkFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUMxQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsYUFBYTtnQkFDaEQsVUFBVSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDcEQsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLElBQUksRUFBRTtnQkFDbkQsUUFBUSxFQUFFLG9CQUFvQixFQUFFLE9BQU87Z0JBQ3ZDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTO2dCQUN4QyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVztnQkFDdEQsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLElBQUksRUFBRTthQUNqRTtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsd0JBQXdCO2FBQzFCLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQzthQUMvQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7b0JBQzNCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUM7b0JBQ2xDLElBQUksSUFBSSxDQUFDLGdCQUFnQjt3QkFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQztvQkFDbEUsSUFBSSxHQUFHLEVBQUUsSUFBSTt3QkFDWCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsa0JBQWtCLENBQy9DLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUN0QixDQUFDO29CQUNKLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxvQkFBb0IsQ0FBQzt3QkFDbEQsU0FBUyxFQUFFLFNBQVM7d0JBQ3BCLE9BQU8sRUFBRSxPQUFPO3FCQUNqQixDQUFDLENBQUM7b0JBQ0gsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixTQUFTLEVBQUUsT0FBTyxFQUNsQixrQkFBa0IsQ0FBQyxPQUFPLENBQUMsVUFBVTt3QkFDbkMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsQ0FDakQsQ0FBQztpQkFDSDtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUF3QixFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7Ozs7O09BTUc7SUFDSCxnQkFBZ0IsQ0FBQyxTQUFvQixFQUFFLE9BQTBCO1FBQy9ELElBQUksQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO1lBQzdCLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLGFBQWEsRUFBRSxLQUFLO1NBQ3JCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsdUJBQXVCLENBQ3JCLFlBQTRCLEVBQzVCLGlCQUFpQixHQUFHLEtBQUs7UUFFekIsSUFBSSxZQUFZLEVBQUUsSUFBSSxFQUFFLFFBQVEsQ0FBQyxRQUFRLENBQUM7WUFBRSxPQUFPO1FBQ25ELElBQUksWUFBWSxFQUFFLEVBQUUsS0FBSyxZQUFZLENBQUMsWUFBWSxFQUFFO1lBQ2xELElBQUksQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksWUFBWSxFQUFFLE9BQU8sSUFBSSxNQUFNLEVBQUUsRUFBRSxLQUFLLFlBQVksQ0FBQyxFQUFFO29CQUN6RCxNQUFNLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztxQkFDcEIsSUFBSSxDQUFDLFlBQVksRUFBRSxPQUFPLElBQUksTUFBTSxFQUFFLEVBQUUsS0FBSyxZQUFZLENBQUMsRUFBRTtvQkFDL0QsTUFBTSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQ3BELGVBQWUsRUFDZixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLGNBQWMsRUFDbkIsSUFBSSxDQUFDLG9CQUFvQixDQUMxQixDQUFDO1NBQ0g7YUFBTSxJQUNMLFlBQVksRUFBRSxFQUFFLEtBQUssWUFBWSxDQUFDLGFBQWE7WUFDL0MsWUFBWSxFQUFFLEVBQUUsS0FBSyxZQUFZLENBQUMsdUJBQXVCLEVBQ3pEO1lBQ0EsSUFBSSxDQUFDLGNBQWM7Z0JBQ2pCLEVBQUUsTUFBTSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLFlBQVksQ0FBQyxZQUFZLENBQUM7aUJBQzdELEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUN0QixJQUFJLFlBQVksRUFBRSxPQUFPO29CQUFFLE9BQU8sQ0FBQyxjQUFjLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxDQUFDO3FCQUM5RCxJQUFJLElBQUksQ0FBQywyQkFBMkIsRUFBRTtvQkFDekMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLENBQUM7Z0JBQzNDLE9BQU8sY0FBYyxDQUFDO1lBQ3hCLENBQUMsQ0FBQyxDQUFDO1lBQ0wsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixDQUNwRCxlQUFlLEVBQ2YsaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxjQUFjLEVBQ25CLElBQUksQ0FBQyxvQkFBb0IsQ0FDMUIsQ0FBQztTQUNIO1FBQ0QsSUFBSSxDQUFDLHNCQUFzQixHQUFHLEtBQUssQ0FBQztRQUNwQyxJQUFJLFlBQVksRUFBRSxPQUFPLEVBQUU7WUFDekIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBWSxDQUFDLENBQUM7U0FDN0Q7YUFBTTtZQUNMLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUM1RCxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxLQUFLLFlBQVksQ0FBQyxFQUFFLENBQ3JDLENBQUM7U0FDSDtRQUVELElBQUksQ0FBQyxnQ0FBZ0M7WUFDbkMsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FDdkMsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLFVBQVUsQ0FBQyxPQUFPLENBQ2xFLENBQUM7UUFDSixJQUNFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLEtBQUssQ0FBQztZQUN2QyxJQUFJLENBQUMsZ0NBQWdDLEVBQ3JDO1lBQ0EsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQ0FBaUMsQ0FDN0QsSUFBSSxDQUFDLCtCQUErQixDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUMzRSxDQUFDO1FBQ0YsSUFBSSxDQUFDLG9CQUFvQixHQUFHLGlCQUFpQixJQUFJLEtBQUssQ0FBQztRQUN2RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0I7WUFDdkIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxpQkFBaUIsSUFBSSxLQUFLLENBQUM7SUFDaEUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxrQ0FBa0MsQ0FBQyxJQUFpQjtRQUNsRCxJQUFJLENBQUMsK0JBQStCLEdBQUcsSUFBSSxDQUFDO0lBQzlDLENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsZ0JBQWdCLENBQUMsSUFBaUQ7UUFDaEUsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3hCLEtBQUssVUFBVTtnQkFDYixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQzFELElBQUksRUFDSixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztnQkFDRixJQUFJLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQ3BELFVBQVUsRUFDVixpQkFBaUIsRUFDakIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsb0JBQW9CLENBQzFCLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssU0FBUztnQkFDWixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxhQUFhLENBQzFELElBQUksRUFDSixJQUFJLENBQUMsZ0JBQWdCLEVBQ3JCLElBQUksQ0FBQyxTQUFTLENBQ2YsQ0FBQztnQkFDRixJQUFJLENBQUMsd0JBQXdCLENBQUMsd0JBQXdCLENBQ3BELFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsSUFBSSxDQUFDLFNBQVMsRUFDZCxJQUFJLENBQUMsb0JBQW9CLENBQzFCLENBQUM7Z0JBQ0YsTUFBTTtZQUNSLEtBQUssY0FBYztnQkFDakIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsYUFBYSxDQUN2RCxJQUFJLEVBQ0osSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsTUFBTSxDQUNaLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLHdCQUF3QixDQUFDLHdCQUF3QixDQUNwRCxjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLG9CQUFvQixDQUMxQixDQUFDO2dCQUNGLE1BQU07U0FDVDtJQUNILENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsMkJBQTJCO1FBQ3pCLElBQUksY0FBYyxHQUFHLENBQUMsQ0FBQztRQUN2QixJQUFJLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFO1lBQzVDLElBQ0UsWUFBWSxFQUFFLEVBQUUsS0FBSyxZQUFZLENBQUMsWUFBWTtnQkFDOUMsQ0FBQyxZQUFZLEVBQUUsT0FBTztnQkFFdEIsY0FBYyxFQUFFLENBQUM7UUFDckIsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLGNBQWMsS0FBSyxJQUFJLENBQUMsY0FBYyxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUNEOzs7T0FHRztJQUNILG1CQUFtQjtRQUNqQixJQUFJLENBQUMsd0JBQXdCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFVBQVU7WUFDdEMsMkJBQTJCLENBQUMsTUFBTSxDQUFDO1FBQ3JDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFDckQsTUFBTSxhQUFhLEdBQUc7WUFDcEIsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsVUFBVTtZQUNyQyxhQUFhLEVBQUUsSUFBSTtZQUNuQixrQkFBa0IsRUFBRSxtQkFBbUI7WUFDdkMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1NBQzFCLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRTtZQUNqRCxJQUFJLEVBQUUsYUFBYTtZQUNuQixLQUFLLEVBQUUsTUFBTTtZQUNiLFVBQVUsRUFBRSxDQUFDLHFCQUFxQixFQUFFLHlCQUF5QixDQUFDO1lBQzlELFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxTQUFTO2FBQ1gsV0FBVyxFQUFFO2FBQ2IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyx3QkFBd0IsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvRCxJQUFJLENBQUMsb0JBQW9CLENBQUM7Z0JBQ3hCLE9BQU8sRUFBRTtvQkFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixFQUFFLGtCQUFrQixFQUFFO29CQUM1RCxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxLQUFLLEVBQUUsWUFBWTtvQkFDakQsY0FBYyxFQUFFLElBQUk7b0JBQ3BCLElBQUksRUFBRSxDQUFDO29CQUNQLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLGNBQWM7aUJBQzNDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILHlCQUF5QixDQUFDLFNBQW9CO1FBQzVDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztZQUN4QixPQUFPLEVBQUU7Z0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDM0QsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVk7Z0JBQ2pELGNBQWMsRUFBRSxJQUFJO2dCQUNwQixJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVMsR0FBRyxDQUFDO2dCQUM3QixJQUFJLEVBQUUsU0FBUyxDQUFDLFFBQVE7YUFDekI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUVILGdCQUFnQixDQUFDLE9BQWU7UUFDOUIsSUFBSSxDQUFDLHdCQUF3QjthQUMxQixlQUFlLENBQUMsT0FBTyxDQUFDO2FBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLEdBQUcsRUFBRSxFQUFFO2dCQUNaLElBQUksR0FBRyxFQUFFLE1BQU0sRUFBRTtvQkFDZixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxFQUFFLElBQUksQ0FBQztvQkFDbkMsSUFBSSxDQUFDLHdCQUF3QixFQUFFLG9CQUFvQixDQUNqRCxJQUFJLENBQUMsaUJBQWlCLENBQ3ZCLENBQUM7b0JBQ0YsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7aUJBQ25DO1lBQ0gsQ0FBQztZQUNELDhEQUE4RDtZQUM5RCxLQUFLLEVBQUUsQ0FBQyxLQUFVLEVBQUUsRUFBRTtnQkFDcEIsSUFBSSxDQUFDLHdCQUF3QixDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUNEOzs7T0FHRztJQUNILDBCQUEwQjtRQUN4QixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLGNBQWMsQ0FBQztZQUNwQixFQUFFLFFBQVEsQ0FDUixJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FDakIsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFLEtBQUssSUFBSSxDQUFDLGlCQUFpQixFQUFFLE9BQU8sQ0FDM0QsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUNQLENBQUM7UUFDSixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLFdBQVcsQ0FBQztZQUNqQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFDakIsRUFBRSxRQUFRLENBQ1IsSUFBSSxDQUFDLFVBQVUsRUFBRSxNQUFNLENBQ3JCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQzdELEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FDUCxDQUFDO1FBQ0osSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFDakIsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ2YsRUFBRSxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QyxHQUFHLENBQUMsVUFBVSxDQUFDO1lBQ2hCLEVBQUUsUUFBUSxDQUNSLElBQUksQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUNwQixDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxFQUFFLElBQUksS0FBSyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxDQUM5RCxDQUFDLENBQUMsQ0FBQyxDQUNMLENBQUM7UUFDSixJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLFNBQVMsQ0FBQztZQUNmLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUU7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7YUFBTSxJQUNMLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxpQkFBaUI7WUFDeEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLHNCQUFzQixFQUM3QztZQUNBLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3JELElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3REO2FBQU0sSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUU7WUFDbkQsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1lBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7YUFBTTtZQUNMLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUN0QyxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3REO1FBQ0QsSUFBSSxDQUFDLCtCQUErQixFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3RDLEdBQUcsQ0FBQyxlQUFlLENBQUM7WUFDckIsRUFBRSxRQUFRLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QyxHQUFHLENBQUMsU0FBUyxDQUFDO1lBQ2YsRUFBRSxRQUFRLENBQ1IsSUFBSSxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQ3BCLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQzNELENBQUMsQ0FBQyxDQUFDLENBQ0wsQ0FBQztRQUNKLElBQUksQ0FBQywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQzthQUN0QyxHQUFHLENBQUMsZUFBZSxDQUFDO1lBQ3JCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO1lBQ3RCLEVBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsR0FBRyxDQUFDLGFBQWEsQ0FBQztZQUNuQixFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQztJQUNyQyxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxTQUFTLENBQUMsVUFBdUI7UUFDL0IsTUFBTSxpQkFBaUIsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUN6RCxNQUFNLHVCQUF1QixHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQy9ELE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUM7UUFDNUQsTUFBTSxvQkFBb0IsR0FBRyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQztRQUM1RCxNQUFNLGtCQUFrQixHQUFHLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDO1FBQzFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxvQkFBb0IsQ0FDbEUsdUJBQXVCLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FDdkMsV0FBVyxDQUFDLG9CQUFvQixDQUNqQyxDQUNGLENBQUM7UUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUMsb0JBQW9CLENBQ2hFLHVCQUF1QixFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLG9CQUFvQixDQUFDLENBQzNFLENBQUM7UUFDRixNQUFNLGdCQUFnQixHQUE2QjtZQUNqRCxPQUFPLEVBQUU7Z0JBQ1AsU0FBUyxFQUFFLGlCQUFpQixFQUFFLFNBQVM7Z0JBQ3ZDLE9BQU8sRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsZUFBZSxJQUFJLElBQUk7Z0JBQzlELFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxTQUFTLENBQUMsRUFBRTtnQkFDMUMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFlBQVksRUFBRSxFQUFFO2dCQUM1QyxTQUFTLEVBQUUsU0FBUztnQkFDcEIsT0FBTyxFQUFFLE9BQU87Z0JBQ2hCLFFBQVEsRUFBRSx1QkFBdUIsRUFBRSxRQUFRLEVBQUUsSUFBSTtnQkFDakQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxFQUFFO2dCQUMxQyxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsYUFBYTtnQkFDaEQsVUFBVSxFQUFFLG9CQUFvQixFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDcEQsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoRSxpQkFBaUIsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNELFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxjQUFjLElBQUksRUFBRTtnQkFDbkQsUUFBUSxFQUFFLG9CQUFvQixFQUFFLE9BQU87Z0JBQ3ZDLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxTQUFTO2dCQUN4QyxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxFQUFFLEVBQUUsV0FBVztnQkFDdEQsaUJBQWlCLEVBQUUsb0JBQW9CLEVBQUUsaUJBQWlCLElBQUksRUFBRTthQUNqRTtTQUNGLENBQUM7UUFDRixJQUFJLENBQUMsd0JBQXdCO2FBQzFCLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQzthQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUM7WUFDVCxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLEdBQUcsRUFBRSxNQUFNLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLGdCQUFnQixDQUNuQixTQUFTLEVBQUUsT0FBTyxFQUNsQixnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsVUFBVTt3QkFDakMsSUFBSSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FDL0MsQ0FBQztpQkFDSDtZQUNILENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUF3QixFQUFFLEVBQUU7Z0JBQ2xDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7O09BR0c7SUFDSCw4REFBOEQ7SUFDOUQsa0JBQWtCLENBQUMsR0FBUTtRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLEdBQUcsQ0FBQztJQUM3QixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILG9CQUFvQixDQUFDLElBQVU7UUFDN0IsSUFBSSxJQUFJLEVBQUUsRUFBRSxLQUFLLGFBQWEsQ0FBQyxjQUFjO1lBQzNDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCw4REFBOEQ7SUFDOUQsbUNBQW1DLENBQUMsZ0JBQXFCO1FBQ3ZELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxFQUFFLENBQUM7UUFDN0IsSUFBSSxnQkFBZ0IsRUFBRSxTQUFTO1lBQzdCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxDQUFDLENBQUM7O1lBRTNELGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxDQUFDLE9BQWdCLEVBQUUsRUFBRTtnQkFDN0MsSUFBSSxPQUFPLEVBQUUsU0FBUztvQkFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDTCxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixDQUFDO1FBQzVFLE1BQU0sMkJBQTJCLEdBQUc7WUFDbEMsZUFBZSxFQUFFLGdCQUFnQixFQUFFLGVBQWU7WUFDbEQsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCO1lBQ3BELGFBQWEsRUFBRSxnQkFBZ0IsRUFBRSxhQUFhO1lBQzlDLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxNQUFNO1NBQ3JDLENBQUM7UUFDRixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQzVELElBQUksRUFBRSwyQkFBMkI7WUFDakMsU0FBUyxFQUFFLFFBQVE7WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUs7U0FDNUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFNBQVM7YUFDWCxXQUFXLEVBQUU7YUFDYixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFlLEVBQUUsRUFBRTtZQUM3QixJQUFJLE1BQU07Z0JBQUUsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsbUJBQW1CO1FBQ2pCLElBQUksQ0FBQyx3QkFBd0I7YUFDMUIsc0JBQXNCLENBQUM7WUFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxrQkFBa0I7U0FDakMsQ0FBQzthQUNELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLG9CQUFvQixDQUFDO29CQUN4QixPQUFPLEVBQUU7d0JBQ1AsT0FBTyxFQUFFLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxrQkFBa0IsRUFBRTt3QkFDM0QsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLFlBQVk7d0JBQ2pELGNBQWMsRUFBRSxJQUFJO3dCQUNwQixJQUFJLEVBQUUsQ0FBQzt3QkFDUCxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsRUFBRSxjQUFjO3FCQUMzQztpQkFDRixDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLFlBQVksRUFBRSxXQUFXLENBQUM7b0JBQzdCLE1BQU0sRUFBRSxRQUFRO29CQUNoQixPQUFPLEVBQ0wsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU07d0JBQzlCLElBQUksQ0FBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUTtvQkFDOUQsU0FBUyxFQUFFLFNBQVMsQ0FBQyxPQUFPO29CQUM1QixhQUFhLEVBQUUsSUFBSTtpQkFDcEIsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7SUFDRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDOytHQW5zQ1UsNEJBQTRCO21HQUE1Qiw0QkFBNEIsbUxBMEI1QixvQkFBb0IsZ0RDMUdqQyx3MUZBMkVBLGlxZkREWSxZQUFZLGlPQUFFLG9CQUFvQiwydkJBQUUsa0JBQWtCOzs0RkFNckQsNEJBQTRCO2tCQVJ4QyxTQUFTOytCQUNFLDRCQUE0QixXQUM3QixDQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxjQUNyRCxJQUFJLGlCQUdELGlCQUFpQixDQUFDLElBQUk7Z09BNEJKLG9CQUFvQjtzQkFBcEQsU0FBUzt1QkFBQyxvQkFBb0I7Z0JBQ3JCLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgT25EZXN0cm95LFxyXG4gIE9uSW5pdCxcclxuICBPdXRwdXQsXHJcbiAgVmlld0NoaWxkLFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7XHJcbiAgQWxpZ25UeXBlLFxyXG4gIENhbGVuZGFyVHlwZSxcclxuICBDaGVja2JveE9wdGlvbixcclxuICBGb3JtR3JpZCxcclxuICBNb2RhbENvbXBvbmVudCxcclxuICBQYWdpbmF0b3JDb25maWcsXHJcbiAgU2VsZWN0T3B0aW9uLFxyXG4gIEZvcm1Db250cm9sVHlwZSxcclxuICBGb3JtTW9kZWwsXHJcbiAgVGFibGVDb2x1bW5UeXBlLFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LFxyXG4gIE1lbnUsXHJcbiAgRGF0YVRhYmxlQ29tcG9uZW50LFxyXG4gIER5bmFtaWNGb3JtQ29tcG9uZW50LFxyXG4gIENvbmZpcm1hdGlvbk1vZGFsRGF0YSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgKiBhcyBzY3JlZW5UZXh0cyBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9mb3JtLXZhbGlkYXRpb25zJztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXZlbnRzLWFuZC1tZWV0aW5ncy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7XHJcbiAgQWxlcnRUeXBlLFxyXG4gIEFsZXJ0c1NlcnZpY2UsXHJcbiAgQ291bnRyeUFuZFRpbWV6b25lU2VydmljZSxcclxuICBEZWFjdGl2YXRlQ29tcG9uZW50LFxyXG4gIE1vZGFsVHlwZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS91dGlsaXR5JztcclxuaW1wb3J0IHsgRm9ybVN0YXR1cyB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLXN0YXR1cy5tb2RlbCc7XHJcbmltcG9ydCB7IERhdGVGb3JtYXRzIH0gZnJvbSAnLi4vLi4vYXNzZXRzL2RhdGUtZm9ybWF0cyc7XHJcbmltcG9ydCB7IEdldEdyb3VwUmVzcG9uc2UsIEdyb3VwSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1yZXNwb25zZS5tb2RlbCc7XHJcbmltcG9ydCB7IENyZWF0ZU9yRWRpdEV2ZW50UGF5bG9hZCB9IGZyb20gJy4uLy4uL21vZGVscy9jcmVhdGUtZXZlbnQubW9kZWwnO1xyXG5pbXBvcnQgeyBBdHRlbmRlZVR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvYXR0ZW5kZWUtdHlwZS5tb2RlbCc7XHJcbmltcG9ydCB7XHJcbiAgR2V0TWVldGluZ3NCeUV2ZW50SWRQYXlsb2FkLFxyXG4gIE1lZXRpbmcsXHJcbn0gZnJvbSAnLi4vLi4vbW9kZWxzL21lZXRpbmdzLXVuZGVyLWV2ZW50cy5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC1tZWV0aW5nLWZ1bmN0aW9uLXR5cGVzLm1vZGVsJztcclxuaW1wb3J0IHsgRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy92aWV3LWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IEFkZE1lZXRpbmdDb21wb25lbnQgfSBmcm9tICcuLi9hZGQtbWVldGluZy9hZGQtbWVldGluZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgbW9tZW50XyBmcm9tICdtb21lbnQnO1xyXG5pbXBvcnQgeyBQYWdlRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wYWdpbmF0b3InO1xyXG5pbXBvcnQgeyBQZXJtaXNzaW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9wZXJtaXNzaW9uLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQgeyBNZWV0aW5nQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2V2ZW50LW9yLW1lZXRpbmctbWVudS1hY3Rpb24ubW9kZWwnO1xyXG5pbXBvcnQgeyBSb3V0ZXIsIFVybFRyZWUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xyXG5jb25zdCBDT0xVTU5fREVGID0ge1xyXG4gIGVuZERhdGVBbmRUaW1lOiAnZW5kLWRhdGUtVGltZScsXHJcbiAgZ3JvdXA6ICdyZWxhdGVkLWdyb3VwJyxcclxuICBsb2NhdGlvbjogJ2xvY2F0aW9uJyxcclxufTtcclxuXHJcbi8qKlxyXG4gKiBJbXBsZW1lbnRhdGlvbiBvZiBldmVudCBjcmVhdGlvbiBvciBtb2RpZmljYXRpb24uXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLWNyZWF0ZS1tb2RpZnktZXZlbnQnLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIER5bmFtaWNGb3JtQ29tcG9uZW50LCBEYXRhVGFibGVDb21wb25lbnRdLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gIGltcGxlbWVudHMgRGVhY3RpdmF0ZUNvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3lcclxue1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgZGlhbG9nUmVmOiBhbnk7XHJcbiAgZGVzdHJveSQgPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBzY3JlZW5UZXh0cztcclxuICBjaGFyc0xpbWl0ID0gdGhpcy5jb25zdGFudHM/LmNoYXJhY3RlckxpbWl0cztcclxuICBzY3JlZW5UZXh0cyA9IHRoaXMuY29uc3RhbnRzPy5jcmVhdGVPck1vZGlmeUV2ZW50O1xyXG4gIGFkZE1lZXRpbmcgPSB0aGlzLnNjcmVlblRleHRzPy5hZGRNZWV0aW5nO1xyXG4gIGNvbHVtbkhlYWRpbmcgPSB0aGlzLnNjcmVlblRleHRzPy5jb2x1bW5TY2hlbWE/LmhlYWRpbmc7XHJcbiAgbGVmdEJ1dHRvbkxhYmVsID0gdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmxlZnRCdXR0b25MYWJlbDtcclxuICByaWdodEJ1dHRvbkxhYmVsID0gdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LnJpZ2h0QnV0dG9uTGFiZWw7XHJcbiAgbWVldGluZ0RldGFpbHNUaXRsZSA9IHRoaXMuYWRkTWVldGluZz8uZmlyc3RMYWJlbDtcclxuICBhZGRNZWV0aW5nc0xpbmsgPSB0aGlzLmFkZE1lZXRpbmc/LmFkZE1lZXRpbmdzTGluaztcclxuICBpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gdHJ1ZTtcclxuICBjb2xXaWR0aDogRm9ybUdyaWQgPSB7IHhzOiAxMiwgeGw6IDEyLCBzbTogMTIsIG1kOiAxMiwgbGc6IDEyIH07XHJcbiAgbWVldGluZ3M6IE1lZXRpbmdbXSA9IFtdO1xyXG4gIGNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwITogRm9ybU1vZGVsO1xyXG4gIGFjdGlvbkJ1dHRvbkFsaWduID0gQWxpZ25UeXBlLkxFRlQ7XHJcbiAgZXZlbnRUeXBlczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBzZWxlY3RlZEF0dGVuZGVlVHlwZXM6IHN0cmluZ1tdID0gW107XHJcbiAgaXNDcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUludmFsaWQgPSBmYWxzZTtcclxuICBjcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmITogRm9ybUdyb3VwW107XHJcbiAgYXR0ZW5kZWVzVHlwZXM6IENoZWNrYm94T3B0aW9uW10gPSB0aGlzLmNvbnN0YW50cz8uYXR0ZW5kZWVzVHlwZTtcclxuICBAVmlld0NoaWxkKER5bmFtaWNGb3JtQ29tcG9uZW50KSBkeW5hbWljRm9ybUNvbXBvbmVudCE6IER5bmFtaWNGb3JtQ29tcG9uZW50O1xyXG4gIEBPdXRwdXQoKSBmb3JtQ2FuY2VsID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIGdyb3VwczogU2VsZWN0T3B0aW9uW10gPSBbXTtcclxuICBjb3VudHJpZXMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBzZWxlY3RlZEV2ZW50SWQhOiBzdHJpbmc7XHJcbiAgZXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlID0gRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlO1xyXG4gIHNlbGVjdGVkRXZlbnREYXRhITogRXZlbnREZXRhaWxzQ29uZmlndXJhdGlvbjtcclxuICB0aW1lem9uZXMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBjb2x1bW5TY2hlbWEhOiBUYWJsZUNvbHVtblNjaGVtYVtdO1xyXG4gIHBhZ2luYXRvckNvbmZpZzogUGFnaW5hdG9yQ29uZmlnID0ge1xyXG4gICAgcmVjb3Jkc1BlclBhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnBhZ2VTaXplT3B0aW9ucz8uWzFdLFxyXG4gICAgcGFnZVNpemVPcHRpb25zOiB0aGlzLnNjcmVlblRleHRzPy5wYWdlU2l6ZU9wdGlvbnMsXHJcbiAgICB0b3RhbFJlY29yZHM6IDAsXHJcbiAgfTtcclxuICBkZWZhdWx0VGltZVpvbmVzITogU2VsZWN0T3B0aW9uW107XHJcbiAgZGVmYXVsdENvdW50cmllcyE6IFNlbGVjdE9wdGlvbltdO1xyXG4gIG1lZXRpbmdBY3Rpb25zID0ge1xyXG4gICAgaXNBZGROZWVkZWQ6IHRydWUsXHJcbiAgICBpc0RlbGV0ZU5lZWRlZDogdHJ1ZSxcclxuICAgIGlzU2VhcmNoTmVlZGVkOiB0cnVlLFxyXG4gICAgaXNGaWx0ZXJOZWVkZWQ6IGZhbHNlLFxyXG4gICAgaXNFZGl0TmVlZGVkOiBmYWxzZSxcclxuICAgIGlzUGFnaW5hdGlvbk5lZWRlZDogdHJ1ZSxcclxuICB9O1xyXG4gIGV2ZW50QWN0aW9uVHlwZSE6IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZTtcclxuICBpc0V2ZW50Q3JlYXRlZCA9IGZhbHNlO1xyXG4gIHNlbGVjdGVkTWVldGluZ0lkczogc3RyaW5nW10gPSBbXTtcclxuICBzZXJ2ZXJDdXJyZW50RGF0ZSE6IHN0cmluZztcclxuICBpc0FkZE1lZXRpbmdEaXNhYmxlZCA9IGZhbHNlO1xyXG4gIGFkZE1lZXRpbmdCdXR0b24gPSB0aGlzLnNjcmVlblRleHRzPy5idXR0b25zPy5bMF07XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBzZWxlY3RlZE1lZXRpbmc6IGFueTtcclxuICBpc0FkZE1lZXRpbmdBbGxvd2VkID0gZmFsc2U7XHJcbiAgY29uZmlybWF0aW9uTW9kYWxUZXh0cyA9XHJcbiAgICB0aGlzLmNvbnN0YW50cz8uY3JlYXRlTW9kaWZ5RXZlbnRPck1lZXRpbmdcclxuICAgICAgPy51bnNhdmVkRm9ybUNoYW5nZXNDb25maXJtYXRpb25EaWFsb2dPcHRpb25zO1xyXG4gIGNvbmZpcm1hdGlvbk1vZGFsQ29uZmlnITogQ29uZmlybWF0aW9uTW9kYWxEYXRhO1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlOiBFdmVudHNBbmRNZWV0aW5nc1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhbGVydFNlcnZpY2U6IEFsZXJ0c1NlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgY291bnRyeUFuZFRpbWV6b25lU2VydmljZTogQ291bnRyeUFuZFRpbWV6b25lU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyXHJcbiAgKSB7XHJcbiAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuZGVmYXVsdENvdW50cmllcyA9XHJcbiAgICAgIHRoaXMuY291bnRyeUFuZFRpbWV6b25lU2VydmljZS5nZXRBbGxDb3VudHJpZXMoKTtcclxuICAgIHRoaXMudGltZXpvbmVzID0gdGhpcy5kZWZhdWx0VGltZVpvbmVzID1cclxuICAgICAgdGhpcy5jb3VudHJ5QW5kVGltZXpvbmVTZXJ2aWNlLmdldFVUQ1RpbWV6b25lT3B0aW9ucygpO1xyXG4gICAgdGhpcy5hdHRlbmRlZXNUeXBlcy5tYXAoKGF0dGVuZGVlKSA9PiB7XHJcbiAgICAgIGF0dGVuZGVlLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgYXR0ZW5kZWUuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBUcmlnZ2VycyBjb25maXJtYXRpb24gbW9kYWwgd2hpbGUgbGVhdmluZyB1bnNhdmVkIGZvcm0uXHJcbiAgICogQHJldHVybiB7KGJvb2xlYW5cclxuICAgKiAgICAgfCBVcmxUcmVlXHJcbiAgICogICAgIHwgT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT5cclxuICAgKiAgICAgfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPil9XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjYW5EZWFjdGl2YXRlKCk6XHJcbiAgICB8IGJvb2xlYW5cclxuICAgIHwgVXJsVHJlZVxyXG4gICAgfCBPYnNlcnZhYmxlPGJvb2xlYW4gfCBVcmxUcmVlPlxyXG4gICAgfCBQcm9taXNlPGJvb2xlYW4gfCBVcmxUcmVlPiB7XHJcbiAgICBpZiAodGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LmdldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cygpKSB7XHJcbiAgICAgIHRoaXMuZGlhbG9nUmVmID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/Lm9wZW5Db25maXJtYXRpb25Nb2RhbChcclxuICAgICAgICB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsQ29uZmlnXHJcbiAgICAgICk7XHJcbiAgICAgIHJldHVybiB0aGlzLmRpYWxvZ1JlZj8uYWZ0ZXJDbG9zZWQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyBjb2x1bW4gc2NoZW1hLCBncm91cHMsIG1lZXRpbmdzIGNyZWF0ZWQgdW5kZXIgZXZlbnRzLCBldmVudCB0eXBlcyBhbmQgY3JlYXRlcyBmb3JtIGdyb3VwLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLm1lZXRpbmdBY3Rpb25zLmlzRGVsZXRlTmVlZGVkID1cclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudmFsaWRhdGVBY2Nlc3MoXHJcbiAgICAgICAgUGVybWlzc2lvblR5cGUuREVMRVRFX01FRVRJTkdcclxuICAgICAgKTtcclxuICAgIHRoaXMuZmlsdGVyTWVldGluZ1RhYmxlQWN0aW9ucygpO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25Nb2RhbENvbmZpZyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsVGV4dHM/LmxlZnRCdXR0b25MYWJlbCxcclxuICAgICAgcmlnaHRCdXR0b25MYWJlbDogdGhpcy5jb25maXJtYXRpb25Nb2RhbFRleHRzPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiB0aGlzLmNvbmZpcm1hdGlvbk1vZGFsVGV4dHM/LnByb21wdE1lc3NhZ2UsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiBBbGlnblR5cGUuTUlERExFLFxyXG4gICAgfTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5jYW5DbG9zZUFkZE1lZXRpbmdNb2RhbCQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgdGhpcy5pbml0aWFsaXplQ29sdW1uU2NoZW1hKCk7XHJcbiAgICB0aGlzLmdldEdyb3VwcygpO1xyXG4gICAgdGhpcy5nZXRFdmVudFR5cGVzKCk7XHJcbiAgICB0aGlzLnNlbGVjdGVkRXZlbnRJZCA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZWxlY3RlZEV2ZW50SWQ7XHJcbiAgICB0aGlzLmNyZWF0ZXNFdmVudEZvcm1Hcm91cCgpO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID09PVxyXG4gICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZXZlbnRBY3Rpb25UeXBlID0gRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVQ7XHJcbiAgICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpLFxyXG4gICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICAgIGFzY2VuZGluZ09yZGVyOiB0cnVlLFxyXG4gICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy52aWV3RXZlbnREZXRhaWxzKHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZWxlY3RlZEV2ZW50SWQpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0FkZE1lZXRpbmdBbGxvd2VkID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnZhbGlkYXRlQWNjZXNzKFxyXG4gICAgICBQZXJtaXNzaW9uVHlwZS5DUkVBVEVfTUVFVElOR1xyXG4gICAgKTtcclxuICAgIHRoaXMubWVldGluZ0FjdGlvbnMuaXNBZGROZWVkZWQgPSB0aGlzLmlzQWRkTWVldGluZ0FsbG93ZWQ7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPT09XHJcbiAgICAgICAgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkNSRUFURSAmJlxyXG4gICAgICB0aGlzLnNlbGVjdGVkRXZlbnRJZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpLFxyXG4gICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICAgIGFzY2VuZGluZ09yZGVyOiB0cnVlLFxyXG4gICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5ldmVudEFjdGlvblR5cGUgPSBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVDtcclxuICAgICAgdGhpcy52aWV3RXZlbnREZXRhaWxzKHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZWxlY3RlZEV2ZW50SWQpO1xyXG4gICAgICB0aGlzLm9wZW5BZGRNZWV0aW5nTW9kYWwoKTtcclxuICAgIH1cclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5jYW5DbG9zZUFkZE1lZXRpbmdNb2RhbCRcclxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgocmVzcG9uc2UpID0+IHtcclxuICAgICAgICBpZiAocmVzcG9uc2UgJiYgdGhpcy5kaWFsb2dSZWYpIHtcclxuICAgICAgICAgIHRoaXMuZGlhbG9nUmVmPy5jbG9zZSgpO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LmNhbkNsb3NlQWRkTWVldGluZ01vZGFsJD8ubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmlsdGVycyB0aGUgbWVldGluZyB0YWJsZSBtZW51IGFjdGlvbnMgYmFzZWQgb24gbWVldGluZ3MgcGVybWlzc2lvbi5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGZpbHRlck1lZXRpbmdUYWJsZUFjdGlvbnMoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zY3JlZW5UZXh0cz8udGFibGVBY3Rpb25zKVxyXG4gICAgICB0aGlzLnNjcmVlblRleHRzLnRhYmxlQWN0aW9ucyA9XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0RmlsdGVyZWRNZWV0aW5nQWN0aW9ucyhcclxuICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHMudGFibGVBY3Rpb25zXHJcbiAgICAgICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRhYmxlIGNvbHVtbiBzY2hlbWEgdG8gZGlzcGxheSB0aGUgbWVldGluZyBhbmQgaXQgZGV0YWlscyBpbiB0YWJ1bGFyIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBpbml0aWFsaXplQ29sdW1uU2NoZW1hKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5TY2hlbWEgPSBbXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMSxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgaGVhZGluZzogJycsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlNFTEVDVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnNlbGVjdH1gLFxyXG4gICAgICAgIGlzU3RpY2t5Q29sdW1uOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDIsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuTElOSyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lm5hbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkxJTkssXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5tZWV0aW5nVGl0bGV9YCxcclxuICAgICAgICBpc1N0aWNreUNvbHVtbjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5zdGFydERhdGVBbmRUaW1lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHttb21lbnQoZWxlbWVudC5tZWV0aW5nU3REYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICl9PGJyPiR7bW9tZW50KGVsZW1lbnQubWVldGluZ1N0RGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy50aW1lRm9ybWF0XHJcbiAgICAgICAgICApfWAsXHJcbiAgICAgICAgaXNIVE1MQ2VsbERhdGE6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNCxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/LmVuZERhdGVBbmRUaW1lLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZW5kRGF0ZUFuZFRpbWUsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT5cclxuICAgICAgICAgIGAke21vbWVudChlbGVtZW50Lm1lZXRpbmdFZERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMuZGlzcGxheUZvcm1hdFxyXG4gICAgICAgICAgKX08YnI+JHttb21lbnQoZWxlbWVudC5tZWV0aW5nRWREYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLnRpbWVGb3JtYXRcclxuICAgICAgICAgICl9YCxcclxuICAgICAgICBpc0hUTUxDZWxsRGF0YTogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA1LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8uZ3JvdXAsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5ncm91cCxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lmdyb3VwTmFtZX1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDYsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5sb2NhdGlvbixcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmxvY2F0aW9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQubWVldGluZ0xvY2F0aW9ufWAsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNyxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uYWN0aW9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5BQ1RJT05TLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQuYWN0aW9ufWAsXHJcbiAgICAgICAgaXNTdGlja3lFbmRDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDcmVhdGVzIHRoZSBmb3JtIGdyb3VwXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVzRXZlbnRGb3JtR3JvdXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwID0ge1xyXG4gICAgICBmb3JtR3JvdXA6IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8uYmFzaWNEZXRhaWxzLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5yZWxhdGVkR3JvdXAgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdyZWxhdGVkR3JvdXAnLFxyXG4gICAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5ncm91cHMsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8ucmVsYXRlZEdyb3VwLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5yZWxhdGVkR3JvdXAsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnJlbGF0ZWRHcm91cCxcclxuICAgICAgICAgICAgICBpc1NlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5ldmVudE5hbWUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdldmVudE5hbWUnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXHJcbiAgICAgICAgICAgICAgICAgIEV2ZW50c0FuZE1lZXRpbmdzVmFsaWRhdGlvblBhdHRlcm5zLm1lZXRpbmdPckV2ZW50TmFtZU9yRmFjaWxpdGF0b3JcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmNoYXJzTGltaXQubGltaXRUbzE1MCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBtYXhDaGFyQ291bnQ6IHRoaXMuY2hhcnNMaW1pdC5saW1pdFRvMTUwLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZXZlbnROYW1lLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5tZWV0aW5nT3JFdmVudE5hbWUsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5ldmVudE5hbWVNYXhDaGFycyxcclxuICAgICAgICAgICAgICBpc1JlYWRvbmx5OiBmYWxzZSxcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZXZlbnROYW1lLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5ldmVudE5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uZXZlbnRUeXBlICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZXZlbnRUeXBlJyxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuZXZlbnRUeXBlcyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5ldmVudFR5cGUsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnN1cHBvcnRUZXh0Py5ldmVudFR5cGUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmV2ZW50VHlwZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZXZlbnRUeXBlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogdGhpcy5zY3JlZW5UZXh0cz8ubGVnZW5kPy5kYXRlQW5kVGltZSxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuREFURSxcclxuICAgICAgICAgICAgICBkYXRlUGlja2VyOiB7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhclR5cGU6IENhbGVuZGFyVHlwZS5TSU5HTEVfREFURV9TRUxFQ1RJT04sXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LnN0YXJ0RGF0ZSArICcqJyxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5kYXRlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdzdGFydERhdGUnLFxyXG4gICAgICAgICAgICAgIGlzTGFiZWxBbGlnbmVkTGVmdDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5zdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LnN0YXJ0RGF0ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5EQVRFLFxyXG4gICAgICAgICAgICAgIGRhdGVQaWNrZXI6IHtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyVHlwZTogQ2FsZW5kYXJUeXBlLlNJTkdMRV9EQVRFX1NFTEVDVElPTixcclxuICAgICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uZW5kRGF0ZSArICcqJyxcclxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5kYXRlLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdlbmREYXRlJyxcclxuICAgICAgICAgICAgICBpc0xhYmVsQWxpZ25lZExlZnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBtaW5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8uaW52YWxpZERhdFRpbWVFcnJvck1lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmVuZERhdGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmVuZERhdGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8udGltZVpvbmUgKyAnKicsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICd0aW1lWm9uZScsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8udGltZVpvbmUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LnRpbWVab25lLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy50aW1lWm9uZSxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMudGltZXpvbmVzLFxyXG4gICAgICAgICAgICAgIGlzU2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogdGhpcy5zY3JlZW5UZXh0cz8ubGVnZW5kPy5sb2NhdGlvbixcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYWRkcmVzcyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2FkZHJlc3MnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMucGF0dGVybihFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucy5hZGRyZXNzKSxcclxuICAgICAgICAgICAgICAgIFZhbGlkYXRvcnMubWF4TGVuZ3RoKHRoaXMuY2hhcnNMaW1pdD8ubGltaXRUbzE1MCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgbWF4Q2hhckNvdW50OiB0aGlzLmNoYXJzTGltaXQ/LmxpbWl0VG8xNTAsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5hZGRyZXNzTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgaXNSZWFkb25seTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmNvdW50cnksXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdjb3VudHJ5JyxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmNvdW50cnksXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgIGRyb3Bkb3duT3B0aW9uczogdGhpcy5jb3VudHJpZXMsXHJcbiAgICAgICAgICAgICAgaXNTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmF0dGVuZGVlcyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuQ0hFQ0tCT1gsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hdHRlbmRlZXNUeXBlICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnYXR0ZW5kZWVzVHlwZScsXHJcbiAgICAgICAgICAgICAgbWluU2VsZWN0aW9uUmVxdWlyZWQ6IDEsXHJcbiAgICAgICAgICAgICAgY2hlY2tib3hPcHRpb25zOiB0aGlzLmF0dGVuZGVlc1R5cGVzLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYXR0ZW5kZWVzVHlwZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYXR0ZW5kZWVzVHlwZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8uYWNjZXNzLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5JTlBVVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdldmVudFBhc3N3b3JkJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oXHJcbiAgICAgICAgICAgICAgICAgIEV2ZW50c0FuZE1lZXRpbmdzVmFsaWRhdGlvblBhdHRlcm5zLmV2ZW50UGFzc3dvcmRcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmNoYXJzTGltaXQubGltaXRUbzIwKSxcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIG1heENoYXJDb3VudDogdGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8yMCxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/LmV2ZW50UGFzc3dvcmRNYXhDaGFycyxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5pcEFkZHJlc3NSYW5nZSxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2lwQWRkcmVzc1JhbmdlJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5pcEFkZHJlc3NSYW5nZVZhbGlkYXRvcihcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGltaXQ/Lm5vT2ZJcEFkZHJlc3NSYW5nZVNldHNcclxuICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmlwQWRkcmVzc1JhbmdlLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5zdXBwb3J0VGV4dD8uaXBBZGRyZXNzUmFuZ2VGb3JtYXRUZXh0LFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uaXBBZGRyZXNzUmFuZ2UsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5ub09mSXBBZGRyZXNzUmFuZ2VTZXRzLFxyXG4gICAgICAgICAgICAgIG1heFJhbmdlTGltaXQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxpbWl0Py5ub09mSXBBZGRyZXNzUmFuZ2VTZXRzLFxyXG4gICAgICAgICAgICAgIHJlbWFpbmluZ0NoYXJzTGVmdE1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5pcEFkZHJlc3NSYW5nZVJlbWFpbmluZyxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmlwQWRkcmVzc1JhbmdlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5pcEFkZHJlc3NSYW5nZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZGVzY3JpcHRpb24nLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmNoYXJzTGltaXQubGltaXRUbzIwMDApXSxcclxuICAgICAgICAgICAgICBtYXhDaGFyQ291bnQ6IHRoaXMuY2hhcnNMaW1pdC5saW1pdFRvMjAwMCxcclxuICAgICAgICAgICAgICBtYXhFcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ubGltaXQ/LmRlc2NyaXB0aW9uTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkNIRUNLQk9YLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnY3JlZGl0c0FwcGxpY2FibGUnLFxyXG4gICAgICAgICAgICAgIGNoZWNrYm94T3B0aW9uczogdGhpcy5zY3JlZW5UZXh0cz8uY3JlZGl0c0FwcGxpY2FibGUsXHJcbiAgICAgICAgICAgICAgc3VwcG9ydE1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/LnN1cHBvcnRUZXh0Py5jcmVkaXRzQXBwbGljYWJsZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmNyZWRpdHNBcHBsaWNhYmxlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5jcmVkaXRzQXBwbGljYWJsZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgZm9ybSBjYW5jZWwgZXZlbnQuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1DYW5jZWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmZvcm1DYW5jZWwuZW1pdCgpO1xyXG4gICAgdGhpcy5jb25maXJtYXRpb25Nb2RhbENvbmZpZy5wcm9tcHRNZXNzYWdlID1cclxuICAgICAgdGhpcy5jb25maXJtYXRpb25Nb2RhbFRleHRzPy5wcm9tcHRNZXNzYWdlT25DYW5jZWw7XHJcbiAgICB0aGlzLnJvdXRlcj8ubmF2aWdhdGVCeVVybChcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LmdldFJvdXRlUGF0aHMoKT8uZXZlbnRzQW5kTWVldGluZ3NcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIGV2ZW50IHR5cGVzIHVzaW5nIGV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RXZlbnRUeXBlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRFdmVudFR5cGVzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHJlc3BvbnNlPy5ib2R5Py5mb3JFYWNoKChldmVudFR5cGUpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ldmVudFR5cGVzPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogZXZlbnRUeXBlPy5jb25maWdGaWVsZElkLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGV2ZW50VHlwZT8uY29uZmlnRmllbGRWYWx1ZT8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAgICdldmVudFR5cGUnLFxyXG4gICAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgICAgdGhpcy5ldmVudFR5cGVzLFxyXG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bMF1cclxuICAgICAgICAgICAgLmdldCgnZXZlbnRUeXBlJylcclxuICAgICAgICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICAgICAgICB0aGlzLmV2ZW50VHlwZXM/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZXZlbnRUeXBlKSA9PlxyXG4gICAgICAgICAgICAgICAgICBldmVudFR5cGUuaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmV2ZW50VHlwZVxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZWV0aW5ncyBjcmVhdGVkIGZvciB0aGUgc2VsZWN0ZWQgZXZlbnQgZnJvbSBzZXJ2ZXIuXHJcbiAgICogQHBhcmFtIHtHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWR9IHBheWxvYWRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQ6IEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldE1lZXRpbmdzQnlFdmVudElkKHBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzID0gW107XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZy50b3RhbFJlY29yZHMgPVxyXG4gICAgICAgICAgICByZXNwb25zZT8uYm9keT8udG90YWxSZWNvcmRzID8/IHRoaXMubWVldGluZ3M/Lmxlbmd0aDtcclxuICAgICAgICAgIHRoaXMucGFnaW5hdG9yQ29uZmlnID0geyAuLi50aGlzLnBhZ2luYXRvckNvbmZpZyB9O1xyXG4gICAgICAgICAgdGhpcy5tZWV0aW5ncyA9IHJlc3BvbnNlPy5ib2R5Py5tZWV0aW5ncztcclxuICAgICAgICAgIHRoaXMubWVldGluZ3M/Lm1hcCgobWVldGluZykgPT4gKG1lZXRpbmcuY2FuRGVsZXRlID0gdHJ1ZSkpO1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlPy5ib2R5Py5tZWV0aW5ncz8ubGVuZ3RoID4gMClcclxuICAgICAgICAgICAgdGhpcy5tZWV0aW5nRGV0YWlsc1RpdGxlID1cclxuICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5hZGRNZWV0aW5nPy5maXJzdExhYmVsICtcclxuICAgICAgICAgICAgICAnXCInICtcclxuICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5hZGRNZWV0aW5nPy5zZWNvbmRMYWJlbCArXHJcbiAgICAgICAgICAgICAgJ1wiJyArXHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uYWRkTWVldGluZz8ubGFzdExhYmVsO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICB0aGlzLm1lZXRpbmdEZXRhaWxzVGl0bGUgPSB0aGlzLmlzQWRkTWVldGluZ0FsbG93ZWRcclxuICAgICAgICAgICAgICA/IHRoaXMuYWRkTWVldGluZz8uZmlyc3RMYWJlbFxyXG4gICAgICAgICAgICAgIDogdGhpcy5hZGRNZWV0aW5nPy5maXJzdExhYmVsV2l0aG91dEFkZEJ0bjtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBFbmFibGVzIGFuZCBkaXNhYmxlcyBmb3JtIHN1Ym1pdCBidXR0b24gd2hlbiBjcmVhdGUgb3IgdXBkYXRlIGV2ZW50cyBmb3JtIGNoYW5nZS5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtR3JvdXBzXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBvbkZvcm1DaGFuZ2UoZm9ybUdyb3VwczogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldEV2ZW50T3JNZWV0aW5nRm9ybUNoYW5nZVN0YXR1cyhcclxuICAgICAgZm9ybUdyb3Vwcy5zb21lKChmb3JtR3JvdXApID0+IGZvcm1Hcm91cD8uZGlydHkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5pc1N1Ym1pdEJ1dHRvbkRpc2FibGVkID0gZm9ybUdyb3Vwcy5zb21lKFxyXG4gICAgICAoZm9ybUdyb3VwKSA9PiBmb3JtR3JvdXA/LnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5JTlZBTElEXHJcbiAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwLmZvcm1Hcm91cD8uWzFdPy5jb250cm9scz8uWzFdXHJcbiAgICAgICAgPy5kYXRlUGlja2VyXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50c0Zvcm1Hcm91cC5mb3JtR3JvdXBbMV0uY29udHJvbHNbMV0uZGF0ZVBpY2tlci5taW5EYXRlID1cclxuICAgICAgICBmb3JtR3JvdXBzPy5bMV0/LmdldCgnc3RhcnREYXRlJyk/LnZhbHVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5pc0FkZE1lZXRpbmdEaXNhYmxlZCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5hZGRNZWV0aW5nQnV0dG9uKSB0aGlzLmFkZE1lZXRpbmdCdXR0b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2FkcyBncm91cHMgdXNpbmcgZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRHcm91cHMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBzKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzOiBHZXRHcm91cFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXM/LmJvZHk/LmZvckVhY2goKGdyb3VwOiBHcm91cEluZm8pID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ncm91cHM/LnB1c2goe1xyXG4gICAgICAgICAgICAgIGlkOiBncm91cD8uZ3JvdXBJZCxcclxuICAgICAgICAgICAgICBuYW1lOiBgJHtncm91cD8uZ3JvdXBOYW1lfSAtICR7Z3JvdXA/Lmdyb3VwQWNyb255bX1gLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAncmVsYXRlZEdyb3VwJyxcclxuICAgICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNvcnRPcHRpb25zKHRoaXMuZ3JvdXBzKSxcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgICAgICAgIC5nZXQoJ3JlbGF0ZWRHcm91cCcpXHJcbiAgICAgICAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgdGhpcy5ncm91cHM/LmZpbmQoXHJcbiAgICAgICAgICAgICAgICAoZ3JvdXApID0+IGdyb3VwLmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ncm91cElkXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgY2xpZW50IHNpZGUgdmFsaWRhdGlvbiBhbmQgY2FsbHMgY3JlYXRlIGV2ZW50IG1ldGhvZHMuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybSAtQXJyYXkgb2YgZm9ybUdyb3VwXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtU3VibWl0KGZvcm1Hcm91cHM6IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIGZvcm1Hcm91cHMuZXZlcnkoXHJcbiAgICAgICAgKGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiBmb3JtR3JvdXAuc3RhdHVzID09PSBGb3JtU3RhdHVzLlZBTElEXHJcbiAgICAgIClcclxuICAgICkge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9PT1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuQ1JFQVRFXHJcbiAgICAgICkge1xyXG4gICAgICAgIHRoaXMuY3JlYXRlRXZlbnQoZm9ybUdyb3Vwcyk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9PT1cclxuICAgICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmVkaXRFdmVudChmb3JtR3JvdXBzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVGFrZXMgZXZlbnQgYmFzaWMgZGV0YWlscywgZGF0ZSBhbmQgdGltZSwgbG9jYXRpb24gZGV0YWlscywgYXR0ZW5kZWUgZGV0YWlscywgYWNjZXNzIGRldGFpbHMgZm9ybSBncm91cCBkYXRhIGFuZCBjb21iaW5pbmcgc3RhcnQgZGF0ZSBhbmQgZW5kIGRhdGUgYW5kIGNvbnZlcnRpbmcgdG8gVVRDIGZvcm1hdCBhbmQgcGFzc2luZyBhbGwgdGhlIGZvcm0gZGF0YSBpbiB0aGUgcGF5bG9hZCBvYmplY3QgdG8gY3JlYXRlIGV2ZW50IEFQSSB0byB0aGUgc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm1Hcm91cHNcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBjcmVhdGVFdmVudChmb3JtR3JvdXBzOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXZlbnRCYXNpY0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bMF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudERhdGVBbmRUaW1lRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsxXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50TG9jYXRpb25EZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzJdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBdHRlbmRlZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bM10/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudEFjY2Vzc0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bNF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LnN0YXJ0RGF0ZS5mb3JtYXQoXHJcbiAgICAgICAgRGF0ZUZvcm1hdHMucmVxdWVzdFBheWxvYWRGb3JtYXRcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LmVuZERhdGUuZm9ybWF0KERhdGVGb3JtYXRzPy5yZXF1ZXN0UGF5bG9hZEZvcm1hdClcclxuICAgICk7XHJcbiAgICBjb25zdCBjcmVhdGVFdmVudFBheWxvYWQ6IENyZWF0ZU9yRWRpdEV2ZW50UGF5bG9hZCA9IHtcclxuICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgIGV2ZW50TmFtZTogZXZlbnRCYXNpY0RldGFpbHM/LmV2ZW50TmFtZSxcclxuICAgICAgICBldmVudFR5cGU6IGV2ZW50QmFzaWNEZXRhaWxzPy5ldmVudFR5cGU/LmlkLFxyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkRXZlbnRJZCA/PyBudWxsLFxyXG4gICAgICAgIGdyb3VwSWQ6IGV2ZW50QmFzaWNEZXRhaWxzPy5yZWxhdGVkR3JvdXA/LmlkLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGVuZERhdGUsXHJcbiAgICAgICAgdGltZVpvbmU6IGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy50aW1lWm9uZT8ubmFtZSxcclxuICAgICAgICBjb3VudHJ5OiBldmVudExvY2F0aW9uRGV0YWlscz8uY291bnRyeT8uaWQsXHJcbiAgICAgICAgZXZlbnRQYXNzd29yZDogZXZlbnRBY2Nlc3NEZXRhaWxzPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgIG9wZW5Gb3JBbGw6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMF0sXHJcbiAgICAgICAgcmVnaXN0ZXJlZFBhcnRpY2lwYW50czogZXZlbnRBdHRlbmRlZURldGFpbHM/LmF0dGVuZGVlc1R5cGU/LlsyXSxcclxuICAgICAgICBncm91cFBhcnRpY2lwYW50czogZXZlbnRBdHRlbmRlZURldGFpbHM/LmF0dGVuZGVlc1R5cGU/LlsxXSxcclxuICAgICAgICBpcGFkZHJlc3M6IGV2ZW50QWNjZXNzRGV0YWlscz8uaXBBZGRyZXNzUmFuZ2UgPz8gJycsXHJcbiAgICAgICAgbG9jYXRpb246IGV2ZW50TG9jYXRpb25EZXRhaWxzPy5hZGRyZXNzLFxyXG4gICAgICAgIGV2ZW50VGl0bGU6IGV2ZW50QmFzaWNEZXRhaWxzPy5ldmVudE5hbWUsXHJcbiAgICAgICAgZXZlbnREZXNjOiBmb3JtR3JvdXBzPy5bNV0/LmdldFJhd1ZhbHVlKCk/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIHZpcnR1YWxNZWV0aW5nVXJsOiBldmVudExvY2F0aW9uRGV0YWlscz8udmlydHVhbE1lZXRpbmdVcmwgPz8gJycsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmNyZWF0ZUV2ZW50KGNyZWF0ZUV2ZW50UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5pc0V2ZW50Q3JlYXRlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuaXNBZGRNZWV0aW5nRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuYWRkTWVldGluZ0J1dHRvbikgdGhpcy5hZGRNZWV0aW5nQnV0dG9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmIChyZXM/LmJvZHkpXHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnRJZChcclxuICAgICAgICAgICAgICAgIE9iamVjdChyZXM/LmJvZHkpPy5pZFxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRTZWxlY3RlZEV2ZW50RGF0YSh7XHJcbiAgICAgICAgICAgICAgc3RhcnREYXRlOiBzdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgZW5kRGF0ZTogZW5kRGF0ZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0FsZXJ0TWVzc2FnZShcclxuICAgICAgICAgICAgICBBbGVydFR5cGU/LlNVQ0NFU1MsXHJcbiAgICAgICAgICAgICAgY3JlYXRlRXZlbnRQYXlsb2FkLnBheWxvYWQuZXZlbnRUaXRsZSArXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5zdWNjZXNzPy5zdWJtaXNzaW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhbGVydHMgZm9yIHN1Y2Nlc3MsIGVycm9yIGFuZCB3YXJuaW5nLlxyXG4gICAqIEBwYXJhbSB7KHN0cmluZyB8IHN0cmluZ1tdKX0gbWVzc2FnZSAtc3VjY2VzcyBvciBlcnJvciBvciB3YXJuaW5nIG1lc3NhZ2UuXHJcbiAgICogQHBhcmFtIHtBbGVydFR5cGV9IGFsZXJ0VHlwZVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIHNob3dBbGVydE1lc3NhZ2UoYWxlcnRUeXBlOiBBbGVydFR5cGUsIG1lc3NhZ2U6IHN0cmluZyB8IHN0cmluZ1tdKTogdm9pZCB7XHJcbiAgICB0aGlzLmFsZXJ0U2VydmljZT8uc2hvd01lc3NhZ2Uoe1xyXG4gICAgICBzdGF0dXM6ICdjdXN0b20nLFxyXG4gICAgICBtZXNzYWdlOiBtZXNzYWdlLFxyXG4gICAgICBhbGVydFR5cGU6IGFsZXJ0VHlwZSxcclxuICAgICAgaXNDbG9zZU5lZWRlZDogZmFsc2UsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyBhdHRlbmRlZSB0eXBlIHNlbGVjdGlvbiBpbiBldmVudCBmb3JtLlxyXG4gICAqIEBwYXJhbSB7Q2hlY2tib3hPcHRpb259IGF0dGVuZGVlXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25BdHRlbmRlZVR5cGVTZWxlY3Rpb24oXHJcbiAgICBhdHRlbmRlZVR5cGU6IENoZWNrYm94T3B0aW9uLFxyXG4gICAgaXNDaGVja2JveENoYW5nZWQgPSBmYWxzZVxyXG4gICk6IHZvaWQge1xyXG4gICAgaWYgKGF0dGVuZGVlVHlwZT8ubmFtZT8uaW5jbHVkZXMoJ0VuYWJsZScpKSByZXR1cm47XHJcbiAgICBpZiAoYXR0ZW5kZWVUeXBlPy5pZCA9PT0gQXR0ZW5kZWVUeXBlLk9QRU5fRk9SX0FMTCkge1xyXG4gICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzPy5mb3JFYWNoKChvcHRpb24pID0+IHtcclxuICAgICAgICBpZiAoYXR0ZW5kZWVUeXBlPy5jaGVja2VkICYmIG9wdGlvbj8uaWQgIT09IGF0dGVuZGVlVHlwZS5pZClcclxuICAgICAgICAgIG9wdGlvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgZWxzZSBpZiAoIWF0dGVuZGVlVHlwZT8uY2hlY2tlZCAmJiBvcHRpb24/LmlkICE9PSBhdHRlbmRlZVR5cGUuaWQpXHJcbiAgICAgICAgICBvcHRpb24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAnYXR0ZW5kZWVzVHlwZScsXHJcbiAgICAgICAgJ2NoZWNrYm94T3B0aW9ucycsXHJcbiAgICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlcyxcclxuICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICBhdHRlbmRlZVR5cGU/LmlkID09PSBBdHRlbmRlZVR5cGUuR1JPVVBfTUVNQkVSUyB8fFxyXG4gICAgICBhdHRlbmRlZVR5cGU/LmlkID09PSBBdHRlbmRlZVR5cGUuUkVHSVNURVJFRF9QQVJUSUNJUEFOVFNcclxuICAgICkge1xyXG4gICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzXHJcbiAgICAgICAgPy5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gQXR0ZW5kZWVUeXBlLk9QRU5fRk9SX0FMTClcclxuICAgICAgICAubWFwKChmaWx0ZXJlZE9wdGlvbikgPT4ge1xyXG4gICAgICAgICAgaWYgKGF0dGVuZGVlVHlwZT8uY2hlY2tlZCkgcmV0dXJuIChmaWx0ZXJlZE9wdGlvbi5kaXNhYmxlZCA9IHRydWUpO1xyXG4gICAgICAgICAgZWxzZSBpZiAodGhpcy5jYW5FbmFibGVPcGVuRm9yQWxsQ2hlY2tib3goKSlcclxuICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXJlZE9wdGlvbi5kaXNhYmxlZCA9IGZhbHNlKTtcclxuICAgICAgICAgIHJldHVybiBmaWx0ZXJlZE9wdGlvbjtcclxuICAgICAgICB9KTtcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICdhdHRlbmRlZXNUeXBlJyxcclxuICAgICAgICAnY2hlY2tib3hPcHRpb25zJyxcclxuICAgICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzLFxyXG4gICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgaWYgKGF0dGVuZGVlVHlwZT8uY2hlY2tlZCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQXR0ZW5kZWVUeXBlcz8ucHVzaChhdHRlbmRlZVR5cGUuaWQgYXMgc3RyaW5nKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzID0gdGhpcy5zZWxlY3RlZEF0dGVuZGVlVHlwZXMuZmlsdGVyKFxyXG4gICAgICAgICh2YWx1ZSkgPT4gdmFsdWUgIT09IGF0dGVuZGVlVHlwZS5pZFxyXG4gICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuaXNDcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUludmFsaWQgPVxyXG4gICAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYuc29tZShcclxuICAgICAgICAoZm9ybUdyb3VwOiBGb3JtR3JvdXApID0+IGZvcm1Hcm91cC5zdGF0dXMgPT09IEZvcm1TdGF0dXMuSU5WQUxJRFxyXG4gICAgICApO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkQXR0ZW5kZWVUeXBlcy5sZW5ndGggPT09IDAgfHxcclxuICAgICAgdGhpcy5pc0NyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtSW52YWxpZFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VTdGF0dXMoXHJcbiAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZi5zb21lKChmb3JtR3JvdXApID0+IGZvcm1Hcm91cD8uZGlydHkpXHJcbiAgICApO1xyXG4gICAgdGhpcy5pc0FkZE1lZXRpbmdEaXNhYmxlZCA9IGlzQ2hlY2tib3hDaGFuZ2VkID8/IGZhbHNlO1xyXG4gICAgaWYgKHRoaXMuYWRkTWVldGluZ0J1dHRvbilcclxuICAgICAgdGhpcy5hZGRNZWV0aW5nQnV0dG9uLmRpc2FibGVkID0gaXNDaGVja2JveENoYW5nZWQgPz8gZmFsc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldCBldmVudCBmb3JtIGdyb3VwIHJlZmVyZW5jZS5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0Q3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZihmb3JtOiBGb3JtR3JvdXBbXSkge1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmID0gZm9ybTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogRmlsdGVyIHRoZSBkcm9wZG93biBvcHRpb25zIGFuZCBzaG93IG9wdGlvbnMgcmVsYXRlZCB0byB0aGF0IHNlYXJjaCBzdHJpbmdcclxuICAgKiBAcGFyYW0ge3sgc2VhcmNoRXZlbnQ6IEV2ZW50OyBjb250cm9sTmFtZTogc3RyaW5nIH19IGRhdGFcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5TWVldGluZ0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGZvcm1TZWxlY3RTZWFyY2goZGF0YTogeyBzZWFyY2hFdmVudDogRXZlbnQ7IGNvbnRyb2xOYW1lOiBzdHJpbmcgfSkge1xyXG4gICAgc3dpdGNoIChkYXRhLmNvbnRyb2xOYW1lKSB7XHJcbiAgICAgIGNhc2UgJ3RpbWVab25lJzpcclxuICAgICAgICB0aGlzLnRpbWV6b25lcyA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmZpbHRlck9wdGlvbnMoXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgdGhpcy5kZWZhdWx0VGltZVpvbmVzLFxyXG4gICAgICAgICAgdGhpcy50aW1lem9uZXNcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICd0aW1lWm9uZScsXHJcbiAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgIHRoaXMudGltZXpvbmVzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2NvdW50cnknOlxyXG4gICAgICAgIHRoaXMuY291bnRyaWVzID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZmlsdGVyT3B0aW9ucyhcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICB0aGlzLmRlZmF1bHRDb3VudHJpZXMsXHJcbiAgICAgICAgICB0aGlzLmNvdW50cmllc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgJ2NvdW50cnknLFxyXG4gICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICB0aGlzLmNvdW50cmllcyxcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdyZWxhdGVkR3JvdXAnOlxyXG4gICAgICAgIHRoaXMuZ3JvdXBzID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZmlsdGVyT3B0aW9ucyhcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICB0aGlzLmdyb3VwcyxcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAncmVsYXRlZEdyb3VwJyxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5ncm91cHMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tpbmcgZm9yIHVuY2hlY2tlZCBjaGVja2JveCBjb3VudCBleGNlcHQgT1BFTl9GT1JfQUxMXHJcbiAgICogQHJldHVybiB7Kn0gIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlNZWV0aW5nQ29tcG9uZW50XHJcbiAgICovXHJcbiAgY2FuRW5hYmxlT3BlbkZvckFsbENoZWNrYm94KCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHVuY2hlY2tlZENvdW50ID0gMDtcclxuICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXM/LmZvckVhY2goKGF0dGVuZGVlVHlwZSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgYXR0ZW5kZWVUeXBlPy5pZCAhPT0gQXR0ZW5kZWVUeXBlLk9QRU5fRk9SX0FMTCAmJlxyXG4gICAgICAgICFhdHRlbmRlZVR5cGU/LmNoZWNrZWRcclxuICAgICAgKVxyXG4gICAgICAgIHVuY2hlY2tlZENvdW50Kys7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiB1bmNoZWNrZWRDb3VudCA9PT0gdGhpcy5hdHRlbmRlZXNUeXBlcz8ubGVuZ3RoIC0gMTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogT3BlbnMgYSBtb2RhbCB0byBjcmVhdGUgbWVldGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb3BlbkFkZE1lZXRpbmdNb2RhbCgpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKGZhbHNlKTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPVxyXG4gICAgICBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuQ1JFQVRFO1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRNZWV0aW5nSWQgPSAnJztcclxuICAgIGNvbnN0IGRpYWxvZ09wdGlvbnMgPSB7XHJcbiAgICAgIGhlYWRpbmc6IHRoaXMuc2NyZWVuVGV4dHM/Lm5ld01lZXRpbmcsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgIGNvbXBvbmVudFJlZmVyZW5jZTogQWRkTWVldGluZ0NvbXBvbmVudCxcclxuICAgICAgbW9kYWxUeXBlOiBNb2RhbFR5cGUuRk9STSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nPy5vcGVuKE1vZGFsQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRpYWxvZ09wdGlvbnMsXHJcbiAgICAgIHdpZHRoOiAnYXV0bycsXHJcbiAgICAgIHBhbmVsQ2xhc3M6IFsnaWVlZXNhLW1vZGFsLWRpYWxvZycsICdpZWVlc2EtYWRkLW1lZXRpbmctZm9ybSddLFxyXG4gICAgICBhcmlhTW9kYWw6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMuZGlhbG9nUmVmXHJcbiAgICAgIC5hZnRlckNsb3NlZCgpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0U3RhbmRhbG9uZU1lZXRpbmdTdGF0dXModHJ1ZSk7XHJcbiAgICAgICAgdGhpcy5nZXRNZWV0aW5nc0J5RXZlbnRJZCh7XHJcbiAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5nZXRTZWxlY3RlZEV2ZW50SWQoKSxcclxuICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRydWUsXHJcbiAgICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXRzIHRoZSBtZWV0aW5ncyBieSBldmVudCBpZCBvbiBjaGFuZ2Ugb2YgdGFibGUgcGFnaW5hdGlvbi5cclxuICAgKiBAcGFyYW0ge3tcclxuICAgKiAgICAgcGFnZU9mZnNldDogbnVtYmVyO1xyXG4gICAqICAgICBwYWdlTGltaXQ6IG51bWJlcjtcclxuICAgKiAgIH19IHBhZ2VFdmVudFxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25NZWV0aW5nc1RhYmxlUGFnZUNoYW5nZShwYWdlRXZlbnQ6IFBhZ2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5nZXRNZWV0aW5nc0J5RXZlbnRJZCh7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBldmVudElkOiB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRTZWxlY3RlZEV2ZW50SWQoKSxcclxuICAgICAgICBzb3J0Q29sdW1uOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8ubWVldGluZ1RpdGxlLFxyXG4gICAgICAgIGFzY2VuZGluZ09yZGVyOiB0cnVlLFxyXG4gICAgICAgIHBhZ2U6IHBhZ2VFdmVudC5wYWdlSW5kZXggKyAxLFxyXG4gICAgICAgIHNpemU6IHBhZ2VFdmVudC5wYWdlU2l6ZSxcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVmlldyBldmVudCBkZXRhaWxzIGFuZCBjYWxscyBnZXQgZXZlbnQgZGV0YWlscyBBUEkgYW5kIGVtaXRzIHZpZXcgZXZlbnQgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7ZXZlbnRJRH1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuXHJcbiAgdmlld0V2ZW50RGV0YWlscyhldmVudElEOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRFdmVudERldGFpbHMoZXZlbnRJRClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YSA9IHJlcz8uYm9keTtcclxuICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2U/LnNldFNlbGVjdGVkRXZlbnREYXRhKFxyXG4gICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudERhdGFcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZEZvcm1Hcm91cFZhbHVlcygpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBhbnkpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZSBlZGl0IGV2ZW50IGRldGFpbHMgb24gZ2V0IHZpZXcgZXZlbnQgZGV0YWlscyBBUEkgY2FsbC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRTZWxlY3RlZEZvcm1Hcm91cFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ3JlbGF0ZWRHcm91cCcpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5ncm91cHM/LmZpbHRlcihcclxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/Lmdyb3VwSWRcclxuICAgICAgICApPy5bMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ2V2ZW50TmFtZScpXHJcbiAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZXZlbnROYW1lKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgIC5nZXQoJ2V2ZW50VHlwZScpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5ldmVudFR5cGVzPy5maWx0ZXIoXHJcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFR5cGVcclxuICAgICAgICApPy5bMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzFdXHJcbiAgICAgIC5nZXQoJ3N0YXJ0RGF0ZScpXHJcbiAgICAgID8uc2V0VmFsdWUobW9tZW50KHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LnN0YXJ0RGF0ZSkpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bMV1cclxuICAgICAgLmdldCgnZW5kRGF0ZScpXHJcbiAgICAgID8uc2V0VmFsdWUobW9tZW50KHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmVuZERhdGUpKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzFdXHJcbiAgICAgIC5nZXQoJ3RpbWVab25lJylcclxuICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLnRpbWV6b25lcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5uYW1lID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy50aW1lWm9uZVxyXG4gICAgICAgIClbMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzJdXHJcbiAgICAgIC5nZXQoJ2FkZHJlc3MnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmxvY2F0aW9uKTtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRXZlbnREYXRhLm9wZW5Gb3JBbGwpIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1swXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzBdKTtcclxuICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudERhdGEuZ3JvdXBQYXJ0aWNpcGFudHMgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5yZWdpc3RlcmVkUGFydGljaXBhbnRzXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1sxXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzFdKTtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1syXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzJdKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5ncm91cFBhcnRpY2lwYW50cykge1xyXG4gICAgICB0aGlzLmF0dGVuZGVlc1R5cGVzWzFdLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICB0aGlzLm9uQXR0ZW5kZWVUeXBlU2VsZWN0aW9uKHRoaXMuYXR0ZW5kZWVzVHlwZXNbMV0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1syXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzJdKTtcclxuICAgIH1cclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzNdXHJcbiAgICAgIC5nZXQoJ2F0dGVuZGVlc1R5cGUnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuYXR0ZW5kZWVzVHlwZXMubWFwKChvcHRpb24pID0+IG9wdGlvbi5jaGVja2VkKSk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlsyXVxyXG4gICAgICAuZ2V0KCdjb3VudHJ5JylcclxuICAgICAgPy5zZXRWYWx1ZShcclxuICAgICAgICB0aGlzLmNvdW50cmllcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uY291bnRyeVxyXG4gICAgICAgIClbMF1cclxuICAgICAgKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzRdXHJcbiAgICAgIC5nZXQoJ2V2ZW50UGFzc3dvcmQnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmV2ZW50UGFzc3dvcmQpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bNF1cclxuICAgICAgLmdldCgnaXBBZGRyZXNzUmFuZ2UnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmlwYWRkcmVzcyk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/Lls1XVxyXG4gICAgICAuZ2V0KCdkZXNjcmlwdGlvbicpXHJcbiAgICAgID8uc2V0VmFsdWUodGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZXZlbnREZXNjKTtcclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENvbnN0cnVjdHMgZWRpdCBldmVudCBwYXlsb2FkIGFuZCBjYWxscyBlZGl0IGV2ZW50IEFQSSBhbmQgZW1pdHMgZWRpdCBldmVudCBBUEkgcmVzcG9uc2UuXHJcbiAgICogQHBhcmFtIHsqfSBmb3JtRGF0YVxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGVkaXRFdmVudChmb3JtR3JvdXBzOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgY29uc3QgZXZlbnRCYXNpY0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bMF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudERhdGVBbmRUaW1lRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsxXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50TG9jYXRpb25EZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzJdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBdHRlbmRlZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bM10/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudEFjY2Vzc0RldGFpbHMgPSBmb3JtR3JvdXBzPy5bNF0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LnN0YXJ0RGF0ZS5mb3JtYXQoXHJcbiAgICAgICAgRGF0ZUZvcm1hdHMucmVxdWVzdFBheWxvYWRGb3JtYXRcclxuICAgICAgKVxyXG4gICAgKTtcclxuICAgIGNvbnN0IGVuZERhdGUgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5jb252ZXJ0RGF0ZVRpbWVUb1VUQyhcclxuICAgICAgZXZlbnREYXRlQW5kVGltZURldGFpbHM/LmVuZERhdGUuZm9ybWF0KERhdGVGb3JtYXRzPy5yZXF1ZXN0UGF5bG9hZEZvcm1hdClcclxuICAgICk7XHJcbiAgICBjb25zdCBlZGl0RXZlbnRQYXlsb2FkOiBDcmVhdGVPckVkaXRFdmVudFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBldmVudE5hbWU6IGV2ZW50QmFzaWNEZXRhaWxzPy5ldmVudE5hbWUsXHJcbiAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2VsZWN0ZWRFdmVudElkID8/IG51bGwsXHJcbiAgICAgICAgZXZlbnRUeXBlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnRUeXBlLmlkLFxyXG4gICAgICAgIGdyb3VwSWQ6IGV2ZW50QmFzaWNEZXRhaWxzPy5yZWxhdGVkR3JvdXA/LmlkLFxyXG4gICAgICAgIHN0YXJ0RGF0ZTogc3RhcnREYXRlLFxyXG4gICAgICAgIGVuZERhdGU6IGVuZERhdGUsXHJcbiAgICAgICAgdGltZVpvbmU6IGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy50aW1lWm9uZT8ubmFtZSxcclxuICAgICAgICBjb3VudHJ5OiBldmVudExvY2F0aW9uRGV0YWlscz8uY291bnRyeT8uaWQsXHJcbiAgICAgICAgZXZlbnRQYXNzd29yZDogZXZlbnRBY2Nlc3NEZXRhaWxzPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgIG9wZW5Gb3JBbGw6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMF0sXHJcbiAgICAgICAgcmVnaXN0ZXJlZFBhcnRpY2lwYW50czogZXZlbnRBdHRlbmRlZURldGFpbHM/LmF0dGVuZGVlc1R5cGU/LlsyXSxcclxuICAgICAgICBncm91cFBhcnRpY2lwYW50czogZXZlbnRBdHRlbmRlZURldGFpbHM/LmF0dGVuZGVlc1R5cGU/LlsxXSxcclxuICAgICAgICBpcGFkZHJlc3M6IGV2ZW50QWNjZXNzRGV0YWlscz8uaXBBZGRyZXNzUmFuZ2UgPz8gJycsXHJcbiAgICAgICAgbG9jYXRpb246IGV2ZW50TG9jYXRpb25EZXRhaWxzPy5hZGRyZXNzLFxyXG4gICAgICAgIGV2ZW50VGl0bGU6IGV2ZW50QmFzaWNEZXRhaWxzPy5ldmVudE5hbWUsXHJcbiAgICAgICAgZXZlbnREZXNjOiBmb3JtR3JvdXBzPy5bNV0/LmdldFJhd1ZhbHVlKCk/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIHZpcnR1YWxNZWV0aW5nVXJsOiBldmVudExvY2F0aW9uRGV0YWlscz8udmlydHVhbE1lZXRpbmdVcmwgPz8gJycsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmVkaXRFdmVudChlZGl0RXZlbnRQYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXM/LnN0YXR1cykge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGVkaXRFdmVudFBheWxvYWQucGF5bG9hZC5ldmVudFRpdGxlICtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LnN1Y2Nlc3M/LnVwZGF0aW9uXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgc2VsZWN0ZWQgdGFibGUgcm93IGRhdGEuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldFNlbGVjdGVkUm93RGF0YShyb3c6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lZXRpbmcgPSByb3c7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgdGhlIGNsaWNrZWQgbWVldGluZyBhY3Rpb25cclxuICAgKiBAcGFyYW0ge01lbnV9IG1lbnVcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhbmRsZU1lZXRpbmdBY3Rpb25zKG1lbnU6IE1lbnUpOiB2b2lkIHtcclxuICAgIGlmIChtZW51Py5pZCA9PT0gTWVldGluZ0FjdGlvbi5ERUxFVEVfTUVFVElORylcclxuICAgICAgdGhpcy5vcGVuRGVsZXRlTWVldGluZ3NDb25maXJtYXRpb25Nb2RhbCh0aGlzLnNlbGVjdGVkTWVldGluZyk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIHRoZSBjb25maXJtYXRpb24gbW9kYWwgdG8gZ2V0IHVzZXIgY29uZmlybWF0aW9uIHRvIGRlbGV0ZSB0aGUgbWVldGluZ3MgZnJvbSB0aGUgc2VsZWN0ZWQgZXZlbnQuXHJcbiAgICogQHBhcmFtIHsqfSBzZWxlY3RlZE1lZXRpbmdzXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIG9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKHNlbGVjdGVkTWVldGluZ3M6IGFueSk6IHZvaWQge1xyXG4gICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZHMgPSBbXTtcclxuICAgIGlmIChzZWxlY3RlZE1lZXRpbmdzPy5tZWV0aW5nSWQpXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzPy5wdXNoKHNlbGVjdGVkTWVldGluZ3M/Lm1lZXRpbmdJZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIHNlbGVjdGVkTWVldGluZ3M/LmZvckVhY2goKG1lZXRpbmc6IE1lZXRpbmcpID0+IHtcclxuICAgICAgICBpZiAobWVldGluZz8ubWVldGluZ0lkKVxyXG4gICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZHM/LnB1c2gobWVldGluZy5tZWV0aW5nSWQpO1xyXG4gICAgICB9KTtcclxuICAgIGNvbnN0IGNvbmZpcm1hdGlvbkluZm8gPSB0aGlzLnNjcmVlblRleHRzPy5kZWxldGVNZWV0aW5ncz8uY29uZmlybWF0aW9uSW5mbztcclxuICAgIGNvbnN0IGRlbGV0ZVVzZXJHcm91cE1vZGFsT3B0aW9ucyA9IHtcclxuICAgICAgbGVmdEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IGNvbmZpcm1hdGlvbkluZm8/LnJpZ2h0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHByb21wdE1lc3NhZ2U6IGNvbmZpcm1hdGlvbkluZm8/LnByb21wdE1lc3NhZ2UsXHJcbiAgICAgIGFjdGlvbkJ1dHRvbkFsaWduOiBBbGlnblR5cGU/Lk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oTW9kYWxDb25maXJtYXRpb25Db21wb25lbnQsIHtcclxuICAgICAgZGF0YTogZGVsZXRlVXNlckdyb3VwTW9kYWxPcHRpb25zLFxyXG4gICAgICBhdXRvRm9jdXM6ICdkaWFsb2cnLFxyXG4gICAgICBhcmlhTGFiZWw6IHRoaXMuY29uc3RhbnRzPy5hcmlhTGFiZWw/LmFsZXJ0LFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3VsdDogYm9vbGVhbikgPT4ge1xyXG4gICAgICAgIGlmIChyZXN1bHQpIHRoaXMuZGVsZXRlRXZlbnRNZWV0aW5ncygpO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2VuZHMgQVBJIFJlcXVlc3QgdG8gZGVsZXRlIHRoZSBzZWxlY3RlZCBtZWV0aW5ncyB3aXRoaW4gZXZlbnQgYW5kIGhhbmRsZXMgdGhlIHN1Y2Nlc3MgYW5kIGVycm9yIHJlc3BvbnNlIG9mIHRoZSBodHRwIHJlcXVlc3QuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBkZWxldGVFdmVudE1lZXRpbmdzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmRlbGV0ZUV2ZW50c09yTWVldGluZ3Moe1xyXG4gICAgICAgIHBheWxvYWQ6IHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzLFxyXG4gICAgICB9KVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdHJ1ZSxcclxuICAgICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICAgIHNpemU6IHRoaXMucGFnaW5hdG9yQ29uZmlnPy5yZWNvcmRzUGVyUGFnZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgICAgICAgbWVzc2FnZTpcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTWVldGluZ0lkcy5sZW5ndGggK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmRlbGV0ZU1lZXRpbmdzPy5tZXNzYWdlPy5zdWNjZXNzPy5kZWxldGlvbixcclxuICAgICAgICAgICAgYWxlcnRUeXBlOiBBbGVydFR5cGUuU1VDQ0VTUyxcclxuICAgICAgICAgICAgaXNDbG9zZU5lZWRlZDogdHJ1ZSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgW25nQ2xhc3NdPVwic2VsZWN0ZWRFdmVudElkID8gJ2llZWVzYS1ldmVudCcgOiAnJ1wiPlxyXG4gIDxwICpuZ0lmPVwic2VsZWN0ZWRFdmVudElkXCIgY2xhc3M9XCJpZWVlc2EtdGl0bGUtbGctMjQgcGItMyBtLTBcIj5cclxuICAgIHt7IHNjcmVlblRleHRzPy5sYWJlbD8uZXZlbnREZXRhaWxzIH19XHJcbiAgPC9wPlxyXG4gIDxpZWVlc2EtZHluYW1pYy1mb3JtXHJcbiAgICAqbmdJZj1cImNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwXCJcclxuICAgIGNsYXNzPVwiaWVlZXNhLWNyZWF0ZS11cGRhdGUtZXZlbnQtZm9ybVwiXHJcbiAgICBbbGVmdEJ1dHRvbkxhYmVsXT1cImxlZnRCdXR0b25MYWJlbFwiXHJcbiAgICBbcmlnaHRCdXR0b25MYWJlbF09XCJyaWdodEJ1dHRvbkxhYmVsXCJcclxuICAgIFtpc0xlZ2VuZFZpc2libGVdPVwidHJ1ZVwiXHJcbiAgICBbaXNTdWJtaXRCdXR0b25EaXNhYmxlZF09XCJpc1N1Ym1pdEJ1dHRvbkRpc2FibGVkXCJcclxuICAgIFtjb2xXaWR0aF09XCJjb2xXaWR0aFwiXHJcbiAgICBbYWN0aW9uQnV0dG9uQWxpZ25dPVwiYWN0aW9uQnV0dG9uQWxpZ25cIlxyXG4gICAgW2Zvcm1Hcm91cHNdPVwiY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXBcIlxyXG4gICAgW2lzTGVmdEJ1dHRvbk5lZWRlZF09XCJ0cnVlXCJcclxuICAgIChmb3JtQ2hlY2tib3hTZWxlY3Rpb24pPVwib25BdHRlbmRlZVR5cGVTZWxlY3Rpb24oJGV2ZW50LCB0cnVlKVwiXHJcbiAgICAoZm9ybUxlZnRCdXR0b25DbGlja2VkKT1cIm9uRm9ybUNhbmNlbCgpXCJcclxuICAgIChmb3JtR3JvdXBzUmVmZXJlbmNlKT1cImdldENyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYoJGV2ZW50KVwiXHJcbiAgICAoZm9ybVN1Ym1pdCk9XCJvbkZvcm1TdWJtaXQoJGV2ZW50KVwiXHJcbiAgICAoZm9ybUNoYW5nZSk9XCJvbkZvcm1DaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoZm9ybVNlbGVjdFNlYXJjaCk9XCJmb3JtU2VsZWN0U2VhcmNoKCRldmVudClcIlxyXG4gID48L2llZWVzYS1keW5hbWljLWZvcm0+XHJcblxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS10aXRsZS1sZy0yNCBtYi0wIG10LTNcIlxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgZXZlbnRBY3Rpb25UeXBlID09PSBldmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVCB8fCBpc0V2ZW50Q3JlYXRlZFxyXG4gICAgXCJcclxuICA+XHJcbiAgICB7eyBzY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdEZXRhaWxzIH19XHJcbiAgPC9wPlxyXG4gIDxwXHJcbiAgICBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE0IGllZWVzYS1hZGQtbWVldGluZ3MtdGl0bGVcIlxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgZXZlbnRBY3Rpb25UeXBlID09PSBldmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUuRURJVCB8fCBpc0V2ZW50Q3JlYXRlZFxyXG4gICAgXCJcclxuICA+XHJcbiAgICB7eyBtZWV0aW5nRGV0YWlsc1RpdGxlIH19XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lZXRpbmdzPy5sZW5ndGggJiYgaXNBZGRNZWV0aW5nQWxsb3dlZFwiXHJcbiAgICAgID5cIjwvbmctY29udGFpbmVyXHJcbiAgICA+XHJcbiAgICA8YVxyXG4gICAgICAqbmdJZj1cIm1lZXRpbmdzPy5sZW5ndGggPT09IDAgJiYgaXNBZGRNZWV0aW5nQWxsb3dlZFwiXHJcbiAgICAgIGhyZWY9XCJqYXZhc2NyaXB0OnZvaWQoMClcIlxyXG4gICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcclxuICAgICAgKGNsaWNrKT1cIm9wZW5BZGRNZWV0aW5nTW9kYWwoKVwiXHJcbiAgICAgIFtuZ0NsYXNzXT1cInsgJ2llZWVzYS1hZGQtbWVldGluZy1saW5rJzogaXNBZGRNZWV0aW5nRGlzYWJsZWQgfVwiXHJcbiAgICAgID57eyBhZGRNZWV0aW5nc0xpbmsgfX08L2FcclxuICAgID5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbWVldGluZ3M/Lmxlbmd0aCAmJiBpc0FkZE1lZXRpbmdBbGxvd2VkXCJcclxuICAgICAgPlwiPC9uZy1jb250YWluZXJcclxuICAgID5cclxuICA8L3A+XHJcbiAgPGllZWVzYS1kYXRhLXRhYmxlXHJcbiAgICAqbmdJZj1cIlxyXG4gICAgICBwYWdpbmF0b3JDb25maWc/LnRvdGFsUmVjb3JkcyAmJlxyXG4gICAgICBtZWV0aW5ncz8ubGVuZ3RoICYmXHJcbiAgICAgIGV2ZW50QWN0aW9uVHlwZSA9PT0gZXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVRcclxuICAgIFwiXHJcbiAgICBjbGFzcz1cImllZWVzYS1tZWV0aW5nc1wiXHJcbiAgICBbdGFibGVEYXRhSW5mb109XCJtZWV0aW5nc1wiXHJcbiAgICBbY29sdW1uU2NoZW1hSW5mb109XCJjb2x1bW5TY2hlbWFcIlxyXG4gICAgW3NlYXJjaFBsYWNlSG9sZGVyVGV4dF09XCJzY3JlZW5UZXh0cz8uc2VhcmNoTWVldGluZ1wiXHJcbiAgICBbdGFibGVBY3Rpb25zXT1cIm1lZXRpbmdBY3Rpb25zXCJcclxuICAgIFt0YWJsZVJvd0FjdGlvbnNdPVwic2NyZWVuVGV4dHM/LnRhYmxlQWN0aW9uc1wiXHJcbiAgICBbYWRkQnV0dG9uXT1cImFkZE1lZXRpbmdCdXR0b25cIlxyXG4gICAgW3BhZ2luYXRvckNvbmZpZ109XCJwYWdpbmF0b3JDb25maWdcIlxyXG4gICAgKG1lbnVBY3Rpb25DbGljayk9XCJnZXRTZWxlY3RlZFJvd0RhdGEoJGV2ZW50KVwiXHJcbiAgICAoc2VsZWN0QWN0aW9uTWVudSk9XCJoYW5kbGVNZWV0aW5nQWN0aW9ucygkZXZlbnQpXCJcclxuICAgIChwYWdpbmF0aW9uQ2hhbmdlKT1cIm9uTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAoYWRkUm93KT1cIm9wZW5BZGRNZWV0aW5nTW9kYWwoKVwiXHJcbiAgICAoc2VsZWN0ZWRSb3dzVG9EZWxldGUpPVwib3BlbkRlbGV0ZU1lZXRpbmdzQ29uZmlybWF0aW9uTW9kYWwoJGV2ZW50KVwiXHJcbiAgPlxyXG4gIDwvaWVlZXNhLWRhdGEtdGFibGU+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
1072
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLW1vZGlmeS1ldmVudC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ldmVudHMtYW5kLW1lZXRpbmdzL3NyYy9saWIvY29tcG9uZW50cy9jcmVhdGUtbW9kaWZ5LWV2ZW50L2NyZWF0ZS1tb2RpZnktZXZlbnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZXZlbnRzLWFuZC1tZWV0aW5ncy9zcmMvbGliL2NvbXBvbmVudHMvY3JlYXRlLW1vZGlmeS1ldmVudC9jcmVhdGUtbW9kaWZ5LWV2ZW50LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFHWixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQWEsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkQsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBR1osY0FBYyxFQUdkLGVBQWUsRUFFZixlQUFlLEVBRWYsMEJBQTBCLEVBRTFCLGtCQUFrQixFQUNsQixvQkFBb0IsR0FFckIsTUFBTSwwQkFBMEIsQ0FBQztBQUNsQyxPQUFPLEtBQUssV0FBVyxNQUFNLDZCQUE2QixDQUFDO0FBQzNELE9BQU8sRUFBRSxtQ0FBbUMsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBRXBGLE9BQU8sRUFBYyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFDTCxTQUFTLEVBSVQsU0FBUyxHQUNWLE1BQU0scUJBQXFCLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQzVELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFB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LEVBQUUsV0FBVyxDQUFDO29CQUM3QixNQUFNLEVBQUUsUUFBUTtvQkFDaEIsT0FBTyxFQUNMLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNO3dCQUM5QixJQUFJLENBQUMsV0FBVyxFQUFFLGNBQWMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVE7b0JBQzlELFNBQVMsRUFBRSxTQUFTLENBQUMsT0FBTztvQkFDNUIsYUFBYSxFQUFFLElBQUk7aUJBQ3BCLENBQUMsQ0FBQztZQUNMLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsd0JBQXdCLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BELENBQUM7U0FDRixDQUFDLENBQUM7SUFDUCxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUIsQ0FBQzsrR0Fwc0NVLDRCQUE0QjttR0FBNUIsNEJBQTRCLG1MQTBCNUIsb0JBQW9CLGdEQzFHakMsdzFGQTJFQSxpcWZERFksWUFBWSxpT0FBRSxvQkFBb0IsMnZCQUFFLGtCQUFrQjs7NEZBTXJELDRCQUE0QjtrQkFSeEMsU0FBUzsrQkFDRSw0QkFBNEIsV0FDN0IsQ0FBQyxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsY0FDckQsSUFBSSxpQkFHRCxpQkFBaUIsQ0FBQyxJQUFJO2dPQTRCSixvQkFBb0I7c0JBQXBELFNBQVM7dUJBQUMsb0JBQW9CO2dCQUNyQixVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbiAgT3V0cHV0LFxyXG4gIFZpZXdDaGlsZCxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQge1xyXG4gIEFsaWduVHlwZSxcclxuICBDYWxlbmRhclR5cGUsXHJcbiAgQ2hlY2tib3hPcHRpb24sXHJcbiAgRm9ybUdyaWQsXHJcbiAgTW9kYWxDb21wb25lbnQsXHJcbiAgUGFnaW5hdG9yQ29uZmlnLFxyXG4gIFNlbGVjdE9wdGlvbixcclxuICBGb3JtQ29udHJvbFR5cGUsXHJcbiAgRm9ybU1vZGVsLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxuICBUYWJsZUNvbHVtblNjaGVtYSxcclxuICBNb2RhbENvbmZpcm1hdGlvbkNvbXBvbmVudCxcclxuICBNZW51LFxyXG4gIERhdGFUYWJsZUNvbXBvbmVudCxcclxuICBEeW5hbWljRm9ybUNvbXBvbmVudCxcclxuICBDb25maXJtYXRpb25Nb2RhbERhdGEsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dHMgZnJvbSAnLi4vLi4vYXNzZXRzL2NvbnN0YW50cy5qc29uJztcclxuaW1wb3J0IHsgRXZlbnRzQW5kTWVldGluZ3NWYWxpZGF0aW9uUGF0dGVybnMgfSBmcm9tICcuLi8uLi9hc3NldHMvZm9ybS12YWxpZGF0aW9ucyc7XHJcbmltcG9ydCB7IEV2ZW50c0FuZE1lZXRpbmdzU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V2ZW50cy1hbmQtbWVldGluZ3Muc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUsIFN1YmplY3QsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQge1xyXG4gIEFsZXJ0VHlwZSxcclxuICBBbGVydHNTZXJ2aWNlLFxyXG4gIENvdW50cnlBbmRUaW1lem9uZVNlcnZpY2UsXHJcbiAgRGVhY3RpdmF0ZUNvbXBvbmVudCxcclxuICBNb2RhbFR5cGUsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vdXRpbGl0eSc7XHJcbmltcG9ydCB7IEZvcm1TdGF0dXMgfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1zdGF0dXMubW9kZWwnO1xyXG5pbXBvcnQgeyBEYXRlRm9ybWF0cyB9IGZyb20gJy4uLy4uL2Fzc2V0cy9kYXRlLWZvcm1hdHMnO1xyXG5pbXBvcnQgeyBHZXRHcm91cFJlc3BvbnNlLCBHcm91cEluZm8gfSBmcm9tICcuLi8uLi9tb2RlbHMvZ3JvdXAtcmVzcG9uc2UubW9kZWwnO1xyXG5pbXBvcnQgeyBDcmVhdGVPckVkaXRFdmVudFBheWxvYWQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY3JlYXRlLWV2ZW50Lm1vZGVsJztcclxuaW1wb3J0IHsgQXR0ZW5kZWVUeXBlIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2F0dGVuZGVlLXR5cGUubW9kZWwnO1xyXG5pbXBvcnQge1xyXG4gIEdldE1lZXRpbmdzQnlFdmVudElkUGF5bG9hZCxcclxuICBNZWV0aW5nLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy9tZWV0aW5ncy11bmRlci1ldmVudHMubW9kZWwnO1xyXG5pbXBvcnQgeyBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvZXZlbnQtbWVldGluZy1mdW5jdGlvbi10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IEV2ZW50RGV0YWlsc0NvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdmlldy1ldmVudC5tb2RlbCc7XHJcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQgeyBBZGRNZWV0aW5nQ29tcG9uZW50IH0gZnJvbSAnLi4vYWRkLW1lZXRpbmcvYWRkLW1lZXRpbmcuY29tcG9uZW50JztcclxuaW1wb3J0IG1vbWVudF8gZnJvbSAnbW9tZW50JztcclxuaW1wb3J0IHsgUGFnZUV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgUGVybWlzc2lvblR5cGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcGVybWlzc2lvbi10eXBlLm1vZGVsJztcclxuaW1wb3J0IHsgTWVldGluZ0FjdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9ldmVudC1vci1tZWV0aW5nLW1lbnUtYWN0aW9uLm1vZGVsJztcclxuaW1wb3J0IHsgUm91dGVyLCBVcmxUcmVlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcclxuY29uc3QgbW9tZW50ID0gbW9tZW50XztcclxuY29uc3QgQ09MVU1OX0RFRiA9IHtcclxuICBlbmREYXRlQW5kVGltZTogJ2VuZC1kYXRlLVRpbWUnLFxyXG4gIGdyb3VwOiAncmVsYXRlZC1ncm91cCcsXHJcbiAgbG9jYXRpb246ICdsb2NhdGlvbicsXHJcbn07XHJcblxyXG4vKipcclxuICogSW1wbGVtZW50YXRpb24gb2YgZXZlbnQgY3JlYXRpb24gb3IgbW9kaWZpY2F0aW9uLlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAqIEBpbXBsZW1lbnRzIHtPbkluaXR9XHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2llZWVzYS1jcmVhdGUtbW9kaWZ5LWV2ZW50JyxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBEeW5hbWljRm9ybUNvbXBvbmVudCwgRGF0YVRhYmxlQ29tcG9uZW50XSxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcmVhdGUtbW9kaWZ5LWV2ZW50LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9jcmVhdGUtbW9kaWZ5LWV2ZW50LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICBpbXBsZW1lbnRzIERlYWN0aXZhdGVDb21wb25lbnQsIE9uSW5pdCwgT25EZXN0cm95XHJcbntcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGRpYWxvZ1JlZjogYW55O1xyXG4gIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGNvbnN0YW50czogYW55ID0gc2NyZWVuVGV4dHM7XHJcbiAgY2hhcnNMaW1pdCA9IHRoaXMuY29uc3RhbnRzPy5jaGFyYWN0ZXJMaW1pdHM7XHJcbiAgc2NyZWVuVGV4dHMgPSB0aGlzLmNvbnN0YW50cz8uY3JlYXRlT3JNb2RpZnlFdmVudDtcclxuICBhZGRNZWV0aW5nID0gdGhpcy5zY3JlZW5UZXh0cz8uYWRkTWVldGluZztcclxuICBjb2x1bW5IZWFkaW5nID0gdGhpcy5zY3JlZW5UZXh0cz8uY29sdW1uU2NoZW1hPy5oZWFkaW5nO1xyXG4gIGxlZnRCdXR0b25MYWJlbCA9IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5sZWZ0QnV0dG9uTGFiZWw7XHJcbiAgcmlnaHRCdXR0b25MYWJlbCA9IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5yaWdodEJ1dHRvbkxhYmVsO1xyXG4gIG1lZXRpbmdEZXRhaWxzVGl0bGUgPSB0aGlzLmFkZE1lZXRpbmc/LmZpcnN0TGFiZWw7XHJcbiAgYWRkTWVldGluZ3NMaW5rID0gdGhpcy5hZGRNZWV0aW5nPy5hZGRNZWV0aW5nc0xpbms7XHJcbiAgaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IHRydWU7XHJcbiAgY29sV2lkdGg6IEZvcm1HcmlkID0geyB4czogMTIsIHhsOiAxMiwgc206IDEyLCBtZDogMTIsIGxnOiAxMiB9O1xyXG4gIG1lZXRpbmdzOiBNZWV0aW5nW10gPSBbXTtcclxuICBjcmVhdGVPclVwZGF0ZUV2ZW50c0Zvcm1Hcm91cCE6IEZvcm1Nb2RlbDtcclxuICBhY3Rpb25CdXR0b25BbGlnbiA9IEFsaWduVHlwZS5MRUZUO1xyXG4gIGV2ZW50VHlwZXM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgc2VsZWN0ZWRBdHRlbmRlZVR5cGVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIGlzQ3JlYXRlT3JVcGRhdGVFdmVudEZvcm1JbnZhbGlkID0gZmFsc2U7XHJcbiAgY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZiE6IEZvcm1Hcm91cFtdO1xyXG4gIGF0dGVuZGVlc1R5cGVzOiBDaGVja2JveE9wdGlvbltdID0gdGhpcy5jb25zdGFudHM/LmF0dGVuZGVlc1R5cGU7XHJcbiAgQFZpZXdDaGlsZChEeW5hbWljRm9ybUNvbXBvbmVudCkgZHluYW1pY0Zvcm1Db21wb25lbnQhOiBEeW5hbWljRm9ybUNvbXBvbmVudDtcclxuICBAT3V0cHV0KCkgZm9ybUNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBncm91cHM6IFNlbGVjdE9wdGlvbltdID0gW107XHJcbiAgY291bnRyaWVzITogU2VsZWN0T3B0aW9uW107XHJcbiAgc2VsZWN0ZWRFdmVudElkITogc3RyaW5nO1xyXG4gIGV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZSA9IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZTtcclxuICBzZWxlY3RlZEV2ZW50RGF0YSE6IEV2ZW50RGV0YWlsc0NvbmZpZ3VyYXRpb247XHJcbiAgdGltZXpvbmVzITogU2VsZWN0T3B0aW9uW107XHJcbiAgY29sdW1uU2NoZW1hITogVGFibGVDb2x1bW5TY2hlbWFbXTtcclxuICBwYWdpbmF0b3JDb25maWc6IFBhZ2luYXRvckNvbmZpZyA9IHtcclxuICAgIHJlY29yZHNQZXJQYWdlOiB0aGlzLnNjcmVlblRleHRzPy5wYWdlU2l6ZU9wdGlvbnM/LlsxXSxcclxuICAgIHBhZ2VTaXplT3B0aW9uczogdGhpcy5zY3JlZW5UZXh0cz8ucGFnZVNpemVPcHRpb25zLFxyXG4gICAgdG90YWxSZWNvcmRzOiAwLFxyXG4gIH07XHJcbiAgZGVmYXVsdFRpbWVab25lcyE6IFNlbGVjdE9wdGlvbltdO1xyXG4gIGRlZmF1bHRDb3VudHJpZXMhOiBTZWxlY3RPcHRpb25bXTtcclxuICBtZWV0aW5nQWN0aW9ucyA9IHtcclxuICAgIGlzQWRkTmVlZGVkOiB0cnVlLFxyXG4gICAgaXNEZWxldGVOZWVkZWQ6IHRydWUsXHJcbiAgICBpc1NlYXJjaE5lZWRlZDogdHJ1ZSxcclxuICAgIGlzRmlsdGVyTmVlZGVkOiBmYWxzZSxcclxuICAgIGlzRWRpdE5lZWRlZDogZmFsc2UsXHJcbiAgICBpc1BhZ2luYXRpb25OZWVkZWQ6IHRydWUsXHJcbiAgfTtcclxuICBldmVudEFjdGlvblR5cGUhOiBFdmVudEFuZE1lZXRpbmdGdW5jdGlvblR5cGU7XHJcbiAgaXNFdmVudENyZWF0ZWQgPSBmYWxzZTtcclxuICBzZWxlY3RlZE1lZXRpbmdJZHM6IHN0cmluZ1tdID0gW107XHJcbiAgc2VydmVyQ3VycmVudERhdGUhOiBzdHJpbmc7XHJcbiAgaXNBZGRNZWV0aW5nRGlzYWJsZWQgPSBmYWxzZTtcclxuICBhZGRNZWV0aW5nQnV0dG9uID0gdGhpcy5zY3JlZW5UZXh0cz8uYnV0dG9ucz8uWzBdO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgc2VsZWN0ZWRNZWV0aW5nOiBhbnk7XHJcbiAgaXNBZGRNZWV0aW5nQWxsb3dlZCA9IGZhbHNlO1xyXG4gIGNvbmZpcm1hdGlvbk1vZGFsVGV4dHMgPVxyXG4gICAgdGhpcy5jb25zdGFudHM/LmNyZWF0ZU1vZGlmeUV2ZW50T3JNZWV0aW5nXHJcbiAgICAgID8udW5zYXZlZEZvcm1DaGFuZ2VzQ29uZmlybWF0aW9uRGlhbG9nT3B0aW9ucztcclxuICBjb25maXJtYXRpb25Nb2RhbENvbmZpZyE6IENvbmZpcm1hdGlvbk1vZGFsRGF0YTtcclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGRpYWxvZzogTWF0RGlhbG9nLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGV2ZW50c0FuZE1lZXRpbmdzU2VydmljZTogRXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgYWxlcnRTZXJ2aWNlOiBBbGVydHNTZXJ2aWNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIGNvdW50cnlBbmRUaW1lem9uZVNlcnZpY2U6IENvdW50cnlBbmRUaW1lem9uZVNlcnZpY2UsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyByb3V0ZXI6IFJvdXRlclxyXG4gICkge1xyXG4gICAgdGhpcy5jb3VudHJpZXMgPSB0aGlzLmRlZmF1bHRDb3VudHJpZXMgPVxyXG4gICAgICB0aGlzLmNvdW50cnlBbmRUaW1lem9uZVNlcnZpY2UuZ2V0QWxsQ291bnRyaWVzKCk7XHJcbiAgICB0aGlzLnRpbWV6b25lcyA9IHRoaXMuZGVmYXVsdFRpbWVab25lcyA9XHJcbiAgICAgIHRoaXMuY291bnRyeUFuZFRpbWV6b25lU2VydmljZS5nZXRVVENUaW1lem9uZU9wdGlvbnMoKTtcclxuICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXMubWFwKChhdHRlbmRlZSkgPT4ge1xyXG4gICAgICBhdHRlbmRlZS5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgIGF0dGVuZGVlLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlcnMgY29uZmlybWF0aW9uIG1vZGFsIHdoaWxlIGxlYXZpbmcgdW5zYXZlZCBmb3JtLlxyXG4gICAqIEByZXR1cm4geyhib29sZWFuXHJcbiAgICogICAgIHwgVXJsVHJlZVxyXG4gICAqICAgICB8IE9ic2VydmFibGU8Ym9vbGVhbiB8IFVybFRyZWU+XHJcbiAgICogICAgIHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4pfVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgY2FuRGVhY3RpdmF0ZSgpOlxyXG4gICAgfCBib29sZWFuXHJcbiAgICB8IFVybFRyZWVcclxuICAgIHwgT2JzZXJ2YWJsZTxib29sZWFuIHwgVXJsVHJlZT5cclxuICAgIHwgUHJvbWlzZTxib29sZWFuIHwgVXJsVHJlZT4ge1xyXG4gICAgaWYgKHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5nZXRFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VTdGF0dXMoKSkge1xyXG4gICAgICB0aGlzLmRpYWxvZ1JlZiA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5vcGVuQ29uZmlybWF0aW9uTW9kYWwoXHJcbiAgICAgICAgdGhpcy5jb25maXJtYXRpb25Nb2RhbENvbmZpZ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm4gdGhpcy5kaWFsb2dSZWY/LmFmdGVyQ2xvc2VkKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogSW5pdGlhbGl6ZXMgY29sdW1uIHNjaGVtYSwgZ3JvdXBzLCBtZWV0aW5ncyBjcmVhdGVkIHVuZGVyIGV2ZW50cywgZXZlbnQgdHlwZXMgYW5kIGNyZWF0ZXMgZm9ybSBncm91cC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5tZWV0aW5nQWN0aW9ucy5pc0RlbGV0ZU5lZWRlZCA9XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnZhbGlkYXRlQWNjZXNzKFxyXG4gICAgICAgIFBlcm1pc3Npb25UeXBlLkRFTEVURV9NRUVUSU5HXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmZpbHRlck1lZXRpbmdUYWJsZUFjdGlvbnMoKTtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uTW9kYWxDb25maWcgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogdGhpcy5jb25maXJtYXRpb25Nb2RhbFRleHRzPy5sZWZ0QnV0dG9uTGFiZWwsXHJcbiAgICAgIHJpZ2h0QnV0dG9uTGFiZWw6IHRoaXMuY29uZmlybWF0aW9uTW9kYWxUZXh0cz8ucmlnaHRCdXR0b25MYWJlbCxcclxuICAgICAgcHJvbXB0TWVzc2FnZTogdGhpcy5jb25maXJtYXRpb25Nb2RhbFRleHRzPy5wcm9tcHRNZXNzYWdlLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogQWxpZ25UeXBlLk1JRERMRSxcclxuICAgIH07XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uY2FuQ2xvc2VBZGRNZWV0aW5nTW9kYWwkPy5uZXh0KGZhbHNlKTtcclxuICAgIHRoaXMuaW5pdGlhbGl6ZUNvbHVtblNjaGVtYSgpO1xyXG4gICAgdGhpcy5nZXRHcm91cHMoKTtcclxuICAgIHRoaXMuZ2V0RXZlbnRUeXBlcygpO1xyXG4gICAgdGhpcy5zZWxlY3RlZEV2ZW50SWQgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2VsZWN0ZWRFdmVudElkO1xyXG4gICAgdGhpcy5jcmVhdGVzRXZlbnRGb3JtR3JvdXAoKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuYWN0aW9uVHlwZSA9PT1cclxuICAgICAgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmV2ZW50QWN0aW9uVHlwZSA9IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5FRElUO1xyXG4gICAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICBldmVudElkOiB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRTZWxlY3RlZEV2ZW50SWQoKSxcclxuICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5tZWV0aW5nVGl0bGUsXHJcbiAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdHJ1ZSxcclxuICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudmlld0V2ZW50RGV0YWlscyh0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2VsZWN0ZWRFdmVudElkKTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNBZGRNZWV0aW5nQWxsb3dlZCA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy52YWxpZGF0ZUFjY2VzcyhcclxuICAgICAgUGVybWlzc2lvblR5cGUuQ1JFQVRFX01FRVRJTkdcclxuICAgICk7XHJcbiAgICB0aGlzLm1lZXRpbmdBY3Rpb25zLmlzQWRkTmVlZGVkID0gdGhpcy5pc0FkZE1lZXRpbmdBbGxvd2VkO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID09PVxyXG4gICAgICAgIEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5DUkVBVEUgJiZcclxuICAgICAgdGhpcy5zZWxlY3RlZEV2ZW50SWRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgICBldmVudElkOiB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5nZXRTZWxlY3RlZEV2ZW50SWQoKSxcclxuICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5tZWV0aW5nVGl0bGUsXHJcbiAgICAgICAgICBhc2NlbmRpbmdPcmRlcjogdHJ1ZSxcclxuICAgICAgICAgIHBhZ2U6IDEsXHJcbiAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZXZlbnRBY3Rpb25UeXBlID0gRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVQ7XHJcbiAgICAgIHRoaXMudmlld0V2ZW50RGV0YWlscyh0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2VsZWN0ZWRFdmVudElkKTtcclxuICAgICAgdGhpcy5vcGVuQWRkTWVldGluZ01vZGFsKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uY2FuQ2xvc2VBZGRNZWV0aW5nTW9kYWwkXHJcbiAgICAgID8ucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlICYmIHRoaXMuZGlhbG9nUmVmKSB7XHJcbiAgICAgICAgICB0aGlzLmRpYWxvZ1JlZj8uY2xvc2UoKTtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5jYW5DbG9zZUFkZE1lZXRpbmdNb2RhbCQ/Lm5leHQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZpbHRlcnMgdGhlIG1lZXRpbmcgdGFibGUgbWVudSBhY3Rpb25zIGJhc2VkIG9uIG1lZXRpbmdzIHBlcm1pc3Npb24uXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBmaWx0ZXJNZWV0aW5nVGFibGVBY3Rpb25zKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2NyZWVuVGV4dHM/LnRhYmxlQWN0aW9ucylcclxuICAgICAgdGhpcy5zY3JlZW5UZXh0cy50YWJsZUFjdGlvbnMgPVxyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldEZpbHRlcmVkTWVldGluZ0FjdGlvbnMoXHJcbiAgICAgICAgICB0aGlzLnNjcmVlblRleHRzLnRhYmxlQWN0aW9uc1xyXG4gICAgICAgICk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0YWJsZSBjb2x1bW4gc2NoZW1hIHRvIGRpc3BsYXkgdGhlIG1lZXRpbmcgYW5kIGl0IGRldGFpbHMgaW4gdGFidWxhciB2aWV3LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUNvbHVtblNjaGVtYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuU0VMRUNULFxyXG4gICAgICAgIGhlYWRpbmc6ICcnLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5zZWxlY3R9YCxcclxuICAgICAgICBpc1N0aWNreUNvbHVtbjogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAyLFxyXG4gICAgICAgIGNvbHVtbkRlZjogVGFibGVDb2x1bW5UeXBlLkxJTkssXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5uYW1lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5MSU5LLFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQubWVldGluZ1RpdGxlfWAsXHJcbiAgICAgICAgaXNTdGlja3lDb2x1bW46IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogMyxcclxuICAgICAgICBjb2x1bW5EZWY6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uc3RhcnREYXRlQW5kVGltZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PlxyXG4gICAgICAgICAgYCR7bW9tZW50KGVsZW1lbnQubWVldGluZ1N0RGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy5kaXNwbGF5Rm9ybWF0XHJcbiAgICAgICAgICApfTxicj4ke21vbWVudChlbGVtZW50Lm1lZXRpbmdTdERhdGUpLmZvcm1hdChcclxuICAgICAgICAgICAgRGF0ZUZvcm1hdHMudGltZUZvcm1hdFxyXG4gICAgICAgICAgKX1gLFxyXG4gICAgICAgIGlzSFRNTENlbGxEYXRhOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDQsXHJcbiAgICAgICAgY29sdW1uRGVmOiBDT0xVTU5fREVGPy5lbmREYXRlQW5kVGltZSxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmVuZERhdGVBbmRUaW1lLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+XHJcbiAgICAgICAgICBgJHttb21lbnQoZWxlbWVudC5tZWV0aW5nRWREYXRlKS5mb3JtYXQoXHJcbiAgICAgICAgICAgIERhdGVGb3JtYXRzLmRpc3BsYXlGb3JtYXRcclxuICAgICAgICAgICl9PGJyPiR7bW9tZW50KGVsZW1lbnQubWVldGluZ0VkRGF0ZSkuZm9ybWF0KFxyXG4gICAgICAgICAgICBEYXRlRm9ybWF0cy50aW1lRm9ybWF0XHJcbiAgICAgICAgICApfWAsXHJcbiAgICAgICAgaXNIVE1MQ2VsbERhdGE6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBpZDogNSxcclxuICAgICAgICBjb2x1bW5EZWY6IENPTFVNTl9ERUY/Lmdyb3VwLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uZ3JvdXAsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5ncm91cE5hbWV9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA2LFxyXG4gICAgICAgIGNvbHVtbkRlZjogQ09MVU1OX0RFRj8ubG9jYXRpb24sXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5sb2NhdGlvbixcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm1lZXRpbmdMb2NhdGlvbn1gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDcsXHJcbiAgICAgICAgY29sdW1uRGVmOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmFjdGlvbixcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuQUNUSU9OUyxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LmFjdGlvbn1gLFxyXG4gICAgICAgIGlzU3RpY2t5RW5kQ29sdW1uOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgXTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyB0aGUgZm9ybSBncm91cFxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgY3JlYXRlc0V2ZW50Rm9ybUdyb3VwKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50c0Zvcm1Hcm91cCA9IHtcclxuICAgICAgZm9ybUdyb3VwOiBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmJhc2ljRGV0YWlscyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuU0VMRUNULFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8ucmVsYXRlZEdyb3VwICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAncmVsYXRlZEdyb3VwJyxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuZ3JvdXBzLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LnJlbGF0ZWRHcm91cCxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8ucmVsYXRlZEdyb3VwLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5yZWxhdGVkR3JvdXAsXHJcbiAgICAgICAgICAgICAgaXNTZWFyY2g6IHRydWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uZXZlbnROYW1lICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZXZlbnROYW1lJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFxyXG4gICAgICAgICAgICAgICAgICBFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucy5tZWV0aW5nT3JFdmVudE5hbWVPckZhY2lsaXRhdG9yXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8xNTApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgbWF4Q2hhckNvdW50OiB0aGlzLmNoYXJzTGltaXQubGltaXRUbzE1MCxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LmV2ZW50TmFtZSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8ubWVldGluZ09yRXZlbnROYW1lLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uZXZlbnROYW1lTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgaXNSZWFkb25seTogZmFsc2UsXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmV2ZW50TmFtZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uZXZlbnROYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmV2ZW50VHlwZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2V2ZW50VHlwZScsXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLmV2ZW50VHlwZXMsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1ZhbGlkYXRvcnMucmVxdWlyZWRdLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZXZlbnRUeXBlLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5zdXBwb3J0VGV4dD8uZXZlbnRUeXBlLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5ldmVudFR5cGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmV2ZW50VHlwZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8uZGF0ZUFuZFRpbWUsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkRBVEUsXHJcbiAgICAgICAgICAgICAgZGF0ZVBpY2tlcjoge1xyXG4gICAgICAgICAgICAgICAgY2FsZW5kYXJUeXBlOiBDYWxlbmRhclR5cGUuU0lOR0xFX0RBVEVfU0VMRUNUSU9OLFxyXG4gICAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5zdGFydERhdGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZGF0ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnc3RhcnREYXRlJyxcclxuICAgICAgICAgICAgICBpc0xhYmVsQWxpZ25lZExlZnQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICByZXF1aXJlZEVycm9yTWVzc2FnZTogdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnJlcXVpcmVkLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uc3RhcnREYXRlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5zdGFydERhdGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuREFURSxcclxuICAgICAgICAgICAgICBkYXRlUGlja2VyOiB7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhclR5cGU6IENhbGVuZGFyVHlwZS5TSU5HTEVfREFURV9TRUxFQ1RJT04sXHJcbiAgICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmVuZERhdGUgKyAnKicsXHJcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlckxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZGF0ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZW5kRGF0ZScsXHJcbiAgICAgICAgICAgICAgaXNMYWJlbEFsaWduZWRMZWZ0OiBmYWxzZSxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgICAgbWluRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmludmFsaWREYXRUaW1lRXJyb3JNZXNzYWdlLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5lbmREYXRlLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5lbmREYXRlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlNFTEVDVCxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LnRpbWVab25lICsgJyonLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAndGltZVpvbmUnLFxyXG4gICAgICAgICAgICAgIHZhbGlkYXRpb246IFtWYWxpZGF0b3JzLnJlcXVpcmVkXSxcclxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5zY3JlZW5UZXh0cz8ucGxhY2Vob2xkZXI/LnRpbWVab25lLFxyXG4gICAgICAgICAgICAgIHJlcXVpcmVkRXJyb3JNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucmVxdWlyZWQsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy50aW1lWm9uZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8udGltZVpvbmUsXHJcbiAgICAgICAgICAgICAgZHJvcGRvd25PcHRpb25zOiB0aGlzLnRpbWV6b25lcyxcclxuICAgICAgICAgICAgICBpc1NlYXJjaDogdHJ1ZSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsZWdlbmQ6IHRoaXMuc2NyZWVuVGV4dHM/LmxlZ2VuZD8ubG9jYXRpb24sXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLlRFWFRfQVJFQSxcclxuICAgICAgICAgICAgICBsYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFkZHJlc3MsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdhZGRyZXNzJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLnBhdHRlcm4oRXZlbnRzQW5kTWVldGluZ3NWYWxpZGF0aW9uUGF0dGVybnMuYWRkcmVzcyksXHJcbiAgICAgICAgICAgICAgICBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLmNoYXJzTGltaXQ/LmxpbWl0VG8xNTApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgIG1heENoYXJDb3VudDogdGhpcy5jaGFyc0xpbWl0Py5saW1pdFRvMTUwLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8uYWRkcmVzc01heENoYXJzLFxyXG4gICAgICAgICAgICAgIGlzUmVhZG9ubHk6IGZhbHNlLFxyXG4gICAgICAgICAgICAgIGFyaWFNdWx0aWxpbmU6IHRydWUsXHJcbiAgICAgICAgICAgICAgaXNSZXNpemU6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGF0dGVybkVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5wYXR0ZXJuPy5hZGRyZXNzLFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uYWRkcmVzcyxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uYWRkcmVzcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5TRUxFQ1QsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnY291bnRyeScsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5jb3VudHJ5LFxyXG4gICAgICAgICAgICAgIGFyaWFMYWJlbDogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFMYWJlbD8uY291bnRyeSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uY291bnRyeSxcclxuICAgICAgICAgICAgICBkcm9wZG93bk9wdGlvbnM6IHRoaXMuY291bnRyaWVzLFxyXG4gICAgICAgICAgICAgIGlzU2VhcmNoOiB0cnVlLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxlZ2VuZDogdGhpcy5zY3JlZW5UZXh0cz8ubGVnZW5kPy5hdHRlbmRlZXMsXHJcbiAgICAgICAgICBjb250cm9sczogW1xyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogRm9ybUNvbnRyb2xUeXBlLkNIRUNLQk9YLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXR0ZW5kZWVzVHlwZSArICcqJyxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2F0dGVuZGVlc1R5cGUnLFxyXG4gICAgICAgICAgICAgIG1pblNlbGVjdGlvblJlcXVpcmVkOiAxLFxyXG4gICAgICAgICAgICAgIGNoZWNrYm94T3B0aW9uczogdGhpcy5hdHRlbmRlZXNUeXBlcyxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmF0dGVuZGVlc1R5cGUsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmF0dGVuZGVlc1R5cGUsXHJcbiAgICAgICAgICAgICAgcmVxdWlyZWRFcnJvck1lc3NhZ2U6IHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5yZXF1aXJlZCxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5yZXF1aXJlZF0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmFjY2VzcyxcclxuICAgICAgICAgIGNvbnRyb2xzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuSU5QVVQsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIGNvbnRyb2xOYW1lOiAnZXZlbnRQYXNzd29yZCcsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5wYXR0ZXJuKFxyXG4gICAgICAgICAgICAgICAgICBFdmVudHNBbmRNZWV0aW5nc1ZhbGlkYXRpb25QYXR0ZXJucy5ldmVudFBhc3N3b3JkXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgICAgVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8yMCksXHJcbiAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICBtYXhDaGFyQ291bnQ6IHRoaXMuY2hhcnNMaW1pdC5saW1pdFRvMjAsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5ldmVudFBhc3N3b3JkTWF4Q2hhcnMsXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5ldmVudFBhc3N3b3JkLFxyXG4gICAgICAgICAgICAgIHBhdHRlcm5FcnJvck1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5lcnJvcj8ucGF0dGVybj8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgICAgICAgYXJpYURlc2NyaWJlZEJ5SWQ6XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYURlc2NyaWJlZEJ5SWQ/LmV2ZW50UGFzc3dvcmQsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBGb3JtQ29udHJvbFR5cGUuVEVYVF9BUkVBLFxyXG4gICAgICAgICAgICAgIGxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uaXBBZGRyZXNzUmFuZ2UsXHJcbiAgICAgICAgICAgICAgY29udHJvbE5hbWU6ICdpcEFkZHJlc3NSYW5nZScsXHJcbiAgICAgICAgICAgICAgdmFsaWRhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaXBBZGRyZXNzUmFuZ2VWYWxpZGF0b3IoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxpbWl0Py5ub09mSXBBZGRyZXNzUmFuZ2VTZXRzXHJcbiAgICAgICAgICAgICAgICApLFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMuc2NyZWVuVGV4dHM/LnBsYWNlaG9sZGVyPy5pcEFkZHJlc3NSYW5nZSxcclxuICAgICAgICAgICAgICBhcmlhTXVsdGlsaW5lOiB0cnVlLFxyXG4gICAgICAgICAgICAgIGlzUmVzaXplOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uc3VwcG9ydFRleHQ/LmlwQWRkcmVzc1JhbmdlRm9ybWF0VGV4dCxcclxuICAgICAgICAgICAgICBwYXR0ZXJuRXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LnBhdHRlcm4/LmlwQWRkcmVzc1JhbmdlLFxyXG4gICAgICAgICAgICAgIG1heEVycm9yTWVzc2FnZTpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/Lm1lc3NhZ2U/LmVycm9yPy5saW1pdD8ubm9PZklwQWRkcmVzc1JhbmdlU2V0cyxcclxuICAgICAgICAgICAgICBtYXhSYW5nZUxpbWl0OiB0aGlzLnNjcmVlblRleHRzPy5saW1pdD8ubm9PZklwQWRkcmVzc1JhbmdlU2V0cyxcclxuICAgICAgICAgICAgICByZW1haW5pbmdDaGFyc0xlZnRNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uaXBBZGRyZXNzUmFuZ2VSZW1haW5pbmcsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5pcEFkZHJlc3NSYW5nZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uaXBBZGRyZXNzUmFuZ2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGVnZW5kOiB0aGlzLnNjcmVlblRleHRzPy5sZWdlbmQ/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgY29udHJvbHM6IFtcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5URVhUX0FSRUEsXHJcbiAgICAgICAgICAgICAgbGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2Rlc2NyaXB0aW9uJyxcclxuICAgICAgICAgICAgICB2YWxpZGF0aW9uOiBbVmFsaWRhdG9ycy5tYXhMZW5ndGgodGhpcy5jaGFyc0xpbWl0LmxpbWl0VG8yMDAwKV0sXHJcbiAgICAgICAgICAgICAgbWF4Q2hhckNvdW50OiB0aGlzLmNoYXJzTGltaXQubGltaXRUbzIwMDAsXHJcbiAgICAgICAgICAgICAgbWF4RXJyb3JNZXNzYWdlOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uZXJyb3I/LmxpbWl0Py5kZXNjcmlwdGlvbk1heENoYXJzLFxyXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0aGlzLnNjcmVlblRleHRzPy5wbGFjZWhvbGRlcj8uZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICAgICAgYXJpYU11bHRpbGluZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBpc1Jlc2l6ZTogdHJ1ZSxcclxuICAgICAgICAgICAgICBhcmlhTGFiZWw6IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhTGFiZWw/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeUlkOlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/LmFyaWFEZXNjcmliZWRCeUlkPy5kZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6IEZvcm1Db250cm9sVHlwZS5DSEVDS0JPWCxcclxuICAgICAgICAgICAgICBjb250cm9sTmFtZTogJ2NyZWRpdHNBcHBsaWNhYmxlJyxcclxuICAgICAgICAgICAgICBjaGVja2JveE9wdGlvbnM6IHRoaXMuc2NyZWVuVGV4dHM/LmNyZWRpdHNBcHBsaWNhYmxlLFxyXG4gICAgICAgICAgICAgIHN1cHBvcnRNZXNzYWdlOiB0aGlzLnNjcmVlblRleHRzPy5zdXBwb3J0VGV4dD8uY3JlZGl0c0FwcGxpY2FibGUsXHJcbiAgICAgICAgICAgICAgYXJpYUxhYmVsOiB0aGlzLnNjcmVlblRleHRzPy5sYWJlbD8uYXJpYUxhYmVsPy5jcmVkaXRzQXBwbGljYWJsZSxcclxuICAgICAgICAgICAgICBhcmlhRGVzY3JpYmVkQnlJZDpcclxuICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5hcmlhRGVzY3JpYmVkQnlJZD8uY3JlZGl0c0FwcGxpY2FibGUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGZvcm0gY2FuY2VsIGV2ZW50LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtQ2FuY2VsKCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb3JtQ2FuY2VsLmVtaXQoKTtcclxuICAgIHRoaXMuY29uZmlybWF0aW9uTW9kYWxDb25maWcucHJvbXB0TWVzc2FnZSA9XHJcbiAgICAgIHRoaXMuY29uZmlybWF0aW9uTW9kYWxUZXh0cz8ucHJvbXB0TWVzc2FnZU9uQ2FuY2VsO1xyXG4gICAgdGhpcy5yb3V0ZXI/Lm5hdmlnYXRlQnlVcmwoXHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5nZXRSb3V0ZVBhdGhzKCk/LmV2ZW50c0FuZE1lZXRpbmdzXHJcbiAgICApO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBMb2FkcyBldmVudCB0eXBlcyB1c2luZyBldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldEV2ZW50VHlwZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0RXZlbnRUeXBlcygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICByZXNwb25zZT8uYm9keT8uZm9yRWFjaCgoZXZlbnRUeXBlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRUeXBlcz8ucHVzaCh7XHJcbiAgICAgICAgICAgICAgaWQ6IGV2ZW50VHlwZT8uY29uZmlnRmllbGRJZCxcclxuICAgICAgICAgICAgICBuYW1lOiBldmVudFR5cGU/LmNvbmZpZ0ZpZWxkVmFsdWU/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgICAnZXZlbnRUeXBlJyxcclxuICAgICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRUeXBlcyxcclxuICAgICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzBdXHJcbiAgICAgICAgICAgIC5nZXQoJ2V2ZW50VHlwZScpXHJcbiAgICAgICAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgICAgICAgdGhpcy5ldmVudFR5cGVzPy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGV2ZW50VHlwZSkgPT5cclxuICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlLmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFR5cGVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGVycm9yOiAoZXJyb3I6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuaGFuZGxlRXJyb3JzKGVycm9yKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgY3JlYXRlZCBmb3IgdGhlIHNlbGVjdGVkIGV2ZW50IGZyb20gc2VydmVyLlxyXG4gICAqIEBwYXJhbSB7R2V0TWVldGluZ3NCeUV2ZW50SWRQYXlsb2FkfSBwYXlsb2FkXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRNZWV0aW5nc0J5RXZlbnRJZChwYXlsb2FkOiBHZXRNZWV0aW5nc0J5RXZlbnRJZFBheWxvYWQpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5nZXRNZWV0aW5nc0J5RXZlbnRJZChwYXlsb2FkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5tZWV0aW5ncyA9IFtdO1xyXG4gICAgICAgICAgdGhpcy5wYWdpbmF0b3JDb25maWcudG90YWxSZWNvcmRzID1cclxuICAgICAgICAgICAgcmVzcG9uc2U/LmJvZHk/LnRvdGFsUmVjb3JkcyA/PyB0aGlzLm1lZXRpbmdzPy5sZW5ndGg7XHJcbiAgICAgICAgICB0aGlzLnBhZ2luYXRvckNvbmZpZyA9IHsgLi4udGhpcy5wYWdpbmF0b3JDb25maWcgfTtcclxuICAgICAgICAgIHRoaXMubWVldGluZ3MgPSByZXNwb25zZT8uYm9keT8ubWVldGluZ3M7XHJcbiAgICAgICAgICB0aGlzLm1lZXRpbmdzPy5tYXAoKG1lZXRpbmcpID0+IChtZWV0aW5nLmNhbkRlbGV0ZSA9IHRydWUpKTtcclxuICAgICAgICAgIGlmIChyZXNwb25zZT8uYm9keT8ubWVldGluZ3M/Lmxlbmd0aCA+IDApXHJcbiAgICAgICAgICAgIHRoaXMubWVldGluZ0RldGFpbHNUaXRsZSA9XHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uYWRkTWVldGluZz8uZmlyc3RMYWJlbCArXHJcbiAgICAgICAgICAgICAgJ1wiJyArXHJcbiAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8uYWRkTWVldGluZz8uc2Vjb25kTGFiZWwgK1xyXG4gICAgICAgICAgICAgICdcIicgK1xyXG4gICAgICAgICAgICAgIHRoaXMuc2NyZWVuVGV4dHM/LmFkZE1lZXRpbmc/Lmxhc3RMYWJlbDtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgdGhpcy5tZWV0aW5nRGV0YWlsc1RpdGxlID0gdGhpcy5pc0FkZE1lZXRpbmdBbGxvd2VkXHJcbiAgICAgICAgICAgICAgPyB0aGlzLmFkZE1lZXRpbmc/LmZpcnN0TGFiZWxcclxuICAgICAgICAgICAgICA6IHRoaXMuYWRkTWVldGluZz8uZmlyc3RMYWJlbFdpdGhvdXRBZGRCdG47XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRW5hYmxlcyBhbmQgZGlzYWJsZXMgZm9ybSBzdWJtaXQgYnV0dG9uIHdoZW4gY3JlYXRlIG9yIHVwZGF0ZSBldmVudHMgZm9ybSBjaGFuZ2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybUdyb3Vwc1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgb25Gb3JtQ2hhbmdlKGZvcm1Hcm91cHM6IEZvcm1Hcm91cFtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRFdmVudE9yTWVldGluZ0Zvcm1DaGFuZ2VTdGF0dXMoXHJcbiAgICAgIGZvcm1Hcm91cHMuc29tZSgoZm9ybUdyb3VwKSA9PiBmb3JtR3JvdXA/LmRpcnR5KVxyXG4gICAgKTtcclxuICAgIHRoaXMuaXNTdWJtaXRCdXR0b25EaXNhYmxlZCA9IGZvcm1Hcm91cHMuc29tZShcclxuICAgICAgKGZvcm1Hcm91cCkgPT4gZm9ybUdyb3VwPy5zdGF0dXMgPT09IEZvcm1TdGF0dXMuSU5WQUxJRFxyXG4gICAgKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50c0Zvcm1Hcm91cC5mb3JtR3JvdXA/LlsxXT8uY29udHJvbHM/LlsxXVxyXG4gICAgICAgID8uZGF0ZVBpY2tlclxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudHNGb3JtR3JvdXAuZm9ybUdyb3VwWzFdLmNvbnRyb2xzWzFdLmRhdGVQaWNrZXIubWluRGF0ZSA9XHJcbiAgICAgICAgZm9ybUdyb3Vwcz8uWzFdPy5nZXQoJ3N0YXJ0RGF0ZScpPy52YWx1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuaXNBZGRNZWV0aW5nRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgaWYgKHRoaXMuYWRkTWVldGluZ0J1dHRvbikgdGhpcy5hZGRNZWV0aW5nQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgZ3JvdXBzIHVzaW5nIGV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBzKCk6IHZvaWQge1xyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2VcclxuICAgICAgLmdldEdyb3VwcygpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlczogR2V0R3JvdXBSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgcmVzPy5ib2R5Py5mb3JFYWNoKChncm91cDogR3JvdXBJbmZvKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuZ3JvdXBzPy5wdXNoKHtcclxuICAgICAgICAgICAgICBpZDogZ3JvdXA/Lmdyb3VwSWQsXHJcbiAgICAgICAgICAgICAgbmFtZTogYCR7Z3JvdXA/Lmdyb3VwTmFtZX0gLSAke2dyb3VwPy5ncm91cEFjcm9ueW19YCxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICAgJ3JlbGF0ZWRHcm91cCcsXHJcbiAgICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zb3J0T3B0aW9ucyh0aGlzLmdyb3VwcyksXHJcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlswXVxyXG4gICAgICAgICAgICAuZ2V0KCdyZWxhdGVkR3JvdXAnKVxyXG4gICAgICAgICAgICA/LnNldFZhbHVlKFxyXG4gICAgICAgICAgICAgIHRoaXMuZ3JvdXBzPy5maW5kKFxyXG4gICAgICAgICAgICAgICAgKGdyb3VwKSA9PiBncm91cC5pZCA9PT0gdGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZ3JvdXBJZFxyXG4gICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIGNsaWVudCBzaWRlIHZhbGlkYXRpb24gYW5kIGNhbGxzIGNyZWF0ZSBldmVudCBtZXRob2RzLlxyXG4gICAqIEBwYXJhbSB7Rm9ybUdyb3VwW119IGZvcm0gLUFycmF5IG9mIGZvcm1Hcm91cFxyXG4gICAqIEByZXR1cm4gLXJldHVybnMgbm90aGluZ1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uRm9ybVN1Ym1pdChmb3JtR3JvdXBzOiBGb3JtR3JvdXBbXSk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICBmb3JtR3JvdXBzLmV2ZXJ5KFxyXG4gICAgICAgIChmb3JtR3JvdXA6IEZvcm1Hcm91cCkgPT4gZm9ybUdyb3VwLnN0YXR1cyA9PT0gRm9ybVN0YXR1cy5WQUxJRFxyXG4gICAgICApXHJcbiAgICApIHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPT09XHJcbiAgICAgICAgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkNSRUFURVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmNyZWF0ZUV2ZW50KGZvcm1Hcm91cHMpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmFjdGlvblR5cGUgPT09XHJcbiAgICAgICAgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICAgKSB7XHJcbiAgICAgICAgdGhpcy5lZGl0RXZlbnQoZm9ybUdyb3Vwcyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRha2VzIGV2ZW50IGJhc2ljIGRldGFpbHMsIGRhdGUgYW5kIHRpbWUsIGxvY2F0aW9uIGRldGFpbHMsIGF0dGVuZGVlIGRldGFpbHMsIGFjY2VzcyBkZXRhaWxzIGZvcm0gZ3JvdXAgZGF0YSBhbmQgY29tYmluaW5nIHN0YXJ0IGRhdGUgYW5kIGVuZCBkYXRlIGFuZCBjb252ZXJ0aW5nIHRvIFVUQyBmb3JtYXQgYW5kIHBhc3NpbmcgYWxsIHRoZSBmb3JtIGRhdGEgaW4gdGhlIHBheWxvYWQgb2JqZWN0IHRvIGNyZWF0ZSBldmVudCBBUEkgdG8gdGhlIHNlcnZlci5cclxuICAgKiBAcGFyYW0ge0Zvcm1Hcm91cFtdfSBmb3JtR3JvdXBzXHJcbiAgICogQHJldHVybiAtcmV0dXJucyBub3RoaW5nXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgY3JlYXRlRXZlbnQoZm9ybUdyb3VwczogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGV2ZW50QmFzaWNEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzBdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnREYXRlQW5kVGltZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bMV0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudExvY2F0aW9uRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsyXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50QXR0ZW5kZWVEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzNdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBY2Nlc3NEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzRdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5zdGFydERhdGUuZm9ybWF0KFxyXG4gICAgICAgIERhdGVGb3JtYXRzLnJlcXVlc3RQYXlsb2FkRm9ybWF0XHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5lbmREYXRlLmZvcm1hdChEYXRlRm9ybWF0cz8ucmVxdWVzdFBheWxvYWRGb3JtYXQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgY3JlYXRlRXZlbnRQYXlsb2FkOiBDcmVhdGVPckVkaXRFdmVudFBheWxvYWQgPSB7XHJcbiAgICAgIHBheWxvYWQ6IHtcclxuICAgICAgICBldmVudE5hbWU6IGV2ZW50QmFzaWNEZXRhaWxzPy5ldmVudE5hbWUsXHJcbiAgICAgICAgZXZlbnRUeXBlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnRUeXBlPy5pZCxcclxuICAgICAgICBldmVudElkOiB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZWxlY3RlZEV2ZW50SWQgPz8gbnVsbCxcclxuICAgICAgICBncm91cElkOiBldmVudEJhc2ljRGV0YWlscz8ucmVsYXRlZEdyb3VwPy5pZCxcclxuICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcclxuICAgICAgICBlbmREYXRlOiBlbmREYXRlLFxyXG4gICAgICAgIHRpbWVab25lOiBldmVudERhdGVBbmRUaW1lRGV0YWlscz8udGltZVpvbmU/Lm5hbWUsXHJcbiAgICAgICAgY291bnRyeTogZXZlbnRMb2NhdGlvbkRldGFpbHM/LmNvdW50cnk/LmlkLFxyXG4gICAgICAgIGV2ZW50UGFzc3dvcmQ6IGV2ZW50QWNjZXNzRGV0YWlscz8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICBvcGVuRm9yQWxsOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzBdLFxyXG4gICAgICAgIHJlZ2lzdGVyZWRQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMl0sXHJcbiAgICAgICAgZ3JvdXBQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMV0sXHJcbiAgICAgICAgaXBhZGRyZXNzOiBldmVudEFjY2Vzc0RldGFpbHM/LmlwQWRkcmVzc1JhbmdlID8/ICcnLFxyXG4gICAgICAgIGxvY2F0aW9uOiBldmVudExvY2F0aW9uRGV0YWlscz8uYWRkcmVzcyxcclxuICAgICAgICBldmVudFRpdGxlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnROYW1lLFxyXG4gICAgICAgIGV2ZW50RGVzYzogZm9ybUdyb3Vwcz8uWzVdPy5nZXRSYXdWYWx1ZSgpPy5kZXNjcmlwdGlvbixcclxuICAgICAgICB2aXJ0dWFsTWVldGluZ1VybDogZXZlbnRMb2NhdGlvbkRldGFpbHM/LnZpcnR1YWxNZWV0aW5nVXJsID8/ICcnLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5jcmVhdGVFdmVudChjcmVhdGVFdmVudFBheWxvYWQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNFdmVudENyZWF0ZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50QWN0aW9uVHlwZSA9IEV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5FRElUO1xyXG4gICAgICAgICAgICB0aGlzLmlzQWRkTWVldGluZ0Rpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmFkZE1lZXRpbmdCdXR0b24pIHRoaXMuYWRkTWVldGluZ0J1dHRvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAocmVzPy5ib2R5KVxyXG4gICAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRTZWxlY3RlZEV2ZW50SWQoXHJcbiAgICAgICAgICAgICAgICBPYmplY3QocmVzPy5ib2R5KT8uaWRcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uc2V0U2VsZWN0ZWRFdmVudERhdGEoe1xyXG4gICAgICAgICAgICAgIHN0YXJ0RGF0ZTogc3RhcnREYXRlLFxyXG4gICAgICAgICAgICAgIGVuZERhdGU6IGVuZERhdGUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLnNob3dBbGVydE1lc3NhZ2UoXHJcbiAgICAgICAgICAgICAgQWxlcnRUeXBlPy5TVUNDRVNTLFxyXG4gICAgICAgICAgICAgIGNyZWF0ZUV2ZW50UGF5bG9hZC5wYXlsb2FkLmV2ZW50VGl0bGUgK1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5UZXh0cz8ubWVzc2FnZT8uc3VjY2Vzcz8uc3VibWlzc2lvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYWxlcnRzIGZvciBzdWNjZXNzLCBlcnJvciBhbmQgd2FybmluZy5cclxuICAgKiBAcGFyYW0geyhzdHJpbmcgfCBzdHJpbmdbXSl9IG1lc3NhZ2UgLXN1Y2Nlc3Mgb3IgZXJyb3Igb3Igd2FybmluZyBtZXNzYWdlLlxyXG4gICAqIEBwYXJhbSB7QWxlcnRUeXBlfSBhbGVydFR5cGVcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBzaG93QWxlcnRNZXNzYWdlKGFsZXJ0VHlwZTogQWxlcnRUeXBlLCBtZXNzYWdlOiBzdHJpbmcgfCBzdHJpbmdbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5hbGVydFNlcnZpY2U/LnNob3dNZXNzYWdlKHtcclxuICAgICAgc3RhdHVzOiAnY3VzdG9tJyxcclxuICAgICAgbWVzc2FnZTogbWVzc2FnZSxcclxuICAgICAgYWxlcnRUeXBlOiBhbGVydFR5cGUsXHJcbiAgICAgIGlzQ2xvc2VOZWVkZWQ6IGZhbHNlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZXMgYXR0ZW5kZWUgdHlwZSBzZWxlY3Rpb24gaW4gZXZlbnQgZm9ybS5cclxuICAgKiBAcGFyYW0ge0NoZWNrYm94T3B0aW9ufSBhdHRlbmRlZVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uQXR0ZW5kZWVUeXBlU2VsZWN0aW9uKFxyXG4gICAgYXR0ZW5kZWVUeXBlOiBDaGVja2JveE9wdGlvbixcclxuICAgIGlzQ2hlY2tib3hDaGFuZ2VkID0gZmFsc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChhdHRlbmRlZVR5cGU/Lm5hbWU/LmluY2x1ZGVzKCdFbmFibGUnKSkgcmV0dXJuO1xyXG4gICAgaWYgKGF0dGVuZGVlVHlwZT8uaWQgPT09IEF0dGVuZGVlVHlwZS5PUEVOX0ZPUl9BTEwpIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlcz8uZm9yRWFjaCgob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgaWYgKGF0dGVuZGVlVHlwZT8uY2hlY2tlZCAmJiBvcHRpb24/LmlkICE9PSBhdHRlbmRlZVR5cGUuaWQpXHJcbiAgICAgICAgICBvcHRpb24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgIGVsc2UgaWYgKCFhdHRlbmRlZVR5cGU/LmNoZWNrZWQgJiYgb3B0aW9uPy5pZCAhPT0gYXR0ZW5kZWVUeXBlLmlkKVxyXG4gICAgICAgICAgb3B0aW9uLmRpc2FibGVkID0gZmFsc2U7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgJ2F0dGVuZGVlc1R5cGUnLFxyXG4gICAgICAgICdjaGVja2JveE9wdGlvbnMnLFxyXG4gICAgICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXMsXHJcbiAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgYXR0ZW5kZWVUeXBlPy5pZCA9PT0gQXR0ZW5kZWVUeXBlLkdST1VQX01FTUJFUlMgfHxcclxuICAgICAgYXR0ZW5kZWVUeXBlPy5pZCA9PT0gQXR0ZW5kZWVUeXBlLlJFR0lTVEVSRURfUEFSVElDSVBBTlRTXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1xyXG4gICAgICAgID8uZmlsdGVyKChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IEF0dGVuZGVlVHlwZS5PUEVOX0ZPUl9BTEwpXHJcbiAgICAgICAgLm1hcCgoZmlsdGVyZWRPcHRpb24pID0+IHtcclxuICAgICAgICAgIGlmIChhdHRlbmRlZVR5cGU/LmNoZWNrZWQpIHJldHVybiAoZmlsdGVyZWRPcHRpb24uZGlzYWJsZWQgPSB0cnVlKTtcclxuICAgICAgICAgIGVsc2UgaWYgKHRoaXMuY2FuRW5hYmxlT3BlbkZvckFsbENoZWNrYm94KCkpXHJcbiAgICAgICAgICAgIHJldHVybiAoZmlsdGVyZWRPcHRpb24uZGlzYWJsZWQgPSBmYWxzZSk7XHJcbiAgICAgICAgICByZXR1cm4gZmlsdGVyZWRPcHRpb247XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAnYXR0ZW5kZWVzVHlwZScsXHJcbiAgICAgICAgJ2NoZWNrYm94T3B0aW9ucycsXHJcbiAgICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlcyxcclxuICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcclxuICAgIGlmIChhdHRlbmRlZVR5cGU/LmNoZWNrZWQpIHtcclxuICAgICAgdGhpcy5zZWxlY3RlZEF0dGVuZGVlVHlwZXM/LnB1c2goYXR0ZW5kZWVUeXBlLmlkIGFzIHN0cmluZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkQXR0ZW5kZWVUeXBlcyA9IHRoaXMuc2VsZWN0ZWRBdHRlbmRlZVR5cGVzLmZpbHRlcihcclxuICAgICAgICAodmFsdWUpID0+IHZhbHVlICE9PSBhdHRlbmRlZVR5cGUuaWRcclxuICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmlzQ3JlYXRlT3JVcGRhdGVFdmVudEZvcm1JbnZhbGlkID1cclxuICAgICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmLnNvbWUoXHJcbiAgICAgICAgKGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiBmb3JtR3JvdXAuc3RhdHVzID09PSBGb3JtU3RhdHVzLklOVkFMSURcclxuICAgICAgKTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5zZWxlY3RlZEF0dGVuZGVlVHlwZXMubGVuZ3RoID09PSAwIHx8XHJcbiAgICAgIHRoaXMuaXNDcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUludmFsaWRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2Uuc2V0RXZlbnRPck1lZXRpbmdGb3JtQ2hhbmdlU3RhdHVzKFxyXG4gICAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYuc29tZSgoZm9ybUdyb3VwKSA9PiBmb3JtR3JvdXA/LmRpcnR5KVxyXG4gICAgKTtcclxuICAgIHRoaXMuaXNBZGRNZWV0aW5nRGlzYWJsZWQgPSBpc0NoZWNrYm94Q2hhbmdlZCA/PyBmYWxzZTtcclxuICAgIGlmICh0aGlzLmFkZE1lZXRpbmdCdXR0b24pXHJcbiAgICAgIHRoaXMuYWRkTWVldGluZ0J1dHRvbi5kaXNhYmxlZCA9IGlzQ2hlY2tib3hDaGFuZ2VkID8/IGZhbHNlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBHZXQgZXZlbnQgZm9ybSBncm91cCByZWZlcmVuY2UuXHJcbiAgICogQHBhcmFtIHtGb3JtR3JvdXBbXX0gZm9ybVxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIGdldENyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWYoZm9ybTogRm9ybUdyb3VwW10pIHtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZiA9IGZvcm07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEZpbHRlciB0aGUgZHJvcGRvd24gb3B0aW9ucyBhbmQgc2hvdyBvcHRpb25zIHJlbGF0ZWQgdG8gdGhhdCBzZWFyY2ggc3RyaW5nXHJcbiAgICogQHBhcmFtIHt7IHNlYXJjaEV2ZW50OiBFdmVudDsgY29udHJvbE5hbWU6IHN0cmluZyB9fSBkYXRhXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeU1lZXRpbmdDb21wb25lbnRcclxuICAgKi9cclxuICBmb3JtU2VsZWN0U2VhcmNoKGRhdGE6IHsgc2VhcmNoRXZlbnQ6IEV2ZW50OyBjb250cm9sTmFtZTogc3RyaW5nIH0pIHtcclxuICAgIHN3aXRjaCAoZGF0YS5jb250cm9sTmFtZSkge1xyXG4gICAgICBjYXNlICd0aW1lWm9uZSc6XHJcbiAgICAgICAgdGhpcy50aW1lem9uZXMgPSB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5maWx0ZXJPcHRpb25zKFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIHRoaXMuZGVmYXVsdFRpbWVab25lcyxcclxuICAgICAgICAgIHRoaXMudGltZXpvbmVzXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS51cGRhdGVGb3JtQ29udHJvbE9wdGlvbnMoXHJcbiAgICAgICAgICAndGltZVpvbmUnLFxyXG4gICAgICAgICAgJ2Ryb3Bkb3duT3B0aW9ucycsXHJcbiAgICAgICAgICB0aGlzLnRpbWV6b25lcyxcclxuICAgICAgICAgIHRoaXMuZHluYW1pY0Zvcm1Db21wb25lbnRcclxuICAgICAgICApO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdjb3VudHJ5JzpcclxuICAgICAgICB0aGlzLmNvdW50cmllcyA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmZpbHRlck9wdGlvbnMoXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgdGhpcy5kZWZhdWx0Q291bnRyaWVzLFxyXG4gICAgICAgICAgdGhpcy5jb3VudHJpZXNcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnVwZGF0ZUZvcm1Db250cm9sT3B0aW9ucyhcclxuICAgICAgICAgICdjb3VudHJ5JyxcclxuICAgICAgICAgICdkcm9wZG93bk9wdGlvbnMnLFxyXG4gICAgICAgICAgdGhpcy5jb3VudHJpZXMsXHJcbiAgICAgICAgICB0aGlzLmR5bmFtaWNGb3JtQ29tcG9uZW50XHJcbiAgICAgICAgKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAncmVsYXRlZEdyb3VwJzpcclxuICAgICAgICB0aGlzLmdyb3VwcyA9IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmZpbHRlck9wdGlvbnMoXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgdGhpcy5ncm91cHMsXHJcbiAgICAgICAgICB0aGlzLmdyb3Vwc1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UudXBkYXRlRm9ybUNvbnRyb2xPcHRpb25zKFxyXG4gICAgICAgICAgJ3JlbGF0ZWRHcm91cCcsXHJcbiAgICAgICAgICAnZHJvcGRvd25PcHRpb25zJyxcclxuICAgICAgICAgIHRoaXMuZ3JvdXBzLFxyXG4gICAgICAgICAgdGhpcy5keW5hbWljRm9ybUNvbXBvbmVudFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENoZWNraW5nIGZvciB1bmNoZWNrZWQgY2hlY2tib3ggY291bnQgZXhjZXB0IE9QRU5fRk9SX0FMTFxyXG4gICAqIEByZXR1cm4geyp9ICB7Ym9vbGVhbn1cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5TWVldGluZ0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGNhbkVuYWJsZU9wZW5Gb3JBbGxDaGVja2JveCgpOiBib29sZWFuIHtcclxuICAgIGxldCB1bmNoZWNrZWRDb3VudCA9IDA7XHJcbiAgICB0aGlzLmF0dGVuZGVlc1R5cGVzPy5mb3JFYWNoKChhdHRlbmRlZVR5cGUpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGF0dGVuZGVlVHlwZT8uaWQgIT09IEF0dGVuZGVlVHlwZS5PUEVOX0ZPUl9BTEwgJiZcclxuICAgICAgICAhYXR0ZW5kZWVUeXBlPy5jaGVja2VkXHJcbiAgICAgIClcclxuICAgICAgICB1bmNoZWNrZWRDb3VudCsrO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gdW5jaGVja2VkQ291bnQgPT09IHRoaXMuYXR0ZW5kZWVzVHlwZXM/Lmxlbmd0aCAtIDE7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE9wZW5zIGEgbW9kYWwgdG8gY3JlYXRlIG1lZXRpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9wZW5BZGRNZWV0aW5nTW9kYWwoKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5zZXRTdGFuZGFsb25lTWVldGluZ1N0YXR1cyhmYWxzZSk7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5hY3Rpb25UeXBlID1cclxuICAgICAgRXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkNSRUFURTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkTWVldGluZ0lkID0gJyc7XHJcbiAgICBjb25zdCBkaWFsb2dPcHRpb25zID0ge1xyXG4gICAgICBoZWFkaW5nOiB0aGlzLnNjcmVlblRleHRzPy5uZXdNZWV0aW5nLFxyXG4gICAgICBpc0Nsb3NlTmVlZGVkOiB0cnVlLFxyXG4gICAgICBjb21wb25lbnRSZWZlcmVuY2U6IEFkZE1lZXRpbmdDb21wb25lbnQsXHJcbiAgICAgIG1vZGFsVHlwZTogTW9kYWxUeXBlLkZPUk0sXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZz8ub3BlbihNb2RhbENvbXBvbmVudCwge1xyXG4gICAgICBkYXRhOiBkaWFsb2dPcHRpb25zLFxyXG4gICAgICB3aWR0aDogJ2F1dG8nLFxyXG4gICAgICBwYW5lbENsYXNzOiBbJ2llZWVzYS1tb2RhbC1kaWFsb2cnLCAnaWVlZXNhLWFkZC1tZWV0aW5nLWZvcm0nXSxcclxuICAgICAgYXJpYU1vZGFsOiB0cnVlLFxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRpYWxvZ1JlZlxyXG4gICAgICAuYWZ0ZXJDbG9zZWQoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNldFN0YW5kYWxvbmVNZWV0aW5nU3RhdHVzKHRydWUpO1xyXG4gICAgICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICBldmVudElkOiB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZT8uZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5tZWV0aW5nVGl0bGUsXHJcbiAgICAgICAgICAgIGFzY2VuZGluZ09yZGVyOiB0cnVlLFxyXG4gICAgICAgICAgICBwYWdlOiAxLFxyXG4gICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0cyB0aGUgbWVldGluZ3MgYnkgZXZlbnQgaWQgb24gY2hhbmdlIG9mIHRhYmxlIHBhZ2luYXRpb24uXHJcbiAgICogQHBhcmFtIHt7XHJcbiAgICogICAgIHBhZ2VPZmZzZXQ6IG51bWJlcjtcclxuICAgKiAgICAgcGFnZUxpbWl0OiBudW1iZXI7XHJcbiAgICogICB9fSBwYWdlRXZlbnRcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uTWVldGluZ3NUYWJsZVBhZ2VDaGFuZ2UocGFnZUV2ZW50OiBQYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuZ2V0TWVldGluZ3NCeUV2ZW50SWQoe1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnRJZDogdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuZ2V0U2VsZWN0ZWRFdmVudElkKCksXHJcbiAgICAgICAgc29ydENvbHVtbjogdGhpcy5zY3JlZW5UZXh0cz8ubGFiZWw/Lm1lZXRpbmdUaXRsZSxcclxuICAgICAgICBhc2NlbmRpbmdPcmRlcjogdHJ1ZSxcclxuICAgICAgICBwYWdlOiBwYWdlRXZlbnQucGFnZUluZGV4ICsgMSxcclxuICAgICAgICBzaXplOiBwYWdlRXZlbnQucGFnZVNpemUsXHJcbiAgICAgIH0sXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFZpZXcgZXZlbnQgZGV0YWlscyBhbmQgY2FsbHMgZ2V0IGV2ZW50IGRldGFpbHMgQVBJIGFuZCBlbWl0cyB2aWV3IGV2ZW50IEFQSSByZXNwb25zZS5cclxuICAgKiBAcGFyYW0ge2V2ZW50SUR9XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcblxyXG4gIHZpZXdFdmVudERldGFpbHMoZXZlbnRJRDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZVxyXG4gICAgICAuZ2V0RXZlbnREZXRhaWxzKGV2ZW50SUQpXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcz8uc3RhdHVzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudERhdGEgPSByZXM/LmJvZHk7XHJcbiAgICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlPy5zZXRTZWxlY3RlZEV2ZW50RGF0YShcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRXZlbnREYXRhXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRGb3JtR3JvdXBWYWx1ZXMoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogYW55KSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmV2ZW50c0FuZE1lZXRpbmdzU2VydmljZS5oYW5kbGVFcnJvcnMoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBVcGRhdGUgZWRpdCBldmVudCBkZXRhaWxzIG9uIGdldCB2aWV3IGV2ZW50IGRldGFpbHMgQVBJIGNhbGwuXHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0U2VsZWN0ZWRGb3JtR3JvdXBWYWx1ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlswXVxyXG4gICAgICAuZ2V0KCdyZWxhdGVkR3JvdXAnKVxyXG4gICAgICA/LnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZ3JvdXBzPy5maWx0ZXIoXHJcbiAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ncm91cElkXHJcbiAgICAgICAgKT8uWzBdXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlswXVxyXG4gICAgICAuZ2V0KCdldmVudE5hbWUnKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmV2ZW50TmFtZSk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlswXVxyXG4gICAgICAuZ2V0KCdldmVudFR5cGUnKVxyXG4gICAgICA/LnNldFZhbHVlKFxyXG4gICAgICAgIHRoaXMuZXZlbnRUeXBlcz8uZmlsdGVyKFxyXG4gICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uPy5pZCA9PT0gdGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8uZXZlbnRUeXBlXHJcbiAgICAgICAgKT8uWzBdXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlsxXVxyXG4gICAgICAuZ2V0KCdzdGFydERhdGUnKVxyXG4gICAgICA/LnNldFZhbHVlKG1vbWVudCh0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5zdGFydERhdGUpKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzFdXHJcbiAgICAgIC5nZXQoJ2VuZERhdGUnKVxyXG4gICAgICA/LnNldFZhbHVlKG1vbWVudCh0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5lbmREYXRlKSk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlsxXVxyXG4gICAgICAuZ2V0KCd0aW1lWm9uZScpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy50aW1lem9uZXM/LmZpbHRlcihcclxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8ubmFtZSA9PT0gdGhpcy5zZWxlY3RlZEV2ZW50RGF0YT8udGltZVpvbmVcclxuICAgICAgICApWzBdXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlsyXVxyXG4gICAgICAuZ2V0KCdhZGRyZXNzJylcclxuICAgICAgPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5sb2NhdGlvbik7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZEV2ZW50RGF0YS5vcGVuRm9yQWxsKSB7XHJcbiAgICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXNbMF0uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMub25BdHRlbmRlZVR5cGVTZWxlY3Rpb24odGhpcy5hdHRlbmRlZXNUeXBlc1swXSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLnNlbGVjdGVkRXZlbnREYXRhLmdyb3VwUGFydGljaXBhbnRzICYmXHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRFdmVudERhdGEucmVnaXN0ZXJlZFBhcnRpY2lwYW50c1xyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXNbMV0uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMub25BdHRlbmRlZVR5cGVTZWxlY3Rpb24odGhpcy5hdHRlbmRlZXNUeXBlc1sxXSk7XHJcbiAgICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXNbMl0uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMub25BdHRlbmRlZVR5cGVTZWxlY3Rpb24odGhpcy5hdHRlbmRlZXNUeXBlc1syXSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRFdmVudERhdGEuZ3JvdXBQYXJ0aWNpcGFudHMpIHtcclxuICAgICAgdGhpcy5hdHRlbmRlZXNUeXBlc1sxXS5jaGVja2VkID0gdHJ1ZTtcclxuICAgICAgdGhpcy5vbkF0dGVuZGVlVHlwZVNlbGVjdGlvbih0aGlzLmF0dGVuZGVlc1R5cGVzWzFdKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuYXR0ZW5kZWVzVHlwZXNbMl0uY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgIHRoaXMub25BdHRlbmRlZVR5cGVTZWxlY3Rpb24odGhpcy5hdHRlbmRlZXNUeXBlc1syXSk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/LlszXVxyXG4gICAgICAuZ2V0KCdhdHRlbmRlZXNUeXBlJylcclxuICAgICAgPy5zZXRWYWx1ZSh0aGlzLmF0dGVuZGVlc1R5cGVzLm1hcCgob3B0aW9uKSA9PiBvcHRpb24uY2hlY2tlZCkpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bMl1cclxuICAgICAgLmdldCgnY291bnRyeScpXHJcbiAgICAgID8uc2V0VmFsdWUoXHJcbiAgICAgICAgdGhpcy5jb3VudHJpZXM/LmZpbHRlcihcclxuICAgICAgICAgIChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmNvdW50cnlcclxuICAgICAgICApWzBdXHJcbiAgICAgICk7XHJcbiAgICB0aGlzLmNyZWF0ZU9yVXBkYXRlRXZlbnRGb3JtR3JvdXBSZWY/Lls0XVxyXG4gICAgICAuZ2V0KCdldmVudFBhc3N3b3JkJylcclxuICAgICAgPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5ldmVudFBhc3N3b3JkKTtcclxuICAgIHRoaXMuY3JlYXRlT3JVcGRhdGVFdmVudEZvcm1Hcm91cFJlZj8uWzRdXHJcbiAgICAgIC5nZXQoJ2lwQWRkcmVzc1JhbmdlJylcclxuICAgICAgPy5zZXRWYWx1ZSh0aGlzLnNlbGVjdGVkRXZlbnREYXRhPy5pcGFkZHJlc3MpO1xyXG4gICAgdGhpcy5jcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmPy5bNV1cclxuICAgICAgLmdldCgnZGVzY3JpcHRpb24nKVxyXG4gICAgICA/LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRFdmVudERhdGE/LmV2ZW50RGVzYyk7XHJcbiAgICB0aGlzLmlzU3VibWl0QnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBDb25zdHJ1Y3RzIGVkaXQgZXZlbnQgcGF5bG9hZCBhbmQgY2FsbHMgZWRpdCBldmVudCBBUEkgYW5kIGVtaXRzIGVkaXQgZXZlbnQgQVBJIHJlc3BvbnNlLlxyXG4gICAqIEBwYXJhbSB7Kn0gZm9ybURhdGFcclxuICAgKiBAcmV0dXJuIC1yZXR1cm5zIG5vdGhpbmdcclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBlZGl0RXZlbnQoZm9ybUdyb3VwczogRm9ybUdyb3VwW10pOiB2b2lkIHtcclxuICAgIGNvbnN0IGV2ZW50QmFzaWNEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzBdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnREYXRlQW5kVGltZURldGFpbHMgPSBmb3JtR3JvdXBzPy5bMV0/LmdldFJhd1ZhbHVlKCk7XHJcbiAgICBjb25zdCBldmVudExvY2F0aW9uRGV0YWlscyA9IGZvcm1Hcm91cHM/LlsyXT8uZ2V0UmF3VmFsdWUoKTtcclxuICAgIGNvbnN0IGV2ZW50QXR0ZW5kZWVEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzNdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3QgZXZlbnRBY2Nlc3NEZXRhaWxzID0gZm9ybUdyb3Vwcz8uWzRdPy5nZXRSYXdWYWx1ZSgpO1xyXG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5zdGFydERhdGUuZm9ybWF0KFxyXG4gICAgICAgIERhdGVGb3JtYXRzLnJlcXVlc3RQYXlsb2FkRm9ybWF0XHJcbiAgICAgIClcclxuICAgICk7XHJcbiAgICBjb25zdCBlbmREYXRlID0gdGhpcy5ldmVudHNBbmRNZWV0aW5nc1NlcnZpY2UuY29udmVydERhdGVUaW1lVG9VVEMoXHJcbiAgICAgIGV2ZW50RGF0ZUFuZFRpbWVEZXRhaWxzPy5lbmREYXRlLmZvcm1hdChEYXRlRm9ybWF0cz8ucmVxdWVzdFBheWxvYWRGb3JtYXQpXHJcbiAgICApO1xyXG4gICAgY29uc3QgZWRpdEV2ZW50UGF5bG9hZDogQ3JlYXRlT3JFZGl0RXZlbnRQYXlsb2FkID0ge1xyXG4gICAgICBwYXlsb2FkOiB7XHJcbiAgICAgICAgZXZlbnROYW1lOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnROYW1lLFxyXG4gICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLnNlbGVjdGVkRXZlbnRJZCA/PyBudWxsLFxyXG4gICAgICAgIGV2ZW50VHlwZTogZXZlbnRCYXNpY0RldGFpbHM/LmV2ZW50VHlwZS5pZCxcclxuICAgICAgICBncm91cElkOiBldmVudEJhc2ljRGV0YWlscz8ucmVsYXRlZEdyb3VwPy5pZCxcclxuICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcclxuICAgICAgICBlbmREYXRlOiBlbmREYXRlLFxyXG4gICAgICAgIHRpbWVab25lOiBldmVudERhdGVBbmRUaW1lRGV0YWlscz8udGltZVpvbmU/Lm5hbWUsXHJcbiAgICAgICAgY291bnRyeTogZXZlbnRMb2NhdGlvbkRldGFpbHM/LmNvdW50cnk/LmlkLFxyXG4gICAgICAgIGV2ZW50UGFzc3dvcmQ6IGV2ZW50QWNjZXNzRGV0YWlscz8uZXZlbnRQYXNzd29yZCxcclxuICAgICAgICBvcGVuRm9yQWxsOiBldmVudEF0dGVuZGVlRGV0YWlscz8uYXR0ZW5kZWVzVHlwZT8uWzBdLFxyXG4gICAgICAgIHJlZ2lzdGVyZWRQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMl0sXHJcbiAgICAgICAgZ3JvdXBQYXJ0aWNpcGFudHM6IGV2ZW50QXR0ZW5kZWVEZXRhaWxzPy5hdHRlbmRlZXNUeXBlPy5bMV0sXHJcbiAgICAgICAgaXBhZGRyZXNzOiBldmVudEFjY2Vzc0RldGFpbHM/LmlwQWRkcmVzc1JhbmdlID8/ICcnLFxyXG4gICAgICAgIGxvY2F0aW9uOiBldmVudExvY2F0aW9uRGV0YWlscz8uYWRkcmVzcyxcclxuICAgICAgICBldmVudFRpdGxlOiBldmVudEJhc2ljRGV0YWlscz8uZXZlbnROYW1lLFxyXG4gICAgICAgIGV2ZW50RGVzYzogZm9ybUdyb3Vwcz8uWzVdPy5nZXRSYXdWYWx1ZSgpPy5kZXNjcmlwdGlvbixcclxuICAgICAgICB2aXJ0dWFsTWVldGluZ1VybDogZXZlbnRMb2NhdGlvbkRldGFpbHM/LnZpcnR1YWxNZWV0aW5nVXJsID8/ICcnLFxyXG4gICAgICB9LFxyXG4gICAgfTtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5lZGl0RXZlbnQoZWRpdEV2ZW50UGF5bG9hZClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzPy5zdGF0dXMpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93QWxlcnRNZXNzYWdlKFxyXG4gICAgICAgICAgICAgIEFsZXJ0VHlwZT8uU1VDQ0VTUyxcclxuICAgICAgICAgICAgICBlZGl0RXZlbnRQYXlsb2FkLnBheWxvYWQuZXZlbnRUaXRsZSArXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5tZXNzYWdlPy5zdWNjZXNzPy51cGRhdGlvblxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIHNlbGVjdGVkIHRhYmxlIHJvdyBkYXRhLlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXRTZWxlY3RlZFJvd0RhdGEocm93OiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRNZWV0aW5nID0gcm93O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBjbGlja2VkIG1lZXRpbmcgYWN0aW9uXHJcbiAgICogQHBhcmFtIHtNZW51fSBtZW51XHJcbiAgICogQG1lbWJlcm9mIENyZWF0ZU9yTW9kaWZ5RXZlbnRDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVNZWV0aW5nQWN0aW9ucyhtZW51OiBNZW51KTogdm9pZCB7XHJcbiAgICBpZiAobWVudT8uaWQgPT09IE1lZXRpbmdBY3Rpb24uREVMRVRFX01FRVRJTkcpXHJcbiAgICAgIHRoaXMub3BlbkRlbGV0ZU1lZXRpbmdzQ29uZmlybWF0aW9uTW9kYWwodGhpcy5zZWxlY3RlZE1lZXRpbmcpO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBPcGVucyB0aGUgY29uZmlybWF0aW9uIG1vZGFsIHRvIGdldCB1c2VyIGNvbmZpcm1hdGlvbiB0byBkZWxldGUgdGhlIG1lZXRpbmdzIGZyb20gdGhlIHNlbGVjdGVkIGV2ZW50LlxyXG4gICAqIEBwYXJhbSB7Kn0gc2VsZWN0ZWRNZWV0aW5nc1xyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBvcGVuRGVsZXRlTWVldGluZ3NDb25maXJtYXRpb25Nb2RhbChzZWxlY3RlZE1lZXRpbmdzOiBhbnkpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzID0gW107XHJcbiAgICBpZiAoc2VsZWN0ZWRNZWV0aW5ncz8ubWVldGluZ0lkKVxyXG4gICAgICB0aGlzLnNlbGVjdGVkTWVldGluZ0lkcz8ucHVzaChzZWxlY3RlZE1lZXRpbmdzPy5tZWV0aW5nSWQpO1xyXG4gICAgZWxzZVxyXG4gICAgICBzZWxlY3RlZE1lZXRpbmdzPy5mb3JFYWNoKChtZWV0aW5nOiBNZWV0aW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKG1lZXRpbmc/Lm1lZXRpbmdJZClcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRNZWV0aW5nSWRzPy5wdXNoKG1lZXRpbmcubWVldGluZ0lkKTtcclxuICAgICAgfSk7XHJcbiAgICBjb25zdCBjb25maXJtYXRpb25JbmZvID0gdGhpcy5zY3JlZW5UZXh0cz8uZGVsZXRlTWVldGluZ3M/LmNvbmZpcm1hdGlvbkluZm87XHJcbiAgICBjb25zdCBkZWxldGVVc2VyR3JvdXBNb2RhbE9wdGlvbnMgPSB7XHJcbiAgICAgIGxlZnRCdXR0b25MYWJlbDogY29uZmlybWF0aW9uSW5mbz8ubGVmdEJ1dHRvbkxhYmVsLFxyXG4gICAgICByaWdodEJ1dHRvbkxhYmVsOiBjb25maXJtYXRpb25JbmZvPy5yaWdodEJ1dHRvbkxhYmVsLFxyXG4gICAgICBwcm9tcHRNZXNzYWdlOiBjb25maXJtYXRpb25JbmZvPy5wcm9tcHRNZXNzYWdlLFxyXG4gICAgICBhY3Rpb25CdXR0b25BbGlnbjogQWxpZ25UeXBlPy5NSURETEUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5kaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKE1vZGFsQ29uZmlybWF0aW9uQ29tcG9uZW50LCB7XHJcbiAgICAgIGRhdGE6IGRlbGV0ZVVzZXJHcm91cE1vZGFsT3B0aW9ucyxcclxuICAgICAgYXV0b0ZvY3VzOiAnZGlhbG9nJyxcclxuICAgICAgYXJpYUxhYmVsOiB0aGlzLmNvbnN0YW50cz8uYXJpYUxhYmVsPy5hbGVydCxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5kaWFsb2dSZWZcclxuICAgICAgLmFmdGVyQ2xvc2VkKClcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcclxuICAgICAgICBpZiAocmVzdWx0KSB0aGlzLmRlbGV0ZUV2ZW50TWVldGluZ3MoKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNlbmRzIEFQSSBSZXF1ZXN0IHRvIGRlbGV0ZSB0aGUgc2VsZWN0ZWQgbWVldGluZ3Mgd2l0aGluIGV2ZW50IGFuZCBoYW5kbGVzIHRoZSBzdWNjZXNzIGFuZCBlcnJvciByZXNwb25zZSBvZiB0aGUgaHR0cCByZXF1ZXN0LlxyXG4gICAqIEBtZW1iZXJvZiBDcmVhdGVPck1vZGlmeUV2ZW50Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlRXZlbnRNZWV0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlXHJcbiAgICAgIC5kZWxldGVFdmVudHNPck1lZXRpbmdzKHtcclxuICAgICAgICBwYXlsb2FkOiB0aGlzLnNlbGVjdGVkTWVldGluZ0lkcyxcclxuICAgICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmdldE1lZXRpbmdzQnlFdmVudElkKHtcclxuICAgICAgICAgICAgcGF5bG9hZDoge1xyXG4gICAgICAgICAgICAgIGV2ZW50SWQ6IHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmdldFNlbGVjdGVkRXZlbnRJZCgpLFxyXG4gICAgICAgICAgICAgIHNvcnRDb2x1bW46IHRoaXMuc2NyZWVuVGV4dHM/LmxhYmVsPy5tZWV0aW5nVGl0bGUsXHJcbiAgICAgICAgICAgICAgYXNjZW5kaW5nT3JkZXI6IHRydWUsXHJcbiAgICAgICAgICAgICAgcGFnZTogMSxcclxuICAgICAgICAgICAgICBzaXplOiB0aGlzLnBhZ2luYXRvckNvbmZpZz8ucmVjb3Jkc1BlclBhZ2UsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIHRoaXMuYWxlcnRTZXJ2aWNlPy5zaG93TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIHN0YXR1czogJ2N1c3RvbScsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6XHJcbiAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZE1lZXRpbmdJZHMubGVuZ3RoICtcclxuICAgICAgICAgICAgICB0aGlzLnNjcmVlblRleHRzPy5kZWxldGVNZWV0aW5ncz8ubWVzc2FnZT8uc3VjY2Vzcz8uZGVsZXRpb24sXHJcbiAgICAgICAgICAgIGFsZXJ0VHlwZTogQWxlcnRUeXBlLlNVQ0NFU1MsXHJcbiAgICAgICAgICAgIGlzQ2xvc2VOZWVkZWQ6IHRydWUsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuZXZlbnRzQW5kTWVldGluZ3NTZXJ2aWNlLmhhbmRsZUVycm9ycyhlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgQ3JlYXRlT3JNb2RpZnlFdmVudENvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JC5uZXh0KHRydWUpO1xyXG4gICAgdGhpcy5kZXN0cm95JC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IFtuZ0NsYXNzXT1cInNlbGVjdGVkRXZlbnRJZCA/ICdpZWVlc2EtZXZlbnQnIDogJydcIj5cclxuICA8cCAqbmdJZj1cInNlbGVjdGVkRXZlbnRJZFwiIGNsYXNzPVwiaWVlZXNhLXRpdGxlLWxnLTI0IHBiLTMgbS0wXCI+XHJcbiAgICB7eyBzY3JlZW5UZXh0cz8ubGFiZWw/LmV2ZW50RGV0YWlscyB9fVxyXG4gIDwvcD5cclxuICA8aWVlZXNhLWR5bmFtaWMtZm9ybVxyXG4gICAgKm5nSWY9XCJjcmVhdGVPclVwZGF0ZUV2ZW50c0Zvcm1Hcm91cFwiXHJcbiAgICBjbGFzcz1cImllZWVzYS1jcmVhdGUtdXBkYXRlLWV2ZW50LWZvcm1cIlxyXG4gICAgW2xlZnRCdXR0b25MYWJlbF09XCJsZWZ0QnV0dG9uTGFiZWxcIlxyXG4gICAgW3JpZ2h0QnV0dG9uTGFiZWxdPVwicmlnaHRCdXR0b25MYWJlbFwiXHJcbiAgICBbaXNMZWdlbmRWaXNpYmxlXT1cInRydWVcIlxyXG4gICAgW2lzU3VibWl0QnV0dG9uRGlzYWJsZWRdPVwiaXNTdWJtaXRCdXR0b25EaXNhYmxlZFwiXHJcbiAgICBbY29sV2lkdGhdPVwiY29sV2lkdGhcIlxyXG4gICAgW2FjdGlvbkJ1dHRvbkFsaWduXT1cImFjdGlvbkJ1dHRvbkFsaWduXCJcclxuICAgIFtmb3JtR3JvdXBzXT1cImNyZWF0ZU9yVXBkYXRlRXZlbnRzRm9ybUdyb3VwXCJcclxuICAgIFtpc0xlZnRCdXR0b25OZWVkZWRdPVwidHJ1ZVwiXHJcbiAgICAoZm9ybUNoZWNrYm94U2VsZWN0aW9uKT1cIm9uQXR0ZW5kZWVUeXBlU2VsZWN0aW9uKCRldmVudCwgdHJ1ZSlcIlxyXG4gICAgKGZvcm1MZWZ0QnV0dG9uQ2xpY2tlZCk9XCJvbkZvcm1DYW5jZWwoKVwiXHJcbiAgICAoZm9ybUdyb3Vwc1JlZmVyZW5jZSk9XCJnZXRDcmVhdGVPclVwZGF0ZUV2ZW50Rm9ybUdyb3VwUmVmKCRldmVudClcIlxyXG4gICAgKGZvcm1TdWJtaXQpPVwib25Gb3JtU3VibWl0KCRldmVudClcIlxyXG4gICAgKGZvcm1DaGFuZ2UpPVwib25Gb3JtQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKGZvcm1TZWxlY3RTZWFyY2gpPVwiZm9ybVNlbGVjdFNlYXJjaCgkZXZlbnQpXCJcclxuICA+PC9pZWVlc2EtZHluYW1pYy1mb3JtPlxyXG5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJpZWVlc2EtdGl0bGUtbGctMjQgbWItMCBtdC0zXCJcclxuICAgICpuZ0lmPVwiXHJcbiAgICAgIGV2ZW50QWN0aW9uVHlwZSA9PT0gZXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVQgfHwgaXNFdmVudENyZWF0ZWRcclxuICAgIFwiXHJcbiAgPlxyXG4gICAge3sgc2NyZWVuVGV4dHM/LmxhYmVsPy5tZWV0aW5nRGV0YWlscyB9fVxyXG4gIDwvcD5cclxuICA8cFxyXG4gICAgY2xhc3M9XCJpZWVlc2EtYm9keS1tZC0xNCBpZWVlc2EtYWRkLW1lZXRpbmdzLXRpdGxlXCJcclxuICAgICpuZ0lmPVwiXHJcbiAgICAgIGV2ZW50QWN0aW9uVHlwZSA9PT0gZXZlbnRBbmRNZWV0aW5nRnVuY3Rpb25UeXBlLkVESVQgfHwgaXNFdmVudENyZWF0ZWRcclxuICAgIFwiXHJcbiAgPlxyXG4gICAge3sgbWVldGluZ0RldGFpbHNUaXRsZSB9fVxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtZWV0aW5ncz8ubGVuZ3RoICYmIGlzQWRkTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICA+XCI8L25nLWNvbnRhaW5lclxyXG4gICAgPlxyXG4gICAgPGFcclxuICAgICAgKm5nSWY9XCJtZWV0aW5ncz8ubGVuZ3RoID09PSAwICYmIGlzQWRkTWVldGluZ0FsbG93ZWRcIlxyXG4gICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcclxuICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXHJcbiAgICAgIChjbGljayk9XCJvcGVuQWRkTWVldGluZ01vZGFsKClcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7ICdpZWVlc2EtYWRkLW1lZXRpbmctbGluayc6IGlzQWRkTWVldGluZ0Rpc2FibGVkIH1cIlxyXG4gICAgICA+e3sgYWRkTWVldGluZ3NMaW5rIH19PC9hXHJcbiAgICA+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIW1lZXRpbmdzPy5sZW5ndGggJiYgaXNBZGRNZWV0aW5nQWxsb3dlZFwiXHJcbiAgICAgID5cIjwvbmctY29udGFpbmVyXHJcbiAgICA+XHJcbiAgPC9wPlxyXG4gIDxpZWVlc2EtZGF0YS10YWJsZVxyXG4gICAgKm5nSWY9XCJcclxuICAgICAgcGFnaW5hdG9yQ29uZmlnPy50b3RhbFJlY29yZHMgJiZcclxuICAgICAgbWVldGluZ3M/Lmxlbmd0aCAmJlxyXG4gICAgICBldmVudEFjdGlvblR5cGUgPT09IGV2ZW50QW5kTWVldGluZ0Z1bmN0aW9uVHlwZS5FRElUXHJcbiAgICBcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtbWVldGluZ3NcIlxyXG4gICAgW3RhYmxlRGF0YUluZm9dPVwibWVldGluZ3NcIlxyXG4gICAgW2NvbHVtblNjaGVtYUluZm9dPVwiY29sdW1uU2NoZW1hXCJcclxuICAgIFtzZWFyY2hQbGFjZUhvbGRlclRleHRdPVwic2NyZWVuVGV4dHM/LnNlYXJjaE1lZXRpbmdcIlxyXG4gICAgW3RhYmxlQWN0aW9uc109XCJtZWV0aW5nQWN0aW9uc1wiXHJcbiAgICBbdGFibGVSb3dBY3Rpb25zXT1cInNjcmVlblRleHRzPy50YWJsZUFjdGlvbnNcIlxyXG4gICAgW2FkZEJ1dHRvbl09XCJhZGRNZWV0aW5nQnV0dG9uXCJcclxuICAgIFtwYWdpbmF0b3JDb25maWddPVwicGFnaW5hdG9yQ29uZmlnXCJcclxuICAgIChtZW51QWN0aW9uQ2xpY2spPVwiZ2V0U2VsZWN0ZWRSb3dEYXRhKCRldmVudClcIlxyXG4gICAgKHNlbGVjdEFjdGlvbk1lbnUpPVwiaGFuZGxlTWVldGluZ0FjdGlvbnMoJGV2ZW50KVwiXHJcbiAgICAocGFnaW5hdGlvbkNoYW5nZSk9XCJvbk1lZXRpbmdzVGFibGVQYWdlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgKGFkZFJvdyk9XCJvcGVuQWRkTWVldGluZ01vZGFsKClcIlxyXG4gICAgKHNlbGVjdGVkUm93c1RvRGVsZXRlKT1cIm9wZW5EZWxldGVNZWV0aW5nc0NvbmZpcm1hdGlvbk1vZGFsKCRldmVudClcIlxyXG4gID5cclxuICA8L2llZWVzYS1kYXRhLXRhYmxlPlxyXG48L2Rpdj5cclxuIl19
|