@po-ui/ng-templates 18.9.0 → 18.11.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/components/po-page-dynamic-table/po-page-dynamic-table.component.mjs +4 -1
- package/esm2022/lib/components/po-page-login/po-page-login-base.component.mjs +16 -2
- package/esm2022/lib/components/po-page-login/po-page-login.component.mjs +5 -5
- package/fesm2022/po-ui-ng-templates.mjs +22 -5
- package/fesm2022/po-ui-ng-templates.mjs.map +1 -1
- package/lib/components/po-page-login/po-page-login-base.component.d.ts +13 -1
- package/package.json +4 -4
- package/po-ui-ng-templates-18.11.0.tgz +0 -0
- package/schematics/ng-add/index.js +1 -1
- package/po-ui-ng-templates-18.9.0.tgz +0 -0
|
@@ -289,6 +289,17 @@ export class PoPageLoginBaseComponent {
|
|
|
289
289
|
* @default `true`
|
|
290
290
|
*/
|
|
291
291
|
noAutocompletePassword = true;
|
|
292
|
+
/**
|
|
293
|
+
* @optional
|
|
294
|
+
*
|
|
295
|
+
* @description
|
|
296
|
+
*
|
|
297
|
+
* Indica se o status do `model` do switch de lembrar o usuário será escondido visualmente.
|
|
298
|
+
*
|
|
299
|
+
* > Por padrão será atribuído `false`.
|
|
300
|
+
* @default `false`
|
|
301
|
+
*/
|
|
302
|
+
hideLabelStatus = false;
|
|
292
303
|
/**
|
|
293
304
|
* @optional
|
|
294
305
|
*
|
|
@@ -987,7 +998,7 @@ export class PoPageLoginBaseComponent {
|
|
|
987
998
|
}
|
|
988
999
|
}
|
|
989
1000
|
static ɵfac = function PoPageLoginBaseComponent_Factory(t) { return new (t || PoPageLoginBaseComponent)(i0.ɵɵdirectiveInject(i1.PoPageLoginService), i0.ɵɵdirectiveInject(i2.Router), i0.ɵɵdirectiveInject(i3.PoLanguageService)); };
|
|
990
|
-
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoPageLoginBaseComponent, inputs: { background: [0, "p-background", "background"], logo: [0, "p-logo", "logo"], loginPattern: [0, "p-login-pattern", "loginPattern"], passwordPattern: [0, "p-password-pattern", "passwordPattern"], secondaryLogo: [0, "p-secondary-logo", "secondaryLogo"], noAutocompleteLogin: [0, "p-no-autocomplete-login", "noAutocompleteLogin"], noAutocompletePassword: [0, "p-no-autocomplete-password", "noAutocompletePassword"], hidePasswordPeek: [0, "p-hide-password-peek", "hidePasswordPeek"], customField: [0, "p-custom-field", "customField"], contactEmail: [0, "p-contact-email", "contactEmail"], productName: [0, "p-product-name", "productName"], environment: [0, "p-environment", "environment"], exceededAttemptsWarning: [0, "p-exceeded-attempts-warning", "exceededAttemptsWarning"], hideRememberUser: [0, "p-hide-remember-user", "hideRememberUser"], literals: [0, "p-literals", "literals"], loading: [0, "p-loading", "loading"], login: [0, "p-login", "login"], loginErrors: [0, "p-login-errors", "loginErrors"], passwordErrors: [0, "p-password-errors", "passwordErrors"], recovery: [0, "p-recovery", "recovery"], registerUrl: [0, "p-register-url", "registerUrl"], authenticationType: [0, "p-authentication-type", "authenticationType"], authenticationUrl: [0, "p-authentication-url", "authenticationUrl"], blockedUrl: [0, "p-blocked-url", "blockedUrl"], support: [0, "p-support", "support"], languagesList: [0, "p-languages", "languagesList"] }, outputs: { loginChange: "p-login-change", loginSubmit: "p-login-submit", passwordChange: "p-password-change", languageChange: "p-language-change" } });
|
|
1001
|
+
static ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: PoPageLoginBaseComponent, inputs: { background: [0, "p-background", "background"], logo: [0, "p-logo", "logo"], loginPattern: [0, "p-login-pattern", "loginPattern"], passwordPattern: [0, "p-password-pattern", "passwordPattern"], secondaryLogo: [0, "p-secondary-logo", "secondaryLogo"], noAutocompleteLogin: [0, "p-no-autocomplete-login", "noAutocompleteLogin"], noAutocompletePassword: [0, "p-no-autocomplete-password", "noAutocompletePassword"], hideLabelStatus: [2, "p-hide-label-status", "hideLabelStatus", convertToBoolean], hidePasswordPeek: [0, "p-hide-password-peek", "hidePasswordPeek"], customField: [0, "p-custom-field", "customField"], contactEmail: [0, "p-contact-email", "contactEmail"], productName: [0, "p-product-name", "productName"], environment: [0, "p-environment", "environment"], exceededAttemptsWarning: [0, "p-exceeded-attempts-warning", "exceededAttemptsWarning"], hideRememberUser: [0, "p-hide-remember-user", "hideRememberUser"], literals: [0, "p-literals", "literals"], loading: [0, "p-loading", "loading"], login: [0, "p-login", "login"], loginErrors: [0, "p-login-errors", "loginErrors"], passwordErrors: [0, "p-password-errors", "passwordErrors"], recovery: [0, "p-recovery", "recovery"], registerUrl: [0, "p-register-url", "registerUrl"], authenticationType: [0, "p-authentication-type", "authenticationType"], authenticationUrl: [0, "p-authentication-url", "authenticationUrl"], blockedUrl: [0, "p-blocked-url", "blockedUrl"], support: [0, "p-support", "support"], languagesList: [0, "p-languages", "languagesList"] }, outputs: { loginChange: "p-login-change", loginSubmit: "p-login-submit", passwordChange: "p-password-change", languageChange: "p-language-change" }, features: [i0.ɵɵInputTransformsFeature] });
|
|
991
1002
|
}
|
|
992
1003
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PoPageLoginBaseComponent, [{
|
|
993
1004
|
type: Directive
|
|
@@ -1024,6 +1035,9 @@ export class PoPageLoginBaseComponent {
|
|
|
1024
1035
|
}], noAutocompletePassword: [{
|
|
1025
1036
|
type: Input,
|
|
1026
1037
|
args: ['p-no-autocomplete-password']
|
|
1038
|
+
}], hideLabelStatus: [{
|
|
1039
|
+
type: Input,
|
|
1040
|
+
args: [{ alias: 'p-hide-label-status', transform: convertToBoolean }]
|
|
1027
1041
|
}], hidePasswordPeek: [{
|
|
1028
1042
|
type: Input,
|
|
1029
1043
|
args: ['p-hide-password-peek']
|
|
@@ -1082,4 +1096,4 @@ export class PoPageLoginBaseComponent {
|
|
|
1082
1096
|
type: Input,
|
|
1083
1097
|
args: ['p-languages']
|
|
1084
1098
|
}] }); })();
|
|
1085
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1sb2dpbi9wby1wYWdlLWxvZ2luLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkgsT0FBTyxFQUFxQixlQUFlLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7QUFNL0YsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsRUFBRSxFQUF1QjtRQUN2QixLQUFLLEVBQUUsU0FBUztRQUNoQixpQkFBaUIsRUFBRSxlQUFlO1FBQ2xDLFNBQVMsRUFBRTt1REFDd0M7UUFDbkQsZ0JBQWdCLEVBQUUsb0JBQW9CO1FBQ3RDLG9CQUFvQixFQUFFLGtCQUFrQjtRQUN4QyxtQkFBbUIsRUFBRSxzQkFBc0I7UUFDM0MsdUJBQXVCLEVBQUUsZUFBZTtRQUN4QyxzQkFBc0IsRUFBRSxzQkFBc0I7UUFDOUMsWUFBWSxFQUFFLGlCQUFpQjtRQUMvQixnQkFBZ0IsRUFBRSxxREFBcUQ7UUFDdkUsV0FBVyxFQUFFLE9BQU87UUFDcEIsY0FBYyxFQUFFLFlBQVk7UUFDNUIsY0FBYyxFQUFFLHVCQUF1QjtRQUN2QyxhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsY0FBYztR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Z0JBQWdCO1lBZUssV0FBVztrQkFBdEMsS0FBSzttQkFBQyxlQUFlO1lBdUJvQix1QkFBdUI7a0JBQWhFLEtBQUs7bUJBQUMsNkJBQTZCO1lBdUJELGdCQUFnQjtrQkFBbEQsS0FBSzttQkFBQyxzQkFBc0I7WUF1RUosUUFBUTtrQkFBaEMsS0FBSzttQkFBQyxZQUFZO1lBbUJLLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQWVJLEtBQUs7a0JBQTFCLEtBQUs7bUJBQUMsU0FBUztZQW1CYSxXQUFXO2tCQUF2QyxLQUFLO21CQUFDLGdCQUFnQjtZQWVTLGNBQWM7a0JBQTdDLEtBQUs7bUJBQUMsbUJBQW1CO1lBNkJELFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQXNCVSxXQUFXO2tCQUF2QyxLQUFLO21CQUFDLGdCQUFnQjtZQXVDYSxrQkFBa0I7a0JBQXJELEtBQUs7bUJBQUMsdUJBQXVCO1lBMkhLLGlCQUFpQjtrQkFBbkQsS0FBSzttQkFBQyxzQkFBc0I7WUFnQkQsVUFBVTtrQkFBckMsS0FBSzttQkFBQyxlQUFlO1lBMEJFLE9BQU87a0JBQTlCLEtBQUs7bUJBQUMsV0FBVztZQXlCUSxhQUFhO2tCQUF0QyxLQUFLO21CQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT3V0cHV0LCBEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5cbmltcG9ydCB7IGNvbnZlcnRUb0Jvb2xlYW4sIGNvbnZlcnRUb0ludCwgZ2V0U2hvcnRCcm93c2VyTGFuZ3VhZ2UsIGlzRXh0ZXJuYWxMaW5rLCBpc1R5cGVvZiB9IGZyb20gJy4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvTGFuZ3VhZ2VTZXJ2aWNlLCBwb0xvY2FsZURlZmF1bHQsIFBvTGFuZ3VhZ2UsIHBvTGFuZ3VhZ2VEZWZhdWx0IH0gZnJvbSAnQHBvLXVpL25nLWNvbXBvbmVudHMnO1xuXG5pbXBvcnQgeyBQb1BhZ2VMb2dpbiB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWxvZ2luLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZSB9IGZyb20gJy4vZW51bXMvcG8tcGFnZS1sb2dpbi1hdXRoZW50aWNhdGlvbi10eXBlLmVudW0nO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5DdXN0b21GaWVsZCB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWxvZ2luLWN1c3RvbS1maWVsZC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5MaXRlcmFscyB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWxvZ2luLWxpdGVyYWxzLmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpblJlY292ZXJ5IH0gZnJvbSAnLi9pbnRlcmZhY2VzL3BvLXBhZ2UtbG9naW4tcmVjb3ZlcnkuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luU2VydmljZSB9IGZyb20gJy4vcG8tcGFnZS1sb2dpbi5zZXJ2aWNlJztcblxuY29uc3QgcG9QYWdlTG9naW5Db250ZW50TWF4TGVuZ3RoID0gNDA7XG5cbmV4cG9ydCBjb25zdCBwb1BhZ2VMb2dpbkxpdGVyYWxzRGVmYXVsdCA9IHtcbiAgZW46IDxQb1BhZ2VMb2dpbkxpdGVyYWxzPntcbiAgICB0aXRsZTogJ1dlbGNvbWUnLFxuICAgIGxvZ2luRXJyb3JQYXR0ZXJuOiAnSW52YWxpZCBMb2dpbicsXG4gICAgbG9naW5IaW50OiBgWW91ciBsb2dpbiB1c2VyIHdhcyBnaXZlbiB0byB5b3UgYXQgeW91ciBmaXJzdCBkYXkuXG4gICAgSWYgeW91IGRvbid0IGhhdmUgdGhpcyBpbmZvcm1hdGlvbiBjb250YWN0IHN1cHBvcnRgLFxuICAgIGxvZ2luUGxhY2Vob2xkZXI6ICdJbnNlcnQgeW91ciBlLW1haWwnLFxuICAgIHBhc3N3b3JkRXJyb3JQYXR0ZXJuOiAnSW52YWxpZCBQYXNzd29yZCcsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2VydCB5b3VyIHBhc3N3b3JkJyxcbiAgICBjdXN0b21GaWVsZEVycm9yUGF0dGVybjogJ0ludmFsaWQgdmFsdWUnLFxuICAgIGN1c3RvbUZpZWxkUGxhY2Vob2xkZXI6ICdQbGVhc2UgZW50ZXIgYSB2YWx1ZScsXG4gICAgcmVtZW1iZXJVc2VyOiAnQXV0b21hdGljIGxvZ2luJyxcbiAgICByZW1lbWJlclVzZXJIaW50OiAnWW91IGNhbiBkaXNhYmxlIHRoaXMgb3B0aW9uIGluIHN5c3RlbSBjb25maWd1cmF0aW9uJyxcbiAgICBzdWJtaXRMYWJlbDogJ0VudGVyJyxcbiAgICBzdWJtaXR0ZWRMYWJlbDogJ0xvYWRpbmcuLi4nLFxuICAgIGZvcmdvdFBhc3N3b3JkOiAnRm9yZ290IHlvdXIgUGFzc3dvcmQ/JyxcbiAgICBoaWdobGlnaHRJbmZvOiAnJyxcbiAgICByZWdpc3RlclVybDogJ05ldyByZWdpc3RlcicsXG4gICAgdGl0bGVQb3BvdmVyOiAnT29wcyEnLFxuICAgIGZvcmdvdFlvdXJQYXNzd29yZDogJ0ZvcmdvdCB5b3VyIHBhc3N3b3JkPycsXG4gICAgaWZZb3VUcnlIYXJkZXI6ICdJZiB5b3UgdHJ5ICcsXG4gICAgYXR0ZW1wdHM6ICd7MH0gbW9yZSB0aW1lKHMpICcsXG4gICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOlxuICAgICAgJ3dpdGhvdXQgc3VjY2VzcyB5b3VyIHVzZXIgd2lsbCBiZSBibG9ja2VkIGFuZCB5b3Ugd2lsbCBiZSBsZWZ0IDI0IGhvdXJzIHdpdGhvdXQgYmVpbmcgYWJsZSB0byBhY2Nlc3MgOignLFxuICAgIGNyZWF0ZUFOZXdQYXNzd29yZE5vdzogJ0JldHRlciBjcmVhdGUgYSBuZXcgcGFzc3dvcmQgbm93ISBZb3Ugd2lsbCBiZSBhYmxlIHRvIGxvZyBpbnRvIHRoZSBzeXN0ZW0gcmlnaHQgYXdheS4nLFxuICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAnSSBmb3Jnb3QgbXkgcGFzc3dvcmQnLFxuICAgIHdlbGNvbWU6ICdXZWxjb21lJyxcbiAgICBzdXBwb3J0OiAnU3VwcG9ydCdcbiAgfSxcbiAgZXM6IDxQb1BhZ2VMb2dpbkxpdGVyYWxzPntcbiAgICB0aXRsZTogJ0JpZW52ZW5pZG8nLFxuICAgIGxvZ2luRXJyb3JQYXR0ZXJuOiAnTG9naW4gaW52w6FsaWRvJyxcbiAgICBsb2dpbkhpbnQ6IGBTdSB1c3VhcmlvIGhhIHNpZG8gZW50cmVnYWRvIHBhcmEgdXN0ZWQgZW4gc3UgcHJpbWVyIGTDrWEuXG4gICAgU2kgbm8gdGllbmUgZXN0YSBpbmZvcm1hY2nDs24sIHDDs25nYXNlIGVuIGNvbnRhY3RvIGNvbiBlbCBzb3BvcnRlIHTDqWNuaWNvYCxcbiAgICBsb2dpblBsYWNlaG9sZGVyOiAnSW5zZXJ0ZSBzdSBlLW1haWwnLFxuICAgIHBhc3N3b3JkRXJyb3JQYXR0ZXJuOiAnQ29udHJhc2XDsWEgaW52w6FsaWRhJyxcbiAgICBwYXNzd29yZFBsYWNlaG9sZGVyOiAnSW5zZXJ0ZSBzdSBjb250cmFzZcOxYScsXG4gICAgY3VzdG9tRmllbGRFcnJvclBhdHRlcm46ICdWYWxvciBubyB2w6FsaWRvLicsXG4gICAgY3VzdG9tRmllbGRQbGFjZWhvbGRlcjogJ1BvciBmYXZvciBpbnRyb2R1emNhIHVuIHZhbG9yJyxcbiAgICByZW1lbWJlclVzZXI6ICdJbmljaW8gZGUgc2VzacOzbiBhdXRvbcOhdGljYW1lbnRlJyxcbiAgICByZW1lbWJlclVzZXJIaW50OiAnUHVlZGUgZGVzaGFiaWxpdGFyIGVzdGEgb3BjacOzbiBlbiBlbCBtZW7DuiBkZWwgc2lzdGVtYS4nLFxuICAgIHN1Ym1pdExhYmVsOiAnRW50cmFyJyxcbiAgICBzdWJtaXR0ZWRMYWJlbDogJ0NhcmdhbmRvLi4uJyxcbiAgICBmb3Jnb3RQYXNzd29yZDogJ09sdmlkYXN0ZSB0dSBjb250cmFzZcOxYT8nLFxuICAgIGhpZ2hsaWdodEluZm86ICcnLFxuICAgIHJlZ2lzdGVyVXJsOiAnTnVldm8gcmVnaXN0cm8nLFxuICAgIHRpdGxlUG9wb3ZlcjogJ09wYSEnLFxuICAgIGZvcmdvdFlvdXJQYXNzd29yZDogJ09sdmlkYXN0ZSB0dSBjb250cmFzZcOxYT8nLFxuICAgIGlmWW91VHJ5SGFyZGVyOiAnU2kgaW50ZW50YSBtw6FzICcsXG4gICAgYXR0ZW1wdHM6ICd7MH0gdmV6L3ZlY2VzICcsXG4gICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOiAnc2luIMOpeGl0byBzdSB1c3VhcmlvIHNlcmEgYmxvcXVlYWRvIHkgdXN0ZWQgdsOhcyBwZXJtYW5lY2VyIDI0IGhvcmFzIHNpbiBwb2RlciBhY2NlZGVyIGEgOignLFxuICAgIGNyZWF0ZUFOZXdQYXNzd29yZE5vdzpcbiAgICAgICfCoU1lam9yIGNyZWFyIHVuYSBudWV2YSBjb250cmFzZcOxYSBhaG9yYSEgVXN0ZWQgcG9kcsOhIGVudHJhciBlbiBlbCBzaXN0ZW1hIGlubWVkaWF0YW1lbnRlIGRlc3B1w6lzLicsXG4gICAgaUZvcmdvdE15UGFzc3dvcmQ6ICdPbHZpZGUgbWkgY29udHJhc2XDsWEnLFxuICAgIHdlbGNvbWU6ICdCaWVudmVuaWRvJyxcbiAgICBzdXBwb3J0OiAnU29wb3J0ZSdcbiAgfSxcbiAgcHQ6IDxQb1BhZ2VMb2dpbkxpdGVyYWxzPntcbiAgICB0aXRsZTogJ0JlbS12aW5kbycsXG4gICAgbG9naW5FcnJvclBhdHRlcm46ICdMb2dpbiBpbnbDoWxpZG8nLFxuICAgIGxvZ2luSGludDogYFNldSB1c3XDoXJpbyBmb2kgZW50cmVndWUgYSB2b2PDqiBubyBzZXUgcHJpbWVpcm8gZGlhLlxuICAgIENhc28gbsOjbyB0ZW5oYSBtYWlzIGVzc2EgaW5mb3JtYcOnw6NvIGNvbnRhY3RlIG8gc3Vwb3J0ZWAsXG4gICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2lyYSBzZXUgZS1tYWlsJyxcbiAgICBwYXNzd29yZEVycm9yUGF0dGVybjogJ1NlbmhhIGludsOhbGlkYScsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2lyYSBzdWEgc2VuaGEnLFxuICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAnVmFsb3IgaW52w6FsaWRvLicsXG4gICAgY3VzdG9tRmllbGRQbGFjZWhvbGRlcjogJ1BvciBmYXZvciBpbnNpcmEgdW0gdmFsb3InLFxuICAgIHJlbWVtYmVyVXNlcjogJ0xvZ2FyIGF1dG9tYXRpY2FtZW50ZScsXG4gICAgcmVtZW1iZXJVc2VySGludDogJ1ZvY8OqIHBvZGUgZGVzYWJpbGl0YXIgZXNzYSBvcMOnw6NvIG5vIG1lbnUgZG8gc2lzdGVtYScsXG4gICAgc3VibWl0TGFiZWw6ICdFbnRyYXInLFxuICAgIHN1Ym1pdHRlZExhYmVsOiAnQ2FycmVnYW5kby4uLicsXG4gICAgZm9yZ290UGFzc3dvcmQ6ICdFc3F1ZWNldSBzdWEgc2VuaGE/JyxcbiAgICBoaWdobGlnaHRJbmZvOiAnJyxcbiAgICByZWdpc3RlclVybDogJ05vdm8gcmVnaXN0cm8nLFxuICAgIHRpdGxlUG9wb3ZlcjogJ09wYSEnLFxuICAgIGZvcmdvdFlvdXJQYXNzd29yZDogJ0VzcXVlY2V1IHN1YSBzZW5oYT8nLFxuICAgIGlmWW91VHJ5SGFyZGVyOiAnU2UgdGVudGFyIG1haXMgJyxcbiAgICBhdHRlbXB0czogJ3swfSB2ZXooZXMpICcsXG4gICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOiAnc2VtIHN1Y2Vzc28gc2V1IHVzdcOhcmlvIHNlcsOhIGJsb3F1ZWFkbyBlIHZvY8OqIGZpY2EgMjQgaG9yYXMgc2VtIHBvZGVyIGFjZXNzYXIgOignLFxuICAgIGNyZWF0ZUFOZXdQYXNzd29yZE5vdzogJ01lbGhvciBjcmlhciB1bWEgc2VuaGEgbm92YSBhZ29yYSEgVm9jw6ogdmFpIHBvZGVyIGVudHJhciBubyBzaXN0ZW1hIGxvZ28gZW0gc2VndWlkYS4nLFxuICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAnRXNxdWVjaSBtaW5oYSBzZW5oYScsXG4gICAgd2VsY29tZTogJ0JvYXMtdmluZGFzJyxcbiAgICBzdXBwb3J0OiAnU3Vwb3J0ZSdcbiAgfSxcbiAgcnU6IDxQb1BhZ2VMb2dpbkxpdGVyYWxzPntcbiAgICB0aXRsZTogJ9CU0L7QsdGA0L4g0L/QvtC20LDQu9C+0LLQsNGC0YwhJyxcbiAgICBsb2dpbkVycm9yUGF0dGVybjogJ9Cd0LXQstC10YDQvdGL0Lkg0LvQvtCz0LjQvScsXG4gICAgbG9naW5IaW50OiBg0JLQsNGIINC70L7Qs9C40L0g0LHRi9C7INC/0YDQtdC00L7RgdGC0LDQstC70LXQvSDQstCw0Lwg0LIg0L/QtdGA0LLRi9C5INC00LXQvdGMLlxuICAgINCV0YHQu9C4INGDINCy0LDRgSDQvdC10YIg0Y3RgtC+0Lkg0LjQvdGE0L7RgNC80LDRhtC40LgsINC+0LHRgNCw0YLQuNGC0LXRgdGMINCyINGB0LvRg9C20LHRgyDQv9C+0LTQtNC10YDQttC60LhgLFxuICAgIGxvZ2luUGxhY2Vob2xkZXI6ICfQktGB0YLQsNCy0YzRgtC1INGB0LLQvtC5INCw0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLJyxcbiAgICBwYXNzd29yZEVycm9yUGF0dGVybjogJ9Cd0LXQstC10YDQvdGL0Lkg0L/QsNGA0L7Qu9GMJyxcbiAgICBwYXNzd29yZFBsYWNlaG9sZGVyOiAn0JLQstC10LTQuNGC0LUg0YHQstC+0Lkg0L/QsNGA0L7Qu9GMJyxcbiAgICBjdXN0b21GaWVsZEVycm9yUGF0dGVybjogJ9Cd0LXQstC10YDQvdC+0LUg0LfQvdCw0YfQtdC90LjQtS4nLFxuICAgIGN1c3RvbUZpZWxkUGxhY2Vob2xkZXI6ICfQn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0LfQvdCw0YfQtdC90LjQtScsXG4gICAgcmVtZW1iZXJVc2VyOiAn0JDQstGC0L7QvNCw0YLQuNGH0LXRgdC60LjQuSDQstGF0L7QtCcsXG4gICAgcmVtZW1iZXJVc2VySGludDogJ9CS0Ysg0LzQvtC20LXRgtC1INC+0YLQutC70Y7Rh9C40YLRjCDRjdGC0YMg0L7Qv9GG0LjRjiDQsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0YHQuNGB0YLQtdC80YsnLFxuICAgIHN1Ym1pdExhYmVsOiAn0JLQvtC50YLQuCcsXG4gICAgc3VibWl0dGVkTGFiZWw6ICcz0LDQs9GA0YPQt9C60LAuLi4nLFxuICAgIGZvcmdvdFBhc3N3b3JkOiAn0JfQsNCx0YvQu9C4INC/0LDRgNC+0LvRjD8nLFxuICAgIGhpZ2hsaWdodEluZm86ICcnLFxuICAgIHJlZ2lzdGVyVXJsOiAn0J3QvtCy0YvQuSDRgNC10LPQuNGB0YLRgCcsXG4gICAgdGl0bGVQb3BvdmVyOiAn0J7QuSEnLFxuICAgIGZvcmdvdFlvdXJQYXNzd29yZDogJ9CX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70Yw/JyxcbiAgICBpZllvdVRyeUhhcmRlcjogJ9CV0YHQu9C4INCy0Ysg0LHQtdC30YPRgdC/0LXRiNC90L4g0L/QvtC/0YvRgtCw0LXRgtC10YHRjCDQstC+0LnRgtC4INC10YnQtSAnLFxuICAgIGF0dGVtcHRzOiAnezB9INGA0LDQtyjQsCkgJyxcbiAgICB5b3VyVXNlcldpbGxCZUJsb2NrZWQ6ICfQktCw0Ygg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINCx0YPQtNC10YIg0LfQsNCx0LvQvtC60LjRgNC+0LLQsNC9LCDQuCDQktGLINC+0YHRgtCw0L3QtdGC0LXRgdGMINC90LAgMjQg0YfQsNGB0LAg0LHQtdC3INCy0L7Qt9C80L7QttC90L7RgdGC0Lgg0LTQvtGB0YLRg9C/0LAgOignLFxuICAgIGNyZWF0ZUFOZXdQYXNzd29yZE5vdzogJ9Cb0YPRh9GI0LUg0YHQvtC30LTQsNC50YLQtSDQvdC+0LLRi9C5INC/0LDRgNC+0LvRjCDRgdC10LnRh9Cw0YEhwqDQktGLINGB0LzQvtC20LXRgtC1INGB0YDQsNC30YMg0LLQvtC50YLQuCDQsiDRgdC40YHRgtC10LzRgy4nLFxuICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAn0K8g0LfQsNCx0YvQuyDRgdCy0L7QuSDQv9Cw0YDQvtC70YwnLFxuICAgIHdlbGNvbWU6ICfQtNC+0LHRgNC+INC/0L7QttCw0LvQvtCy0LDRgtGMJyxcbiAgICBzdXBwb3J0OiAn0J/QvtC00LTQtdGA0LbQutCwJ1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcG9QYWdlTG9naW5MaXRlcmFsSW4gPSB7XG4gIGVuOiAnaW4nLFxuICBlczogJ2VuJyxcbiAgcHQ6ICdlbScsXG4gIHJ1OiAn0LInXG59O1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gY29tcG9uZW50ZSBgcG8tcGFnZS1sb2dpbmAgw6kgdXRpbGl6YWRvIGNvbW8gdGVtcGxhdGUgcGFyYSB0ZWxhIGRlIGxvZ2luLlxuICogQ29tIGVsZSDDqSBwb3Nzw612ZWwgZGVmaW5pcm1vcyB2YWxvcmVzIHBhcmEgdXN1w6FyaW8sIHNlbmhhIGUgZGVmaW5pciBhw6fDtWVzIHBhcmEgcmVjdXBlcmHDp8OjbyBkZSBzZW5oYSBlIGdyYXZhw6fDo28gZGUgZGFkb3MgZG8gdXN1w6FyaW8uXG4gKiBUYW1iw6ltIMOpIHBvc3PDrXZlbCBpbnNlcmlyIHVtYSBpbWFnZW0gZW0gY29uanVudG8gY29tIHVtIHRleHRvIGRlIGRlc3RhcXVlLlxuICpcbiAqXG4gKiBBIHByb3ByaWVkYWRlIGBwLWF1dGhlbnRpY2F0aW9uLXVybGAgYXV0b21hdGl6YSBhIHJvdGluYSBkbyBjb21wb25lbnRlIGUgc2ltcGxpZmljYSBvIHByb2Nlc3NvIHBhcmEgYXV0ZW50aWNhw6fDo28gZG8gdXN1w6FyaW8sIGJhc3RhbmRvXG4gKiBkZWZpbmlyIHVtYSB1cmwgcGFyYSByZXF1aXNpw6fDo28gZGEgYXV0ZW50aWNhw6fDo28uIEEgZmxleGliaWxpZGFkZSBlIHByYXRpY2lkYWRlIHBvZGVtIGNoZWdhciBhIHVtIG7DrXZlbCBlbSBxdWUgbyBkZXNlbnZvbHZpbWVudG9cbiAqIGRhIGFwbGljYcOnw6NvIG5vICpjbGllbnQgc2lkZSogw6kgZGVzcHJvdmlkYSBkZSBxdWFscXVlciBjw7NkaWdvLWZvbnRlIHJlbGFjaW9uYWRvIMOgIHJvdGluYSBkZSBsb2dpbiBkZSB1c3XDoXJpby5cbiAqIFNldSBkZXRhbGhhbWVudG8gcGFyYSB1c28gcG9kZSBzZXIgdmlzdG8gbG9nbyBhYmFpeG8gZW0gKnByb3ByaWVkYWRlcyouXG4gKiBDYXNvIGp1bGd1ZSBuZWNlc3PDoXJpbywgcG9kZS1zZSB0YW1iw6ltIGRlZmluaXIgbWFudWFsbWVudGUgYSByb3RpbmEgZG8gY29tcG9uZW50ZS5cbiAqXG4gKlxuICogUGFyYSBxdWUgYXMgaW1hZ2VucyBzZWphbSBleGliaWRhcyBjb3JyZXRhbWVudGUsIMOpIG5lY2Vzc8OhcmlvIGluY2x1aXIgbyBjYW1pbmhvIGRlbGFzIGFvIHByb2pldG8uIFBhcmEgaXNzbywgZWRpdGVcbiAqIG8gKmFzc2V0cyogbm8gYXJxdWl2byAqKmFuZ3VsYXIuanNvbioqIGRhIGFwbGljYcOnw6NvIG5hIHNlZ3VpbnRlIG9yZGVtOlxuICogYGBgXG4gKiAgIFwiYXNzZXRzXCI6IFtcbiAqICAgICBcInNyYy9hc3NldHNcIixcbiAqICAgICBcInNyYy9mYXZpY29uLmljb1wiLFxuICogICAgIHtcbiAqICAgICAgIFwiZ2xvYlwiOiBcIioqXFwvKlwiLFxuICogICAgICAgXCJpbnB1dFwiOiBcIm5vZGVfbW9kdWxlcy9AcG8tdWkvc3R5bGUvaW1hZ2VzXCIsXG4gKiAgICAgICBcIm91dHB1dFwiOiBcImFzc2V0cy9pbWFnZXNcIlxuICogICAgIH1cbiAqICAgXVxuICogYGBgXG4gKi9cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFBvUGFnZUxvZ2luQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIC8qKlxuICAgKiBPIGBwLWJhY2tncm91bmRgIHBlcm1pdGUgaW5zZXJpciB1bWEgaW1hZ2VtIGRlIGRlc3RhcXVlIGFvIGxhZG8gZGlyZWl0byBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbiwgY2FzbyBhIHByb3ByaWVkYWRlXG4gICAqIG7Do28gc2VqYSBwcmVlbmNoaWRhIG8gZm9ybXVsw6FyaW8gc2Vyw6EgY2VudHJhbGl6YWRvIG5vIGVzcGHDp28gZGlzcG9uw612ZWwuXG4gICAqXG4gICAqIEEgZm9udGUgZGEgaW1hZ2VtIHBvZGUgc2VyIGRlIHVtIGNhbWluaG8gbG9jYWwgb3UgdW1hIHVybCBkZSB1bSBzZXJ2aWRvciBleHRlcm5vLlxuICAgKlxuICAgKiBBbMOpbSBkYSBpbWFnZW0sIMOpIHBvc3PDrXZlbCBhZGljaW9uYXIgdW0gdGV4dG8gaW5mb3JtYXRpdm8gcG9yIGNpbWEgZGEgaW1hZ2VtIGRhIGltYWdlbSBkZSBkZXN0YXF1ZSwgcGFyYSBpc3NvIGluZm9ybWVcbiAgICogdW0gdmFsb3IgcGFyYSBhIGxpdGVyYWwgYGhpZ2hsaWdodEluZm9gLlxuICAgKlxuICAgKiA+IFZlamEgbWFpcyBzb2JyZSBhcyBsaXRlcmFpcyBuYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AuXG4gICAqXG4gICAqIEV4ZW1wbG9zIGRlIHZhbG9yZXMgdsOhbGlkb3M6XG4gICAqIC0gKipsb2NhbCoqOiBgLi9hc3NldHMvaW1hZ2VzL2xvZ2luLWJhY2tncm91bmQucG5nYFxuICAgKiAtICoqdXJsIGV4dGVybmEqKjogYGh0dHBzOi8vcG8tdWkuaW8vYXNzZXRzL2ltYWdlcy9sb2dpbi1iYWNrZ3JvdW5kLnBuZ2BcbiAgICpcbiAgICogPiBFc3NhIHByb3ByaWVkYWRlIMOpIGlnbm9yYWRhIHBhcmEgYXBsaWNhw6fDtWVzIG1vYmlsZS5cbiAgICovXG4gIEBJbnB1dCgncC1iYWNrZ3JvdW5kJykgYmFja2dyb3VuZD86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDYW1pbmhvIHBhcmEgYSBsb2dvbWFyY2EgbG9jYWxpemFkYSBuYSBwYXJ0ZSBzdXBlcmlvci5cbiAgICpcbiAgICogPiBDYXNvIHNlamEgaW5kZWZpbmlkYSBvIGVzcGHDp28gc2UgbWFudMOpbSBwcmVzZXJ2YWRvIHBvcsOpbSB2YXppby5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dvJykgbG9nbz86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeHByZXNzw6NvIHJlZ3VsYXIgcGFyYSB2YWxpZGFyIG8gY2FtcG8gZGUgbG9naW4sIGNhc28gYSBleHByZXNzw6NvIG7Do28gc2VqYSBhdGVudGlkYSwgYSBsaXRlcmFsIGBsb2dpbkVycm9yUGF0dGVybmBcbiAgICogc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogRXhlbXBsb3MgZGUgdmFsb3JlcyB2w6FsaWRvczpcbiAgICogLSBlbWFpbDogYFtleHByZXNzYW8tcmVndWxhci1lbWFpbF1gXG4gICAqIC0gY3BmOiBgW2V4cHJlc3Nhby1yZWd1bGFyLWNwZl1gXG4gICAqXG4gICAqID4gVmVqYSBhIHByb3ByaWVkYWRlIGBwLWxpdGVyYWxzYCBwYXJhIGN1c3RvbWl6YXIgYSBsaXRlcmFsIGBsb2dpbkVycm9yUGF0dGVybmAuXG4gICAqL1xuICBASW5wdXQoJ3AtbG9naW4tcGF0dGVybicpIGxvZ2luUGF0dGVybj86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeHByZXNzw6NvIHJlZ3VsYXIgcGFyYSB2YWxpZGFyIG8gY2FtcG8gZGUgcGFzc3dvcmQsIGNhc28gYSBleHByZXNzw6NvIG7Do28gc2VqYSBhdGVudGlkYSwgYSBsaXRlcmFsIGBwYXNzd29yZEVycm9yUGF0dGVybmBcbiAgICogc2Vyw6EgZXhpYmlkYS5cbiAgICpcbiAgICogRXhlbXBsb3MgZGUgdmFsb3JlcyB2w6FsaWRvczpcbiAgICogLSBBcGVuYXMgbsO6bWVyb3M6IGBcXGQ/YFxuICAgKiAtIExldHJhcyBtw61udXNjdWxhczogYFxcej9gXG4gICAqXG4gICAqID4gVmVqYSBhIHByb3ByaWVkYWRlIGBwLWxpdGVyYWxzYCBwYXJhIGN1c3RvbWl6YXIgYSBsaXRlcmFsIGBwYXNzd29yZEVycm9yUGF0dGVybmAuXG4gICAqL1xuICBASW5wdXQoJ3AtcGFzc3dvcmQtcGF0dGVybicpIHBhc3N3b3JkUGF0dGVybj86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDYW1pbmhvIHBhcmEgYSBsb2dvbWFyY2EgbG9jYWxpemFkYSBubyByb2RhcMOpLlxuICAgKi9cbiAgQElucHV0KCdwLXNlY29uZGFyeS1sb2dvJykgc2Vjb25kYXJ5TG9nbz86IHN0cmluZztcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFdmVudG8gZGlzcGFyYWRvIHF1YW5kbyBvIHVzdcOhcmlvIGFsdGVyYXIgbyBpbnB1dCBkbyBjYW1wbyBsb2dpbi5cbiAgICpcbiAgICogRXNzZSBldmVudG8gcmVjZWJlcsOhIGNvbW8gcGFyw6JtZXRybyB1bWEgdmFyacOhdmVsIGRvIHRpcG8gYHN0cmluZ2AgY29tIG8gdGV4dG8gaW5mb3JtYWRvIG5vIGNhbXBvLlxuICAgKlxuICAgKiA+IEVzdGEgcHJvcHJpZWRhZGUgc2Vyw6EgaWdub3JhZGEgc2UgZm9yIGRlZmluaWRvIHZhbG9yIHBhcmEgYSBwcm9wcmllZGFkZSBgcC1hdXRoZW50aWNhdGlvbi11cmxgLlxuICAgKi9cbiAgQE91dHB1dCgncC1sb2dpbi1jaGFuZ2UnKSBsb2dpbkNoYW5nZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAvKipcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBhbyBzdWJtZXRlciBvIGZvcm11bMOhcmlvIGRlIGxvZ2luIChhcGVydGFuZG8gYEVudGVyYCBkZW50cm8gZG9zIGNhbXBvcyBvdSBwcmVzc2lvbmFuZG8gbyBib3TDo28gZGUgY29uZmlybWHDp8OjbykuXG4gICAqXG4gICAqIEVzc2UgZXZlbnRvIHJlY2ViZXLDoSBjb21vIHBhcsOibWV0cm8gdW0gb2JqZXRvIGRvIHRpcG8gYFBvUGFnZUxvZ2luYCBjb20gb3MgZGFkb3MgaW5mb3JtYWRvcyBubyBmb3JtdWzDoXJpby5cbiAgICpcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhIHNlIGZvciBkZWZpbmlkbyB2YWxvciBwYXJhIGEgcHJvcHJpZWRhZGUgYHAtdXJsLXJlY292ZXJ5YC5cbiAgICpcbiAgICogPiBQYXJhIG1haXMgZGV0YWxoZXMgY29uc3VsdGUgYSBkb2N1bWVudGHDp8OjbyBzb2JyZSBhIGludGVyZmFjZSBgUG9QYWdlTG9naW5gIG1haXMgYWJhaXhvLlxuICAgKi9cbiAgQE91dHB1dCgncC1sb2dpbi1zdWJtaXQnKSBsb2dpblN1Ym1pdCA9IG5ldyBFdmVudEVtaXR0ZXI8UG9QYWdlTG9naW4+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBxdWFuZG8gbyB1c3XDoXJpbyBhbHRlcmFyIG8gaW5wdXQgZG8gY2FtcG8gcGFzc3dvcmQuXG4gICAqXG4gICAqIEVzc2UgZXZlbnRvIHJlY2ViZXLDoSBjb21vIHBhcsOibWV0cm8gdW1hIHZhcmnDoXZlbCBkbyB0aXBvIGBzdHJpbmdgIGNvbSBvIHRleHRvIGluZm9ybWFkbyBubyBjYW1wby5cbiAgICpcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhIHNlIGZvciBkZWZpbmlkbyB2YWxvciBwYXJhIGEgcHJvcHJpZWRhZGUgYHAtYXV0aGVudGljYXRpb24tdXJsYC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtcGFzc3dvcmQtY2hhbmdlJykgcGFzc3dvcmRDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBxdWFuZG8gbyB1c3XDoXJpbyBhbHRlcmFyIG8gaWRpb21hIGRhIHDDoWdpbmEuXG4gICAqXG4gICAqIEVzc2UgZXZlbnRvIHJlY2ViZXLDoSBjb21vIHBhcsOibWV0cm8gdW0gb2JqZXRvIGRvIHRpcG8gYFBvTGFuZ3VhZ2VgIGNvbSBhIGxpbmd1YWdlbSBzZWxlY2lvbmFkYS5cbiAgICpcbiAgICovXG4gIEBPdXRwdXQoJ3AtbGFuZ3VhZ2UtY2hhbmdlJykgbGFuZ3VhZ2VDaGFuZ2U6IEV2ZW50RW1pdHRlcjxQb0xhbmd1YWdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8UG9MYW5ndWFnZT4oKTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBEZWZpbmUgYSBwcm9wcmllZGFkZSBuYXRpdmEgYGF1dG9jb21wbGV0ZWAgZG8gY2FtcG8gY29tbyBgb2ZmYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICBASW5wdXQoJ3Atbm8tYXV0b2NvbXBsZXRlLWxvZ2luJykgbm9BdXRvY29tcGxldGVMb2dpbjogYm9vbGVhbiA9IHRydWU7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqID4gTm8gY29tcG9uZW50ZSBgcG8tcGFzc3dvcmRgIHNlcsOhIGRlZmluaWRvIGNvbW8gYG5ldy1wYXNzd29yZGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZS1wYXNzd29yZCcpIG5vQXV0b2NvbXBsZXRlUGFzc3dvcmQ6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcm1pdGUgZXNjb25kZXIgYSBmdW7Dp8OjbyBkZSBlc3BpYXIgYSBzZW5oYSBkaWdpdGFkYS5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtcGFzc3dvcmQtcGVlaycpIGhpZGVQYXNzd29yZFBlZWs6IGJvb2xlYW47XG5cbiAgYWxsTG9naW5FcnJvcnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgYWxsUGFzc3dvcmRFcnJvcnM6IEFycmF5PHN0cmluZz4gPSBbXTtcbiAgY3VzdG9tRmllbGRPYmplY3Q6IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQ7XG4gIGN1c3RvbUZpZWxkVHlwZTogc3RyaW5nO1xuICBsb2dpblN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uO1xuICBwYXNzd29yZDogc3RyaW5nO1xuICByZW1lbWJlclVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgc2VsZWN0ZWRMYW5ndWFnZTogc3RyaW5nO1xuICBzaG93RXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSBmYWxzZTtcblxuICBwcml2YXRlIF9hdXRoZW50aWNhdGlvblR5cGU6IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlID0gUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUuQmFzaWM7XG4gIHByaXZhdGUgX2F1dGhlbnRpY2F0aW9uVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Jsb2NrZWRVcmw6IHN0cmluZztcbiAgcHJpdmF0ZSBfY29udGFjdEVtYWlsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2N1c3RvbUZpZWxkOiBzdHJpbmcgfCBQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkO1xuICBwcml2YXRlIF9lbnZpcm9ubWVudD86IHN0cmluZztcbiAgcHJpdmF0ZSBfZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmc/OiBudW1iZXI7XG4gIHByaXZhdGUgX2hpZGVSZW1lbWJlclVzZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbGl0ZXJhbHM6IFBvUGFnZUxvZ2luTGl0ZXJhbHM7XG4gIHByaXZhdGUgX2xvYWRpbmc/OiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xvZ2luOiBzdHJpbmc7XG4gIHByaXZhdGUgX2xvZ2luRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByaXZhdGUgX3Bhc3N3b3JkRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIHByaXZhdGUgX3Byb2R1Y3ROYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3JlY292ZXJ5OiBzdHJpbmcgfCBQb1BhZ2VMb2dpblJlY292ZXJ5IHwgRnVuY3Rpb247XG4gIHByaXZhdGUgX3JlZ2lzdGVyVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgX3N1cHBvcnQ6IHN0cmluZyB8IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9sYW5ndWFnZXNMaXN0OiBBcnJheTxQb0xhbmd1YWdlPjtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBbyBpbmZvcm1hciB1bSB2YWxvciBkbyB0aXBvIGBzdHJpbmdgLCBvIG1lc21vIHNlcsOhIGFwbGljYWRvIGNvbW8gYSBjaGF2ZSBkbyBjYW1wbyBjdXN0b21pemFkbyBlIHV0aWxpemFyw6FcbiAgICogb3MgdmFsb3JlcyBwYWRyw7VlcyBjb250aWRvcyBuYSBwcm9wcmllZGFkZSBgbGl0ZXJhbHNgIGNvbW8gYGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuYCBlIGBjdXN0b21GaWVsZFBsYWNlaG9sZGVyYC5cbiAgICpcbiAgICogRXhpc3RlIGEgcG9zc2liaWxpZGFkZSBkZSBpbmZvcm1hciB1bSBvYmpldG8gcXVlIHNlZ3VlIGEgZGVmaW5pw6fDo28gZGEgaW50ZXJmYWNlIGBQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkYCwgb25kZVxuICAgKiBhdHJhdsOpcyBkb3MgcGFyw6JtZXRyb3MgZW52aWFkb3MgcG9kZSBnZXJhciB1bSBgcG8taW5wdXRgLCBgcG8tY29tYm9gIGVzcGVjaWZpY2FtZW50ZSBwYXJhIHNlcnZpw6dvc1xuICAgKiBvdSBgcG8tc2VsZWN0YCBwYXJhIHZhbG9yZXMgZml4b3MuXG4gICAqXG4gICAqIEFiYWl4byBzZWd1ZW0gb3MgZXhlbXBsb3MgZGUgY2FkYSB0aXBvIGRlIGNhbXBvLlxuICAgKlxuICAgKiBgcG8taW5wdXRgOlxuICAgKlxuICAgKiBgYGBcbiAgICoge1xuICAgKiAgIHByb3BlcnR5OiAnZG9tYWluJyxcbiAgICogICB2YWx1ZTogJ2p2MDEnLFxuICAgKiAgIHBsYWNlaG9sZGVyOiAnRW50ZXIgeW91ciBkb21haW4nLFxuICAgKiAgIHBhdHRlcm46ICdbYS16XScsXG4gICAqICAgZXJyb3JQYXR0ZXJuOiAnSW52YWxpZCB2YWx1ZSdcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogYHBvLWNvbWJvYDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBwcm9wZXJ0eTogJ2RvbWFpbicsXG4gICAqICAgdmFsdWU6ICdqdjAxJyxcbiAgICogICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgZG9tYWluJyxcbiAgICogICB1cmw6ICdodHRwczovL3BvLXVpLmlvL3NhbXBsZS9hcGkvY29tYm9PcHRpb24vZG9tYWlucycsXG4gICAqICAgZmllbGRWYWx1ZTogJ25pY2tuYW1lJ1xuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBgcG8tc2VsZWN0YDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBwcm9wZXJ0eTogJ2RvbWFpbicsXG4gICAqICAgdmFsdWU6ICdqdjAxJyxcbiAgICogICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgZG9tYWluJyxcbiAgICogICBvcHRpb25zOiBbe2xhYmVsOiAnRG9tYWluIDEnLCB2YWx1ZTogJzEnfSwge2xhYmVsOiAnRG9tYWluIDInLCB2YWx1ZTogJzInfV1cbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQ2FzbyBvIGN1c3RvbUZpZWxkIHBvc3N1YSBvcHRpb25zLCB1cmwgZSBmaWVsZFZhbHVlIHByZWVuY2hpZG9zLCBzZXLDoSBwcmlvcml6YWRvIG8gcG8tc2VsZWN0XG4gICAqIHV0aWxpemFuZG8gbyBvcHRpb25zLlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWN1c3RvbS1maWVsZCcpIHNldCBjdXN0b21GaWVsZCh2YWx1ZTogc3RyaW5nIHwgUG9QYWdlTG9naW5DdXN0b21GaWVsZCkge1xuICAgIGlmICh2YWx1ZSkge1xuICAgICAgaWYgKGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykpIHtcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZFR5cGUgPSAnaW5wdXQnO1xuICAgICAgICB0aGlzLl9jdXN0b21GaWVsZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmN1c3RvbUZpZWxkT2JqZWN0ID0gdGhpcy5nZXREZWZhdWx0Q3VzdG9tRmllbGRPYmplY3QodmFsdWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChpc1R5cGVvZih2YWx1ZSwgJ29iamVjdCcpICYmICFBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZVsncHJvcGVydHknXSkge1xuICAgICAgICB0aGlzLl9jdXN0b21GaWVsZCA9IHZhbHVlO1xuICAgICAgICB0aGlzLmN1c3RvbUZpZWxkT2JqZWN0ID0gPFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQ+dmFsdWU7XG5cbiAgICAgICAgaWYgKCF0aGlzLmN1c3RvbUZpZWxkT2JqZWN0Lm9wdGlvbnMgJiYgIXRoaXMuY3VzdG9tRmllbGRPYmplY3QudXJsKSB7XG4gICAgICAgICAgdGhpcy5jdXN0b21GaWVsZFR5cGUgPSAnaW5wdXQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRUeXBlID0gdGhpcy5jdXN0b21GaWVsZE9iamVjdC5vcHRpb25zID8gJ3NlbGVjdCcgOiAnY29tYm8nO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2N1c3RvbUZpZWxkID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuY3VzdG9tRmllbGRPYmplY3QgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgY3VzdG9tRmllbGQoKTogc3RyaW5nIHwgUG9QYWdlTG9naW5DdXN0b21GaWVsZCB7XG4gICAgcmV0dXJuIHRoaXMuX2N1c3RvbUZpZWxkO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUGVyc29uYWxpemEgbyBlLW1haWwgcXVlIMOpIGV4aWJpZG8gbmEgbWVuc2FnZW0gZGUgZGljYSBkZSBsb2dpbiBwYWRyw6NvIHBhcmEgY29udGF0byBkZSBzdXBvcnRlLlxuICAgKi9cbiAgQElucHV0KCdwLWNvbnRhY3QtZW1haWwnKSBzZXQgY29udGFjdEVtYWlsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9jb250YWN0RW1haWwgPSB2YWx1ZTtcbiAgfVxuICBnZXQgY29udGFjdEVtYWlsKCkge1xuICAgIHJldHVybiB0aGlzLl9jb250YWN0RW1haWw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBUZXh0byBjdXN0b21pemFkbyBxdWUgZmljYSBlbnRyZSBhIGxvZ28gZSBhIG1lbnNhZ2VtIGRlIGJvYXMtdmluZGFzLlxuICAgKi9cbiAgQElucHV0KCdwLXByb2R1Y3QtbmFtZScpIHNldCBwcm9kdWN0TmFtZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcHJvZHVjdE5hbWUgPSB2YWx1ZTtcbiAgfVxuICBnZXQgcHJvZHVjdE5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Byb2R1Y3ROYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogQWRpY2lvbmEgdW1hIGB0YWdgIGFiYWl4byBkbyB0w610dWxvIHF1ZSBlc3BlY2lmaWNhIG8gYW1iaWVudGUgcXVlIG8gdXN1w6FyaW8gZXN0w6EgZmF6ZW5kbyBvIGxvZ2luLlxuICAgKlxuICAgKiA+IEVzc2EgcHJvcHJpZWRhZGUgbGltaXRhIG8gdGV4dG8gZW0gNDAgY2FyYWN0ZXJlcy5cbiAgICovXG4gIEBJbnB1dCgncC1lbnZpcm9ubWVudCcpIHNldCBlbnZpcm9ubWVudChlbnZpcm9ubWVudDogc3RyaW5nKSB7XG4gICAgaWYgKGVudmlyb25tZW50ICYmIGVudmlyb25tZW50Lmxlbmd0aCA+IHBvUGFnZUxvZ2luQ29udGVudE1heExlbmd0aCkge1xuICAgICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudC5zdWJzdHJpbmcoMCwgcG9QYWdlTG9naW5Db250ZW50TWF4TGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fZW52aXJvbm1lbnQgPSBlbnZpcm9ubWVudDtcbiAgICB9XG4gIH1cbiAgZ2V0IGVudmlyb25tZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9lbnZpcm9ubWVudDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEV4aWJlIHVtIGF2aXNvIGRlIGJsb3F1ZWlvIGRlIGFjb3JkbyBjb20gYSBxdWFudGlkYWRlIHJlc3RhbnRlIGRlIHRlbnRhdGl2YXMuXG4gICAqIE8gYXZpc28gc2Vyw6EgZXhpYmlkbyBzb21lbnRlIHNlIGEgcXVhbnRpZGFkZSBmb3IgbWFpb3IgcXVlIHplcm8uXG4gICAqXG4gICAqID4gQ2FzbyB0ZW5oYSBhbGd1bSB2YWxvciBhdHJpYnXDrWRvIHBhcmEgbyBhdHJpYnV0byBgcC1hdXRoZW50aWNhdGlvbi11cmxgIGUgbyByZXRvcm5vIGRhIHJlcXVpc2nDp8OjbyBlc3RpdmVyIGF0cmlidWluZG8gdmFsb3JcbiAgICogcGFyYSBvIGBwLWV4Y2VlZGVkLWF0dGVtcHRzLXdhcm5pbmdgLCBvIHZhbG9yIGNvbnNpZGVyYWRvIHNlcsOhIG8gZG8gcmV0b3JubyBkYSByZXF1aXNpw6fDo28uXG4gICAqXG4gICAqIEBkZWZhdWx0IGAwYFxuICAgKi9cbiAgQElucHV0KCdwLWV4Y2VlZGVkLWF0dGVtcHRzLXdhcm5pbmcnKSBzZXQgZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX2V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID0gY29udmVydFRvSW50KHZhbHVlKTtcbiAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPiAwO1xuICB9XG5cbiAgZ2V0IGV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXNjb25kZSBhIGZ1bsOnw6NvIFwiTGVtYnJhciB1c3XDoXJpb1wiIGRvIGZvcm11bMOhcmlvIGRlIGxvZ2luLlxuICAgKlxuICAgKiBRdWFuZG8gZXNzYSBwcm9wcmllZGFkZSDDqSBzZXRhZGEgY29tIGB0cnVlYCBhIHByb3ByaWVkYWRlIGByZW1lbWJlclVzZXJgIGVudmlhZGEgbm8gZXZlbnRvIGBwLWxvZ2luLXN1Ym1pdGAgc2Vyw6Egc2VtcHJlXG4gICAqIGBmYWxzZWAuXG4gICAqXG4gICAqID4gVmVqYSBhIHByb3ByaWVkYWRlIGBwLWxpdGVyYWxzYCBwYXJhIGN1c3RvbWl6YXIgYSBsaXRlcmFsIGByZW1lbWJlclVzZXJgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtaGlkZS1yZW1lbWJlci11c2VyJykgc2V0IGhpZGVSZW1lbWJlclVzZXIodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9oaWRlUmVtZW1iZXJVc2VyID0gPGFueT52YWx1ZSA9PT0gJycgPyB0cnVlIDogY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5faGlkZVJlbWVtYmVyVXNlcikge1xuICAgICAgdGhpcy5yZW1lbWJlclVzZXIgPSBmYWxzZTtcbiAgICB9XG4gIH1cbiAgZ2V0IGhpZGVSZW1lbWJlclVzZXIoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZGVSZW1lbWJlclVzZXI7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBPYmpldG8gY29tIGFzIGxpdGVyYWlzIHVzYWRhcyBubyBgcG8tcGFnZS1sb2dpbmAuXG4gICAqXG4gICAqIEV4aXN0ZW0gZHVhcyBtYW5laXJhcyBkZSBjdXN0b21pemFyIG8gY29tcG9uZW50ZSwgcGFzc2FuZG8gdW0gb2JqZXRvIGNvbSB0b2RhcyBhcyBsaXRlcmFpcyBkaXNwb27DrXZlaXM6XG4gICAqXG4gICAqIGBgYFxuICAgKiAgY29uc3QgY3VzdG9tTGl0ZXJhbHM6IFBvUGFnZUxvZ2luTGl0ZXJhbHMgPSB7XG4gICAqICAgIGF0dGVtcHRzOiAnezB9IHZleihlcykgJyxcbiAgICogICAgY3JlYXRlQU5ld1Bhc3N3b3JkTm93OiAnTWVsaG9yIGNyaWFyIHVtYSBzZW5oYSBub3ZhIGFnb3JhISBWb2PDqiB2YWkgcG9kZXIgZW50cmFyIG5vIHNpc3RlbWEgbG9nbyBlbSBzZWd1aWRhLicsXG4gICAqICAgIGZvcmdvdFBhc3N3b3JkOiAnRXNxdWVjZXUgc3VhIHNlbmhhPycsXG4gICAqICAgIGZvcmdvdFlvdXJQYXNzd29yZDogJ0VzcXVlY2V1IHN1YSBzZW5oYT8nLFxuICAgKiAgICBoaWdobGlnaHRJbmZvOiAnJyxcbiAgICogICAgaUZvcmdvdE15UGFzc3dvcmQ6ICdFc3F1ZWNpIG1pbmhhIHNlbmhhJyxcbiAgICogICAgaWZZb3VUcnlIYXJkZXI6ICdTZSB0ZW50YXIgbWFpcyAnLFxuICAgKiAgICB3ZWxjb21lOiAnQm9hcy12aW5kYXMnLFxuICAgKiAgICBsb2dpbkVycm9yUGF0dGVybjogJ0xvZ2luIG9icmlnYXTDs3JpbycsXG4gICAqICAgIGxvZ2luSGludDogJ0Nhc28gbsOjbyBwb3NzdWEgdXN1w6FyaW8gZW50cmUgZW0gY29udGF0byBjb20gbyBzdXBvcnRlJyxcbiAgICogICAgbG9naW5MYWJlbDogJ0luc2lyYSBzZXUgdXN1w6FyaW8nLFxuICAgKiAgICBsb2dpblBsYWNlaG9sZGVyOiAnSW5zaXJhIHNldSB1c3XDoXJpbyBkZSBhY2Vzc28nLFxuICAgKiAgICBwYXNzd29yZEVycm9yUGF0dGVybjogJ1NlbmhhIG9icmlnYXTDs3JpYScsXG4gICAqICAgIHBhc3N3b3JkTGFiZWw6ICdJbnNpcmEgc3VhIHNlbmhhJyxcbiAgICogICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2lyYSBzdWEgc2VuaGEgZGUgYWNlc3NvJyxcbiAgICogICAgY3VzdG9tRmllbGRFcnJvclBhdHRlcm46ICdDYW1wbyBjdXN0b21pemFkbyBpbnbDoWxpZG8nLFxuICAgKiAgICBjdXN0b21GaWVsZFBsYWNlaG9sZGVyOiAnUG9yIGZhdm9yIGluc2lyYSB1bSB2YWxvcicsXG4gICAqICAgIHJlZ2lzdGVyVXJsOiAnTm92byByZWdpc3RybycsXG4gICAqICAgIHJlbWVtYmVyVXNlcjogJ0xlbWJyYXIgdXN1w6FyaW8nLFxuICAgKiAgICByZW1lbWJlclVzZXJIaW50OiAnRXN0YSBvcMOnw6NvIHBvZGUgc2VyIGRlc2FiaWxpdGFkYSBuYXMgY29uZmlndXJhw6fDtWVzIGRvIHNpc3RlbWEnLFxuICAgKiAgICBzdWJtaXRMYWJlbDogJ0FjZXNzYXIgc2lzdGVtYScsXG4gICAqICAgIHN1Ym1pdHRlZExhYmVsOiAnQ2FycmVnYW5kby4uLicsXG4gICAqICAgIHRpdGxlUG9wb3ZlcjogJ09wYSEnLFxuICAgKiAgICB5b3VyVXNlcldpbGxCZUJsb2NrZWQ6ICdzZW0gc3VjZXNzbyBzZXUgdXN1w6FyaW8gc2Vyw6EgYmxvcXVlYWRvIGUgdm9jw6ogZmljYSAyNCBob3JhcyBzZW0gcG9kZXIgYWNlc3NhciA6KCdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBPdSBwYXNzYW5kbyBhcGVuYXMgYXMgbGl0ZXJhaXMgcXVlIGRlc2VqYSBjdXN0b21pemFyOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1BhZ2VMb2dpbkxpdGVyYWxzID0ge1xuICAgKiAgICBsb2dpblBsYWNlaG9sZGVyOiAnSW5zaXJhIHNldSB1c3XDoXJpbyBkZSBhY2Vzc28nLFxuICAgKiAgICBwYXNzd29yZFBsYWNlaG9sZGVyOiAnSW5zaXJhIHN1YSBzZW5oYSBkZSBhY2Vzc28nLFxuICAgKiAgICBzdWJtaXRMYWJlbDogJ0FjZXNzYXIgc2lzdGVtYSdcbiAgICogIH07XG4gICAqIGBgYFxuICAgKlxuICAgKiBFIHBhcmEgY2FycmVnYXIgYXMgbGl0ZXJhaXMgY3VzdG9taXphZGFzLCBiYXN0YSBhcGVuYXMgcGFzc2FyIG8gb2JqZXRvIHBhcmEgbyBjb21wb25lbnRlLlxuICAgKlxuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtbG9naW5cbiAgICogICBbcC1saXRlcmFsc109XCJjdXN0b21MaXRlcmFsc1wiPlxuICAgKiA8L3BvLXBhZ2UtbG9naW4+XG4gICAqIGBgYFxuICAgKlxuICAgKiAgPiBPIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIHNlcsOhIHRyYWR1emlkbyBkZSBhY29yZG8gY29tIG8gaWRpb21hIGRvIGJyb3dzZXIgKHB0LCBlbiwgZXMpLlxuICAgKiAgPiDDiSB0YW1iw6ltIHBvc3PDrXZlbCBhbHRlcm5hciBvIG9iamV0byBwYWRyw6NvIGRlIGxpdGVyYWlzIGF0cmF2w6lzIGRvIHNlbGV0b3IgZGUgaWRpb21hcyBsb2NhbGl6YWRvIG5hIHBhcnRlIGluZmVyaW9yIGRvIHRlbXBsYXRlLFxuICAgKiBuZXNzZSBjYXNvLCBow6EgdGFtYsOpbSBhIG9ww6fDo28gZG8gaWRpb21hIHJ1c3NvLlxuICAgKi9cbiAgQElucHV0KCdwLWxpdGVyYWxzJykgc2V0IGxpdGVyYWxzKHZhbHVlOiBQb1BhZ2VMb2dpbkxpdGVyYWxzKSB7XG4gICAgdGhpcy5fbGl0ZXJhbHMgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBsaXRlcmFscygpIHtcbiAgICByZXR1cm4gdGhpcy5fbGl0ZXJhbHM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBIYWJpbGl0YSB1bSBlc3RhZG8gZGUgY2FycmVnYW1lbnRvIGFvIGJvdMOjbyBkZSAqbG9naW4qLlxuICAgKlxuICAgKiA+IMOJIG5lY2Vzc8OhcmlvIGF0cmlidWlyIGB0cnVlYCDDoCBlc3RhIHByb3ByaWVkYWRlIG5hIGZ1bsOnw6NvIGRlZmluaWRhIGVtIGBwLWxvZ2luLXN1Ym1pdGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1sb2FkaW5nJykgc2V0IGxvYWRpbmcodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9sb2FkaW5nID0gY29udmVydFRvQm9vbGVhbih2YWx1ZSk7XG4gIH1cblxuICBnZXQgbG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFZhbG9yIGRvIG1vZGVsbyBkbyBjYW1wbyBkZSBsb2dpbi5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dpbicpIHNldCBsb2dpbih2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fbG9naW4gPSB2YWx1ZTtcblxuICAgIGlmICghdGhpcy5hdXRoZW50aWNhdGlvblVybCkge1xuICAgICAgdGhpcy5sb2dpbkNoYW5nZS5lbWl0KHRoaXMuX2xvZ2luKTtcbiAgICB9XG4gIH1cblxuICBnZXQgbG9naW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fbG9naW47XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBdHJpYnV0byBxdWUgcmVjZWJlIHVtYSBsaXN0YSBkZSBlcnJvcyBlIGV4aWJlIGFiYWl4byBkbyBjYW1wbyBkZSBsb2dpbi5cbiAgICovXG4gIEBJbnB1dCgncC1sb2dpbi1lcnJvcnMnKSBzZXQgbG9naW5FcnJvcnModmFsdWU6IEFycmF5PHN0cmluZz4pIHtcbiAgICB0aGlzLl9sb2dpbkVycm9ycyA9IHZhbHVlIHx8IFtdO1xuICAgIHRoaXMuc2V0TG9naW5FcnJvcnModGhpcy5fbG9naW5FcnJvcnMpO1xuICB9XG4gIGdldCBsb2dpbkVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5fbG9naW5FcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBdHJpYnV0byBxdWUgcmVjZWJlIHVtYSBsaXN0YSBkZSBlcnJvcyBlIGV4aWJlIGFiYWl4byBkbyBjYW1wbyBkZSBwYXNzd29yZC5cbiAgICovXG4gIEBJbnB1dCgncC1wYXNzd29yZC1lcnJvcnMnKSBzZXQgcGFzc3dvcmRFcnJvcnModmFsdWU6IEFycmF5PHN0cmluZz4pIHtcbiAgICB0aGlzLl9wYXNzd29yZEVycm9ycyA9IHZhbHVlIHx8IFtdO1xuICAgIHRoaXMuc2V0UGFzc3dvcmRFcnJvcnModGhpcy5fcGFzc3dvcmRFcnJvcnMpO1xuICB9XG4gIGdldCBwYXNzd29yZEVycm9ycygpIHtcbiAgICByZXR1cm4gdGhpcy5fcGFzc3dvcmRFcnJvcnM7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSB1bSBsaW5rIGFiYWl4byBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbiBwYXJhIHF1ZSBvcyB1c3XDoXJpb3MgZGEgYXBsaWNhw6fDo28gZmHDp2FtIGEgcmVjdXBlcmHDp8OjbyBkb3MgZGFkb3MgZGUgYXV0ZW50aWNhw6fDo28uXG4gICAqXG4gICAqIEEgcHJvcHJpZWRhZGUgYWNlaXRhIG9zIHNlZ3VpbnRlcyB0aXBvczpcbiAgICpcbiAgICogLSAqKlN0cmluZyoqOiBpbmZvcm1lIHVtYSB1cmwgZXh0ZXJuYSBvdSB1bWEgcm90YSB2w6FsaWRhO1xuICAgKiAtICoqRnVuY3Rpb24qKjogcG9kZS1zZSBjdXN0b21pemFyIGEgYcOnw6NvLiBQYXJhIGVzdGEgcG9zc2lsaWRhZGUgYmFzdGEgYXRyaWJ1aXI6XG4gICAqIGBgYFxuICAgKiA8cG8tcGFnZS1sb2dpbj5cbiAgICogICBbcmVjb3ZlcnldPVwidGhpcy5teVJlY292ZXJ5LmJpbmQodGhpcylcIj5cbiAgICogPC9wby1wYWdlLWxvZ2luPlxuICAgKiBgYGBcbiAgICpcbiAgICogLSAqKlBvUGFnZUxvZ2luUmVjb3ZlcnkqKjogY3JpYS1zZSB2w61uY3VsbyBhdXRvbcOhdGljbyBjb20gbyB0ZW1wbGF0ZSAqKnBvLW1vZGFsLXBhc3N3b3JkLXJlY292ZXJ5KiouXG4gICAqICAgTyBvYmpldG8gZGV2ZSBjb250ZXIgYSAqKnVybCoqIHBhcmEgcmVxdWlzacOnw6NvIGRvcyByZWN1cnNvcyBlIHBvZGUtc2UgZGVmaW5pciBvICoqdGlwbyoqIGRlIG1vZGFsIHBhcmEgcmVjdXBlcmHDp8OjbyBkZSBzZW5oYSxcbiAgICogICAqKmVtYWlsKiogcGFyYSBjb250YXRvIGUgKiptw6FzY2FyYSoqIGRvIGNhbXBvIGRlIHRlbGVmb25lLlxuICAgKi9cbiAgQElucHV0KCdwLXJlY292ZXJ5Jykgc2V0IHJlY292ZXJ5KHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbiB8IFBvUGFnZUxvZ2luUmVjb3ZlcnkpIHtcbiAgICB0aGlzLl9yZWNvdmVyeSA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHJlY292ZXJ5KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWNvdmVyeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhc28gYSBhcGxpY2HDp8OjbyB0ZW5oYSB1bSBsaW5rIHBhcmEgbm92b3MgY2FkYXN0cm9zLCBpbmZvcm1lIHVtYSB1cmwgZXh0ZXJuYSBvdSB1bWEgcm90YSB2w6FsaWRhLCBkZXNzYVxuICAgKiBmb3JtYSBzZXLDoSBleGliaWRvIHVtIGxpbmsgYWJhaXhvIGRvIGZvcm11bMOhcmlvIGRlIGxvZ2luIHBhcmEgb3MgdXN1w6FyaW9zIGRhIGFwbGljYcOnw6NvLlxuICAgKlxuICAgKiBFeGVtcGxvcyBkZSB2YWxvcmVzIHbDoWxpZG9zOlxuICAgKiAtICoqbG9jYWwqKjogYC9ob21lYFxuICAgKiAtICoqdXJsIGV4dGVybmEqKjogYGh0dHBzOi8vcG8tdWkuaW9gXG4gICAqXG4gICAqID4gVmVqYSBhIHByb3ByaWVkYWRlIGBwLWxpdGVyYWxzYCBwYXJhIGN1c3RvbWl6YXIgYSBsaXRlcmFsIGByZWdpc3RlclVybGAuXG4gICAqL1xuICBASW5wdXQoJ3AtcmVnaXN0ZXItdXJsJykgc2V0IHJlZ2lzdGVyVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9yZWdpc3RlclVybCA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCByZWdpc3RlclVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9yZWdpc3RlclVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEF0cmlidXRvIHF1ZSByZWNlYmUgbyB0aXBvIGRlIGVzcXVlbWEgZGEgYXV0ZW50aWNhw6fDo28sIHNlbmRvIHN1cG9ydGFkb3MgYXBlbmFzIG9zIHZhbG9yZXMgYEJhc2ljYCBlIGBCZWFyZXJgLlxuICAgKlxuICAgKiA+IENhc28gbyB0aXBvIGRlZmluaWRvIHNlamEgYEJhc2ljYCwgbyBjb21wb25lbnRlIGZhcsOhIHVtYSByZXF1aXNpw6fDo28gYFBPU1RgIGNvbnRlbmRvOlxuICAgKlxuICAgKiBgYGBcbiAgICogaGVhZGVycyB7XG4gICAqICBBdXRob3JpemF0aW9uOiBCYXNpYyBiYXNlNjQobG9naW46cGFzc3dvcmQpXG4gICAqIH1cbiAgICpcbiAgICogYm9keSB7XG4gICAqICByZW1lbWJlclVzZXI6IHJlbWVtYmVyVXNlclxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiA+IENhc28gbyB0aXBvIGRlZmluaWRvIHNlamEgYEJlYXJlcmAsIG8gY29tcG9uZW50ZSBmYXLDoSB1bWEgcmVxdWlzacOnw6NvIGBQT1NUYCBjb250ZW5kbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGJvZHkge1xuICAgKiAgbG9naW46IGxvZ2luLFxuICAgKiAgcGFzc3dvcmQ6IGJhc2U2NChwYXNzd29yZCksXG4gICAqICByZW1lbWJlclVzZXI6IHJlbWVtYmVyVXNlclxuICAgKiB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBAZGVmYXVsdCBgUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUuQmFzaWNgXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0aGVudGljYXRpb24tdHlwZScpIHNldCBhdXRoZW50aWNhdGlvblR5cGUodmFsdWU6IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlKSB7XG4gICAgdGhpcy5fYXV0aGVudGljYXRpb25UeXBlID0gKDxhbnk+T2JqZWN0KS52YWx1ZXMoUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUpLmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyB2YWx1ZVxuICAgICAgOiBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZS5CYXNpYztcbiAgfVxuXG4gIGdldCBhdXRoZW50aWNhdGlvblR5cGUoKTogUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUge1xuICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvblR5cGU7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFbmRwb2ludCB1c2FkbyBwZWxvIHRlbXBsYXRlIHBhcmEgcmVxdWlzacOnw6NvIGRvIHJlY3Vyc28uIFF1YW5kbyBwcmVlbmNoaWRvLCBvIG3DqXRvZG8gYHAtbG9naW4tc3VibWl0YCBzZXLDoSBpZ25vcmFkbyBlIG9cbiAgICogY29tcG9uZW50ZSBhZHF1aXJpcsOhIGF1dG9tYXRpemHDp8OjbyBwYXJhIG8gcHJvY2Vzc28gZGUgYXV0ZW50aWNhw6fDo28uXG4gICAqXG4gICAqICMjIyBQcm9jZXNzb3NcbiAgICogQW8gZGlnaXRhciB1bSB2YWxvciB2w6FsaWRvIG5vIGNhbXBvIGRlIGxvZ2luL3Bhc3N3b3JkIGUgcHJlc3Npb25hciAqKkVudGVyKiosIG8gY29tcG9uZW50ZSBmYXLDoSB1bWEgcmVxdWlzacOnw6NvIGBQT1NUYFxuICAgKiBuYSB1cmwgZXNwZWNpZmljYWRhIG5lc3RhIHByb3ByaWVkYWRlIHBhc3NhbmRvIG8gb2JqZXRvIGNvbnRlbmRvIG8gdmFsb3IgZGVmaW5pZG8gcGVsbyB1c3XDoXJpbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGhlYWRlcnMge1xuICAgKiAgQXV0aG9yaXphdGlvbjogQmFzaWMgYmFzZTY0KGxvZ2luOnBhc3N3b3JkKVxuICAgKiB9XG4gICAqXG4gICAqIGJvZHkge1xuICAgKiAgcmVtZW1iZXJVc2VyOiByZW1lbWJlclVzZXJcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogRW0gY2FzbyBkZSAqKnN1Y2Vzc28qKiwgbyBvYmpldG8gZGUgcmV0b3JubyDDqSBhcm1hemVuYWRvIG5vIGBzZXNzaW9uU3RvcmFnZWAgZSBvIHVzdcOhcmlvIMOpIHJlZGlyZWNpb25hZG8gcGFyYSBhIHDDoWdpbmEgaW5pY2lhbCBkYVxuICAgKiBhcGxpY2HDp8OjbyBgL2AuXG4gICAqXG4gICAqIGBgYFxuICAgKiAyMDA6XG4gICAqICB7XG4gICAqICAgIHVzZXI6IHVzZXJcbiAgICogIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEVtIGNhc28gZGUgKiplcnJvKiogbmEgYXV0ZW50aWNhw6fDo28sIGVzcGVyYS1zZSBvIHNlZ3VpbnRlIHJldG9ybm86XG4gICAqXG4gICAqIGBgYFxuICAgKiA0MDAvNDAxXG4gICAqICB7XG4gICAqICAgIGNvZGU6IDQwMC80MDEsXG4gICAqICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAqICAgIGRldGFpbGVkTWVzc2FnZTogZGV0YWlsZWRNZXNzYWdlLFxuICAgKiAgICBoZWxwVXJsPzogaGVscFVybFxuICAgKiAgfVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBQb2RlLXNlIGF0cmlidWlyIHVtYSBxdWFudGlkYWRlIG3DoXhpbWEgZGUgdGVudGF0aXZhcyByZXN0YW50ZXMgKG1heEF0dGVtcHRzUmVtYWluaW5nKSBwYXJhIG8gYXRyaWJ1dG8gYHAtZXhjZWVkZWQtYXR0ZW1wdHMtd2FybmluZ2AsXG4gICAqIGFzc2ltIGNvbW8gb3MgYXZpc29zIHJlbGFjaW9uYWRvcyBhb3MgY2FtcG9zIGxvZ2luIGUgcGFzc3dvcmQgKGxvZ2luV2FybmluZ3MsIHBhc3N3b3JkV2FybmluZ3MpIHBhcmEgb3MgYXRyaWJ1dG9zIGBwLWxvZ2luLWVycm9yc2AgZVxuICAgKiBgcC1wYXNzd29yZC1lcnJvcnNgIGNvbmZvcm1lIHJldG9ybm8gYWJhaXhvOlxuICAgKlxuICAgKiBgYGBcbiAgICogNDAwXG4gICAqICB7XG4gICAqICAgIGNvZGU6IDQwMC80MDEsXG4gICAqICAgIG1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAqICAgIGRldGFpbGVkTWVzc2FnZTogZGV0YWlsZWRNZXNzYWdlLFxuICAgKiAgICBoZWxwVXJsPzogaGVscFVybCxcbiAgICogICAgbWF4QXR0ZW1wdHNSZW1haW5pbmc/OiBtYXhBdHRlbXB0c1JlbWFpbmluZyxcbiAgICogICAgbG9naW5XYXJuaW5ncz86IFtsb2dpbldhcm5pbmdzXSxcbiAgICogICAgcGFzc3dvcmRXYXJuaW5ncz86IFtwYXNzd29yZFdhcm5pbmdzXVxuICAgKiAgfVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBDYXNvIG8gdmFsb3IgYXRyaWJ1w61kbyBwYXJhIGBwLWV4Y2VlZGVkLWF0dGVtcHRzLXdhcm5pbmdgIHNlamEgaWd1YWwgYSAwKHplcm8pLCBwb2RlcsOhIHNlciBwYXNzYWRvIHVtIHZhbG9yIHBhcmEgb1xuICAgKiBhdHJpYnV0byBgcC1ibG9ja2VkLXVybGAgZSBvIHVzdcOhcmlvIHNlcsOhIHJlZGlyZWNpb25hZG8gcGFyYSB1bWEgdGVsYSBkZSBibG9xdWVpby5cbiAgICpcbiAgICogKlByb2Nlc3NvIGZpbmFsaXphZG8uKlxuICAgKlxuICAgKiBfX19fX19fX19fX19fX19cbiAgICpcbiAgICogIyMjIyBQcmF0aWNpZGFkZVxuICAgKiBBcyBpbmZvcm1hw6fDtWVzIGRvIHNlcnZpw6dvIGRlIGF1dGVudGljYcOnw6NvIHRhbWLDqW0gcG9kZW0gc2VyIHRyYW5zbWl0aWRhcyBkaXJldGFtZW50ZSBwZWxhcyBjb25maWd1cmHDp8Ojb3MgZGUgcm90YSBlLCBkZXN0YSBtYW5laXJhLFxuICAgKiBkaXNwZW5zYS1zZSBxdWFscXVlciBtZW7Dp8OjbyBlL291IGltcG9ydGHDp8OjbyBkbyBjb21wb25lbnRlIGBwby1wYWdlLWxvZ2luYCBubyByZXN0YW50ZSBkYSBhcGxpY2HDp8Ojby4gTyBleGVtcGxvIGFiYWl4byBleGVtcGxpZmljYVxuICAgKiBhIGZvcm1hIGRpbsOibWljYSBjb20gYSBxdWFsIG8gdGVtcGxhdGUgZGUgdGVsYSBkZSBsb2dpbiBwb2RlIHNlciBnZXJhZG8gYW8gbmF2ZWdhciBwYXJhIHJvdGEgYC9sb2dpbmAsIGUgdGFtYsOpbSBjb21vIGVsZSBzZSBjb211bmljYVxuICAgKiBjb20gbyBzZXJ2acOnbyBwYXJhIGVmZXR1YcOnw6NvIGRvIHByb2Nlc3NvIGRlIGF1dGVudGljYcOnw6NvIGRvIHVzdcOhcmlvIGUgc29saWNpdGHDp8OjbyBkZSBub3ZhIHNlbmhhLlxuICAgKiBCYXN0YSBkZWZpbmlyIG5hcyBjb25maWd1cmHDp8O1ZXMgZGUgcm90YTpcbiAgICpcbiAgICpcbiAgICogYGBgXG4gICAqICAgaW1wb3J0IHsgUG9QYWdlTG9naW5Db21wb25lbnQsIFBvUGFnZUxvZ2luQXRoZW50aWNhdGlvblR5cGUgfSBmcm9tICdAcG8tdWkvbmctdGVtcGxhdGVzJztcbiAgICpcbiAgICogICAuLi5cbiAgICogICBjb25zdCByb3V0ZXM6IFJvdXRlcyA9IFtcbiAgICogICAgIHtcbiAgICogICAgICAgcGF0aDogJ2xvZ2luJywgY29tcG9uZW50OiBQb1BhZ2VMb2dpbkNvbXBvbmVudCwgZGF0YToge1xuICAgKiAgICAgICAgIHNlcnZpY2VBcGk6ICdodHRwczovL3BvLXVpLmlvL3NhbXBsZS9hcGkvdXNlcnMvYXV0aGVudGljYXRpb24nLFxuICAgKiAgICAgICAgIGVudmlyb25tZW50OiAnZGV2ZWxvcG1lbnQnLFxuICAgKiAgICAgICAgIHJlY292ZXJ5OiB7XG4gICAqICAgICAgICAgICB1cmw6ICdodHRwczovL3BvLXVpLmlvL3NhbXBsZS9hcGkvdXNlcnMnLFxuICAgKiAgICAgICAgICAgdHlwZTogUG9Nb2RhbFBhc3N3b3JkUmVjb3ZlcnlUeXBlLkFsbCxcbiAgICogICAgICAgICAgIGNvbnRhY3RNYWlsOiAnZGV2LnBvQHBvLXVpLmNvbScsXG4gICAqICAgICAgICAgICBwaG9uZU1hc2s6ICc5LTk5OS05OTktOTk5OSdcbiAgICogICAgICAgICB9LFxuICAgKiAgICAgICAgIHJlZ2lzdGVyVXJsOiAnL25ldy1wYXNzd29yZCcsXG4gICAqICAgICAgICAgYXV0aGVudGljYXRpb25UeXBlOiBQb1BhZ2VMb2dpbkF0aGVudGljYXRpb25UeXBlLkJhc2ljXG4gICAqICAgICAgIH1cbiAgICogICAgIH1cbiAgICogICAgIC4uLlxuICAgKiAgIF07XG4gICAqXG4gICAqICAgQE5nTW9kdWxlKHtcbiAgICogICAgIGltcG9ydHM6IFtSb3V0ZXJNb2R1bGUuZm9yUm9vdChyb3V0ZXMpXSxcbiAgICogICAgIGV4cG9ydHM6IFtSb3V0ZXJNb2R1bGVdXG4gICAqICAgfSlcbiAgICogICBleHBvcnQgY2xhc3MgQXBwUm91dGluZ01vZHVsZSB7IH1cbiAgICogYGBgXG4gICAqXG4gICAqXG4gICAqIE8gbWV0YWRhZG8gYHNlcnZpY2VBcGlgIGRldmUgc2VyIGEgKip1cmwqKiBwYXJhIHJlcXVpc2nDp8OjbyBkb3MgcmVjdXJzb3MgZGUgYXV0ZW50aWNhw6fDo28sIG8gYGVudmlyb25tZW50YCBhbGltZW50YSBhIHByb3ByaWVkYWRlXG4gICAqIGBwLWVudmlyb25tZW50YCwgYHJlY292ZXJ5YCDDqSBhIGludGVyZmFjZSBgUG9QYWdlTG9naW5SZWNvdmVyeWAgcmVzcG9uc8OhdmVsIHBlbGFzIGVzcGVjaWZpY2HDp8O1ZXMgY29udGlkYXMgbmEgbW9kYWwgZGUgcmVjdXBlcmHDp8OjbyBkZVxuICAgKiBzZW5oYSwgYHJlZ2lzdGVyVXJsYCBhbGltZW50YSBhIHByb3ByaWVkYWRlIGBwLXJlZ2lzdGVyLXVybGAgZSBgYXV0aGVudGljYXRpb25UeXBlYCBxdWUgZGVmaW5lIGEgcHJvcHJpZWRhZGUgYHAtYXV0aGVudGljYXRpb24tdHlwZWAuXG4gICAqXG4gICAqID4gw4kgZXNzZW5jaWFsIHF1ZSBzaWdhIGEgbm9tZW5jbGF0dXJhIGRvcyBhdHJpYnV0b3MgZXhlbXBsaWZpY2Fkb3MgYWNpbWEgcGFyYSBzdWEgZWZldGl2YSBmdW5jaW9uYWxpZGFkZS5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1hdXRoZW50aWNhdGlvbi11cmwnKSBzZXQgYXV0aGVudGljYXRpb25VcmwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uVXJsID0gaXNUeXBlb2YodmFsdWUsICdzdHJpbmcnKSA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGF1dGhlbnRpY2F0aW9uVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dGhlbnRpY2F0aW9uVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FzbyBvIHZhbG9yIGF0cmlidcOtZG8gcGFyYSBgcC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nYCBzZWphIGlndWFsIGEgMCh6ZXJvKSBlIGEgYXBsaWNhw6fDo28gdGVuaGEgdW0gbGluayBkZSBibG9xdWVpbyBkZSB1c3XDoXJpbyxcbiAgICogaW5mb3JtZSB1bWEgdXJsIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYSwgZGVzc2EgZm9ybWEgZW0gY2FzbyBkZSBibG9xdWVpbyBvIHVzdcOhcmlvIHNlcsOhIHJlZGlyZWNpb25hZG8uXG4gICAqL1xuICBASW5wdXQoJ3AtYmxvY2tlZC11cmwnKSBzZXQgYmxvY2tlZFVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYmxvY2tlZFVybCA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBibG9ja2VkVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jsb2NrZWRVcmw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBFeGliZSB1bSBib3TDo28gcGFyYSBzdXBvcnRlLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqXG4gICAqIC0gKipTdHJpbmcqKjogVVJMIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYTtcbiAgICogLSAqKkZ1bmN0aW9uKio6IEZ1bsOnw6NvIGEgc2VyIGRpc3BhcmFkYSBhbyBjbGljYXIgbm8gYm90w6NvIGRlIHN1cG9ydGU7XG4gICAqIGBgYFxuICAgKiA8cG8tcGFnZS1sb2dpbj5cbiAgICogICBbcC1zdXBwb3J0XT1cInRoaXMubXlTdXBwb3J0LmJpbmQodGhpcylcIj5cbiAgICogPC9wby1wYWdlLWxvZ2luPlxuICAgKiBgYGBcbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1zdXBwb3J0Jykgc2V0IHN1cHBvcnQodmFsdWU6IHN0cmluZyB8IEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5fc3VwcG9ydCA9IHZhbHVlO1xuICB9XG5cbiAgZ2V0IHN1cHBvcnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N1cHBvcnQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDb2xlw6fDo28gZGUgaWRpb21hcyBxdWUgbyBjb21wb25lbnRlIGlyw6EgdHJhdGFyIGUgZGlzcG9uaWJpbGl6YXLDoSBwYXJhIG8gdXN1w6FyaW8gZXNjb2xoZXIuXG4gICAqXG4gICAqIENhc28gZXNzYSBwcm9wcmllZGFkZSBuw6NvIHNlamEgdXRpbGl6YWRhIG8gY29tcG9uZW50ZSBtb3N0cmFyw6Egbm8gY29tYm8gb3MgaWRpb21hcyBxdWUgZWxlIHN1cG9ydGEgcG9yIHBhZHLDo28uXG4gICAqXG4gICAqIENhc28gYSBjb2xlw6fDo28gdGVuaGEgdW0gaWRpb21hLCBhIHDDoWdpbmEgZXN0YXLDoSBuZXNzZSBpZGlvbWEgZSBuw6NvIG1vc3RyYXLDoSBvIGNvbWJvLlxuICAgKlxuICAgKiBDYXNvIHNlamEgcGFzc2FkbyB1bSBhcnJheSB2YXppbywgYSBww6FnaW5hIHRlcsOhIG8gaWRpb21hIGNvbmZpZ3VyYWRvIG5vIGBpMThuYCBlIG7Do28gbW9zdHJhcsOhIG8gY29tYm8gZGUgc2VsZcOnw6NvLlxuICAgKlxuICAgKiA+IFNlIGZvciBwYXNzYWRvIHVtIGlkaW9tYSBuw6NvIHN1cG9ydGFkbywgc2Vyw6EgcHJlY2lzbyBwYXNzYXIgYXMgbGl0ZXJhaXMgcGVsYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AuXG4gICAqXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtbGFuZ3VhZ2VzJykgc2V0IGxhbmd1YWdlc0xpc3QobGFuZ3VhZ2VzTGlzdDogQXJyYXk8UG9MYW5ndWFnZT4pIHtcbiAgICBpZiAobGFuZ3VhZ2VzTGlzdCkge1xuICAgICAgaWYgKGxhbmd1YWdlc0xpc3QubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuX2xhbmd1YWdlc0xpc3QgPSBsYW5ndWFnZXNMaXN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbGFuZ3VhZ2VzTGlzdCA9IHBvTGFuZ3VhZ2VEZWZhdWx0LmZpbHRlcihsYW5ndWFnZSA9PiBsYW5ndWFnZS5sYW5ndWFnZSA9PT0gdGhpcy5sYW5ndWFnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxhbmd1YWdlc0xpc3QoKTogQXJyYXk8UG9MYW5ndWFnZT4ge1xuICAgIGlmICh0aGlzLl9sYW5ndWFnZXNMaXN0KSB7XG4gICAgICByZXR1cm4gdGhpcy5fbGFuZ3VhZ2VzTGlzdDtcbiAgICB9XG4gICAgcmV0dXJuIHBvTGFuZ3VhZ2VEZWZhdWx0O1xuICB9XG5cbiAgZ2V0IHNob3dMYW5ndWFnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYW5ndWFnZXNMaXN0Lmxlbmd0aCA+IDE7XG4gIH1cblxuICBnZXQgbGFuZ3VhZ2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZExhbmd1YWdlIHx8IGdldFNob3J0QnJvd3Nlckxhbmd1YWdlKCk7XG4gIH1cblxuICBnZXQgcGFnZUxvZ2luTGl0ZXJhbHMoKTogUG9QYWdlTG9naW5MaXRlcmFscyB7XG4gICAgY29uc3QgbG9naW5IaW50V2l0aENvbnRhY3RFbWFpbCA9IHRoaXMuY29udGFjdEVtYWlsXG4gICAgICA/IHRoaXMuY29uY2F0ZW5hdGVMb2dpbkhpbnRXaXRoQ29udGFjdEVtYWlsKHRoaXMuY29udGFjdEVtYWlsKVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucG9QYWdlTG9naW5MaXRlcmFsc0RlZmF1bHRbcG9Mb2NhbGVEZWZhdWx0XSxcbiAgICAgIC4uLnBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3RoaXMubGFuZ3VhZ2VdLFxuICAgICAgLi4ubG9naW5IaW50V2l0aENvbnRhY3RFbWFpbCxcbiAgICAgIC4uLnRoaXMubGl0ZXJhbHNcbiAgICB9O1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBsb2dpblNlcnZpY2U6IFBvUGFnZUxvZ2luU2VydmljZSxcbiAgICBwdWJsaWMgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHVibGljIHBvTGFuZ3VhZ2VTZXJ2aWNlOiBQb0xhbmd1YWdlU2VydmljZVxuICApIHtcbiAgICB0aGlzLnNlbGVjdGVkTGFuZ3VhZ2UgPSB0aGlzLnBvTGFuZ3VhZ2VTZXJ2aWNlLmdldFNob3J0TGFuZ3VhZ2UoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIGlmICh0aGlzLmxvZ2luU3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLmxvZ2luU3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICB9XG5cbiAgY2xvc2VQb3BvdmVyKCkge1xuICAgIHRoaXMuc2hvd0V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID0gZmFsc2U7XG4gIH1cblxuICBvbkxvZ2luU3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGxvZ2luRm9ybTogUG9QYWdlTG9naW4gPSB7XG4gICAgICBsb2dpbjogdGhpcy5sb2dpbixcbiAgICAgIHBhc3N3b3JkOiB0aGlzLnBhc3N3b3JkLFxuICAgICAgcmVtZW1iZXJVc2VyOiB0aGlzLnJlbWVtYmVyVXNlclxuICAgIH07XG5cbiAgICBpZiAodGhpcy5jdXN0b21GaWVsZCkge1xuICAgICAgbG9naW5Gb3JtW3RoaXMuY3VzdG9tRmllbGRPYmplY3QucHJvcGVydHldID0gdGhpcy5jdXN0b21GaWVsZE9iamVjdC52YWx1ZTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hdXRoZW50aWNhdGlvblVybCkge1xuICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgIHRoaXMubG9naW5TdWJzY3JpcHRpb24gPSB0aGlzLmxvZ2luU2VydmljZVxuICAgICAgICAub25Mb2dpbih0aGlzLmF1dGhlbnRpY2F0aW9uVXJsLCB0aGlzLmF1dGhlbnRpY2F0aW9uVHlwZSwgbG9naW5Gb3JtKVxuICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgIGRhdGEgPT4ge1xuICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZXNUb1Byb3BlcnRpZXMoKTtcbiAgICAgICAgICAgIHNlc3Npb25TdG9yYWdlLnNldEl0ZW0oJ1BPX1VTRVJfTE9HSU4nLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XG4gICAgICAgICAgICB0aGlzLm9wZW5JbnRlcm5hbExpbmsoJy8nKTtcbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3IgPT4ge1xuICAgICAgICAgICAgaWYgKGVycm9yLmVycm9yLmNvZGUgPT09ICc0MDAnIHx8IGVycm9yLmVycm9yLmNvZGUgPT09ICc0MDEnKSB7XG4gICAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzVG9Qcm9wZXJ0aWVzKGVycm9yKTtcbiAgICAgICAgICAgICAgdGhpcy5yZWRpcmVjdEJsb2NrZWRVcmwodGhpcy5leGNlZWRlZEF0dGVtcHRzV2FybmluZywgdGhpcy5ibG9ja2VkVXJsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dpblN1Ym1pdC5lbWl0KGxvZ2luRm9ybSk7XG4gICAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPiAwO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdEN1c3RvbUZpZWxkT2JqZWN0KHByb3BlcnR5KTogUG9QYWdlTG9naW5DdXN0b21GaWVsZCB7XG4gICAgcmV0dXJuIHsgcHJvcGVydHkgfTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkV4dGVybmFsTGluayh1cmw6IHN0cmluZykge1xuICAgIHdpbmRvdy5vcGVuKHVybCwgJ19ibGFuaycpO1xuICB9XG5cbiAgcHJpdmF0ZSBvcGVuSW50ZXJuYWxMaW5rKHVybDogc3RyaW5nKSB7XG4gICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3VybF0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWRpcmVjdEJsb2NrZWRVcmwoYXR0ZW1wdHM6IG51bWJlciwgYmxvY2tlZFVybDogc3RyaW5nKSB7XG4gICAgaWYgKGF0dGVtcHRzID09PSAwICYmIGJsb2NrZWRVcmwpIHtcbiAgICAgIHRoaXMuc2hvd0V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID0gZmFsc2U7XG4gICAgICBpc0V4dGVybmFsTGluayhibG9ja2VkVXJsKSA/IHRoaXMub3BlbkV4dGVybmFsTGluayhibG9ja2VkVXJsKSA6IHRoaXMub3BlbkludGVybmFsTGluayhibG9ja2VkVXJsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldFZhbHVlc1RvUHJvcGVydGllcyhyZXN1bHQ/KSB7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgdGhpcy5leGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IHJlc3VsdC5lcnJvci5tYXhBdHRlbXB0c1JlbWFpbmluZztcbiAgICAgIHRoaXMubG9naW5FcnJvcnMgPSByZXN1bHQuZXJyb3IubG9naW5XYXJuaW5ncztcbiAgICAgIHRoaXMucGFzc3dvcmRFcnJvcnMgPSByZXN1bHQuZXJyb3IucGFzc3dvcmRXYXJuaW5ncztcbiAgICAgIHRoaXMuYmxvY2tlZFVybCA9IHJlc3VsdC5lcnJvci5ibG9ja2VkVXJsO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID0gMDtcbiAgICAgIHRoaXMubG9naW5FcnJvcnMgPSBbXTtcbiAgICAgIHRoaXMucGFzc3dvcmRFcnJvcnMgPSBbXTtcbiAgICAgIHRoaXMuYmxvY2tlZFVybCA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBjb25jYXRlbmF0ZUxvZ2luSGludFdpdGhDb250YWN0RW1haWwoY29udGFjdEVtYWlsOiBzdHJpbmcpO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRMb2dpbkVycm9ycyh2YWx1ZTogQXJyYXk8c3RyaW5nPik6IHZvaWQ7XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFBhc3N3b3JkRXJyb3JzKHZhbHVlOiBBcnJheTxzdHJpbmc+KTogdm9pZDtcbn1cbiJdfQ==
|
|
1099
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tcGFnZS1sb2dpbi1iYXNlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RlbXBsYXRlcy9zcmMvbGliL2NvbXBvbmVudHMvcG8tcGFnZS1sb2dpbi9wby1wYWdlLWxvZ2luLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFhLE1BQU0sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFHbEYsT0FBTyxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSx1QkFBdUIsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFdkgsT0FBTyxFQUFxQixlQUFlLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUd6RyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7QUFNL0YsTUFBTSwyQkFBMkIsR0FBRyxFQUFFLENBQUM7QUFFdkMsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUc7SUFDeEMsRUFBRSxFQUF1QjtRQUN2QixLQUFLLEVBQUUsU0FBUztRQUNoQixpQkFBaUIsRUFBRSxlQUFlO1FBQ2xDLFNBQVMsRUFBRTt1REFDd0M7UUFDbkQsZ0JBQWdCLEVBQUUsb0JBQW9CO1FBQ3RDLG9CQUFvQixFQUFFLGtCQUFrQjtRQUN4QyxtQkFBbUIsRUFBRSxzQkFBc0I7UUFDM0MsdUJBQXVCLEVBQUUsZUFBZTtRQUN4QyxzQkFBc0IsRUFBRSxzQkFBc0I7UUFDOUMsWUFBWSxFQUFFLGlCQUFpQjtRQUMvQixnQkFBZ0IsRUFBRSxxREFBcUQ7UUFDdkUsV0FBVyxFQUFFLE9BQU87UUFDcEIsY0FBYyxFQUFFLFlBQVk7UUFDNUIsY0FBYyxFQUFFLHVCQUF1QjtRQUN2QyxhQUFhLEVBQUUsRUFBRTtRQUNqQixXQUFXLEVBQUUsY0FBYztR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O1lBV3JDLGdCQUFnQjtrQkFBOUMsS0FBSzttQkFBQyxzQkFBc0I7WUFvRkEsV0FBVztrQkFBdkMsS0FBSzttQkFBQyxnQkFBZ0I7WUFzQ08sWUFBWTtrQkFBekMsS0FBSzttQkFBQyxpQkFBaUI7WUFjSyxXQUFXO2tCQUF2QyxLQUFLO21CQUFDLGdCQUFnQjtZQWVLLFdBQVc7a0JBQXRDLEtBQUs7bUJBQUMsZUFBZTtZQXVCb0IsdUJBQXVCO2tCQUFoRSxLQUFLO21CQUFDLDZCQUE2QjtZQXVCRCxnQkFBZ0I7a0JBQWxELEtBQUs7bUJBQUMsc0JBQXNCO1lBdUVKLFFBQVE7a0JBQWhDLEtBQUs7bUJBQUMsWUFBWTtZQW1CSyxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUFlSSxLQUFLO2tCQUExQixLQUFLO21CQUFDLFNBQVM7WUFtQmEsV0FBVztrQkFBdkMsS0FBSzttQkFBQyxnQkFBZ0I7WUFlUyxjQUFjO2tCQUE3QyxLQUFLO21CQUFDLG1CQUFtQjtZQTZCRCxRQUFRO2tCQUFoQyxLQUFLO21CQUFDLFlBQVk7WUFzQlUsV0FBVztrQkFBdkMsS0FBSzttQkFBQyxnQkFBZ0I7WUF1Q2Esa0JBQWtCO2tCQUFyRCxLQUFLO21CQUFDLHVCQUF1QjtZQTJISyxpQkFBaUI7a0JBQW5ELEtBQUs7bUJBQUMsc0JBQXNCO1lBZ0JELFVBQVU7a0JBQXJDLEtBQUs7bUJBQUMsZUFBZTtZQTBCRSxPQUFPO2tCQUE5QixLQUFLO21CQUFDLFdBQVc7WUF5QlEsYUFBYTtrQkFBdEMsS0FBSzttQkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCBjb252ZXJ0VG9JbnQsIGdldFNob3J0QnJvd3Nlckxhbmd1YWdlLCBpc0V4dGVybmFsTGluaywgaXNUeXBlb2YgfSBmcm9tICcuLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb0xhbmd1YWdlU2VydmljZSwgcG9Mb2NhbGVEZWZhdWx0LCBQb0xhbmd1YWdlLCBwb0xhbmd1YWdlRGVmYXVsdCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcblxuaW1wb3J0IHsgUG9QYWdlTG9naW4gfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUgfSBmcm9tICcuL2VudW1zL3BvLXBhZ2UtbG9naW4tYXV0aGVudGljYXRpb24tdHlwZS5lbnVtJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1jdXN0b20tZmllbGQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBvUGFnZUxvZ2luTGl0ZXJhbHMgfSBmcm9tICcuL2ludGVyZmFjZXMvcG8tcGFnZS1sb2dpbi1saXRlcmFscy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgUG9QYWdlTG9naW5SZWNvdmVyeSB9IGZyb20gJy4vaW50ZXJmYWNlcy9wby1wYWdlLWxvZ2luLXJlY292ZXJ5LmludGVyZmFjZSc7XG5pbXBvcnQgeyBQb1BhZ2VMb2dpblNlcnZpY2UgfSBmcm9tICcuL3BvLXBhZ2UtbG9naW4uc2VydmljZSc7XG5cbmNvbnN0IHBvUGFnZUxvZ2luQ29udGVudE1heExlbmd0aCA9IDQwO1xuXG5leHBvcnQgY29uc3QgcG9QYWdlTG9naW5MaXRlcmFsc0RlZmF1bHQgPSB7XG4gIGVuOiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICdXZWxjb21lJyxcbiAgICBsb2dpbkVycm9yUGF0dGVybjogJ0ludmFsaWQgTG9naW4nLFxuICAgIGxvZ2luSGludDogYFlvdXIgbG9naW4gdXNlciB3YXMgZ2l2ZW4gdG8geW91IGF0IHlvdXIgZmlyc3QgZGF5LlxuICAgIElmIHlvdSBkb24ndCBoYXZlIHRoaXMgaW5mb3JtYXRpb24gY29udGFjdCBzdXBwb3J0YCxcbiAgICBsb2dpblBsYWNlaG9sZGVyOiAnSW5zZXJ0IHlvdXIgZS1tYWlsJyxcbiAgICBwYXNzd29yZEVycm9yUGF0dGVybjogJ0ludmFsaWQgUGFzc3dvcmQnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNlcnQgeW91ciBwYXNzd29yZCcsXG4gICAgY3VzdG9tRmllbGRFcnJvclBhdHRlcm46ICdJbnZhbGlkIHZhbHVlJyxcbiAgICBjdXN0b21GaWVsZFBsYWNlaG9sZGVyOiAnUGxlYXNlIGVudGVyIGEgdmFsdWUnLFxuICAgIHJlbWVtYmVyVXNlcjogJ0F1dG9tYXRpYyBsb2dpbicsXG4gICAgcmVtZW1iZXJVc2VySGludDogJ1lvdSBjYW4gZGlzYWJsZSB0aGlzIG9wdGlvbiBpbiBzeXN0ZW0gY29uZmlndXJhdGlvbicsXG4gICAgc3VibWl0TGFiZWw6ICdFbnRlcicsXG4gICAgc3VibWl0dGVkTGFiZWw6ICdMb2FkaW5nLi4uJyxcbiAgICBmb3Jnb3RQYXNzd29yZDogJ0ZvcmdvdCB5b3VyIFBhc3N3b3JkPycsXG4gICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAgcmVnaXN0ZXJVcmw6ICdOZXcgcmVnaXN0ZXInLFxuICAgIHRpdGxlUG9wb3ZlcjogJ09vcHMhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdGb3Jnb3QgeW91ciBwYXNzd29yZD8nLFxuICAgIGlmWW91VHJ5SGFyZGVyOiAnSWYgeW91IHRyeSAnLFxuICAgIGF0dGVtcHRzOiAnezB9IG1vcmUgdGltZShzKSAnLFxuICAgIHlvdXJVc2VyV2lsbEJlQmxvY2tlZDpcbiAgICAgICd3aXRob3V0IHN1Y2Nlc3MgeW91ciB1c2VyIHdpbGwgYmUgYmxvY2tlZCBhbmQgeW91IHdpbGwgYmUgbGVmdCAyNCBob3VycyB3aXRob3V0IGJlaW5nIGFibGUgdG8gYWNjZXNzIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6ICdCZXR0ZXIgY3JlYXRlIGEgbmV3IHBhc3N3b3JkIG5vdyEgWW91IHdpbGwgYmUgYWJsZSB0byBsb2cgaW50byB0aGUgc3lzdGVtIHJpZ2h0IGF3YXkuJyxcbiAgICBpRm9yZ290TXlQYXNzd29yZDogJ0kgZm9yZ290IG15IHBhc3N3b3JkJyxcbiAgICB3ZWxjb21lOiAnV2VsY29tZScsXG4gICAgc3VwcG9ydDogJ1N1cHBvcnQnXG4gIH0sXG4gIGVzOiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICdCaWVudmVuaWRvJyxcbiAgICBsb2dpbkVycm9yUGF0dGVybjogJ0xvZ2luIGludsOhbGlkbycsXG4gICAgbG9naW5IaW50OiBgU3UgdXN1YXJpbyBoYSBzaWRvIGVudHJlZ2FkbyBwYXJhIHVzdGVkIGVuIHN1IHByaW1lciBkw61hLlxuICAgIFNpIG5vIHRpZW5lIGVzdGEgaW5mb3JtYWNpw7NuLCBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gZWwgc29wb3J0ZSB0w6ljbmljb2AsXG4gICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2VydGUgc3UgZS1tYWlsJyxcbiAgICBwYXNzd29yZEVycm9yUGF0dGVybjogJ0NvbnRyYXNlw7FhIGludsOhbGlkYScsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2VydGUgc3UgY29udHJhc2XDsWEnLFxuICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAnVmFsb3Igbm8gdsOhbGlkby4nLFxuICAgIGN1c3RvbUZpZWxkUGxhY2Vob2xkZXI6ICdQb3IgZmF2b3IgaW50cm9kdXpjYSB1biB2YWxvcicsXG4gICAgcmVtZW1iZXJVc2VyOiAnSW5pY2lvIGRlIHNlc2nDs24gYXV0b23DoXRpY2FtZW50ZScsXG4gICAgcmVtZW1iZXJVc2VySGludDogJ1B1ZWRlIGRlc2hhYmlsaXRhciBlc3RhIG9wY2nDs24gZW4gZWwgbWVuw7ogZGVsIHNpc3RlbWEuJyxcbiAgICBzdWJtaXRMYWJlbDogJ0VudHJhcicsXG4gICAgc3VibWl0dGVkTGFiZWw6ICdDYXJnYW5kby4uLicsXG4gICAgZm9yZ290UGFzc3dvcmQ6ICdPbHZpZGFzdGUgdHUgY29udHJhc2XDsWE/JyxcbiAgICBoaWdobGlnaHRJbmZvOiAnJyxcbiAgICByZWdpc3RlclVybDogJ051ZXZvIHJlZ2lzdHJvJyxcbiAgICB0aXRsZVBvcG92ZXI6ICdPcGEhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdPbHZpZGFzdGUgdHUgY29udHJhc2XDsWE/JyxcbiAgICBpZllvdVRyeUhhcmRlcjogJ1NpIGludGVudGEgbcOhcyAnLFxuICAgIGF0dGVtcHRzOiAnezB9IHZlei92ZWNlcyAnLFxuICAgIHlvdXJVc2VyV2lsbEJlQmxvY2tlZDogJ3NpbiDDqXhpdG8gc3UgdXN1YXJpbyBzZXJhIGJsb3F1ZWFkbyB5IHVzdGVkIHbDoXMgcGVybWFuZWNlciAyNCBob3JhcyBzaW4gcG9kZXIgYWNjZWRlciBhIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6XG4gICAgICAnwqFNZWpvciBjcmVhciB1bmEgbnVldmEgY29udHJhc2XDsWEgYWhvcmEhIFVzdGVkIHBvZHLDoSBlbnRyYXIgZW4gZWwgc2lzdGVtYSBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcy4nLFxuICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAnT2x2aWRlIG1pIGNvbnRyYXNlw7FhJyxcbiAgICB3ZWxjb21lOiAnQmllbnZlbmlkbycsXG4gICAgc3VwcG9ydDogJ1NvcG9ydGUnXG4gIH0sXG4gIHB0OiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICdCZW0tdmluZG8nLFxuICAgIGxvZ2luRXJyb3JQYXR0ZXJuOiAnTG9naW4gaW52w6FsaWRvJyxcbiAgICBsb2dpbkhpbnQ6IGBTZXUgdXN1w6FyaW8gZm9pIGVudHJlZ3VlIGEgdm9jw6ogbm8gc2V1IHByaW1laXJvIGRpYS5cbiAgICBDYXNvIG7Do28gdGVuaGEgbWFpcyBlc3NhIGluZm9ybWHDp8OjbyBjb250YWN0ZSBvIHN1cG9ydGVgLFxuICAgIGxvZ2luUGxhY2Vob2xkZXI6ICdJbnNpcmEgc2V1IGUtbWFpbCcsXG4gICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICdTZW5oYSBpbnbDoWxpZGEnLFxuICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNpcmEgc3VhIHNlbmhhJyxcbiAgICBjdXN0b21GaWVsZEVycm9yUGF0dGVybjogJ1ZhbG9yIGludsOhbGlkby4nLFxuICAgIGN1c3RvbUZpZWxkUGxhY2Vob2xkZXI6ICdQb3IgZmF2b3IgaW5zaXJhIHVtIHZhbG9yJyxcbiAgICByZW1lbWJlclVzZXI6ICdMb2dhciBhdXRvbWF0aWNhbWVudGUnLFxuICAgIHJlbWVtYmVyVXNlckhpbnQ6ICdWb2PDqiBwb2RlIGRlc2FiaWxpdGFyIGVzc2Egb3DDp8OjbyBubyBtZW51IGRvIHNpc3RlbWEnLFxuICAgIHN1Ym1pdExhYmVsOiAnRW50cmFyJyxcbiAgICBzdWJtaXR0ZWRMYWJlbDogJ0NhcnJlZ2FuZG8uLi4nLFxuICAgIGZvcmdvdFBhc3N3b3JkOiAnRXNxdWVjZXUgc3VhIHNlbmhhPycsXG4gICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAgcmVnaXN0ZXJVcmw6ICdOb3ZvIHJlZ2lzdHJvJyxcbiAgICB0aXRsZVBvcG92ZXI6ICdPcGEhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdFc3F1ZWNldSBzdWEgc2VuaGE/JyxcbiAgICBpZllvdVRyeUhhcmRlcjogJ1NlIHRlbnRhciBtYWlzICcsXG4gICAgYXR0ZW1wdHM6ICd7MH0gdmV6KGVzKSAnLFxuICAgIHlvdXJVc2VyV2lsbEJlQmxvY2tlZDogJ3NlbSBzdWNlc3NvIHNldSB1c3XDoXJpbyBzZXLDoSBibG9xdWVhZG8gZSB2b2PDqiBmaWNhIDI0IGhvcmFzIHNlbSBwb2RlciBhY2Vzc2FyIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6ICdNZWxob3IgY3JpYXIgdW1hIHNlbmhhIG5vdmEgYWdvcmEhIFZvY8OqIHZhaSBwb2RlciBlbnRyYXIgbm8gc2lzdGVtYSBsb2dvIGVtIHNlZ3VpZGEuJyxcbiAgICBpRm9yZ290TXlQYXNzd29yZDogJ0VzcXVlY2kgbWluaGEgc2VuaGEnLFxuICAgIHdlbGNvbWU6ICdCb2FzLXZpbmRhcycsXG4gICAgc3VwcG9ydDogJ1N1cG9ydGUnXG4gIH0sXG4gIHJ1OiA8UG9QYWdlTG9naW5MaXRlcmFscz57XG4gICAgdGl0bGU6ICfQlNC+0LHRgNC+INC/0L7QttCw0LvQvtCy0LDRgtGMIScsXG4gICAgbG9naW5FcnJvclBhdHRlcm46ICfQndC10LLQtdGA0L3Ri9C5INC70L7Qs9C40L0nLFxuICAgIGxvZ2luSGludDogYNCS0LDRiCDQu9C+0LPQuNC9INCx0YvQuyDQv9GA0LXQtNC+0YHRgtCw0LLQu9C10L0g0LLQsNC8INCyINC/0LXRgNCy0YvQuSDQtNC10L3RjC5cbiAgICDQldGB0LvQuCDRgyDQstCw0YEg0L3QtdGCINGN0YLQvtC5INC40L3RhNC+0YDQvNCw0YbQuNC4LCDQvtCx0YDQsNGC0LjRgtC10YHRjCDQsiDRgdC70YPQttCx0YMg0L/QvtC00LTQtdGA0LbQutC4YCxcbiAgICBsb2dpblBsYWNlaG9sZGVyOiAn0JLRgdGC0LDQstGM0YLQtSDRgdCy0L7QuSDQsNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiycsXG4gICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICfQndC10LLQtdGA0L3Ri9C5INC/0LDRgNC+0LvRjCcsXG4gICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ9CS0LLQtdC00LjRgtC1INGB0LLQvtC5INC/0LDRgNC+0LvRjCcsXG4gICAgY3VzdG9tRmllbGRFcnJvclBhdHRlcm46ICfQndC10LLQtdGA0L3QvtC1INC30L3QsNGH0LXQvdC40LUuJyxcbiAgICBjdXN0b21GaWVsZFBsYWNlaG9sZGVyOiAn0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INC30L3QsNGH0LXQvdC40LUnLFxuICAgIHJlbWVtYmVyVXNlcjogJ9CQ0LLRgtC+0LzQsNGC0LjRh9C10YHQutC40Lkg0LLRhdC+0LQnLFxuICAgIHJlbWVtYmVyVXNlckhpbnQ6ICfQktGLINC80L7QttC10YLQtSDQvtGC0LrQu9GO0YfQuNGC0Ywg0Y3RgtGDINC+0L/RhtC40Y4g0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGB0LjRgdGC0LXQvNGLJyxcbiAgICBzdWJtaXRMYWJlbDogJ9CS0L7QudGC0LgnLFxuICAgIHN1Ym1pdHRlZExhYmVsOiAnM9Cw0LPRgNGD0LfQutCwLi4uJyxcbiAgICBmb3Jnb3RQYXNzd29yZDogJ9CX0LDQsdGL0LvQuCDQv9Cw0YDQvtC70Yw/JyxcbiAgICBoaWdobGlnaHRJbmZvOiAnJyxcbiAgICByZWdpc3RlclVybDogJ9Cd0L7QstGL0Lkg0YDQtdCz0LjRgdGC0YAnLFxuICAgIHRpdGxlUG9wb3ZlcjogJ9Ce0LkhJyxcbiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICfQl9Cw0LHRi9C70Lgg0L/QsNGA0L7Qu9GMPycsXG4gICAgaWZZb3VUcnlIYXJkZXI6ICfQldGB0LvQuCDQstGLINCx0LXQt9GD0YHQv9C10YjQvdC+INC/0L7Qv9GL0YLQsNC10YLQtdGB0Ywg0LLQvtC50YLQuCDQtdGJ0LUgJyxcbiAgICBhdHRlbXB0czogJ3swfSDRgNCw0Lco0LApICcsXG4gICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOiAn0JLQsNGIINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQsdGD0LTQtdGCINC30LDQsdC70L7QutC40YDQvtCy0LDQvSwg0Lgg0JLRiyDQvtGB0YLQsNC90LXRgtC10YHRjCDQvdCwIDI0INGH0LDRgdCwINCx0LXQtyDQstC+0LfQvNC+0LbQvdC+0YHRgtC4INC00L7RgdGC0YPQv9CwIDooJyxcbiAgICBjcmVhdGVBTmV3UGFzc3dvcmROb3c6ICfQm9GD0YfRiNC1INGB0L7Qt9C00LDQudGC0LUg0L3QvtCy0YvQuSDQv9Cw0YDQvtC70Ywg0YHQtdC50YfQsNGBIcKg0JLRiyDRgdC80L7QttC10YLQtSDRgdGA0LDQt9GDINCy0L7QudGC0Lgg0LIg0YHQuNGB0YLQtdC80YMuJyxcbiAgICBpRm9yZ290TXlQYXNzd29yZDogJ9CvINC30LDQsdGL0Lsg0YHQstC+0Lkg0L/QsNGA0L7Qu9GMJyxcbiAgICB3ZWxjb21lOiAn0LTQvtCx0YDQviDQv9C+0LbQsNC70L7QstCw0YLRjCcsXG4gICAgc3VwcG9ydDogJ9Cf0L7QtNC00LXRgNC20LrQsCdcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBvUGFnZUxvZ2luTGl0ZXJhbEluID0ge1xuICBlbjogJ2luJyxcbiAgZXM6ICdlbicsXG4gIHB0OiAnZW0nLFxuICBydTogJ9CyJ1xufTtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGNvbXBvbmVudGUgYHBvLXBhZ2UtbG9naW5gIMOpIHV0aWxpemFkbyBjb21vIHRlbXBsYXRlIHBhcmEgdGVsYSBkZSBsb2dpbi5cbiAqIENvbSBlbGUgw6kgcG9zc8OtdmVsIGRlZmluaXJtb3MgdmFsb3JlcyBwYXJhIHVzdcOhcmlvLCBzZW5oYSBlIGRlZmluaXIgYcOnw7VlcyBwYXJhIHJlY3VwZXJhw6fDo28gZGUgc2VuaGEgZSBncmF2YcOnw6NvIGRlIGRhZG9zIGRvIHVzdcOhcmlvLlxuICogVGFtYsOpbSDDqSBwb3Nzw612ZWwgaW5zZXJpciB1bWEgaW1hZ2VtIGVtIGNvbmp1bnRvIGNvbSB1bSB0ZXh0byBkZSBkZXN0YXF1ZS5cbiAqXG4gKlxuICogQSBwcm9wcmllZGFkZSBgcC1hdXRoZW50aWNhdGlvbi11cmxgIGF1dG9tYXRpemEgYSByb3RpbmEgZG8gY29tcG9uZW50ZSBlIHNpbXBsaWZpY2EgbyBwcm9jZXNzbyBwYXJhIGF1dGVudGljYcOnw6NvIGRvIHVzdcOhcmlvLCBiYXN0YW5kb1xuICogZGVmaW5pciB1bWEgdXJsIHBhcmEgcmVxdWlzacOnw6NvIGRhIGF1dGVudGljYcOnw6NvLiBBIGZsZXhpYmlsaWRhZGUgZSBwcmF0aWNpZGFkZSBwb2RlbSBjaGVnYXIgYSB1bSBuw612ZWwgZW0gcXVlIG8gZGVzZW52b2x2aW1lbnRvXG4gKiBkYSBhcGxpY2HDp8OjbyBubyAqY2xpZW50IHNpZGUqIMOpIGRlc3Byb3ZpZGEgZGUgcXVhbHF1ZXIgY8OzZGlnby1mb250ZSByZWxhY2lvbmFkbyDDoCByb3RpbmEgZGUgbG9naW4gZGUgdXN1w6FyaW8uXG4gKiBTZXUgZGV0YWxoYW1lbnRvIHBhcmEgdXNvIHBvZGUgc2VyIHZpc3RvIGxvZ28gYWJhaXhvIGVtICpwcm9wcmllZGFkZXMqLlxuICogQ2FzbyBqdWxndWUgbmVjZXNzw6FyaW8sIHBvZGUtc2UgdGFtYsOpbSBkZWZpbmlyIG1hbnVhbG1lbnRlIGEgcm90aW5hIGRvIGNvbXBvbmVudGUuXG4gKlxuICpcbiAqIFBhcmEgcXVlIGFzIGltYWdlbnMgc2VqYW0gZXhpYmlkYXMgY29ycmV0YW1lbnRlLCDDqSBuZWNlc3PDoXJpbyBpbmNsdWlyIG8gY2FtaW5obyBkZWxhcyBhbyBwcm9qZXRvLiBQYXJhIGlzc28sIGVkaXRlXG4gKiBvICphc3NldHMqIG5vIGFycXVpdm8gKiphbmd1bGFyLmpzb24qKiBkYSBhcGxpY2HDp8OjbyBuYSBzZWd1aW50ZSBvcmRlbTpcbiAqIGBgYFxuICogICBcImFzc2V0c1wiOiBbXG4gKiAgICAgXCJzcmMvYXNzZXRzXCIsXG4gKiAgICAgXCJzcmMvZmF2aWNvbi5pY29cIixcbiAqICAgICB7XG4gKiAgICAgICBcImdsb2JcIjogXCIqKlxcLypcIixcbiAqICAgICAgIFwiaW5wdXRcIjogXCJub2RlX21vZHVsZXMvQHBvLXVpL3N0eWxlL2ltYWdlc1wiLFxuICogICAgICAgXCJvdXRwdXRcIjogXCJhc3NldHMvaW1hZ2VzXCJcbiAqICAgICB9XG4gKiAgIF1cbiAqIGBgYFxuICovXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQb1BhZ2VMb2dpbkJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICAvKipcbiAgICogTyBgcC1iYWNrZ3JvdW5kYCBwZXJtaXRlIGluc2VyaXIgdW1hIGltYWdlbSBkZSBkZXN0YXF1ZSBhbyBsYWRvIGRpcmVpdG8gZG8gZm9ybXVsw6FyaW8gZGUgbG9naW4sIGNhc28gYSBwcm9wcmllZGFkZVxuICAgKiBuw6NvIHNlamEgcHJlZW5jaGlkYSBvIGZvcm11bMOhcmlvIHNlcsOhIGNlbnRyYWxpemFkbyBubyBlc3Bhw6dvIGRpc3BvbsOtdmVsLlxuICAgKlxuICAgKiBBIGZvbnRlIGRhIGltYWdlbSBwb2RlIHNlciBkZSB1bSBjYW1pbmhvIGxvY2FsIG91IHVtYSB1cmwgZGUgdW0gc2Vydmlkb3IgZXh0ZXJuby5cbiAgICpcbiAgICogQWzDqW0gZGEgaW1hZ2VtLCDDqSBwb3Nzw612ZWwgYWRpY2lvbmFyIHVtIHRleHRvIGluZm9ybWF0aXZvIHBvciBjaW1hIGRhIGltYWdlbSBkYSBpbWFnZW0gZGUgZGVzdGFxdWUsIHBhcmEgaXNzbyBpbmZvcm1lXG4gICAqIHVtIHZhbG9yIHBhcmEgYSBsaXRlcmFsIGBoaWdobGlnaHRJbmZvYC5cbiAgICpcbiAgICogPiBWZWphIG1haXMgc29icmUgYXMgbGl0ZXJhaXMgbmEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKlxuICAgKiBFeGVtcGxvcyBkZSB2YWxvcmVzIHbDoWxpZG9zOlxuICAgKiAtICoqbG9jYWwqKjogYC4vYXNzZXRzL2ltYWdlcy9sb2dpbi1iYWNrZ3JvdW5kLnBuZ2BcbiAgICogLSAqKnVybCBleHRlcm5hKio6IGBodHRwczovL3BvLXVpLmlvL2Fzc2V0cy9pbWFnZXMvbG9naW4tYmFja2dyb3VuZC5wbmdgXG4gICAqXG4gICAqID4gRXNzYSBwcm9wcmllZGFkZSDDqSBpZ25vcmFkYSBwYXJhIGFwbGljYcOnw7VlcyBtb2JpbGUuXG4gICAqL1xuICBASW5wdXQoJ3AtYmFja2dyb3VuZCcpIGJhY2tncm91bmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FtaW5obyBwYXJhIGEgbG9nb21hcmNhIGxvY2FsaXphZGEgbmEgcGFydGUgc3VwZXJpb3IuXG4gICAqXG4gICAqID4gQ2FzbyBzZWphIGluZGVmaW5pZGEgbyBlc3Bhw6dvIHNlIG1hbnTDqW0gcHJlc2VydmFkbyBwb3LDqW0gdmF6aW8uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9nbycpIGxvZ28/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwcmVzc8OjbyByZWd1bGFyIHBhcmEgdmFsaWRhciBvIGNhbXBvIGRlIGxvZ2luLCBjYXNvIGEgZXhwcmVzc8OjbyBuw6NvIHNlamEgYXRlbnRpZGEsIGEgbGl0ZXJhbCBgbG9naW5FcnJvclBhdHRlcm5gXG4gICAqIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqIEV4ZW1wbG9zIGRlIHZhbG9yZXMgdsOhbGlkb3M6XG4gICAqIC0gZW1haWw6IGBbZXhwcmVzc2FvLXJlZ3VsYXItZW1haWxdYFxuICAgKiAtIGNwZjogYFtleHByZXNzYW8tcmVndWxhci1jcGZdYFxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgbG9naW5FcnJvclBhdHRlcm5gLlxuICAgKi9cbiAgQElucHV0KCdwLWxvZ2luLXBhdHRlcm4nKSBsb2dpblBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhwcmVzc8OjbyByZWd1bGFyIHBhcmEgdmFsaWRhciBvIGNhbXBvIGRlIHBhc3N3b3JkLCBjYXNvIGEgZXhwcmVzc8OjbyBuw6NvIHNlamEgYXRlbnRpZGEsIGEgbGl0ZXJhbCBgcGFzc3dvcmRFcnJvclBhdHRlcm5gXG4gICAqIHNlcsOhIGV4aWJpZGEuXG4gICAqXG4gICAqIEV4ZW1wbG9zIGRlIHZhbG9yZXMgdsOhbGlkb3M6XG4gICAqIC0gQXBlbmFzIG7Dum1lcm9zOiBgXFxkP2BcbiAgICogLSBMZXRyYXMgbcOtbnVzY3VsYXM6IGBcXHo/YFxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcGFzc3dvcmRFcnJvclBhdHRlcm5gLlxuICAgKi9cbiAgQElucHV0KCdwLXBhc3N3b3JkLXBhdHRlcm4nKSBwYXNzd29yZFBhdHRlcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ2FtaW5obyBwYXJhIGEgbG9nb21hcmNhIGxvY2FsaXphZGEgbm8gcm9kYXDDqS5cbiAgICovXG4gIEBJbnB1dCgncC1zZWNvbmRhcnktbG9nbycpIHNlY29uZGFyeUxvZ28/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXZlbnRvIGRpc3BhcmFkbyBxdWFuZG8gbyB1c3XDoXJpbyBhbHRlcmFyIG8gaW5wdXQgZG8gY2FtcG8gbG9naW4uXG4gICAqXG4gICAqIEVzc2UgZXZlbnRvIHJlY2ViZXLDoSBjb21vIHBhcsOibWV0cm8gdW1hIHZhcmnDoXZlbCBkbyB0aXBvIGBzdHJpbmdgIGNvbSBvIHRleHRvIGluZm9ybWFkbyBubyBjYW1wby5cbiAgICpcbiAgICogPiBFc3RhIHByb3ByaWVkYWRlIHNlcsOhIGlnbm9yYWRhIHNlIGZvciBkZWZpbmlkbyB2YWxvciBwYXJhIGEgcHJvcHJpZWRhZGUgYHAtYXV0aGVudGljYXRpb24tdXJsYC5cbiAgICovXG4gIEBPdXRwdXQoJ3AtbG9naW4tY2hhbmdlJykgbG9naW5DaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLyoqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gYW8gc3VibWV0ZXIgbyBmb3JtdWzDoXJpbyBkZSBsb2dpbiAoYXBlcnRhbmRvIGBFbnRlcmAgZGVudHJvIGRvcyBjYW1wb3Mgb3UgcHJlc3Npb25hbmRvIG8gYm90w6NvIGRlIGNvbmZpcm1hw6fDo28pLlxuICAgKlxuICAgKiBFc3NlIGV2ZW50byByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtIG9iamV0byBkbyB0aXBvIGBQb1BhZ2VMb2dpbmAgY29tIG9zIGRhZG9zIGluZm9ybWFkb3Mgbm8gZm9ybXVsw6FyaW8uXG4gICAqXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBzZXLDoSBpZ25vcmFkYSBzZSBmb3IgZGVmaW5pZG8gdmFsb3IgcGFyYSBhIHByb3ByaWVkYWRlIGBwLXVybC1yZWNvdmVyeWAuXG4gICAqXG4gICAqID4gUGFyYSBtYWlzIGRldGFsaGVzIGNvbnN1bHRlIGEgZG9jdW1lbnRhw6fDo28gc29icmUgYSBpbnRlcmZhY2UgYFBvUGFnZUxvZ2luYCBtYWlzIGFiYWl4by5cbiAgICovXG4gIEBPdXRwdXQoJ3AtbG9naW4tc3VibWl0JykgbG9naW5TdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPFBvUGFnZUxvZ2luPigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gcXVhbmRvIG8gdXN1w6FyaW8gYWx0ZXJhciBvIGlucHV0IGRvIGNhbXBvIHBhc3N3b3JkLlxuICAgKlxuICAgKiBFc3NlIGV2ZW50byByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtYSB2YXJpw6F2ZWwgZG8gdGlwbyBgc3RyaW5nYCBjb20gbyB0ZXh0byBpbmZvcm1hZG8gbm8gY2FtcG8uXG4gICAqXG4gICAqID4gRXN0YSBwcm9wcmllZGFkZSBzZXLDoSBpZ25vcmFkYSBzZSBmb3IgZGVmaW5pZG8gdmFsb3IgcGFyYSBhIHByb3ByaWVkYWRlIGBwLWF1dGhlbnRpY2F0aW9uLXVybGAuXG4gICAqL1xuICBAT3V0cHV0KCdwLXBhc3N3b3JkLWNoYW5nZScpIHBhc3N3b3JkQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEV2ZW50byBkaXNwYXJhZG8gcXVhbmRvIG8gdXN1w6FyaW8gYWx0ZXJhciBvIGlkaW9tYSBkYSBww6FnaW5hLlxuICAgKlxuICAgKiBFc3NlIGV2ZW50byByZWNlYmVyw6EgY29tbyBwYXLDom1ldHJvIHVtIG9iamV0byBkbyB0aXBvIGBQb0xhbmd1YWdlYCBjb20gYSBsaW5ndWFnZW0gc2VsZWNpb25hZGEuXG4gICAqXG4gICAqL1xuICBAT3V0cHV0KCdwLWxhbmd1YWdlLWNoYW5nZScpIGxhbmd1YWdlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8UG9MYW5ndWFnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPFBvTGFuZ3VhZ2U+KCk7XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRGVmaW5lIGEgcHJvcHJpZWRhZGUgbmF0aXZhIGBhdXRvY29tcGxldGVgIGRvIGNhbXBvIGNvbW8gYG9mZmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgQElucHV0KCdwLW5vLWF1dG9jb21wbGV0ZS1sb2dpbicpIG5vQXV0b2NvbXBsZXRlTG9naW46IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIERlZmluZSBhIHByb3ByaWVkYWRlIG5hdGl2YSBgYXV0b2NvbXBsZXRlYCBkbyBjYW1wbyBjb21vIGBvZmZgLlxuICAgKlxuICAgKiA+IE5vIGNvbXBvbmVudGUgYHBvLXBhc3N3b3JkYCBzZXLDoSBkZWZpbmlkbyBjb21vIGBuZXctcGFzc3dvcmRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgdHJ1ZWBcbiAgICovXG4gIEBJbnB1dCgncC1uby1hdXRvY29tcGxldGUtcGFzc3dvcmQnKSBub0F1dG9jb21wbGV0ZVBhc3N3b3JkOiBib29sZWFuID0gdHJ1ZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2Egc2UgbyBzdGF0dXMgZG8gYG1vZGVsYCBkbyBzd2l0Y2ggZGUgbGVtYnJhciBvIHVzdcOhcmlvIHNlcsOhIGVzY29uZGlkbyB2aXN1YWxtZW50ZS5cbiAgICpcbiAgICogPiBQb3IgcGFkcsOjbyBzZXLDoSBhdHJpYnXDrWRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLWxhYmVsLXN0YXR1cycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlTGFiZWxTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQZXJtaXRlIGVzY29uZGVyIGEgZnVuw6fDo28gZGUgZXNwaWFyIGEgc2VuaGEgZGlnaXRhZGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1oaWRlLXBhc3N3b3JkLXBlZWsnKSBoaWRlUGFzc3dvcmRQZWVrOiBib29sZWFuO1xuXG4gIGFsbExvZ2luRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGFsbFBhc3N3b3JkRXJyb3JzOiBBcnJheTxzdHJpbmc+ID0gW107XG4gIGN1c3RvbUZpZWxkT2JqZWN0OiBQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkO1xuICBjdXN0b21GaWVsZFR5cGU6IHN0cmluZztcbiAgbG9naW5TdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgcGFzc3dvcmQ6IHN0cmluZztcbiAgcmVtZW1iZXJVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIHNlbGVjdGVkTGFuZ3VhZ2U6IHN0cmluZztcbiAgc2hvd0V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfYXV0aGVudGljYXRpb25UeXBlOiBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZSA9IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlLkJhc2ljO1xuICBwcml2YXRlIF9hdXRoZW50aWNhdGlvblVybDogc3RyaW5nO1xuICBwcml2YXRlIF9ibG9ja2VkVXJsOiBzdHJpbmc7XG4gIHByaXZhdGUgX2NvbnRhY3RFbWFpbDogc3RyaW5nO1xuICBwcml2YXRlIF9jdXN0b21GaWVsZDogc3RyaW5nIHwgUG9QYWdlTG9naW5DdXN0b21GaWVsZDtcbiAgcHJpdmF0ZSBfZW52aXJvbm1lbnQ/OiBzdHJpbmc7XG4gIHByaXZhdGUgX2V4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nPzogbnVtYmVyO1xuICBwcml2YXRlIF9oaWRlUmVtZW1iZXJVc2VyOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2xpdGVyYWxzOiBQb1BhZ2VMb2dpbkxpdGVyYWxzO1xuICBwcml2YXRlIF9sb2FkaW5nPzogYm9vbGVhbiA9IGZhbHNlO1xuICBwcml2YXRlIF9sb2dpbjogc3RyaW5nO1xuICBwcml2YXRlIF9sb2dpbkVycm9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcml2YXRlIF9wYXNzd29yZEVycm9yczogQXJyYXk8c3RyaW5nPiA9IFtdO1xuICBwcml2YXRlIF9wcm9kdWN0TmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF9yZWNvdmVyeTogc3RyaW5nIHwgUG9QYWdlTG9naW5SZWNvdmVyeSB8IEZ1bmN0aW9uO1xuICBwcml2YXRlIF9yZWdpc3RlclVybDogc3RyaW5nO1xuICBwcml2YXRlIF9zdXBwb3J0OiBzdHJpbmcgfCBGdW5jdGlvbjtcbiAgcHJpdmF0ZSBfbGFuZ3VhZ2VzTGlzdDogQXJyYXk8UG9MYW5ndWFnZT47XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQW8gaW5mb3JtYXIgdW0gdmFsb3IgZG8gdGlwbyBgc3RyaW5nYCwgbyBtZXNtbyBzZXLDoSBhcGxpY2FkbyBjb21vIGEgY2hhdmUgZG8gY2FtcG8gY3VzdG9taXphZG8gZSB1dGlsaXphcsOhXG4gICAqIG9zIHZhbG9yZXMgcGFkcsO1ZXMgY29udGlkb3MgbmEgcHJvcHJpZWRhZGUgYGxpdGVyYWxzYCBjb21vIGBjdXN0b21GaWVsZEVycm9yUGF0dGVybmAgZSBgY3VzdG9tRmllbGRQbGFjZWhvbGRlcmAuXG4gICAqXG4gICAqIEV4aXN0ZSBhIHBvc3NpYmlsaWRhZGUgZGUgaW5mb3JtYXIgdW0gb2JqZXRvIHF1ZSBzZWd1ZSBhIGRlZmluacOnw6NvIGRhIGludGVyZmFjZSBgUG9QYWdlTG9naW5DdXN0b21GaWVsZGAsIG9uZGVcbiAgICogYXRyYXbDqXMgZG9zIHBhcsOibWV0cm9zIGVudmlhZG9zIHBvZGUgZ2VyYXIgdW0gYHBvLWlucHV0YCwgYHBvLWNvbWJvYCBlc3BlY2lmaWNhbWVudGUgcGFyYSBzZXJ2acOnb3NcbiAgICogb3UgYHBvLXNlbGVjdGAgcGFyYSB2YWxvcmVzIGZpeG9zLlxuICAgKlxuICAgKiBBYmFpeG8gc2VndWVtIG9zIGV4ZW1wbG9zIGRlIGNhZGEgdGlwbyBkZSBjYW1wby5cbiAgICpcbiAgICogYHBvLWlucHV0YDpcbiAgICpcbiAgICogYGBgXG4gICAqIHtcbiAgICogICBwcm9wZXJ0eTogJ2RvbWFpbicsXG4gICAqICAgdmFsdWU6ICdqdjAxJyxcbiAgICogICBwbGFjZWhvbGRlcjogJ0VudGVyIHlvdXIgZG9tYWluJyxcbiAgICogICBwYXR0ZXJuOiAnW2Etel0nLFxuICAgKiAgIGVycm9yUGF0dGVybjogJ0ludmFsaWQgdmFsdWUnXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIGBwby1jb21ib2A6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgcHJvcGVydHk6ICdkb21haW4nLFxuICAgKiAgIHZhbHVlOiAnanYwMScsXG4gICAqICAgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGRvbWFpbicsXG4gICAqICAgdXJsOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL2NvbWJvT3B0aW9uL2RvbWFpbnMnLFxuICAgKiAgIGZpZWxkVmFsdWU6ICduaWNrbmFtZSdcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogYHBvLXNlbGVjdGA6XG4gICAqXG4gICAqIGBgYFxuICAgKiB7XG4gICAqICAgcHJvcGVydHk6ICdkb21haW4nLFxuICAgKiAgIHZhbHVlOiAnanYwMScsXG4gICAqICAgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGRvbWFpbicsXG4gICAqICAgb3B0aW9uczogW3tsYWJlbDogJ0RvbWFpbiAxJywgdmFsdWU6ICcxJ30sIHtsYWJlbDogJ0RvbWFpbiAyJywgdmFsdWU6ICcyJ31dXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIENhc28gbyBjdXN0b21GaWVsZCBwb3NzdWEgb3B0aW9ucywgdXJsIGUgZmllbGRWYWx1ZSBwcmVlbmNoaWRvcywgc2Vyw6EgcHJpb3JpemFkbyBvIHBvLXNlbGVjdFxuICAgKiB1dGlsaXphbmRvIG8gb3B0aW9ucy5cbiAgICpcbiAgICovXG4gIEBJbnB1dCgncC1jdXN0b20tZmllbGQnKSBzZXQgY3VzdG9tRmllbGQodmFsdWU6IHN0cmluZyB8IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIGlmIChpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpKSB7XG4gICAgICAgIHRoaXMuY3VzdG9tRmllbGRUeXBlID0gJ2lucHV0JztcbiAgICAgICAgdGhpcy5fY3VzdG9tRmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZE9iamVjdCA9IHRoaXMuZ2V0RGVmYXVsdEN1c3RvbUZpZWxkT2JqZWN0KHZhbHVlKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXNUeXBlb2YodmFsdWUsICdvYmplY3QnKSAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgdmFsdWVbJ3Byb3BlcnR5J10pIHtcbiAgICAgICAgdGhpcy5fY3VzdG9tRmllbGQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy5jdXN0b21GaWVsZE9iamVjdCA9IDxQb1BhZ2VMb2dpbkN1c3RvbUZpZWxkPnZhbHVlO1xuXG4gICAgICAgIGlmICghdGhpcy5jdXN0b21GaWVsZE9iamVjdC5vcHRpb25zICYmICF0aGlzLmN1c3RvbUZpZWxkT2JqZWN0LnVybCkge1xuICAgICAgICAgIHRoaXMuY3VzdG9tRmllbGRUeXBlID0gJ2lucHV0JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmN1c3RvbUZpZWxkVHlwZSA9IHRoaXMuY3VzdG9tRmllbGRPYmplY3Qub3B0aW9ucyA/ICdzZWxlY3QnIDogJ2NvbWJvJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jdXN0b21GaWVsZCA9IHVuZGVmaW5lZDtcbiAgICB0aGlzLmN1c3RvbUZpZWxkT2JqZWN0ID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZ2V0IGN1c3RvbUZpZWxkKCk6IHN0cmluZyB8IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQge1xuICAgIHJldHVybiB0aGlzLl9jdXN0b21GaWVsZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIFBlcnNvbmFsaXphIG8gZS1tYWlsIHF1ZSDDqSBleGliaWRvIG5hIG1lbnNhZ2VtIGRlIGRpY2EgZGUgbG9naW4gcGFkcsOjbyBwYXJhIGNvbnRhdG8gZGUgc3Vwb3J0ZS5cbiAgICovXG4gIEBJbnB1dCgncC1jb250YWN0LWVtYWlsJykgc2V0IGNvbnRhY3RFbWFpbCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fY29udGFjdEVtYWlsID0gdmFsdWU7XG4gIH1cbiAgZ2V0IGNvbnRhY3RFbWFpbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udGFjdEVtYWlsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogVGV4dG8gY3VzdG9taXphZG8gcXVlIGZpY2EgZW50cmUgYSBsb2dvIGUgYSBtZW5zYWdlbSBkZSBib2FzLXZpbmRhcy5cbiAgICovXG4gIEBJbnB1dCgncC1wcm9kdWN0LW5hbWUnKSBzZXQgcHJvZHVjdE5hbWUodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX3Byb2R1Y3ROYW1lID0gdmFsdWU7XG4gIH1cbiAgZ2V0IHByb2R1Y3ROYW1lKCkge1xuICAgIHJldHVybiB0aGlzLl9wcm9kdWN0TmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIEFkaWNpb25hIHVtYSBgdGFnYCBhYmFpeG8gZG8gdMOtdHVsbyBxdWUgZXNwZWNpZmljYSBvIGFtYmllbnRlIHF1ZSBvIHVzdcOhcmlvIGVzdMOhIGZhemVuZG8gbyBsb2dpbi5cbiAgICpcbiAgICogPiBFc3NhIHByb3ByaWVkYWRlIGxpbWl0YSBvIHRleHRvIGVtIDQwIGNhcmFjdGVyZXMuXG4gICAqL1xuICBASW5wdXQoJ3AtZW52aXJvbm1lbnQnKSBzZXQgZW52aXJvbm1lbnQoZW52aXJvbm1lbnQ6IHN0cmluZykge1xuICAgIGlmIChlbnZpcm9ubWVudCAmJiBlbnZpcm9ubWVudC5sZW5ndGggPiBwb1BhZ2VMb2dpbkNvbnRlbnRNYXhMZW5ndGgpIHtcbiAgICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQuc3Vic3RyaW5nKDAsIHBvUGFnZUxvZ2luQ29udGVudE1heExlbmd0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2Vudmlyb25tZW50ID0gZW52aXJvbm1lbnQ7XG4gICAgfVxuICB9XG4gIGdldCBlbnZpcm9ubWVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW52aXJvbm1lbnQ7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBFeGliZSB1bSBhdmlzbyBkZSBibG9xdWVpbyBkZSBhY29yZG8gY29tIGEgcXVhbnRpZGFkZSByZXN0YW50ZSBkZSB0ZW50YXRpdmFzLlxuICAgKiBPIGF2aXNvIHNlcsOhIGV4aWJpZG8gc29tZW50ZSBzZSBhIHF1YW50aWRhZGUgZm9yIG1haW9yIHF1ZSB6ZXJvLlxuICAgKlxuICAgKiA+IENhc28gdGVuaGEgYWxndW0gdmFsb3IgYXRyaWJ1w61kbyBwYXJhIG8gYXRyaWJ1dG8gYHAtYXV0aGVudGljYXRpb24tdXJsYCBlIG8gcmV0b3JubyBkYSByZXF1aXNpw6fDo28gZXN0aXZlciBhdHJpYnVpbmRvIHZhbG9yXG4gICAqIHBhcmEgbyBgcC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nYCwgbyB2YWxvciBjb25zaWRlcmFkbyBzZXLDoSBvIGRvIHJldG9ybm8gZGEgcmVxdWlzacOnw6NvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgMGBcbiAgICovXG4gIEBJbnB1dCgncC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nJykgc2V0IGV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9leGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGNvbnZlcnRUb0ludCh2YWx1ZSk7XG4gICAgdGhpcy5zaG93RXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSB0aGlzLmV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID4gMDtcbiAgfVxuXG4gIGdldCBleGNlZWRlZEF0dGVtcHRzV2FybmluZygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9leGNlZWRlZEF0dGVtcHRzV2FybmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEVzY29uZGUgYSBmdW7Dp8OjbyBcIkxlbWJyYXIgdXN1w6FyaW9cIiBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbi5cbiAgICpcbiAgICogUXVhbmRvIGVzc2EgcHJvcHJpZWRhZGUgw6kgc2V0YWRhIGNvbSBgdHJ1ZWAgYSBwcm9wcmllZGFkZSBgcmVtZW1iZXJVc2VyYCBlbnZpYWRhIG5vIGV2ZW50byBgcC1sb2dpbi1zdWJtaXRgIHNlcsOhIHNlbXByZVxuICAgKiBgZmFsc2VgLlxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcmVtZW1iZXJVc2VyYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWhpZGUtcmVtZW1iZXItdXNlcicpIHNldCBoaWRlUmVtZW1iZXJVc2VyKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faGlkZVJlbWVtYmVyVXNlciA9IDxhbnk+dmFsdWUgPT09ICcnID8gdHJ1ZSA6IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuXG4gICAgaWYgKHRoaXMuX2hpZGVSZW1lbWJlclVzZXIpIHtcbiAgICAgIHRoaXMucmVtZW1iZXJVc2VyID0gZmFsc2U7XG4gICAgfVxuICB9XG4gIGdldCBoaWRlUmVtZW1iZXJVc2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlUmVtZW1iZXJVc2VyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogT2JqZXRvIGNvbSBhcyBsaXRlcmFpcyB1c2FkYXMgbm8gYHBvLXBhZ2UtbG9naW5gLlxuICAgKlxuICAgKiBFeGlzdGVtIGR1YXMgbWFuZWlyYXMgZGUgY3VzdG9taXphciBvIGNvbXBvbmVudGUsIHBhc3NhbmRvIHVtIG9iamV0byBjb20gdG9kYXMgYXMgbGl0ZXJhaXMgZGlzcG9uw612ZWlzOlxuICAgKlxuICAgKiBgYGBcbiAgICogIGNvbnN0IGN1c3RvbUxpdGVyYWxzOiBQb1BhZ2VMb2dpbkxpdGVyYWxzID0ge1xuICAgKiAgICBhdHRlbXB0czogJ3swfSB2ZXooZXMpICcsXG4gICAqICAgIGNyZWF0ZUFOZXdQYXNzd29yZE5vdzogJ01lbGhvciBjcmlhciB1bWEgc2VuaGEgbm92YSBhZ29yYSEgVm9jw6ogdmFpIHBvZGVyIGVudHJhciBubyBzaXN0ZW1hIGxvZ28gZW0gc2VndWlkYS4nLFxuICAgKiAgICBmb3Jnb3RQYXNzd29yZDogJ0VzcXVlY2V1IHN1YSBzZW5oYT8nLFxuICAgKiAgICBmb3Jnb3RZb3VyUGFzc3dvcmQ6ICdFc3F1ZWNldSBzdWEgc2VuaGE/JyxcbiAgICogICAgaGlnaGxpZ2h0SW5mbzogJycsXG4gICAqICAgIGlGb3Jnb3RNeVBhc3N3b3JkOiAnRXNxdWVjaSBtaW5oYSBzZW5oYScsXG4gICAqICAgIGlmWW91VHJ5SGFyZGVyOiAnU2UgdGVudGFyIG1haXMgJyxcbiAgICogICAgd2VsY29tZTogJ0JvYXMtdmluZGFzJyxcbiAgICogICAgbG9naW5FcnJvclBhdHRlcm46ICdMb2dpbiBvYnJpZ2F0w7NyaW8nLFxuICAgKiAgICBsb2dpbkhpbnQ6ICdDYXNvIG7Do28gcG9zc3VhIHVzdcOhcmlvIGVudHJlIGVtIGNvbnRhdG8gY29tIG8gc3Vwb3J0ZScsXG4gICAqICAgIGxvZ2luTGFiZWw6ICdJbnNpcmEgc2V1IHVzdcOhcmlvJyxcbiAgICogICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2lyYSBzZXUgdXN1w6FyaW8gZGUgYWNlc3NvJyxcbiAgICogICAgcGFzc3dvcmRFcnJvclBhdHRlcm46ICdTZW5oYSBvYnJpZ2F0w7NyaWEnLFxuICAgKiAgICBwYXNzd29yZExhYmVsOiAnSW5zaXJhIHN1YSBzZW5oYScsXG4gICAqICAgIHBhc3N3b3JkUGxhY2Vob2xkZXI6ICdJbnNpcmEgc3VhIHNlbmhhIGRlIGFjZXNzbycsXG4gICAqICAgIGN1c3RvbUZpZWxkRXJyb3JQYXR0ZXJuOiAnQ2FtcG8gY3VzdG9taXphZG8gaW52w6FsaWRvJyxcbiAgICogICAgY3VzdG9tRmllbGRQbGFjZWhvbGRlcjogJ1BvciBmYXZvciBpbnNpcmEgdW0gdmFsb3InLFxuICAgKiAgICByZWdpc3RlclVybDogJ05vdm8gcmVnaXN0cm8nLFxuICAgKiAgICByZW1lbWJlclVzZXI6ICdMZW1icmFyIHVzdcOhcmlvJyxcbiAgICogICAgcmVtZW1iZXJVc2VySGludDogJ0VzdGEgb3DDp8OjbyBwb2RlIHNlciBkZXNhYmlsaXRhZGEgbmFzIGNvbmZpZ3VyYcOnw7VlcyBkbyBzaXN0ZW1hJyxcbiAgICogICAgc3VibWl0TGFiZWw6ICdBY2Vzc2FyIHNpc3RlbWEnLFxuICAgKiAgICBzdWJtaXR0ZWRMYWJlbDogJ0NhcnJlZ2FuZG8uLi4nLFxuICAgKiAgICB0aXRsZVBvcG92ZXI6ICdPcGEhJyxcbiAgICogICAgeW91clVzZXJXaWxsQmVCbG9ja2VkOiAnc2VtIHN1Y2Vzc28gc2V1IHVzdcOhcmlvIHNlcsOhIGJsb3F1ZWFkbyBlIHZvY8OqIGZpY2EgMjQgaG9yYXMgc2VtIHBvZGVyIGFjZXNzYXIgOignXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogT3UgcGFzc2FuZG8gYXBlbmFzIGFzIGxpdGVyYWlzIHF1ZSBkZXNlamEgY3VzdG9taXphcjpcbiAgICpcbiAgICogYGBgXG4gICAqICBjb25zdCBjdXN0b21MaXRlcmFsczogUG9QYWdlTG9naW5MaXRlcmFscyA9IHtcbiAgICogICAgbG9naW5QbGFjZWhvbGRlcjogJ0luc2lyYSBzZXUgdXN1w6FyaW8gZGUgYWNlc3NvJyxcbiAgICogICAgcGFzc3dvcmRQbGFjZWhvbGRlcjogJ0luc2lyYSBzdWEgc2VuaGEgZGUgYWNlc3NvJyxcbiAgICogICAgc3VibWl0TGFiZWw6ICdBY2Vzc2FyIHNpc3RlbWEnXG4gICAqICB9O1xuICAgKiBgYGBcbiAgICpcbiAgICogRSBwYXJhIGNhcnJlZ2FyIGFzIGxpdGVyYWlzIGN1c3RvbWl6YWRhcywgYmFzdGEgYXBlbmFzIHBhc3NhciBvIG9iamV0byBwYXJhIG8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogYGBgXG4gICAqIDxwby1wYWdlLWxvZ2luXG4gICAqICAgW3AtbGl0ZXJhbHNdPVwiY3VzdG9tTGl0ZXJhbHNcIj5cbiAgICogPC9wby1wYWdlLWxvZ2luPlxuICAgKiBgYGBcbiAgICpcbiAgICogID4gTyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBzZXLDoSB0cmFkdXppZG8gZGUgYWNvcmRvIGNvbSBvIGlkaW9tYSBkbyBicm93c2VyIChwdCwgZW4sIGVzKS5cbiAgICogID4gw4kgdGFtYsOpbSBwb3Nzw612ZWwgYWx0ZXJuYXIgbyBvYmpldG8gcGFkcsOjbyBkZSBsaXRlcmFpcyBhdHJhdsOpcyBkbyBzZWxldG9yIGRlIGlkaW9tYXMgbG9jYWxpemFkbyBuYSBwYXJ0ZSBpbmZlcmlvciBkbyB0ZW1wbGF0ZSxcbiAgICogbmVzc2UgY2FzbywgaMOhIHRhbWLDqW0gYSBvcMOnw6NvIGRvIGlkaW9tYSBydXNzby5cbiAgICovXG4gIEBJbnB1dCgncC1saXRlcmFscycpIHNldCBsaXRlcmFscyh2YWx1ZTogUG9QYWdlTG9naW5MaXRlcmFscykge1xuICAgIHRoaXMuX2xpdGVyYWxzID0gdmFsdWU7XG4gIH1cblxuICBnZXQgbGl0ZXJhbHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xpdGVyYWxzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogSGFiaWxpdGEgdW0gZXN0YWRvIGRlIGNhcnJlZ2FtZW50byBhbyBib3TDo28gZGUgKmxvZ2luKi5cbiAgICpcbiAgICogPiDDiSBuZWNlc3PDoXJpbyBhdHJpYnVpciBgdHJ1ZWAgw6AgZXN0YSBwcm9wcmllZGFkZSBuYSBmdW7Dp8OjbyBkZWZpbmlkYSBlbSBgcC1sb2dpbi1zdWJtaXRgLlxuICAgKlxuICAgKiBAZGVmYXVsdCBgZmFsc2VgXG4gICAqL1xuICBASW5wdXQoJ3AtbG9hZGluZycpIHNldCBsb2FkaW5nKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fbG9hZGluZyA9IGNvbnZlcnRUb0Jvb2xlYW4odmFsdWUpO1xuICB9XG5cbiAgZ2V0IGxvYWRpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2xvYWRpbmc7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBWYWxvciBkbyBtb2RlbG8gZG8gY2FtcG8gZGUgbG9naW4uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9naW4nKSBzZXQgbG9naW4odmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2xvZ2luID0gdmFsdWU7XG5cbiAgICBpZiAoIXRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMubG9naW5DaGFuZ2UuZW1pdCh0aGlzLl9sb2dpbik7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGxvZ2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2luO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRyaWJ1dG8gcXVlIHJlY2ViZSB1bWEgbGlzdGEgZGUgZXJyb3MgZSBleGliZSBhYmFpeG8gZG8gY2FtcG8gZGUgbG9naW4uXG4gICAqL1xuICBASW5wdXQoJ3AtbG9naW4tZXJyb3JzJykgc2V0IGxvZ2luRXJyb3JzKHZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fbG9naW5FcnJvcnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNldExvZ2luRXJyb3JzKHRoaXMuX2xvZ2luRXJyb3JzKTtcbiAgfVxuICBnZXQgbG9naW5FcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2xvZ2luRXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQXRyaWJ1dG8gcXVlIHJlY2ViZSB1bWEgbGlzdGEgZGUgZXJyb3MgZSBleGliZSBhYmFpeG8gZG8gY2FtcG8gZGUgcGFzc3dvcmQuXG4gICAqL1xuICBASW5wdXQoJ3AtcGFzc3dvcmQtZXJyb3JzJykgc2V0IHBhc3N3b3JkRXJyb3JzKHZhbHVlOiBBcnJheTxzdHJpbmc+KSB7XG4gICAgdGhpcy5fcGFzc3dvcmRFcnJvcnMgPSB2YWx1ZSB8fCBbXTtcbiAgICB0aGlzLnNldFBhc3N3b3JkRXJyb3JzKHRoaXMuX3Bhc3N3b3JkRXJyb3JzKTtcbiAgfVxuICBnZXQgcGFzc3dvcmRFcnJvcnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Bhc3N3b3JkRXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhpYmUgdW0gbGluayBhYmFpeG8gZG8gZm9ybXVsw6FyaW8gZGUgbG9naW4gcGFyYSBxdWUgb3MgdXN1w6FyaW9zIGRhIGFwbGljYcOnw6NvIGZhw6dhbSBhIHJlY3VwZXJhw6fDo28gZG9zIGRhZG9zIGRlIGF1dGVudGljYcOnw6NvLlxuICAgKlxuICAgKiBBIHByb3ByaWVkYWRlIGFjZWl0YSBvcyBzZWd1aW50ZXMgdGlwb3M6XG4gICAqXG4gICAqIC0gKipTdHJpbmcqKjogaW5mb3JtZSB1bWEgdXJsIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYTtcbiAgICogLSAqKkZ1bmN0aW9uKio6IHBvZGUtc2UgY3VzdG9taXphciBhIGHDp8Ojby4gUGFyYSBlc3RhIHBvc3NpbGlkYWRlIGJhc3RhIGF0cmlidWlyOlxuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtbG9naW4+XG4gICAqICAgW3JlY292ZXJ5XT1cInRoaXMubXlSZWNvdmVyeS5iaW5kKHRoaXMpXCI+XG4gICAqIDwvcG8tcGFnZS1sb2dpbj5cbiAgICogYGBgXG4gICAqXG4gICAqIC0gKipQb1BhZ2VMb2dpblJlY292ZXJ5Kio6IGNyaWEtc2UgdsOtbmN1bG8gYXV0b23DoXRpY28gY29tIG8gdGVtcGxhdGUgKipwby1tb2RhbC1wYXNzd29yZC1yZWNvdmVyeSoqLlxuICAgKiAgIE8gb2JqZXRvIGRldmUgY29udGVyIGEgKip1cmwqKiBwYXJhIHJlcXVpc2nDp8OjbyBkb3MgcmVjdXJzb3MgZSBwb2RlLXNlIGRlZmluaXIgbyAqKnRpcG8qKiBkZSBtb2RhbCBwYXJhIHJlY3VwZXJhw6fDo28gZGUgc2VuaGEsXG4gICAqICAgKiplbWFpbCoqIHBhcmEgY29udGF0byBlICoqbcOhc2NhcmEqKiBkbyBjYW1wbyBkZSB0ZWxlZm9uZS5cbiAgICovXG4gIEBJbnB1dCgncC1yZWNvdmVyeScpIHNldCByZWNvdmVyeSh2YWx1ZTogc3RyaW5nIHwgRnVuY3Rpb24gfCBQb1BhZ2VMb2dpblJlY292ZXJ5KSB7XG4gICAgdGhpcy5fcmVjb3ZlcnkgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCByZWNvdmVyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVjb3Zlcnk7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBDYXNvIGEgYXBsaWNhw6fDo28gdGVuaGEgdW0gbGluayBwYXJhIG5vdm9zIGNhZGFzdHJvcywgaW5mb3JtZSB1bWEgdXJsIGV4dGVybmEgb3UgdW1hIHJvdGEgdsOhbGlkYSwgZGVzc2FcbiAgICogZm9ybWEgc2Vyw6EgZXhpYmlkbyB1bSBsaW5rIGFiYWl4byBkbyBmb3JtdWzDoXJpbyBkZSBsb2dpbiBwYXJhIG9zIHVzdcOhcmlvcyBkYSBhcGxpY2HDp8Ojby5cbiAgICpcbiAgICogRXhlbXBsb3MgZGUgdmFsb3JlcyB2w6FsaWRvczpcbiAgICogLSAqKmxvY2FsKio6IGAvaG9tZWBcbiAgICogLSAqKnVybCBleHRlcm5hKio6IGBodHRwczovL3BvLXVpLmlvYFxuICAgKlxuICAgKiA+IFZlamEgYSBwcm9wcmllZGFkZSBgcC1saXRlcmFsc2AgcGFyYSBjdXN0b21pemFyIGEgbGl0ZXJhbCBgcmVnaXN0ZXJVcmxgLlxuICAgKi9cbiAgQElucHV0KCdwLXJlZ2lzdGVyLXVybCcpIHNldCByZWdpc3RlclVybCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fcmVnaXN0ZXJVcmwgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgcmVnaXN0ZXJVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fcmVnaXN0ZXJVcmw7XG4gIH1cblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBBdHJpYnV0byBxdWUgcmVjZWJlIG8gdGlwbyBkZSBlc3F1ZW1hIGRhIGF1dGVudGljYcOnw6NvLCBzZW5kbyBzdXBvcnRhZG9zIGFwZW5hcyBvcyB2YWxvcmVzIGBCYXNpY2AgZSBgQmVhcmVyYC5cbiAgICpcbiAgICogPiBDYXNvIG8gdGlwbyBkZWZpbmlkbyBzZWphIGBCYXNpY2AsIG8gY29tcG9uZW50ZSBmYXLDoSB1bWEgcmVxdWlzacOnw6NvIGBQT1NUYCBjb250ZW5kbzpcbiAgICpcbiAgICogYGBgXG4gICAqIGhlYWRlcnMge1xuICAgKiAgQXV0aG9yaXphdGlvbjogQmFzaWMgYmFzZTY0KGxvZ2luOnBhc3N3b3JkKVxuICAgKiB9XG4gICAqXG4gICAqIGJvZHkge1xuICAgKiAgcmVtZW1iZXJVc2VyOiByZW1lbWJlclVzZXJcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogPiBDYXNvIG8gdGlwbyBkZWZpbmlkbyBzZWphIGBCZWFyZXJgLCBvIGNvbXBvbmVudGUgZmFyw6EgdW1hIHJlcXVpc2nDp8OjbyBgUE9TVGAgY29udGVuZG86XG4gICAqXG4gICAqIGBgYFxuICAgKiBib2R5IHtcbiAgICogIGxvZ2luOiBsb2dpbixcbiAgICogIHBhc3N3b3JkOiBiYXNlNjQocGFzc3dvcmQpLFxuICAgKiAgcmVtZW1iZXJVc2VyOiByZW1lbWJlclVzZXJcbiAgICogfVxuICAgKiBgYGBcbiAgICpcbiAgICogQGRlZmF1bHQgYFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlLkJhc2ljYFxuICAgKi9cbiAgQElucHV0KCdwLWF1dGhlbnRpY2F0aW9uLXR5cGUnKSBzZXQgYXV0aGVudGljYXRpb25UeXBlKHZhbHVlOiBQb1BhZ2VMb2dpbkF1dGhlbnRpY2F0aW9uVHlwZSkge1xuICAgIHRoaXMuX2F1dGhlbnRpY2F0aW9uVHlwZSA9ICg8YW55Pk9iamVjdCkudmFsdWVzKFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlKS5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gdmFsdWVcbiAgICAgIDogUG9QYWdlTG9naW5BdXRoZW50aWNhdGlvblR5cGUuQmFzaWM7XG4gIH1cblxuICBnZXQgYXV0aGVudGljYXRpb25UeXBlKCk6IFBvUGFnZUxvZ2luQXV0aGVudGljYXRpb25UeXBlIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0aGVudGljYXRpb25UeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRW5kcG9pbnQgdXNhZG8gcGVsbyB0ZW1wbGF0ZSBwYXJhIHJlcXVpc2nDp8OjbyBkbyByZWN1cnNvLiBRdWFuZG8gcHJlZW5jaGlkbywgbyBtw6l0b2RvIGBwLWxvZ2luLXN1Ym1pdGAgc2Vyw6EgaWdub3JhZG8gZSBvXG4gICAqIGNvbXBvbmVudGUgYWRxdWlyaXLDoSBhdXRvbWF0aXphw6fDo28gcGFyYSBvIHByb2Nlc3NvIGRlIGF1dGVudGljYcOnw6NvLlxuICAgKlxuICAgKiAjIyMgUHJvY2Vzc29zXG4gICAqIEFvIGRpZ2l0YXIgdW0gdmFsb3IgdsOhbGlkbyBubyBjYW1wbyBkZSBsb2dpbi9wYXNzd29yZCBlIHByZXNzaW9uYXIgKipFbnRlcioqLCBvIGNvbXBvbmVudGUgZmFyw6EgdW1hIHJlcXVpc2nDp8OjbyBgUE9TVGBcbiAgICogbmEgdXJsIGVzcGVjaWZpY2FkYSBuZXN0YSBwcm9wcmllZGFkZSBwYXNzYW5kbyBvIG9iamV0byBjb250ZW5kbyBvIHZhbG9yIGRlZmluaWRvIHBlbG8gdXN1w6FyaW86XG4gICAqXG4gICAqIGBgYFxuICAgKiBoZWFkZXJzIHtcbiAgICogIEF1dGhvcml6YXRpb246IEJhc2ljIGJhc2U2NChsb2dpbjpwYXNzd29yZClcbiAgICogfVxuICAgKlxuICAgKiBib2R5IHtcbiAgICogIHJlbWVtYmVyVXNlcjogcmVtZW1iZXJVc2VyXG4gICAqIH1cbiAgICogYGBgXG4gICAqXG4gICAqIEVtIGNhc28gZGUgKipzdWNlc3NvKiosIG8gb2JqZXRvIGRlIHJldG9ybm8gw6kgYXJtYXplbmFkbyBubyBgc2Vzc2lvblN0b3JhZ2VgIGUgbyB1c3XDoXJpbyDDqSByZWRpcmVjaW9uYWRvIHBhcmEgYSBww6FnaW5hIGluaWNpYWwgZGFcbiAgICogYXBsaWNhw6fDo28gYC9gLlxuICAgKlxuICAgKiBgYGBcbiAgICogMjAwOlxuICAgKiAge1xuICAgKiAgICB1c2VyOiB1c2VyXG4gICAqICB9XG4gICAqIGBgYFxuICAgKlxuICAgKiBFbSBjYXNvIGRlICoqZXJybyoqIG5hIGF1dGVudGljYcOnw6NvLCBlc3BlcmEtc2UgbyBzZWd1aW50ZSByZXRvcm5vOlxuICAgKlxuICAgKiBgYGBcbiAgICogNDAwLzQwMVxuICAgKiAge1xuICAgKiAgICBjb2RlOiA0MDAvNDAxLFxuICAgKiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgKiAgICBkZXRhaWxlZE1lc3NhZ2U6IGRldGFpbGVkTWVzc2FnZSxcbiAgICogICAgaGVscFVybD86IGhlbHBVcmxcbiAgICogIH1cbiAgICogYGBgXG4gICAqXG4gICAqID4gUG9kZS1zZSBhdHJpYnVpciB1bWEgcXVhbnRpZGFkZSBtw6F4aW1hIGRlIHRlbnRhdGl2YXMgcmVzdGFudGVzIChtYXhBdHRlbXB0c1JlbWFpbmluZykgcGFyYSBvIGF0cmlidXRvIGBwLWV4Y2VlZGVkLWF0dGVtcHRzLXdhcm5pbmdgLFxuICAgKiBhc3NpbSBjb21vIG9zIGF2aXNvcyByZWxhY2lvbmFkb3MgYW9zIGNhbXBvcyBsb2dpbiBlIHBhc3N3b3JkIChsb2dpbldhcm5pbmdzLCBwYXNzd29yZFdhcm5pbmdzKSBwYXJhIG9zIGF0cmlidXRvcyBgcC1sb2dpbi1lcnJvcnNgIGVcbiAgICogYHAtcGFzc3dvcmQtZXJyb3JzYCBjb25mb3JtZSByZXRvcm5vIGFiYWl4bzpcbiAgICpcbiAgICogYGBgXG4gICAqIDQwMFxuICAgKiAge1xuICAgKiAgICBjb2RlOiA0MDAvNDAxLFxuICAgKiAgICBtZXNzYWdlOiBtZXNzYWdlLFxuICAgKiAgICBkZXRhaWxlZE1lc3NhZ2U6IGRldGFpbGVkTWVzc2FnZSxcbiAgICogICAgaGVscFVybD86IGhlbHBVcmwsXG4gICAqICAgIG1heEF0dGVtcHRzUmVtYWluaW5nPzogbWF4QXR0ZW1wdHNSZW1haW5pbmcsXG4gICAqICAgIGxvZ2luV2FybmluZ3M/OiBbbG9naW5XYXJuaW5nc10sXG4gICAqICAgIHBhc3N3b3JkV2FybmluZ3M/OiBbcGFzc3dvcmRXYXJuaW5nc11cbiAgICogIH1cbiAgICogYGBgXG4gICAqXG4gICAqID4gQ2FzbyBvIHZhbG9yIGF0cmlidcOtZG8gcGFyYSBgcC1leGNlZWRlZC1hdHRlbXB0cy13YXJuaW5nYCBzZWphIGlndWFsIGEgMCh6ZXJvKSwgcG9kZXLDoSBzZXIgcGFzc2FkbyB1bSB2YWxvciBwYXJhIG9cbiAgICogYXRyaWJ1dG8gYHAtYmxvY2tlZC11cmxgIGUgbyB1c3XDoXJpbyBzZXLDoSByZWRpcmVjaW9uYWRvIHBhcmEgdW1hIHRlbGEgZGUgYmxvcXVlaW8uXG4gICAqXG4gICAqICpQcm9jZXNzbyBmaW5hbGl6YWRvLipcbiAgICpcbiAgICogX19fX19fX19fX19fX19fXG4gICAqXG4gICAqICMjIyMgUHJhdGljaWRhZGVcbiAgICogQXMgaW5mb3JtYcOnw7VlcyBkbyBzZXJ2acOnbyBkZSBhdXRlbnRpY2HDp8OjbyB0YW1iw6ltIHBvZGVtIHNlciB0cmFuc21pdGlkYXMgZGlyZXRhbWVudGUgcGVsYXMgY29uZmlndXJhw6fDo29zIGRlIHJvdGEgZSwgZGVzdGEgbWFuZWlyYSxcbiAgICogZGlzcGVuc2Etc2UgcXVhbHF1ZXIgbWVuw6fDo28gZS9vdSBpbXBvcnRhw6fDo28gZG8gY29tcG9uZW50ZSBgcG8tcGFnZS1sb2dpbmAgbm8gcmVzdGFudGUgZGEgYXBsaWNhw6fDo28uIE8gZXhlbXBsbyBhYmFpeG8gZXhlbXBsaWZpY2FcbiAgICogYSBmb3JtYSBkaW7Dom1pY2EgY29tIGEgcXVhbCBvIHRlbXBsYXRlIGRlIHRlbGEgZGUgbG9naW4gcG9kZSBzZXIgZ2VyYWRvIGFvIG5hdmVnYXIgcGFyYSByb3RhIGAvbG9naW5gLCBlIHRhbWLDqW0gY29tbyBlbGUgc2UgY29tdW5pY2FcbiAgICogY29tIG8gc2VydmnDp28gcGFyYSBlZmV0dWHDp8OjbyBkbyBwcm9jZXNzbyBkZSBhdXRlbnRpY2HDp8OjbyBkbyB1c3XDoXJpbyBlIHNvbGljaXRhw6fDo28gZGUgbm92YSBzZW5oYS5cbiAgICogQmFzdGEgZGVmaW5pciBuYXMgY29uZmlndXJhw6fDtWVzIGRlIHJvdGE6XG4gICAqXG4gICAqXG4gICAqIGBgYFxuICAgKiAgIGltcG9ydCB7IFBvUGFnZUxvZ2luQ29tcG9uZW50LCBQb1BhZ2VMb2dpbkF0aGVudGljYXRpb25UeXBlIH0gZnJvbSAnQHBvLXVpL25nLXRlbXBsYXRlcyc7XG4gICAqXG4gICAqICAgLi4uXG4gICAqICAgY29uc3Qgcm91dGVzOiBSb3V0ZXMgPSBbXG4gICAqICAgICB7XG4gICAqICAgICAgIHBhdGg6ICdsb2dpbicsIGNvbXBvbmVudDogUG9QYWdlTG9naW5Db21wb25lbnQsIGRhdGE6IHtcbiAgICogICAgICAgICBzZXJ2aWNlQXBpOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL3VzZXJzL2F1dGhlbnRpY2F0aW9uJyxcbiAgICogICAgICAgICBlbnZpcm9ubWVudDogJ2RldmVsb3BtZW50JyxcbiAgICogICAgICAgICByZWNvdmVyeToge1xuICAgKiAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9wby11aS5pby9zYW1wbGUvYXBpL3VzZXJzJyxcbiAgICogICAgICAgICAgIHR5cGU6IFBvTW9kYWxQYXNzd29yZFJlY292ZXJ5VHlwZS5BbGwsXG4gICAqICAgICAgICAgICBjb250YWN0TWFpbDogJ2Rldi5wb0Bwby11aS5jb20nLFxuICAgKiAgICAgICAgICAgcGhvbmVNYXNrOiAnOS05OTktOTk5LTk5OTknXG4gICAqICAgICAgICAgfSxcbiAgICogICAgICAgICByZWdpc3RlclVybDogJy9uZXctcGFzc3dvcmQnLFxuICAgKiAgICAgICAgIGF1dGhlbnRpY2F0aW9uVHlwZTogUG9QYWdlTG9naW5BdGhlbnRpY2F0aW9uVHlwZS5CYXNpY1xuICAgKiAgICAgICB9XG4gICAqICAgICB9XG4gICAqICAgICAuLi5cbiAgICogICBdO1xuICAgKlxuICAgKiAgIEBOZ01vZHVsZSh7XG4gICAqICAgICBpbXBvcnRzOiBbUm91dGVyTW9kdWxlLmZvclJvb3Qocm91dGVzKV0sXG4gICAqICAgICBleHBvcnRzOiBbUm91dGVyTW9kdWxlXVxuICAgKiAgIH0pXG4gICAqICAgZXhwb3J0IGNsYXNzIEFwcFJvdXRpbmdNb2R1bGUgeyB9XG4gICAqIGBgYFxuICAgKlxuICAgKlxuICAgKiBPIG1ldGFkYWRvIGBzZXJ2aWNlQXBpYCBkZXZlIHNlciBhICoqdXJsKiogcGFyYSByZXF1aXNpw6fDo28gZG9zIHJlY3Vyc29zIGRlIGF1dGVudGljYcOnw6NvLCBvIGBlbnZpcm9ubWVudGAgYWxpbWVudGEgYSBwcm9wcmllZGFkZVxuICAgKiBgcC1lbnZpcm9ubWVudGAsIGByZWNvdmVyeWAgw6kgYSBpbnRlcmZhY2UgYFBvUGFnZUxvZ2luUmVjb3ZlcnlgIHJlc3BvbnPDoXZlbCBwZWxhcyBlc3BlY2lmaWNhw6fDtWVzIGNvbnRpZGFzIG5hIG1vZGFsIGRlIHJlY3VwZXJhw6fDo28gZGVcbiAgICogc2VuaGEsIGByZWdpc3RlclVybGAgYWxpbWVudGEgYSBwcm9wcmllZGFkZSBgcC1yZWdpc3Rlci11cmxgIGUgYGF1dGhlbnRpY2F0aW9uVHlwZWAgcXVlIGRlZmluZSBhIHByb3ByaWVkYWRlIGBwLWF1dGhlbnRpY2F0aW9uLXR5cGVgLlxuICAgKlxuICAgKiA+IMOJIGVzc2VuY2lhbCBxdWUgc2lnYSBhIG5vbWVuY2xhdHVyYSBkb3MgYXRyaWJ1dG9zIGV4ZW1wbGlmaWNhZG9zIGFjaW1hIHBhcmEgc3VhIGVmZXRpdmEgZnVuY2lvbmFsaWRhZGUuXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3AtYXV0aGVudGljYXRpb24tdXJsJykgc2V0IGF1dGhlbnRpY2F0aW9uVXJsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9hdXRoZW50aWNhdGlvblVybCA9IGlzVHlwZW9mKHZhbHVlLCAnc3RyaW5nJykgPyB2YWx1ZSA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBhdXRoZW50aWNhdGlvblVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdXRoZW50aWNhdGlvblVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIENhc28gbyB2YWxvciBhdHJpYnXDrWRvIHBhcmEgYHAtZXhjZWVkZWQtYXR0ZW1wdHMtd2FybmluZ2Agc2VqYSBpZ3VhbCBhIDAoemVybykgZSBhIGFwbGljYcOnw6NvIHRlbmhhIHVtIGxpbmsgZGUgYmxvcXVlaW8gZGUgdXN1w6FyaW8sXG4gICAqIGluZm9ybWUgdW1hIHVybCBleHRlcm5hIG91IHVtYSByb3RhIHbDoWxpZGEsIGRlc3NhIGZvcm1hIGVtIGNhc28gZGUgYmxvcXVlaW8gbyB1c3XDoXJpbyBzZXLDoSByZWRpcmVjaW9uYWRvLlxuICAgKi9cbiAgQElucHV0KCdwLWJsb2NrZWQtdXJsJykgc2V0IGJsb2NrZWRVcmwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Jsb2NrZWRVcmwgPSBpc1R5cGVvZih2YWx1ZSwgJ3N0cmluZycpID8gdmFsdWUgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBnZXQgYmxvY2tlZFVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ibG9ja2VkVXJsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogRXhpYmUgdW0gYm90w6NvIHBhcmEgc3Vwb3J0ZS5cbiAgICpcbiAgICogQSBwcm9wcmllZGFkZSBhY2VpdGEgb3Mgc2VndWludGVzIHRpcG9zOlxuICAgKlxuICAgKiAtICoqU3RyaW5nKio6IFVSTCBleHRlcm5hIG91IHVtYSByb3RhIHbDoWxpZGE7XG4gICAqIC0gKipGdW5jdGlvbioqOiBGdW7Dp8OjbyBhIHNlciBkaXNwYXJhZGEgYW8gY2xpY2FyIG5vIGJvdMOjbyBkZSBzdXBvcnRlO1xuICAgKiBgYGBcbiAgICogPHBvLXBhZ2UtbG9naW4+XG4gICAqICAgW3Atc3VwcG9ydF09XCJ0aGlzLm15U3VwcG9ydC5iaW5kKHRoaXMpXCI+XG4gICAqIDwvcG8tcGFnZS1sb2dpbj5cbiAgICogYGBgXG4gICAqXG4gICAqL1xuICBASW5wdXQoJ3Atc3VwcG9ydCcpIHNldCBzdXBwb3J0KHZhbHVlOiBzdHJpbmcgfCBGdW5jdGlvbikge1xuICAgIHRoaXMuX3N1cHBvcnQgPSB2YWx1ZTtcbiAgfVxuXG4gIGdldCBzdXBwb3J0KCkge1xuICAgIHJldHVybiB0aGlzLl9zdXBwb3J0O1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogQ29sZcOnw6NvIGRlIGlkaW9tYXMgcXVlIG8gY29tcG9uZW50ZSBpcsOhIHRyYXRhciBlIGRpc3BvbmliaWxpemFyw6EgcGFyYSBvIHVzdcOhcmlvIGVzY29saGVyLlxuICAgKlxuICAgKiBDYXNvIGVzc2EgcHJvcHJpZWRhZGUgbsOjbyBzZWphIHV0aWxpemFkYSBvIGNvbXBvbmVudGUgbW9zdHJhcsOhIG5vIGNvbWJvIG9zIGlkaW9tYXMgcXVlIGVsZSBzdXBvcnRhIHBvciBwYWRyw6NvLlxuICAgKlxuICAgKiBDYXNvIGEgY29sZcOnw6NvIHRlbmhhIHVtIGlkaW9tYSwgYSBww6FnaW5hIGVzdGFyw6EgbmVzc2UgaWRpb21hIGUgbsOjbyBtb3N0cmFyw6EgbyBjb21iby5cbiAgICpcbiAgICogQ2FzbyBzZWphIHBhc3NhZG8gdW0gYXJyYXkgdmF6aW8sIGEgcMOhZ2luYSB0ZXLDoSBvIGlkaW9tYSBjb25maWd1cmFkbyBubyBgaTE4bmAgZSBuw6NvIG1vc3RyYXLDoSBvIGNvbWJvIGRlIHNlbGXDp8Ojby5cbiAgICpcbiAgICogPiBTZSBmb3IgcGFzc2FkbyB1bSBpZGlvbWEgbsOjbyBzdXBvcnRhZG8sIHNlcsOhIHByZWNpc28gcGFzc2FyIGFzIGxpdGVyYWlzIHBlbGEgcHJvcHJpZWRhZGUgYHAtbGl0ZXJhbHNgLlxuICAgKlxuICAgKlxuICAgKi9cbiAgQElucHV0KCdwLWxhbmd1YWdlcycpIHNldCBsYW5ndWFnZXNMaXN0KGxhbmd1YWdlc0xpc3Q6IEFycmF5PFBvTGFuZ3VhZ2U+KSB7XG4gICAgaWYgKGxhbmd1YWdlc0xpc3QpIHtcbiAgICAgIGlmIChsYW5ndWFnZXNMaXN0Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLl9sYW5ndWFnZXNMaXN0ID0gbGFuZ3VhZ2VzTGlzdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuX2xhbmd1YWdlc0xpc3QgPSBwb0xhbmd1YWdlRGVmYXVsdC5maWx0ZXIobGFuZ3VhZ2UgPT4gbGFuZ3VhZ2UubGFuZ3VhZ2UgPT09IHRoaXMubGFuZ3VhZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdldCBsYW5ndWFnZXNMaXN0KCk6IEFycmF5PFBvTGFuZ3VhZ2U+IHtcbiAgICBpZiAodGhpcy5fbGFuZ3VhZ2VzTGlzdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2xhbmd1YWdlc0xpc3Q7XG4gICAgfVxuICAgIHJldHVybiBwb0xhbmd1YWdlRGVmYXVsdDtcbiAgfVxuXG4gIGdldCBzaG93TGFuZ3VhZ2UoKSB7XG4gICAgcmV0dXJuIHRoaXMubGFuZ3VhZ2VzTGlzdC5sZW5ndGggPiAxO1xuICB9XG5cbiAgZ2V0IGxhbmd1YWdlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRMYW5ndWFnZSB8fCBnZXRTaG9ydEJyb3dzZXJMYW5ndWFnZSgpO1xuICB9XG5cbiAgZ2V0IHBhZ2VMb2dpbkxpdGVyYWxzKCk6IFBvUGFnZUxvZ2luTGl0ZXJhbHMge1xuICAgIGNvbnN0IGxvZ2luSGludFdpdGhDb250YWN0RW1haWwgPSB0aGlzLmNvbnRhY3RFbWFpbFxuICAgICAgPyB0aGlzLmNvbmNhdGVuYXRlTG9naW5IaW50V2l0aENvbnRhY3RFbWFpbCh0aGlzLmNvbnRhY3RFbWFpbClcbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLnBvUGFnZUxvZ2luTGl0ZXJhbHNEZWZhdWx0W3BvTG9jYWxlRGVmYXVsdF0sXG4gICAgICAuLi5wb1BhZ2VMb2dpbkxpdGVyYWxzRGVmYXVsdFt0aGlzLmxhbmd1YWdlXSxcbiAgICAgIC4uLmxvZ2luSGludFdpdGhDb250YWN0RW1haWwsXG4gICAgICAuLi50aGlzLmxpdGVyYWxzXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgbG9naW5TZXJ2aWNlOiBQb1BhZ2VMb2dpblNlcnZpY2UsXG4gICAgcHVibGljIHJvdXRlcjogUm91dGVyLFxuICAgIHB1YmxpYyBwb0xhbmd1YWdlU2VydmljZTogUG9MYW5ndWFnZVNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5zZWxlY3RlZExhbmd1YWdlID0gdGhpcy5wb0xhbmd1YWdlU2VydmljZS5nZXRTaG9ydExhbmd1YWdlKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBpZiAodGhpcy5sb2dpblN1YnNjcmlwdGlvbikge1xuICAgICAgdGhpcy5sb2dpblN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIGNsb3NlUG9wb3ZlcigpIHtcbiAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGZhbHNlO1xuICB9XG5cbiAgb25Mb2dpblN1Ym1pdCgpOiB2b2lkIHtcbiAgICBjb25zdCBsb2dpbkZvcm06IFBvUGFnZUxvZ2luID0ge1xuICAgICAgbG9naW46IHRoaXMubG9naW4sXG4gICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcbiAgICAgIHJlbWVtYmVyVXNlcjogdGhpcy5yZW1lbWJlclVzZXJcbiAgICB9O1xuXG4gICAgaWYgKHRoaXMuY3VzdG9tRmllbGQpIHtcbiAgICAgIGxvZ2luRm9ybVt0aGlzLmN1c3RvbUZpZWxkT2JqZWN0LnByb3BlcnR5XSA9IHRoaXMuY3VzdG9tRmllbGRPYmplY3QudmFsdWU7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuYXV0aGVudGljYXRpb25VcmwpIHtcbiAgICAgIHRoaXMubG9hZGluZyA9IHRydWU7XG4gICAgICB0aGlzLmxvZ2luU3Vic2NyaXB0aW9uID0gdGhpcy5sb2dpblNlcnZpY2VcbiAgICAgICAgLm9uTG9naW4odGhpcy5hdXRoZW50aWNhdGlvblVybCwgdGhpcy5hdXRoZW50aWNhdGlvblR5cGUsIGxvZ2luRm9ybSlcbiAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICBkYXRhID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0VmFsdWVzVG9Qcm9wZXJ0aWVzKCk7XG4gICAgICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdQT19VU0VSX0xPR0lOJywgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgICAgICAgdGhpcy5vcGVuSW50ZXJuYWxMaW5rKCcvJyk7XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChlcnJvci5lcnJvci5jb2RlID09PSAnNDAwJyB8fCBlcnJvci5lcnJvci5jb2RlID09PSAnNDAxJykge1xuICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlc1RvUHJvcGVydGllcyhlcnJvcik7XG4gICAgICAgICAgICAgIHRoaXMucmVkaXJlY3RCbG9ja2VkVXJsKHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcsIHRoaXMuYmxvY2tlZFVybCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmxvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9naW5TdWJtaXQuZW1pdChsb2dpbkZvcm0pO1xuICAgICAgdGhpcy5zaG93RXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSB0aGlzLmV4Y2VlZGVkQXR0ZW1wdHNXYXJuaW5nID4gMDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldERlZmF1bHRDdXN0b21GaWVsZE9iamVjdChwcm9wZXJ0eSk6IFBvUGFnZUxvZ2luQ3VzdG9tRmllbGQge1xuICAgIHJldHVybiB7IHByb3BlcnR5IH07XG4gIH1cblxuICBwcml2YXRlIG9wZW5FeHRlcm5hbExpbmsodXJsOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cub3Blbih1cmwsICdfYmxhbmsnKTtcbiAgfVxuXG4gIHByaXZhdGUgb3BlbkludGVybmFsTGluayh1cmw6IHN0cmluZykge1xuICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt1cmxdKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVkaXJlY3RCbG9ja2VkVXJsKGF0dGVtcHRzOiBudW1iZXIsIGJsb2NrZWRVcmw6IHN0cmluZykge1xuICAgIGlmIChhdHRlbXB0cyA9PT0gMCAmJiBibG9ja2VkVXJsKSB7XG4gICAgICB0aGlzLnNob3dFeGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IGZhbHNlO1xuICAgICAgaXNFeHRlcm5hbExpbmsoYmxvY2tlZFVybCkgPyB0aGlzLm9wZW5FeHRlcm5hbExpbmsoYmxvY2tlZFVybCkgOiB0aGlzLm9wZW5JbnRlcm5hbExpbmsoYmxvY2tlZFVybCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRWYWx1ZXNUb1Byb3BlcnRpZXMocmVzdWx0Pykge1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuZXhjZWVkZWRBdHRlbXB0c1dhcm5pbmcgPSByZXN1bHQuZXJyb3IubWF4QXR0ZW1wdHNSZW1haW5pbmc7XG4gICAgICB0aGlzLmxvZ2luRXJyb3JzID0gcmVzdWx0LmVycm9yLmxvZ2luV2FybmluZ3M7XG4gICAgICB0aGlzLnBhc3N3b3JkRXJyb3JzID0gcmVzdWx0LmVycm9yLnBhc3N3b3JkV2FybmluZ3M7XG4gICAgICB0aGlzLmJsb2NrZWRVcmwgPSByZXN1bHQuZXJyb3IuYmxvY2tlZFVybDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5leGNlZWRlZEF0dGVtcHRzV2FybmluZyA9IDA7XG4gICAgICB0aGlzLmxvZ2luRXJyb3JzID0gW107XG4gICAgICB0aGlzLnBhc3N3b3JkRXJyb3JzID0gW107XG4gICAgICB0aGlzLmJsb2NrZWRVcmwgPSAnJztcbiAgICB9XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgY29uY2F0ZW5hdGVMb2dpbkhpbnRXaXRoQ29udGFjdEVtYWlsKGNvbnRhY3RFbWFpbDogc3RyaW5nKTtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0TG9naW5FcnJvcnModmFsdWU6IEFycmF5PHN0cmluZz4pOiB2b2lkO1xuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBzZXRQYXNzd29yZEVycm9ycyh2YWx1ZTogQXJyYXk8c3RyaW5nPik6IHZvaWQ7XG59XG4iXX0=
|