ca-components 1.4.63 → 1.4.64
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.
|
@@ -81,7 +81,7 @@ export class CaInputDropdownTestComponent {
|
|
|
81
81
|
set options(values) {
|
|
82
82
|
if (values)
|
|
83
83
|
this._options = [...values];
|
|
84
|
-
console.log(
|
|
84
|
+
console.log('update with optins', values, this.firstWriteValue);
|
|
85
85
|
if (this.firstWriteValue) {
|
|
86
86
|
this.writeValueToFormControl(this.firstWriteValue);
|
|
87
87
|
}
|
|
@@ -148,8 +148,9 @@ export class CaInputDropdownTestComponent {
|
|
|
148
148
|
return this.superControl.control;
|
|
149
149
|
}
|
|
150
150
|
writeValue(value) {
|
|
151
|
-
console.log(
|
|
152
|
-
|
|
151
|
+
console.log('WRITE VALUE FIRST', value);
|
|
152
|
+
if (value)
|
|
153
|
+
this.firstWriteValue = value;
|
|
153
154
|
this.writeValueToFormControl(value);
|
|
154
155
|
}
|
|
155
156
|
writeValueToFormControl(value) {
|
|
@@ -706,4 +707,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
706
707
|
type: Output,
|
|
707
708
|
args: ['searchInputEvent']
|
|
708
709
|
}] } });
|
|
709
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXN0L2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdGVzdC9jYS1pbnB1dC1kcm9wZG93bi10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxtQ0FBbUMs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QUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVlLGVBQWU7c0JBQXBDLE1BQU07dUJBQUMsWUFBWTtnQkFFRyxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYTtnQkFFTSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHRyxnQkFBZ0I7c0JBQTNDLE1BQU07dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIHNraXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuXG4vLyBib290c3RyYXBcbmltcG9ydCB7XG4gICAgTmdiUG9wb3ZlcixcbiAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgIE5nYk1vZHVsZSxcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBhbmltYXRpb25cbmltcG9ydCB7IGlucHV0RHJvcGRvd25BbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0L2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbSc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0uY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zUGlwZSB9IGZyb20gJy4vcGlwZXMvZHJvcGRvd24tb3B0aW9ucy5waXBlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuXG4vLyB0eXBlc1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2xXaXRoTm90Rm91bmRUeXBlLFxuICAgIEZvcm1Db250cm9sV2l0aE5vdEZvdW5kVHlwZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBTZWxlY3REcm9wZG93blZhbHVlVHlwZSB9IGZyb20gJy4vdHlwZXMvc2VsZWN0LWRyb3Bkb3duLXZhbHVlLnR5cGUnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIGNsYXNzZXNcbmltcG9ydCB7IEV2ZW50SW5wdXRNYW5hZ2VyIH0gZnJvbSAnLi4vY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWV2ZW50LW1hbmFnZXInO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBJbnB1dFRlc3RDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhTG9hZFN0YXR1c1N0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvYWQtc3RhdHVzLXN0cmluZy9jYS1sb2FkLXN0YXR1cy1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IENhUHJvZmlsZUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtcHJvZmlsZS1pbWFnZS9jYS1wcm9maWxlLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtLmNvbXBvbmVudCc7XG5cbi8vIGNvbmZpZ1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2NvbmZpZyc7XG5cbi8vIGludGVyZmFjZXNcbmltcG9ydCB7IElPcHRpb25Nb2RlbCB9IGZyb20gJy4vaW50ZXJmYWNlcy9pbnB1dC1kcm9wZG93bi1vcHRpb24uaW50ZXJmYWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2EtaW5wdXQtZHJvcGRvd24tdGVzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbRm9ybUNvbnRyb2xQaXBlXSxcbiAgICBhbmltYXRpb25zOiBbaW5wdXREcm9wZG93bkFuaW1hdGlvbignc2hvd0hpZGVEcm9wZG93bk9wdGlvbnMnKV0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvLyBNb2R1bGVcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiUG9wb3Zlck1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgLy8gQ29tcG9uZW50XG4gICAgICAgIENhUHJvZmlsZUltYWdlQ29tcG9uZW50LFxuICAgICAgICBDYUxvYWRTdGF0dXNTdHJpbmdDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dERpc3BhdGNoVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkdyb3Vwc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxhYmVsc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Eb3VibGVUZXh0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blRyaXBsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGVmYXVsdFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25QYXlyb2xsVHJ1Y2tzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25TdmdUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRUZXN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudEl0ZW0sXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb21wb25lbnRJdGVtLFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckl0ZW1Db21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RJdGVtQ29tcG9uZW50LFxuICAgICAgICAvLyBQaXBlc1xuICAgICAgICBGb3JtQ29udHJvbFBpcGUsXG4gICAgICAgIERyb3Bkb3duQ291bnRQaXBlLFxuICAgICAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG4gICAgICAgIERyb3Bkb3duT3B0aW9uc1BpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25HZXRJY29uc1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FJbnB1dERyb3Bkb3duVGVzdENvbXBvbmVudFxuICAgIGltcGxlbWVudHNcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBBZnRlclZpZXdJbml0XG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFJlZiE6IElucHV0VGVzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCd0MicpIHB1YmxpYyBwb3BvdmVyUmVmITogTmdiUG9wb3ZlcjtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbXBvbmVudFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBhbnk7XG5cbiAgICAvLyBMYWJlbCBpbnB1dCAtIHZhbHVlIHRoYXQgd2lsbCBiZSBzaG93ZWQgaW5zaWRlIGlucHV0XG4gICAgQElucHV0KCkgbGFiZWwhOiBrZXlvZiBJT3B0aW9uTW9kZWw7XG5cbiAgICAvLyBvcHRpb25WYWx1ZSBpbnB1dCAtIGtleSB2YWx1ZSBmcm9tIG9iamVjdCAtIEVtaXQgdGhpcyBpZiB5b3Ugd2FudCB0byBzZXQgd2hvbGUgb2JqZWN0XG4gICAgQElucHV0KCkgb3B0aW9uVmFsdWUhOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgaW5wdXRIb3ZlcmVkSXRlbTogbnVtYmVyID0gLTE7XG4gICAgcHVibGljIGlzRHJvcERvd25Jc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIGRpZmZlcmVudCB0ZW1wbGF0ZXMgZm9yIGJvZHkgcmVuZGVyaW5nXG4gICAgcHVibGljIF90ZW1wbGF0ZSE6IHN0cmluZztcbiAgICBfY2FuQWRkTmV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzZXQgdGVtcGxhdGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG11bHRpc2VsZWN0VGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW5wdXRDb25maWchOiBJQ2FJbnB1dDtcbiAgICBASW5wdXQoKSBzZXQgY2FuQWRkTmV3KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NhbkFkZE5ldyA9IHZhbHVlO1xuICAgIH0gLy8gQUREIE5FVyBpdGVtIGluIG9wdGlvbnNcblxuICAgIHB1YmxpYyBnZXQgY2FuQWRkTmV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FuQWRkTmV3O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGNhbk9wZW5Nb2RhbCE6IGJvb2xlYW47IC8vIG9wZW4gbW9kYWwgd2l0aCBBREQgTkVXIGJ1dHRvblxuXG4gICAgLy8gc29ydC10ZW1wbGF0ZSBmb3IgZGlmZmVyZW50IG9wdGlvbnNcbiAgICBwdWJsaWMgX3NvcnQhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2V0IHNvcnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zb3J0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgICB9XG5cbiAgICAvLyBjdXJyZW50bHkgYWN0aXZlIGl0ZW1cbiAgICBwdWJsaWMgX2FjdGl2ZUl0ZW0hOiBJT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNldCBhY3RpdmVJdGVtKHZhbHVlOiBJT3B0aW9uTW9kZWwgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVJdGVtO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGFjdGl2ZUl0ZW1Db2xvciE6IElPcHRpb25Nb2RlbCB8IG51bGw7IC8vIGN1cnJlbnRseSBhY3RpdmUgY29sb3IgaW4gZHJvcGRvd25cbiAgICBASW5wdXQoKSBsYWJlbE1vZGUhOiAnTGFiZWwnIHwgJ0NvbG9yJztcblxuICAgIC8vIHdoZW4gc2VuZCBTVkcsIHBsZWFzZSBwcmVtbWFwZWQgb2JqZWN0OiBhZGQgJ2ZvbGRlcicgfCAnc3ViZm9sZGVyJ1xuICAgIHB1YmxpYyBfb3B0aW9uczogSU9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZXM6IElPcHRpb25Nb2RlbFtdKSB7XG4gICAgICAgIGlmICh2YWx1ZXMpIHRoaXMuX29wdGlvbnMgPSBbLi4udmFsdWVzXTtcblxuICAgICAgICBjb25zb2xlLmxvZyhcInVwZGF0ZSB3aXRoIG9wdGluc1wiLCB2YWx1ZXMsIHRoaXMuZmlyc3RXcml0ZVZhbHVlKTtcbiAgICAgICAgaWYgKHRoaXMuZmlyc3RXcml0ZVZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLndyaXRlVmFsdWVUb0Zvcm1Db250cm9sKHRoaXMuZmlyc3RXcml0ZVZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIE11bHRpU2VsZWN0IFNlbGVjdGVkIEl0ZW1zIEZyb20gQmFja2VuZFxuICAgIEBJbnB1dCgpIHNldCBwcmVsb2FkTXVsdGlzZWxlY3RJdGVtcyh2YWx1ZXM6IElPcHRpb25Nb2RlbFtdKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIGlmICghdmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKHRoaXMuaW5wdXRDb25maWcubGFiZWwpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHZhbHVlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbk11bHRpc2VsZWN0U2VsZWN0KGl0ZW0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgQElucHV0KCkgaXNEZXRhaWxzUGFnZXMhOiBib29sZWFuOyAvLyBvbmx5IGZvciBkZXRhaWxzIHBhZ2VzXG4gICAgQElucHV0KCkgaXNJbmNvcnJlY3RWYWx1ZSE6IGJvb2xlYW47IC8vIGFwcGxpY2FudCByZXZpZXcgb3B0aW9uXG4gICAgQElucHV0KCkgaXNBZGRyZXNzRHJvcGRvd24hOiBib29sZWFuOyAvLyBvbmx5IGZvciBhZGRyZXNzIGRyb3Bkb3duXG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWRJdGVtOiBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbCB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbXM6IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWxbXSB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWxbXSB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbUNvbG9yOiBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsIHwgbnVsbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbCB8IG51bGw+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGVkTGFiZWxNb2RlOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBjbG9zZURyb3Bkb3duOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHNhdmVJdGVtOiBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBkYXRhOiBJT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgICAgICBhY3Rpb246IHN0cmluZztcbiAgICB9PiA9IG5ldyBFdmVudEVtaXR0ZXI8eyBkYXRhOiBJT3B0aW9uTW9kZWwgfCBudWxsOyBhY3Rpb246IHN0cmluZyB9PigpO1xuICAgIEBPdXRwdXQoKSBpbmNvcnJlY3RFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBwbGFjZWhvbGRlckljb25FdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoJ3BhZ2luYXRpb24nKSBwYWdpbmF0aW9uRXZlbnQ6IEV2ZW50RW1pdHRlcjxudW1iZXI+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG4gICAgQE91dHB1dCgnYWN0aXZlR3JvdXAnKSBhY3RpdmVHcm91cEV2ZW50OiBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsPigpO1xuICAgIEBPdXRwdXQoJ2NsZWFySW5wdXRFdmVudCcpIGNsZWFySW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gICAgQE91dHB1dCgnc2VhcmNoSW5wdXRFdmVudCcpIHNlYXJjaElucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxzdHJpbmc+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgLy8gZXZlbnRzXG4gICAgcHVibGljIHNlYXJjaElucHV0VGV4dCA9IG5ldyBFdmVudElucHV0TWFuYWdlcjxzdHJpbmc+KFxuICAgICAgICBudWxsLFxuICAgICAgICB0aGlzLnNlYXJjaElucHV0RXZlbnRcbiAgICApO1xuXG4gICAgLy8gQ29weSBvZiBPcHRpb25zXG4gICAgcHVibGljIG9yaWdpbmFsT3B0aW9uczogSU9wdGlvbk1vZGVsW10gPSBbXTtcblxuICAgIC8vIFBhZ2luYXRpb25cbiAgICBwdWJsaWMgcGFnaW5hdGlvbk51bWJlcjogbnVtYmVyID0gMDtcblxuICAgIC8vIE11bHRpc2VsZWN0IGRyb3Bkb3duIG9wdGlvbnNcbiAgICBwdWJsaWMgbXVsdGlzZWxlY3RJdGVtczogSU9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBwdWJsaWMgaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgbXVsdGlTZWxlY3RMYWJlbCE6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBwdWJsaWMgbGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSE6IElPcHRpb25Nb2RlbCB8IG51bGw7XG5cbiAgICAvLyBBZGQgbW9kZVxuICAgIHB1YmxpYyBpc0luQWRkTW9kZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gRHJvcGRvd24gbmF2aWdhdGlvbiB3aXRoIGtleWJvYXJkXG4gICAgcHJpdmF0ZSBkcm9wZG93blBvc2l0aW9uOiBudW1iZXIgPSAtMTtcblxuICAgIC8vIERyb3Bkb3duIENsZWFydGltZW91dFxuICAgIHB1YmxpYyBjbGVhclRpbWVvdXREcm9wZG93bjogc3RyaW5nIHwgbnVtYmVyIHwgTm9kZUpTLlRpbWVvdXQgfCB1bmRlZmluZWQ7XG5cbiAgICBwdWJsaWMgaG92ZXJpbmdJbmRleCE6IG51bWJlcjtcbiAgICBwdWJsaWMgaW5wdXREcm9wZG93blN2Z1JvdXRlcyA9IElucHV0RHJvcGRvd25TdmdSb3V0ZXM7XG4gICAgcHVibGljIGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bSA9IERyb3Bkb3duVGVtcGxhdGVUeXBlRW51bTtcblxuICAgIC8vIERlc3Ryb3lcbiAgICBwcml2YXRlIGRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAU2VsZigpIHB1YmxpYyBzdXBlckNvbnRyb2w6IE5nQ29udHJvbCxcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMlxuICAgICkge1xuICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgICB9XG5cbiAgICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW5wdXRGb3JtQ29udHJvbDogRm9ybUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2wobnVsbCk7XG5cbiAgICBwdWJsaWMgbGFzdFZhbGlkT3B0aW9uITogSU9wdGlvbk1vZGVsO1xuICAgIHB1YmxpYyBmaXJzdFdyaXRlVmFsdWU6IGFueTtcbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBzdHJpbmcgfCBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJXUklURSBWQUxVRSBGSVJTVFwiLCB2YWx1ZSk7XG4gICAgICAgIHRoaXMuZmlyc3RXcml0ZVZhbHVlID0gdmFsdWU7XG4gICAgICAgIHRoaXMud3JpdGVWYWx1ZVRvRm9ybUNvbnRyb2wodmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlVG9Gb3JtQ29udHJvbCh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGZpbmRJbk9wdGlvbnMgPSB0aGlzLmlucHV0Q29uZmlnLnNlYXJjaGluR3JvdXBJbmRleFxuICAgICAgICAgICAgPyB0aGlzLmdldE1haW5Hcm91cCgpXG4gICAgICAgICAgICA6IHRoaXMuX29wdGlvbnM7XG5cbiAgICAgICAgbGV0IGZpbmRPcHRpb24gPSBmaW5kSW5PcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAob3B0aW9uKSA9PiBvcHRpb25bdGhpcy5vcHRpb25WYWx1ZSBhcyBrZXlvZiBJT3B0aW9uTW9kZWxdID09IHZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgbGV0IG9wdGlvbk5vdEZvdW5kID0gZmFsc2U7XG4gICAgICAgIGlmICghZmluZE9wdGlvbiAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgZmluZE9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICBbdGhpcy5vcHRpb25WYWx1ZV06IHRoaXMuZmlyc3RXcml0ZVZhbHVlLFxuICAgICAgICAgICAgICAgIFt0aGlzLmxhYmVsXTogdGhpcy5maXJzdFdyaXRlVmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgb3B0aW9uTm90Rm91bmQgPSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbmRPcHRpb24pIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJvcGRvd25WYWx1ZSh7XG4gICAgICAgICAgICAgICAgb3B0aW9uOiBmaW5kT3B0aW9uLFxuICAgICAgICAgICAgICAgIHNldE5vdEZvdW5kRXJyb3I6IG9wdGlvbk5vdEZvdW5kLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Tm90Rm91bmRJbnZhbGlkRmxhZyh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5nZXRTdXBlckNvbnRyb2wpXG4gICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRTdXBlckNvbnRyb2wgYXMgQWJzdHJhY3RDb250cm9sV2l0aE5vdEZvdW5kVHlwZVxuICAgICAgICAgICAgKS5ub3RGb3VuZEludmFsaWQgPSB2YWx1ZTsgLy8gQXR0YWNoIGR5bmFtaWMgdmFsdWVzXG4gICAgICAgICh0aGlzLmlucHV0Rm9ybUNvbnRyb2wgYXMgRm9ybUNvbnRyb2xXaXRoTm90Rm91bmRUeXBlKS5ub3RGb3VuZEludmFsaWQgPVxuICAgICAgICAgICAgdmFsdWU7IC8vIEF0dGFjaCBkeW5hbWljIHZhbHVlc1xuICAgIH1cblxuICAgIHB1YmxpYyBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbiAgICBwdWJsaWMgb25DaGFuZ2UoXzogYW55KTogdm9pZCB7fVxuXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vblRvdWNoZWQgPSBmbjtcbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgLy8gTXVsdGlzZWxlY3RcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubXVsdGlzZWxlY3REcm9wZG93bikge1xuICAgICAgICAgICAgdGhpcy5tdWx0aVNlbGVjdExhYmVsID0gdGhpcy5pbnB1dENvbmZpZy5sYWJlbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgICAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgICAgICAgICBza2lwKDEpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoc2VhcmNoVGV4dCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmxhYmVsTW9kZSA9PT0gJ0NvbG9yJykge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KHNlYXJjaFRleHQgfHwgJycpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmF1dG9Gb2N1cykge1xuICAgICAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZi5vcGVuKCk7XG4gICAgICAgICAgICB9LCA0NTApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2Nyb2xsRHJvcGRvd24oZXZlbnQ6IEV2ZW50VGFyZ2V0IHwgbnVsbCkge1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudCBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICBpZiAodGFyZ2V0LnNjcm9sbFRvcCArIHRhcmdldC5vZmZzZXRIZWlnaHQgPT09IHRhcmdldC5zY3JvbGxIZWlnaHQpIHtcbiAgICAgICAgICAgIHRoaXMucGFnaW5hdGlvbk51bWJlciArPSAxO1xuXG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25FdmVudC5lbWl0KHRoaXMucGFnaW5hdGlvbk51bWJlcik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25BY3RpdmVJdGVtKG9wdGlvbjogSU9wdGlvbk1vZGVsLCBncm91cD86IGFueSk6IHZvaWQge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgb3B0aW9uPy5bdGhpcy5sYWJlbF0/LnRvTG93ZXJDYXNlKCkgPT09ICdhZGQgbmV3J1xuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgIGlkOiA3NjU1LFxuICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXLFxuICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHsgb3B0aW9uIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbUdyb3VwKGV2ZW50OiB7IG9wdGlvbjogSU9wdGlvbk1vZGVsOyBncm91cDogYW55IH0pIHtcbiAgICAgICAgdGhpcy5vbkFjdGl2ZUl0ZW0oZXZlbnQub3B0aW9uLCBldmVudC5ncm91cCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2xlYXJTZWFyY2goKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gPSAtMTtcblxuICAgICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZSgnJyk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChudWxsKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xlYXJEcm9wZG93bkxhYmVsKCkge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5hY3RpdmVJdGVtQ29sb3IgPSBudWxsO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNvbG9yLmVtaXQobnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29tbWFuZEV2ZW50KGV2ZW50OiBDb21tYW5kc0V2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdFZGl0IElucHV0Jykge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdDb2xvcicpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdUb2dnbGUgRHJvcGRvd24nKSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NvbmZpcm0nICYmIGV2ZW50Lm1vZGUgPT09ICduZXcnKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE5ld0l0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnZWRpdCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSXRlbSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ1BsYWNlaG9sZGVyIEljb24gRXZlbnQnKSB7XG4gICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVySWNvbkV2ZW50LmVtaXQodHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY2FuY2VsJykge1xuICAgICAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogJ2NhbmNlbCcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGROZXdJdGVtKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgaWQ6IHBhcnNlSW50KHV1aWR2NCgpKSxcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sIS52YWx1ZSxcbiAgICAgICAgfTtcbiAgICAgICAgLy90aGlzLmlucHV0Q29uZmlnLmNvbW1hbmRzIS5hY3RpdmUgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1Zpc2libGVDb21tYW5kcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7IGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sIGFjdGlvbjogJ25ldycgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZExhYmVsTW9kZS5lbWl0KCdMYWJlbCcpO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc1RvdWNoZWRJbnB1dCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgdXBkYXRlSXRlbSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbCkge1xuICAgICAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgICAgICAuLi50aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgICAgIG5hbWU6IHRoaXMuZ2V0U3VwZXJDb250cm9sPy52YWx1ZSxcbiAgICAgICAgICAgICAgICBjb2xvcklkOiB0aGlzLmFjdGl2ZUl0ZW1Db2xvclxuICAgICAgICAgICAgICAgICAgICA/IHRoaXMuYWN0aXZlSXRlbUNvbG9yLmlkXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29sb3JJZCxcbiAgICAgICAgICAgICAgICBjb2xvcjogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5uYW1lXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29sb3IsXG4gICAgICAgICAgICAgICAgY29kZTogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5jb2RlXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5fYWN0aXZlSXRlbT8uY29kZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWUsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zYXZlSXRlbS5lbWl0KHtcbiAgICAgICAgICAgIGRhdGE6IHRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICBhY3Rpb246ICdlZGl0JyxcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE5ld0NvbmZpZygpIHtcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZyA9IHtcbiAgICAgICAgICAgIC4uLnRoaXMuaW5wdXRDb25maWcsXG4gICAgICAgICAgICBjb21tYW5kczoge1xuICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB0eXBlOiAnY29uZmlybS1jYW5jZWwnLFxuICAgICAgICAgICAgICAgIGZpcnN0Q29tbWFuZDoge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NvbmZpcm0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzMwNzRkMycsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjb25maXJtJyxcbiAgICAgICAgICAgICAgICAgICAgc3ZnOiBJbnB1dERyb3Bkb3duU3ZnUm91dGVzLnNwZWNDb25maXJtU3ZnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2Vjb25kQ29tbWFuZDoge1xuICAgICAgICAgICAgICAgICAgICBwb3B1cDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogJ0NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICcjMmYyZjJmJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2NhbmNlbCcsXG4gICAgICAgICAgICAgICAgICAgIHN2ZzogSW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmcsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogJycsXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuaXNJbkFkZE1vZGUgPSB0cnVlO1xuICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gZmFsc2U7XG4gICAgICAgIH0sIDIwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSW5jb3JyZWN0SW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5pbmNvcnJlY3RFdmVudC5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaWRlbnRpdHkoaW5kZXg6IG51bWJlciwgaXRlbTogSU9wdGlvbk1vZGVsKTogbnVtYmVyIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU5lc3RlZExpc3Qob3B0aW9uOiBJT3B0aW9uTW9kZWwpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9wdGlvbi5vcGVuKSB7XG4gICAgICAgICAgICBvcHRpb24ub3BlbiA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiAoaXRlbS5vcGVuID0gZmFsc2UpKTtcblxuICAgICAgICBvcHRpb24ub3BlbiA9ICFvcHRpb24ub3BlbjtcblxuICAgICAgICBpZiAob3B0aW9uLm9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlR3JvdXBFdmVudC5lbWl0KG9wdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFySW5wdXRFdmVudChldmVudDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLmNsZWFySW5wdXRFdmVudC5lbWl0KGV2ZW50KTtcblxuICAgICAgICBpZiAoZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgICAgIC8vIGxhYmVsIGRyb3Bkb3duXG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNsZWFyRHJvcGRvd25MYWJlbCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gbm9ybWFsIGRyb3Bkb3duXG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uQ2xlYXJTZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVIaWRkZW5Ecm9wZG93bigpIHtcbiAgICAgICAgdGhpcy5pc0Ryb3BEb3duSXNPcGVuID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKHRoaXMuZHJvcGRvd25WYWx1ZSB8fCAnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYW5kbGVPcGVuRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaXNEcm9wRG93bklzT3BlbiA9IHRydWU7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3dIaWRlRHJvcGRvd24oYWN0aW9uOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBhY3Rpb247XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgIT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIS5zZXRWYWx1ZShudWxsKTtcblxuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRGV0YWlscyBwYWdlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmN1c3RvbUNsYXNzPy5pbmNsdWRlcygnZGV0YWlscy1wYWdlcycpICYmXG4gICAgICAgICAgICAhYWN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdCh0aGlzLl9hY3RpdmVJdGVtKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNYWluR3JvdXAoKSB7XG4gICAgICAgIGxldCBtYWluR3JvdXA6IElPcHRpb25Nb2RlbFtdID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMubWFwKChncm91cHMpID0+IHtcbiAgICAgICAgICAgIG1haW5Hcm91cC5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLmdyb3Vwc1tcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXggYXMga2V5b2YgSU9wdGlvbk1vZGVsXG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIG1haW5Hcm91cDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZHJvcERvd25LZXlOYXZpZ2F0aW9uKHtcbiAgICAgICAga2V5Q29kZSxcbiAgICAgICAgZGF0YSxcbiAgICB9OiB7XG4gICAgICAgIGtleUNvZGU6IG51bWJlcjtcbiAgICAgICAgZGF0YTogYW55O1xuICAgIH0pIHtcbiAgICAgICAgLy8gTmF2aWdhdGUgZG93blxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gNDApIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25OYXZpZ2F0aW9uKDEpO1xuICAgICAgICB9XG4gICAgICAgIC8vIE5hdmlnYXRlIHVwXG4gICAgICAgIGlmIChrZXlDb2RlID09PSAzOCkge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bk5hdmlnYXRpb24oLTEpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gUHJlc3MgJ2VudGVyJ1xuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMTMpIHtcbiAgICAgICAgICAgIGxldCBzZWxlY3RlZEl0ZW07XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXgpIHtcbiAgICAgICAgICAgICAgICBsZXQgbWFpbkdyb3VwID0gdGhpcy5nZXRNYWluR3JvdXAoKTtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0gPSBtYWluR3JvdXBbdGhpcy5pbnB1dEhvdmVyZWRJdGVtXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID1cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID4gLTFcbiAgICAgICAgICAgICAgICAgICAgICAgID8gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5vcHRpb25zW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogeyBbdGhpcy5sYWJlbF06ICcnIH07XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmNhbk9wZW5Nb2RhbCAmJlxuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbT8uW3RoaXMubGFiZWxdPy50b0xvd2VyQ2FzZSgpID09PSAnYWRkIG5ldydcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQoe1xuICAgICAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogRHJvcGRvd25TdHJpbmdFbnVtLkFERF9ORVcsXG4gICAgICAgICAgICAgICAgICAgIGNhbk9wZW5Nb2RhbDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREcm9wZG93blZhbHVlKHsgb3B0aW9uOiBzZWxlY3RlZEl0ZW0gfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gOSkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnBvcG92ZXJSZWYuaXNPcGVuKCkpIHRoaXMucG9wb3ZlclJlZj8ub3BlbigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldERyb3Bkb3duVmFsdWUoe1xuICAgICAgICBvcHRpb24sXG4gICAgICAgIG9wdGlvblZhbHVlLFxuICAgICAgICBsYWJlbCxcbiAgICAgICAgc2V0Tm90Rm91bmRFcnJvcixcbiAgICB9OiBTZWxlY3REcm9wZG93blZhbHVlVHlwZSkge1xuICAgICAgICB0aGlzLnNldE5vdEZvdW5kSW52YWxpZEZsYWcoc2V0Tm90Rm91bmRFcnJvciB8fCBmYWxzZSk7XG4gICAgICAgIHRoaXMubGFzdFZhbGlkT3B0aW9uID0gb3B0aW9uO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KG9wdGlvbik7XG4gICAgICAgIGNvbnN0IG9wdFZhbHVlID0gb3B0aW9uVmFsdWUgPyBvcHRpb25WYWx1ZSA6IHRoaXMub3B0aW9uVmFsdWU7XG4gICAgICAgIGNvbnN0IGxiZWwgPSBsYWJlbCA/IGxhYmVsIDogdGhpcy5sYWJlbDtcbiAgICAgICAgY29uc3QgY29udHJvbFZhbHVlID0gb3B0VmFsdWVcbiAgICAgICAgICAgID8gb3B0aW9uW29wdFZhbHVlIGFzIGtleW9mIElPcHRpb25Nb2RlbF1cbiAgICAgICAgICAgIDogb3B0aW9uO1xuXG4gICAgICAgIGNvbnN0IGlucHV0VmFsdWUgPSBvcHRpb25bbGJlbCBhcyBrZXlvZiBJT3B0aW9uTW9kZWxdIHx8IGNvbnRyb2xWYWx1ZTtcblxuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gb3B0aW9uO1xuICAgICAgICB0aGlzLnNldENvbnRyb2xWYWx1ZShjb250cm9sVmFsdWUsIGlucHV0VmFsdWUpO1xuICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG5cbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG4gICAgfVxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgTXVsdGlzZWxlY3QgRHJvcGRvd24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIHB1YmxpYyBvbk11bHRpc2VsZWN0U2VsZWN0KG9wdGlvbjogSU9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMgPSBmYWxzZTtcbiAgICAgICAgLy90aGlzLmlucHV0Q29uZmlnLmxhYmVsID0gdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmICh0aGlzLm11bHRpc2VsZWN0SXRlbXMuc29tZSgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoaXRlbS5pZCA9PT0gb3B0aW9uLmlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghaXRlbS5hY3RpdmUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gdGhpcy5fb3B0aW9ucy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKTtcblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdCh0aGlzLm11bHRpc2VsZWN0SXRlbXMpO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLnNvcnQoXG4gICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuYWN0aXZlKSAtIE51bWJlcih4LmFjdGl2ZSlcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSBbLi4udGhpcy5fb3B0aW9uc107XG5cbiAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5hY3RpdmUpXG4gICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0UmVmKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZGV4OiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMub3JpZ2luYWxPcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IHRoaXMubXVsdGlzZWxlY3RJdGVtc1tpbmRleF0uaWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi50aGlzLm11bHRpc2VsZWN0SXRlbXNbaW5kZXhdLFxuICAgICAgICAgICAgICAgICAgICBhY3RpdmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gaXRlbTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMuc29ydChcbiAgICAgICAgICAgICh4LCB5KSA9PiBOdW1iZXIoeS5hY3RpdmUpIC0gTnVtYmVyKHguYWN0aXZlKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gdGhpcy5fb3B0aW9ucztcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLm11bHRpc2VsZWN0SXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gdGhpcy5fb3B0aW9uc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgICAgIC5zbGljZSgtMSlbMF07XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChcbiAgICAgICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4geyAuLi5pdGVtIH07XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHB1YmxpYyBkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKGN1cnJlbnRMYWJlbD86IHN0cmluZykge1xuICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMgPSBbXTtcbiAgICAgICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuX29wdGlvbnMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtcy5lbWl0KG51bGwpO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IG51bGw7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKSB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gIXRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXM7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNNdWx0aVNlbGVjdElucHV0Rm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgMTUwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNGb2N1c0lucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgRW5kIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAgIHB1YmxpYyBkcm9wZG93blZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgICBwdWJsaWMgc2V0Q29udHJvbFZhbHVlKHZhbHVlPzogc3RyaW5nLCBkcm9wZG93bklucHV0VmFsdWU/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSh2YWx1ZSk7IC8vIE5vdGlmeSBBbmd1bGFyIGZvcm0gYWJvdXQgdGhlIGNoYW5nZVxuICAgICAgICBpZiAodmFsdWUpIHRoaXMub25Ub3VjaGVkKCk7IC8vIE1hcmsgYXMgdG91Y2hlZFxuICAgICAgICB0aGlzLmRyb3Bkb3duVmFsdWUgPSBkcm9wZG93bklucHV0VmFsdWUgfHwgdmFsdWU7XG4gICAgICAgIHRoaXMuaW5wdXRGb3JtQ29udHJvbC5wYXRjaFZhbHVlKGRyb3Bkb3duSW5wdXRWYWx1ZSB8fCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogTmF2aWdhdGUgdGhyb3VnaCBkcm9wZG93biB3aXRoIGtleWJvYXJkIGFycm93c1xuICAgICAqL1xuICAgIHByaXZhdGUgZHJvcGRvd25OYXZpZ2F0aW9uKHN0ZXA6IG51bWJlcikge1xuICAgICAgICBjb25zdCBuZXh0U3RlcCA9IHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSArIHN0ZXA7XG5cbiAgICAgICAgaWYgKG5leHRTdGVwID4gdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kcm9wZG93bk9wdGlvbi5sZW5ndGggLSAxKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gMDtcbiAgICAgICAgZWxzZSBpZiAobmV4dFN0ZXAgPCAwKVxuICAgICAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID1cbiAgICAgICAgICAgICAgICB0aGlzLmRyb3Bkb3duQ29tcG9uZW50UmVmLmRyb3Bkb3duT3B0aW9uLmxlbmd0aCAtIDE7XG4gICAgICAgIGVsc2UgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gbmV4dFN0ZXA7XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLmNvbXBsZXRlKCk7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duKTtcbiAgICB9XG59XG4iLCI8ZGl2XG4gICAgY2xhc3M9XCJhcHBsaWNhdGlvbi1kcm9wZG93blwiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGlucHV0Q29uZmlnXG4gICAgICAgICAgICB8IGlucHV0RHJvcGRvd25NdWx0aXNlbGVjdENsYXNzXG4gICAgICAgICAgICAgICAgOiBtdWx0aXNlbGVjdEl0ZW1zXG4gICAgICAgICAgICAgICAgOiBpc011bHRpU2VsZWN0SW5wdXRGb2N1c1xuICAgIFwiXG4+XG4gICAgQGlmIChtdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICA8cCBjbGFzcz1cIm11bHRpc2VsZWN0LWxhYmVsXCI+XG4gICAgICAgICAgICB7eyBtdWx0aVNlbGVjdExhYmVsIH19XG4gICAgICAgIDwvcD5cbiAgICB9XG5cbiAgICBAaWYgKGlucHV0Q29uZmlnLm11bHRpU2VsZWN0RHJvcGRvd25BY3RpdmUpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBhcnJvdyAtLT5cbiAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICBjbGFzcz1cIm11bHRpc2VsZWN0LWFycm93XCJcbiAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy5pbnB1dERyb3Bkb3duQXJyb3dTdmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZU11bHRpc2VsZWN0RHJvcGRvd24oKVwiXG4gICAgICAgID48L3N2Zy1pY29uPlxuICAgIH1cblxuICAgIEBpZiAobXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiYgIWlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgICAgPCEtLSBNdWx0aXNlbGVjdCBjbGVhciBhbGwgLS0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtY2xlYXIgbXVsdGlzZWxlY3QtY2xlYXJcIlxuICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhciBBbGxcIlxuICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgdG9vbHRpcEJhY2tncm91bmQ9XCIjMmYyZjJmXCJcbiAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVBbGxNdWx0aVNlbGVjdEl0ZW1zKClcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyLXhcIlxuICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIGlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24gJiZcbiAgICAgICAgbXVsdGlzZWxlY3RJdGVtcy5sZW5ndGggJiZcbiAgICAgICAgX3RlbXBsYXRlID09PSAnbXVsdGlzZWxlY3QnXG4gICAgKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgaXRlbXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtcyB7eyBtdWx0aXNlbGVjdFRlbXBsYXRlIH19XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPiA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0IG9mIG11bHRpc2VsZWN0SXRlbXM7XG4gICAgICAgICAgICAgICAgdHJhY2sgJGluZGV4O1xuICAgICAgICAgICAgICAgIGxldCBpbmQgPSAkaW5kZXhcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSAtIFRvdGFsIENvdW50ZXIgLS0+XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19IG9mXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm11bHRpU2VsZWN0SXRlbVJhbmdlICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAhbXVsdGlTZWxlY3Q/LnRvdGFsQ291bnRlclxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py5hY3RpdmVDb3VudGVyIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAaWYgKCFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEFjdGl2ZSBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyZW1vdmVNdWx0aVNlbGVjdEl0ZW0oaW5kKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1pdGVtLWNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVG9vbHRpcD1cIkNsZWFyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZ2JUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb249XCJ0b3BcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiaW5wdXREcm9wZG93blN2Z1JvdXRlcy54Q2xlYXJTdmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gc2VhcmNoIC0tPlxuXG4gICAgQGlmICghaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgQGlmICghc2VhcmNoSW5wdXRUZXh0LnZhbHVlKSB7XG4gICAgICAgICAgICA8IS0tIDxkaXZcbiAgICAgICAgICAgIChzY3JvbGwpPVwib25TY3JvbGxEcm9wZG93bigkZXZlbnQudGFyZ2V0KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgc2Nyb2xsOiBfb3B0aW9ucyB8IGNhRHJvcGRvd25Db3VudDogX3RlbXBsYXRlLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnbG9hZC1icm9rZXItY29udGFjdCcsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgJ21lcmdlLWRyb3Bkb3duLWJvZHktd2l0aC1pbnB1dCc6XG4gICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICduby1yZXN1bHQtY29udGFpbmVyJzogX29wdGlvbnNbMF0/Lm5hbWUgPT09ICdObyBSZXN1bHRzJyxcbiAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucyAge3sgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzIH19XCJcbiAgICAgICAgPiAtLT5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbY2xhc3Mub3Blbl09XCJpc0Ryb3BEb3duSXNPcGVuXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MubGVmdEljb25dPVwiaW5wdXRDb25maWcucGxhY2Vob2xkZXJJY29uXCJcbiAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbDogX29wdGlvbnMgfCBjYURyb3Bkb3duQ291bnQ6IF90ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2dyb3VwcycgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2xvYWQtYnJva2VyLWNvbnRhY3QnLFxuICAgICAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdmdWVsLWZyYW5jaGlzZScsXG4gICAgICAgICAgICAgICAgICAgICdtZXJnZS1kcm9wZG93bi1ib2R5LXdpdGgtaW5wdXQnOlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZScsXG4gICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bl92YWx1ZSBkcm9wZG93bi1vcHRpb25zICB7e1xuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3NcbiAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgQHN3aXRjaCAoX3RlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVTX1RURCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbiBkcm9wZG93bi1kb3VibGUtY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd05vUmVzdWxzdF09XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW0hXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9TSElQUEVSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSX0NPTlRBQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJsb2FkLWJyb2tlci1jb250YWN0LWdyb3Vwc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duV2l0aEltYWdlXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0luT3B0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBkZWZhdWx0IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gU3BlY2lhbCBEcm9wZG93biBTZWxlY3RlZCBTVkcgd2l0aCBvciBXaXRob3V0IFRleHQgLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dCAmJiBhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbnB1dERyb3Bkb3duR2V0SWNvbnM6IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1zZWxlY3RlZC1pbWFnZSB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bnNldC1jb2xvcic6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py5jbGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdmdTdHlsZV09XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsOiBpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW0/LmNvZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcjZmZmZmZmJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnLWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0Py53aXRoVGV4dCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICFpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRyb3Bkb3duVmFsdWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPGNhLWlucHV0LXRlc3RcbiAgICAgICAgICAgICN0Mj1cIm5nYlBvcG92ZXJcIlxuICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJjYS1pbnB1dC1kcm9wZG93blwiXG4gICAgICAgICAgICBbYXV0b0Nsb3NlXT1cIidvdXRzaWRlJ1wiXG4gICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICBbcGxhY2VtZW50XT1cIlxuICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PSAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSdcbiAgICAgICAgICAgICAgICAgICAgPyBbJ2JvdHRvbS1sZWZ0JywgJ3RvcC1sZWZ0J11cbiAgICAgICAgICAgICAgICAgICAgOiBbJ2JvdHRvbS1sZWZ0J11cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAjaW5wdXRcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJpbnB1dEZvcm1Db250cm9sIHwgZm9ybUNvbnRyb2xcIlxuICAgICAgICAgICAgW3BhcmVudENvbnRyb2xdPVwiZ2V0U3VwZXJDb250cm9sXCJcbiAgICAgICAgICAgIFtpbmNvcnJlY3RWYWx1ZV09XCJpc0luY29ycmVjdFZhbHVlXCJcbiAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICBbc2VsZWN0ZWREcm9wZG93bkxhYmVsQ29sb3JdPVwiXG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25MYWJlbFxuICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgID8gYWN0aXZlSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgOiBhY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgW3RlbXBsYXRlXT1cIl90ZW1wbGF0ZVwiXG4gICAgICAgICAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICAgICAgKGNsZWFyKT1cIm9uQ2xlYXJJbnB1dEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKGNvbW1hbmRFdmVudCk9XCJjb21tYW5kRXZlbnQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoc2hvd0hpZGVEcm9wZG93bik9XCJzaG93SGlkZURyb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgKGRyb3BEb3duS2V5TmF2aWdhdGlvbik9XCJkcm9wRG93bktleU5hdmlnYXRpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoaW5jb3JyZWN0RXZlbnQpPVwib25JbmNvcnJlY3RJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChoaWRkZW4pPVwiaGFuZGxlSGlkZGVuRHJvcGRvd24oKVwiXG4gICAgICAgICAgICAoc2hvd24pPVwiaGFuZGxlT3BlbkRyb3Bkb3duKClcIlxuICAgICAgICA+PC9jYS1pbnB1dC10ZXN0PlxuICAgIH1cblxuICAgIDwhLS0gRHJvcGRvd24gaWNvbiBpbnN0ZWFkIG9mIGlucHV0IC0tPlxuICAgIEBpZiAoaW5wdXRDb25maWcuaXNJY29uSW5wdXQpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgaW5wdXQtaWNvbi1jb250YWluZXJcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHZhbGlkOlxuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5pc1ZhbGlkSWNvbiAmJlxuICAgICAgICAgICAgICAgICAgICAhaW5wdXRDb25maWcuaW5wdXRJY29uPy5pbmNsdWRlcygnY3VzdG9tJyksXG4gICAgICAgICAgICAgICAgYWN0aXZlOiBwb3BvdmVyUmVmPy5pc09wZW4oKSxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnLWljb25cbiAgICAgICAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBbbmdiUG9wb3Zlcl09XCJjYUlucHV0RHJvcGRvd25Qb3BvdmVyXCJcbiAgICAgICAgICAgICAgICBwb3BvdmVyQ2xhc3M9XCJjYS1pbnB1dC1kcm9wZG93blwiXG4gICAgICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgICAgIFtjb250YWluZXJdPVwiJ2JvZHknXCJcbiAgICAgICAgICAgICAgICBbcGxhY2VtZW50XT1cIlsnYm90dG9tLWxlZnQnXVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1pY29uXCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICBpbnB1dERyb3Bkb3duU3ZnUm91dGVzLnJlcGFpclBtU3ZnUm91dGUgK1xuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5pbnB1dEljb25cbiAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgPjwvc3ZnLWljb24+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNjYUlucHV0RHJvcGRvd25Qb3BvdmVyPlxuICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERyb3Bkb3duIG9wdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuICAgIEBpZiAoaW5wdXRDb25maWc/Lm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0ICYmIF9vcHRpb25zPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zLWRpdmlkZXIge3tcbiAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3NcbiAgICAgICAgICAgIH19XCJcbiAgICAgICAgICAgIFtjbGFzcy5kaXNwYXRjaF9kcm9wZG93bl09XCJfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXCJcbiAgICAgICAgPjwvZGl2PlxuICAgIH1cblxuICAgIEBpZiAoXG4gICAgICAgIChpbnB1dENvbmZpZz8ubmFtZSAhPSAnQWRkcmVzcycgJiZcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lICE9ICdSb3V0aW5nQWRkcmVzcycgJiZcbiAgICAgICAgICAgICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB8fFxuICAgICAgICAoKGlucHV0Q29uZmlnPy5uYW1lID09ICdBZGRyZXNzJyB8fFxuICAgICAgICAgICAgaW5wdXRDb25maWc/Lm5hbWUgPT0gJ1JvdXRpbmdBZGRyZXNzJykgJiZcbiAgICAgICAgICAgICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkICYmXG4gICAgICAgICAgICBfb3B0aW9ucz8ubGVuZ3RoKVxuICAgICkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsRHJvcGRvd24oJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHNjcm9sbDogX29wdGlvbnMgfCBjYURyb3Bkb3duQ291bnQ6IF90ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1ncm91cHMnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdncm91cHMnIHx8XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2xvYWQtYnJva2VyLWNvbnRhY3QnLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWZ1ZWwtZnJhbmNoaXNlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICdtZXJnZS1kcm9wZG93bi1ib2R5LXdpdGgtaW5wdXQnOlxuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCxcbiAgICAgICAgICAgICAgICAnbm8tcmVzdWx0LWNvbnRhaW5lcic6IF9vcHRpb25zWzBdPy5uYW1lID09PSAnTm8gUmVzdWx0cycsXG4gICAgICAgICAgICAgICAgJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnMgIHt7IGlucHV0Q29uZmlnLmRyb3Bkb3duV2lkdGhDbGFzcyB9fVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIEBzd2l0Y2ggKF90ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFNWRyBUZW1wbGF0ZSAoUmVuZGVyIHN2Z3Mgb3IgdGV4dCBpZiBzdmdzIGRvZXNuJ3QgZXhpc3QgKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR19URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZHJvcGRvd25XaXRoSW1hZ2VdPVwiaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZnLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXIgXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRyb3Bkb3duU3ZnVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFN2ZyBUZXh0IFRlbXBsYXRlIChkaXNwbGF5IGZsZXgpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwic3ZnVGV4dFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1EaXNwYXRjaCBkcm9wZG93bi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5TVkdURVhUX0RJU1BBVENIX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkaXNwYXRjaFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZXRhaWxzIHRlbXBsYXRlICh0cnVjaywgdHJhaWxlci4uLiBkZXRhaWxzLXBhZ2VzKSAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ERVRBSUxTX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc29ydF09XCJfc29ydFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImRldGFpbHNUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gR3JvdXBpbmcgdGVtcGxhdGUgKGNhbiBzZWUgb24gY29udGFjdCBtb2RhbCkgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uR1JPVVBTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZ3JvdXBzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIE11bHRpc2VsZWN0IFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTVVMVElTRUxFQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1tdWx0aXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbV09XCJsYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25NdWx0aXNlbGVjdFNlbGVjdCk9XCJvbk11bHRpc2VsZWN0U2VsZWN0KCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3Q+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExhYmVscyBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxBQkVMUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxhYmVsc1xuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsTW9kZV09XCJsYWJlbE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NhbkFkZE5ld109XCJfY2FuQWRkTmV3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERpc3BhdGNoIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRElTUEFUQ0gpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRpc3BhdGNoPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgRGlzcGF0Y2hlciBUZW1wbGF0ZSAodXNlciBhdmF0YXIgKyB1c2VyIG5hbWUpIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcj5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIENvbWJpbmUgVHJ1Y2stVHJhaWxlci1Ecml2ZXIgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVNfVFREKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQ+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBCcm9rZXIgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBCcm9rZXIgQ29udGFjdCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSX0NPTlRBQ1QpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIFNoaXBwZXIgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX1NISVBQRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gVGVtcGxhdGUgVGV4dCAtIENvdW50ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5URVhUX0NPVU5URVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRnVlbCBGcmFuY2hpc2UgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5GVUVMX0ZSQU5DSElTRSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHRvZ2dsZU5lc3RlZExpc3QpPVwidG9nZ2xlTmVzdGVkTGlzdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW1Hcm91cCk9XCJvbkFjdGl2ZUl0ZW1Hcm91cCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gRG91YmxlIFRleHQgVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9URVhUX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIERvdWJsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRPVUJMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gVHJpcGxlIENvbHVtbiBUZW1wbGF0ZSAtLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uVFJJUExFX0NPTFVNTl9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdHJpcGxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBQQVlST0xMIFRSVUNLUyBUZW1wbGF0ZSAtLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uUEFZUk9MTF9UUlVDS1MpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrc1xuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXBheXJvbGwtdHJ1Y2tzPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIERlZmF1bHQgVGVtcGxhdGUgLSBSZW5kZXIgT25seSBUZXh0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
710
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZHJvcGRvd24tdGVzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jYS1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi10ZXN0L2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tdGVzdC9jYS1pbnB1dC1kcm9wZG93bi10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0MsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUdMLE1BQU0sRUFDTixJQUFJLEVBQ0osU0FBUyxHQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUUvQyxPQUFPLEVBQ0gsWUFBWSxFQUNaLG9CQUFvQixFQUNwQixJQUFJLEVBQ0osT0FBTyxFQUNQLFNBQVMsR0FDWixNQUFNLE1BQU0sQ0FBQztBQUVkLFlBQVk7QUFDWixPQUFPLEVBRUgsZ0JBQWdCLEVBQ2hCLFNBQVMsR0FDWixNQUFNLDRCQUE0QixDQUFDO0FBRXBDLFlBQVk7QUFDWixPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFFdEQsYUFBYTtBQUNiLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLG9GQUFvRixDQUFDO0FBQ3hJLE9BQU8sRUFBRSx5Q0FBeUMsRUFBRSxNQUFNLG9HQUFvRyxDQUFDO0FBQy9KLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLDRGQUE0RixDQUFDO0FBQ3BKLE9BQU8sRUFBRSxtQ0FBbUMs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QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFFRyxhQUFhO3NCQUF0QixNQUFNO2dCQUVHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFFRyxpQkFBaUI7c0JBQTFCLE1BQU07Z0JBRUcsYUFBYTtzQkFBdEIsTUFBTTtnQkFFRyxRQUFRO3NCQUFqQixNQUFNO2dCQUlHLGNBQWM7c0JBQXZCLE1BQU07Z0JBRUcsb0JBQW9CO3NCQUE3QixNQUFNO2dCQUVlLGVBQWU7c0JBQXBDLE1BQU07dUJBQUMsWUFBWTtnQkFFRyxnQkFBZ0I7c0JBQXRDLE1BQU07dUJBQUMsYUFBYTtnQkFFTSxlQUFlO3NCQUF6QyxNQUFNO3VCQUFDLGlCQUFpQjtnQkFHRyxnQkFBZ0I7c0JBQTNDLE1BQU07dUJBQUMsa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIFJlbmRlcmVyMiwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFNlbGYsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7XG4gICAgZGVib3VuY2VUaW1lLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIHNraXAsXG4gICAgU3ViamVjdCxcbiAgICB0YWtlVW50aWwsXG59IGZyb20gJ3J4anMnO1xuXG4vLyBib290c3RyYXBcbmltcG9ydCB7XG4gICAgTmdiUG9wb3ZlcixcbiAgICBOZ2JQb3BvdmVyTW9kdWxlLFxuICAgIE5nYk1vZHVsZSxcbn0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuXG4vLyBhbmltYXRpb25cbmltcG9ydCB7IGlucHV0RHJvcGRvd25BbmltYXRpb24gfSBmcm9tICcuL2FuaW1hdGlvbnMnO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blN2Z3RleHREaXNwYXRjaFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duR3JvdXBzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcy9jYS1pbnB1dC1kcm9wZG93bi1ncm91cHMuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bk11bHRpc2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0L2NhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25MYWJlbHNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbGFiZWxzL2NhLWlucHV0LWRyb3Bkb3duLWxhYmVscy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRleHQtY291bnRlci9jYS1pbnB1dC1kcm9wZG93bi10ZXh0LWNvdW50ZXIuY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkRvdWJsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duVHJpcGxlVGV4dFRlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlL2NhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EZWZhdWx0VGVtcGxhdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZS9jYS1pbnB1dC1kcm9wZG93bi1kZWZhdWx0LXRlbXBsYXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlL2NhLWlucHV0LWRyb3Bkb3duLWZ1ZWwtZnJhbmNoaXNlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC9jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGUvY2EtaW5wdXQtZHJvcGRvd24tZGV0YWlscy10ZW1wbGF0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duUGF5cm9sbFRydWNrc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy9jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnRJdGVtIH0gZnJvbSAnLi9jb21wb25lbnRzL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVzLXR0ZC1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbSc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29tcG9uZW50SXRlbSB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1pdGVtL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJTaGlwcGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyL2NhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLXNoaXBwZXItaXRlbS9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1zaGlwcGVyLWl0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXIvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0uY29tcG9uZW50JztcblxuLy8gcGlwZXNcbmltcG9ydCB7IEZvcm1Db250cm9sUGlwZSB9IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcbmltcG9ydCB7XG4gICAgRHJvcGRvd25Db3VudFBpcGUsXG4gICAgSW5wdXREcm9wZG93bkdldEljb25zUGlwZSxcbiAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG59IGZyb20gJy4vcGlwZXMnO1xuaW1wb3J0IHsgRHJvcGRvd25PcHRpb25zUGlwZSB9IGZyb20gJy4vcGlwZXMvZHJvcGRvd24tb3B0aW9ucy5waXBlJztcblxuLy8gbW9kdWxlc1xuaW1wb3J0IHsgQW5ndWxhclN2Z0ljb25Nb2R1bGUgfSBmcm9tICdhbmd1bGFyLXN2Zy1pY29uJztcblxuLy8gZGlyZWN0aXZlc1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG4vLyBtb2RlbHNcbmltcG9ydCB7IENvbW1hbmRzRXZlbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9tb2RlbHMnO1xuXG4vLyB0eXBlc1xuaW1wb3J0IHtcbiAgICBBYnN0cmFjdENvbnRyb2xXaXRoTm90Rm91bmRUeXBlLFxuICAgIEZvcm1Db250cm9sV2l0aE5vdEZvdW5kVHlwZSxcbn0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBTZWxlY3REcm9wZG93blZhbHVlVHlwZSB9IGZyb20gJy4vdHlwZXMvc2VsZWN0LWRyb3Bkb3duLXZhbHVlLnR5cGUnO1xuXG4vLyBzdmcgcm91dGVzXG5pbXBvcnQgeyBJbnB1dERyb3Bkb3duU3ZnUm91dGVzIH0gZnJvbSAnLi91dGlscy9zdmctcm91dGVzL2lucHV0LWRyb3Bkb3duLXN2Zy1yb3V0ZXMnO1xuXG4vLyBlbnVtc1xuaW1wb3J0IHsgRHJvcGRvd25TdHJpbmdFbnVtLCBEcm9wZG93blRlbXBsYXRlVHlwZUVudW0gfSBmcm9tICcuL2VudW1zJztcblxuLy8gaGVscGVyc1xuaW1wb3J0IHsgdXVpZHY0IH0gZnJvbSAnLi4vLi4vdXRpbHMvaGVscGVycyc7XG5cbi8vIGNsYXNzZXNcbmltcG9ydCB7IEV2ZW50SW5wdXRNYW5hZ2VyIH0gZnJvbSAnLi4vY2EtaW5wdXQvYmFzZS1jbGFzc2VzL2NhLWlucHV0LWV2ZW50LW1hbmFnZXInO1xuXG4vLyBjb21wb25lbnRzXG5pbXBvcnQgeyBJbnB1dFRlc3RDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2lucHV0LXRlc3QuY29tcG9uZW50JztcbmltcG9ydCB7IENhTG9hZFN0YXR1c1N0cmluZ0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWxvYWQtc3RhdHVzLXN0cmluZy9jYS1sb2FkLXN0YXR1cy1zdHJpbmcuY29tcG9uZW50JztcbmltcG9ydCB7IENhUHJvZmlsZUltYWdlQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtcHJvZmlsZS1pbWFnZS9jYS1wcm9maWxlLWltYWdlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC9jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlci1jb250YWN0LWl0ZW0vY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtLmNvbXBvbmVudCc7XG5cbi8vIGNvbmZpZ1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC10ZXN0L2NvbmZpZyc7XG5cbi8vIGludGVyZmFjZXNcbmltcG9ydCB7IElPcHRpb25Nb2RlbCB9IGZyb20gJy4vaW50ZXJmYWNlcy9pbnB1dC1kcm9wZG93bi1vcHRpb24uaW50ZXJmYWNlJztcbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnY2EtaW5wdXQtZHJvcGRvd24tdGVzdCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhLWlucHV0LWRyb3Bkb3duLXRlc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbRm9ybUNvbnRyb2xQaXBlXSxcbiAgICBhbmltYXRpb25zOiBbaW5wdXREcm9wZG93bkFuaW1hdGlvbignc2hvd0hpZGVEcm9wZG93bk9wdGlvbnMnKV0sXG4gICAgaW1wb3J0czogW1xuICAgICAgICAvLyBNb2R1bGVcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiUG9wb3Zlck1vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgTmdiTW9kdWxlLFxuICAgICAgICBBbmd1bGFyU3ZnSWNvbk1vZHVsZSxcbiAgICAgICAgLy8gQ29tcG9uZW50XG4gICAgICAgIENhUHJvZmlsZUltYWdlQ29tcG9uZW50LFxuICAgICAgICBDYUxvYWRTdGF0dXNTdHJpbmdDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blN2Z3RleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duU3ZndGV4dERpc3BhdGNoVGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkdyb3Vwc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxhYmVsc0NvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZERpc3BhdGNoZXNUdGRDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyQ29udGFjdENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlclNoaXBwZXJDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blRleHRDb3VudGVyQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Eb3VibGVUZXh0VGVtcGxhdGVDb21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93blRyaXBsZVRleHRUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGVmYXVsdFRlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25GdWVsRnJhbmNoaXNlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25EaXNwYXRjaENvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duRGV0YWlsc1RlbXBsYXRlQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25QYXlyb2xsVHJ1Y2tzQ29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25TdmdUZW1wbGF0ZUNvbXBvbmVudCxcbiAgICAgICAgSW5wdXRUZXN0Q29tcG9uZW50LFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkRGlzcGF0Y2hlc1R0ZENvbXBvbmVudEl0ZW0sXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWRCcm9rZXJDb21wb25lbnRJdGVtLFxuICAgICAgICBDYUlucHV0RHJvcGRvd25Mb2FkQnJva2VyU2hpcHBlckl0ZW1Db21wb25lbnQsXG4gICAgICAgIENhSW5wdXREcm9wZG93bkxvYWREaXNwYXRjaGVySXRlbUNvbXBvbmVudCxcbiAgICAgICAgQ2FJbnB1dERyb3Bkb3duTG9hZEJyb2tlckNvbnRhY3RJdGVtQ29tcG9uZW50LFxuICAgICAgICAvLyBQaXBlc1xuICAgICAgICBGb3JtQ29udHJvbFBpcGUsXG4gICAgICAgIERyb3Bkb3duQ291bnRQaXBlLFxuICAgICAgICBJbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1BpcGUsXG4gICAgICAgIERyb3Bkb3duT3B0aW9uc1BpcGUsXG4gICAgICAgIElucHV0RHJvcGRvd25HZXRJY29uc1BpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQ2FJbnB1dERyb3Bkb3duVGVzdENvbXBvbmVudFxuICAgIGltcGxlbWVudHNcbiAgICAgICAgT25Jbml0LFxuICAgICAgICBBZnRlclZpZXdJbml0LFxuICAgICAgICBPbkRlc3Ryb3ksXG4gICAgICAgIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICAgICAgICBBZnRlclZpZXdJbml0XG57XG4gICAgQFZpZXdDaGlsZCgnaW5wdXQnKSBpbnB1dFJlZiE6IElucHV0VGVzdENvbXBvbmVudDtcbiAgICBAVmlld0NoaWxkKCd0MicpIHB1YmxpYyBwb3BvdmVyUmVmITogTmdiUG9wb3ZlcjtcbiAgICBAVmlld0NoaWxkKCdkcm9wZG93bkNvbXBvbmVudFJlZicsIHsgc3RhdGljOiBmYWxzZSB9KVxuICAgIGRyb3Bkb3duQ29tcG9uZW50UmVmOiBhbnk7XG5cbiAgICAvLyBMYWJlbCBpbnB1dCAtIHZhbHVlIHRoYXQgd2lsbCBiZSBzaG93ZWQgaW5zaWRlIGlucHV0XG4gICAgQElucHV0KCkgbGFiZWwhOiBrZXlvZiBJT3B0aW9uTW9kZWw7XG5cbiAgICAvLyBvcHRpb25WYWx1ZSBpbnB1dCAtIGtleSB2YWx1ZSBmcm9tIG9iamVjdCAtIEVtaXQgdGhpcyBpZiB5b3Ugd2FudCB0byBzZXQgd2hvbGUgb2JqZWN0XG4gICAgQElucHV0KCkgb3B0aW9uVmFsdWUhOiBzdHJpbmc7XG5cbiAgICBwdWJsaWMgaW5wdXRIb3ZlcmVkSXRlbTogbnVtYmVyID0gLTE7XG4gICAgcHVibGljIGlzRHJvcERvd25Jc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIGRpZmZlcmVudCB0ZW1wbGF0ZXMgZm9yIGJvZHkgcmVuZGVyaW5nXG4gICAgcHVibGljIF90ZW1wbGF0ZSE6IHN0cmluZztcbiAgICBfY2FuQWRkTmV3OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKSBzZXQgdGVtcGxhdGUodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl90ZW1wbGF0ZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIG11bHRpc2VsZWN0VGVtcGxhdGUhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaW5wdXRDb25maWchOiBJQ2FJbnB1dDtcbiAgICBASW5wdXQoKSBzZXQgY2FuQWRkTmV3KHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2NhbkFkZE5ldyA9IHZhbHVlO1xuICAgIH0gLy8gQUREIE5FVyBpdGVtIGluIG9wdGlvbnNcblxuICAgIHB1YmxpYyBnZXQgY2FuQWRkTmV3KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fY2FuQWRkTmV3O1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGNhbk9wZW5Nb2RhbCE6IGJvb2xlYW47IC8vIG9wZW4gbW9kYWwgd2l0aCBBREQgTkVXIGJ1dHRvblxuXG4gICAgLy8gc29ydC10ZW1wbGF0ZSBmb3IgZGlmZmVyZW50IG9wdGlvbnNcbiAgICBwdWJsaWMgX3NvcnQhOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2V0IHNvcnQodmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9zb3J0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzb3J0KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc29ydDtcbiAgICB9XG5cbiAgICAvLyBjdXJyZW50bHkgYWN0aXZlIGl0ZW1cbiAgICBwdWJsaWMgX2FjdGl2ZUl0ZW0hOiBJT3B0aW9uTW9kZWwgfCBudWxsO1xuICAgIEBJbnB1dCgpIHNldCBhY3RpdmVJdGVtKHZhbHVlOiBJT3B0aW9uTW9kZWwgfCBudWxsKSB7XG4gICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB2YWx1ZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IGFjdGl2ZUl0ZW0oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY3RpdmVJdGVtO1xuICAgIH1cblxuICAgIEBJbnB1dCgpIGFjdGl2ZUl0ZW1Db2xvciE6IElPcHRpb25Nb2RlbCB8IG51bGw7IC8vIGN1cnJlbnRseSBhY3RpdmUgY29sb3IgaW4gZHJvcGRvd25cbiAgICBASW5wdXQoKSBsYWJlbE1vZGUhOiAnTGFiZWwnIHwgJ0NvbG9yJztcblxuICAgIC8vIHdoZW4gc2VuZCBTVkcsIHBsZWFzZSBwcmVtbWFwZWQgb2JqZWN0OiBhZGQgJ2ZvbGRlcicgfCAnc3ViZm9sZGVyJ1xuICAgIHB1YmxpYyBfb3B0aW9uczogSU9wdGlvbk1vZGVsW10gPSBbXTtcbiAgICBASW5wdXQoKSBzZXQgb3B0aW9ucyh2YWx1ZXM6IElPcHRpb25Nb2RlbFtdKSB7XG4gICAgICAgIGlmICh2YWx1ZXMpIHRoaXMuX29wdGlvbnMgPSBbLi4udmFsdWVzXTtcblxuICAgICAgICBjb25zb2xlLmxvZygndXBkYXRlIHdpdGggb3B0aW5zJywgdmFsdWVzLCB0aGlzLmZpcnN0V3JpdGVWYWx1ZSk7XG4gICAgICAgIGlmICh0aGlzLmZpcnN0V3JpdGVWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy53cml0ZVZhbHVlVG9Gb3JtQ29udHJvbCh0aGlzLmZpcnN0V3JpdGVWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBNdWx0aVNlbGVjdCBTZWxlY3RlZCBJdGVtcyBGcm9tIEJhY2tlbmRcbiAgICBASW5wdXQoKSBzZXQgcHJlbG9hZE11bHRpc2VsZWN0SXRlbXModmFsdWVzOiBJT3B0aW9uTW9kZWxbXSkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICBpZiAoIXZhbHVlcykge1xuICAgICAgICAgICAgICAgIHRoaXMuZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcyh0aGlzLmlucHV0Q29uZmlnLmxhYmVsKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh2YWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub25NdWx0aXNlbGVjdFNlbGVjdChpdGVtKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBJbnB1dCgpIGlzRGV0YWlsc1BhZ2VzITogYm9vbGVhbjsgLy8gb25seSBmb3IgZGV0YWlscyBwYWdlc1xuICAgIEBJbnB1dCgpIGlzSW5jb3JyZWN0VmFsdWUhOiBib29sZWFuOyAvLyBhcHBsaWNhbnQgcmV2aWV3IG9wdGlvblxuICAgIEBJbnB1dCgpIGlzQWRkcmVzc0Ryb3Bkb3duITogYm9vbGVhbjsgLy8gb25seSBmb3IgYWRkcmVzcyBkcm9wZG93blxuXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkSXRlbTogRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbCB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWwgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1zOiBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsW10gfCBudWxsPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8SU9wdGlvbk1vZGVsW10gfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZEl0ZW1Db2xvcjogRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbCB8IG51bGw+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxJT3B0aW9uTW9kZWwgfCBudWxsPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3RlZExhYmVsTW9kZTogRXZlbnRFbWl0dGVyPHN0cmluZz4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgY2xvc2VEcm9wZG93bjogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICAgICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBzYXZlSXRlbTogRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgZGF0YTogSU9wdGlvbk1vZGVsIHwgbnVsbDtcbiAgICAgICAgYWN0aW9uOiBzdHJpbmc7XG4gICAgfT4gPSBuZXcgRXZlbnRFbWl0dGVyPHsgZGF0YTogSU9wdGlvbk1vZGVsIHwgbnVsbDsgYWN0aW9uOiBzdHJpbmcgfT4oKTtcbiAgICBAT3V0cHV0KCkgaW5jb3JyZWN0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCkgcGxhY2Vob2xkZXJJY29uRXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgICBAT3V0cHV0KCdwYWdpbmF0aW9uJykgcGFnaW5hdGlvbkV2ZW50OiBFdmVudEVtaXR0ZXI8bnVtYmVyPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIEBPdXRwdXQoJ2FjdGl2ZUdyb3VwJykgYWN0aXZlR3JvdXBFdmVudDogRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbD4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPElPcHRpb25Nb2RlbD4oKTtcbiAgICBAT3V0cHV0KCdjbGVhcklucHV0RXZlbnQnKSBjbGVhcklucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBPdXRwdXQoJ3NlYXJjaElucHV0RXZlbnQnKSBzZWFyY2hJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIC8vIGV2ZW50c1xuICAgIHB1YmxpYyBzZWFyY2hJbnB1dFRleHQgPSBuZXcgRXZlbnRJbnB1dE1hbmFnZXI8c3RyaW5nPihcbiAgICAgICAgbnVsbCxcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dEV2ZW50XG4gICAgKTtcblxuICAgIC8vIENvcHkgb2YgT3B0aW9uc1xuICAgIHB1YmxpYyBvcmlnaW5hbE9wdGlvbnM6IElPcHRpb25Nb2RlbFtdID0gW107XG5cbiAgICAvLyBQYWdpbmF0aW9uXG4gICAgcHVibGljIHBhZ2luYXRpb25OdW1iZXI6IG51bWJlciA9IDA7XG5cbiAgICAvLyBNdWx0aXNlbGVjdCBkcm9wZG93biBvcHRpb25zXG4gICAgcHVibGljIG11bHRpc2VsZWN0SXRlbXM6IElPcHRpb25Nb2RlbFtdID0gW107XG4gICAgcHVibGljIGlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzOiBib29sZWFuID0gZmFsc2U7XG4gICAgcHVibGljIG11bHRpU2VsZWN0TGFiZWwhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgcHVibGljIGxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0hOiBJT3B0aW9uTW9kZWwgfCBudWxsO1xuXG4gICAgLy8gQWRkIG1vZGVcbiAgICBwdWJsaWMgaXNJbkFkZE1vZGU6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIERyb3Bkb3duIG5hdmlnYXRpb24gd2l0aCBrZXlib2FyZFxuICAgIHByaXZhdGUgZHJvcGRvd25Qb3NpdGlvbjogbnVtYmVyID0gLTE7XG5cbiAgICAvLyBEcm9wZG93biBDbGVhcnRpbWVvdXRcbiAgICBwdWJsaWMgY2xlYXJUaW1lb3V0RHJvcGRvd246IHN0cmluZyB8IG51bWJlciB8IE5vZGVKUy5UaW1lb3V0IHwgdW5kZWZpbmVkO1xuXG4gICAgcHVibGljIGhvdmVyaW5nSW5kZXghOiBudW1iZXI7XG4gICAgcHVibGljIGlucHV0RHJvcGRvd25TdmdSb3V0ZXMgPSBJbnB1dERyb3Bkb3duU3ZnUm91dGVzO1xuICAgIHB1YmxpYyBkcm9wZG93blRlbXBsYXRlVHlwZUVudW0gPSBEcm9wZG93blRlbXBsYXRlVHlwZUVudW07XG5cbiAgICAvLyBEZXN0cm95XG4gICAgcHJpdmF0ZSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQFNlbGYoKSBwdWJsaWMgc3VwZXJDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjJcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgZ2V0IGdldFN1cGVyQ29udHJvbCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w7XG4gICAgfVxuXG4gICAgcHVibGljIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuXG4gICAgcHVibGljIGxhc3RWYWxpZE9wdGlvbiE6IElPcHRpb25Nb2RlbDtcbiAgICBwdWJsaWMgZmlyc3RXcml0ZVZhbHVlOiBhbnk7XG4gICAgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nIHwgbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdXUklURSBWQUxVRSBGSVJTVCcsIHZhbHVlKTtcbiAgICAgICAgaWYgKHZhbHVlKSB0aGlzLmZpcnN0V3JpdGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB0aGlzLndyaXRlVmFsdWVUb0Zvcm1Db250cm9sKHZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZVRvRm9ybUNvbnRyb2wodmFsdWU6IHN0cmluZyB8IG51bWJlcik6IHZvaWQge1xuICAgICAgICBjb25zdCBmaW5kSW5PcHRpb25zID0gdGhpcy5pbnB1dENvbmZpZy5zZWFyY2hpbkdyb3VwSW5kZXhcbiAgICAgICAgICAgID8gdGhpcy5nZXRNYWluR3JvdXAoKVxuICAgICAgICAgICAgOiB0aGlzLl9vcHRpb25zO1xuXG4gICAgICAgIGxldCBmaW5kT3B0aW9uID0gZmluZEluT3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgKG9wdGlvbikgPT4gb3B0aW9uW3RoaXMub3B0aW9uVmFsdWUgYXMga2V5b2YgSU9wdGlvbk1vZGVsXSA9PSB2YWx1ZVxuICAgICAgICApO1xuXG4gICAgICAgIGxldCBvcHRpb25Ob3RGb3VuZCA9IGZhbHNlO1xuICAgICAgICBpZiAoIWZpbmRPcHRpb24gJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGZpbmRPcHRpb24gPSB7XG4gICAgICAgICAgICAgICAgW3RoaXMub3B0aW9uVmFsdWVdOiB0aGlzLmZpcnN0V3JpdGVWYWx1ZSxcbiAgICAgICAgICAgICAgICBbdGhpcy5sYWJlbF06IHRoaXMuZmlyc3RXcml0ZVZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG9wdGlvbk5vdEZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaW5kT3B0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNldERyb3Bkb3duVmFsdWUoe1xuICAgICAgICAgICAgICAgIG9wdGlvbjogZmluZE9wdGlvbixcbiAgICAgICAgICAgICAgICBzZXROb3RGb3VuZEVycm9yOiBvcHRpb25Ob3RGb3VuZCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHNldE5vdEZvdW5kSW52YWxpZEZsYWcodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZ2V0U3VwZXJDb250cm9sKVxuICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgIHRoaXMuZ2V0U3VwZXJDb250cm9sIGFzIEFic3RyYWN0Q29udHJvbFdpdGhOb3RGb3VuZFR5cGVcbiAgICAgICAgICAgICkubm90Rm91bmRJbnZhbGlkID0gdmFsdWU7IC8vIEF0dGFjaCBkeW5hbWljIHZhbHVlc1xuICAgICAgICAodGhpcy5pbnB1dEZvcm1Db250cm9sIGFzIEZvcm1Db250cm9sV2l0aE5vdEZvdW5kVHlwZSkubm90Rm91bmRJbnZhbGlkID1cbiAgICAgICAgICAgIHZhbHVlOyAvLyBBdHRhY2ggZHluYW1pYyB2YWx1ZXNcbiAgICB9XG5cbiAgICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4ge307XG4gICAgcHVibGljIG9uQ2hhbmdlKF86IGFueSk6IHZvaWQge31cblxuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vbkNoYW5nZSA9IGZuO1xuICAgIH1cblxuICAgIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gICAgfVxuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIC8vIE11bHRpc2VsZWN0XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm11bHRpc2VsZWN0RHJvcGRvd24pIHtcbiAgICAgICAgICAgIHRoaXMubXVsdGlTZWxlY3RMYWJlbCA9IHRoaXMuaW5wdXRDb25maWcubGFiZWw7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICAgICAgICAgIGRlYm91bmNlVGltZSg1MCksXG4gICAgICAgICAgICAgICAgc2tpcCgxKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWwodGhpcy5kZXN0cm95JClcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKHNlYXJjaFRleHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5sYWJlbE1vZGUgPT09ICdDb2xvcicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dChzZWFyY2hUZXh0IHx8ICcnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJUaW1lb3V0RHJvcGRvd24gPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWYub3BlbigpO1xuICAgICAgICAgICAgfSwgNDUwKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvblNjcm9sbERyb3Bkb3duKGV2ZW50OiBFdmVudFRhcmdldCB8IG51bGwpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQgYXMgSFRNTEVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKHRhcmdldC5zY3JvbGxUb3AgKyB0YXJnZXQub2Zmc2V0SGVpZ2h0ID09PSB0YXJnZXQuc2Nyb2xsSGVpZ2h0KSB7XG4gICAgICAgICAgICB0aGlzLnBhZ2luYXRpb25OdW1iZXIgKz0gMTtcblxuICAgICAgICAgICAgdGhpcy5wYWdpbmF0aW9uRXZlbnQuZW1pdCh0aGlzLnBhZ2luYXRpb25OdW1iZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQWN0aXZlSXRlbShvcHRpb246IElPcHRpb25Nb2RlbCwgZ3JvdXA/OiBhbnkpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5jYW5PcGVuTW9kYWwgJiZcbiAgICAgICAgICAgIG9wdGlvbj8uW3RoaXMubGFiZWxdPy50b0xvd2VyQ2FzZSgpID09PSAnYWRkIG5ldydcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICBpZDogNzY1NSxcbiAgICAgICAgICAgICAgICBuYW1lOiBEcm9wZG93blN0cmluZ0VudW0uQUREX05FVyxcbiAgICAgICAgICAgICAgICBjYW5PcGVuTW9kYWw6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RHJvcGRvd25WYWx1ZSh7IG9wdGlvbiB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkFjdGl2ZUl0ZW1Hcm91cChldmVudDogeyBvcHRpb246IElPcHRpb25Nb2RlbDsgZ3JvdXA6IGFueSB9KSB7XG4gICAgICAgIHRoaXMub25BY3RpdmVJdGVtKGV2ZW50Lm9wdGlvbiwgZXZlbnQuZ3JvdXApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0gbnVsbDtcbiAgICAgICAgdGhpcy5pbnB1dEhvdmVyZWRJdGVtID0gLTE7XG5cbiAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoJycpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQobnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNsZWFyRHJvcGRvd25MYWJlbCgpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMuYWN0aXZlSXRlbUNvbG9yID0gbnVsbDtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChudWxsKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1Db2xvci5lbWl0KG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgfVxuXG4gICAgcHVibGljIGNvbW1hbmRFdmVudChldmVudDogQ29tbWFuZHNFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnRWRpdCBJbnB1dCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnQ29sb3InKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnVG9nZ2xlIERyb3Bkb3duJykge1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdjb25maXJtJyAmJiBldmVudC5tb2RlID09PSAnbmV3Jykge1xuICAgICAgICAgICAgdGhpcy5hZGROZXdJdGVtKCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXZlbnQuYWN0aW9uID09PSAnY29uZmlybScgJiYgZXZlbnQubW9kZSA9PT0gJ2VkaXQnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUl0ZW0oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5hY3Rpb24gPT09ICdQbGFjZWhvbGRlciBJY29uIEV2ZW50Jykge1xuICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlckljb25FdmVudC5lbWl0KHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmFjdGlvbiA9PT0gJ2NhbmNlbCcpIHtcbiAgICAgICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICAgICAgZGF0YTogdGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBhY3Rpb246ICdjYW5jZWwnLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkTmV3SXRlbSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IHtcbiAgICAgICAgICAgIGlkOiBwYXJzZUludCh1dWlkdjQoKSksXG4gICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbCEudmFsdWUsXG4gICAgICAgIH07XG4gICAgICAgIC8vdGhpcy5pbnB1dENvbmZpZy5jb21tYW5kcyEuYWN0aXZlID0gZmFsc2U7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaXNWaXNpYmxlQ29tbWFuZHMgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnNhdmVJdGVtLmVtaXQoeyBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLCBhY3Rpb246ICduZXcnIH0pO1xuXG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYWJlbE1vZGUuZW1pdCgnTGFiZWwnKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaXNUb3VjaGVkSW5wdXQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHVwZGF0ZUl0ZW0oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWwpIHtcbiAgICAgICAgICAgIHRoaXMuX2FjdGl2ZUl0ZW0gPSB7XG4gICAgICAgICAgICAgICAgLi4udGhpcy5fYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmdldFN1cGVyQ29udHJvbD8udmFsdWUsXG4gICAgICAgICAgICAgICAgY29sb3JJZDogdGhpcy5hY3RpdmVJdGVtQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgPyB0aGlzLmFjdGl2ZUl0ZW1Db2xvci5pZFxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvbG9ySWQsXG4gICAgICAgICAgICAgICAgY29sb3I6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IubmFtZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvbG9yLFxuICAgICAgICAgICAgICAgIGNvZGU6IHRoaXMuYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5hY3RpdmVJdGVtQ29sb3IuY29kZVxuICAgICAgICAgICAgICAgICAgICA6IHRoaXMuX2FjdGl2ZUl0ZW0/LmNvZGUsXG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGFiZWxNb2RlLmVtaXQoJ0xhYmVsJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9hY3RpdmVJdGVtID0ge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMuX2FjdGl2ZUl0ZW0sXG4gICAgICAgICAgICAgICAgbmFtZTogdGhpcy5nZXRTdXBlckNvbnRyb2w/LnZhbHVlLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2F2ZUl0ZW0uZW1pdCh7XG4gICAgICAgICAgICBkYXRhOiB0aGlzLl9hY3RpdmVJdGVtLFxuICAgICAgICAgICAgYWN0aW9uOiAnZWRpdCcsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGROZXdDb25maWcoKSB7XG4gICAgICAgIHRoaXMuaW5wdXRDb25maWcgPSB7XG4gICAgICAgICAgICAuLi50aGlzLmlucHV0Q29uZmlnLFxuICAgICAgICAgICAgY29tbWFuZHM6IHtcbiAgICAgICAgICAgICAgICBhY3RpdmU6IHRydWUsXG4gICAgICAgICAgICAgICAgdHlwZTogJ2NvbmZpcm0tY2FuY2VsJyxcbiAgICAgICAgICAgICAgICBmaXJzdENvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDb25maXJtJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJyMzMDc0ZDMnLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAnY29uZmlybScsXG4gICAgICAgICAgICAgICAgICAgIHN2ZzogSW5wdXREcm9wZG93blN2Z1JvdXRlcy5zcGVjQ29uZmlybVN2ZyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHNlY29uZENvbW1hbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgcG9wdXA6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6ICdDYW5jZWwnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAnIzJmMmYyZicsXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6ICdjYW5jZWwnLFxuICAgICAgICAgICAgICAgICAgICBzdmc6IElucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6ICcnLFxuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcblxuICAgICAgICB0aGlzLmlzSW5BZGRNb2RlID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5jbGVhclRpbWVvdXREcm9wZG93biA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5pc0luQWRkTW9kZSA9IGZhbHNlO1xuICAgICAgICB9LCAyMDApO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkluY29ycmVjdElucHV0KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuaW5jb3JyZWN0RXZlbnQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIGlkZW50aXR5KGluZGV4OiBudW1iZXIsIGl0ZW06IElPcHRpb25Nb2RlbCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVOZXN0ZWRMaXN0KG9wdGlvbjogSU9wdGlvbk1vZGVsKTogdm9pZCB7XG4gICAgICAgIGlmIChvcHRpb24ub3Blbikge1xuICAgICAgICAgICAgb3B0aW9uLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vcHRpb25zLmZpbHRlcigoaXRlbSkgPT4gKGl0ZW0ub3BlbiA9IGZhbHNlKSk7XG5cbiAgICAgICAgb3B0aW9uLm9wZW4gPSAhb3B0aW9uLm9wZW47XG5cbiAgICAgICAgaWYgKG9wdGlvbi5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdyb3VwRXZlbnQuZW1pdChvcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQmx1cklucHV0KGV2ZW50OiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bi5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DbGVhcklucHV0RXZlbnQoZXZlbnQ6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5jbGVhcklucHV0RXZlbnQuZW1pdChldmVudCk7XG5cbiAgICAgICAgaWYgKGV2ZW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcG92ZXJSZWY/LmNsb3NlKCk7XG4gICAgICAgICAgICAvLyBsYWJlbCBkcm9wZG93blxuXG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5kcm9wZG93bkxhYmVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jbGVhckRyb3Bkb3duTGFiZWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIG5vcm1hbCBkcm9wZG93blxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkNsZWFyU2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlSGlkZGVuRHJvcGRvd24oKSB7XG4gICAgICAgIHRoaXMuaXNEcm9wRG93bklzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZSh0aGlzLmRyb3Bkb3duVmFsdWUgfHwgJycpO1xuICAgICAgICB0aGlzLmlucHV0UmVmLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFRleHQubmV4dCgnJyk7XG4gICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSAnJztcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlT3BlbkRyb3Bkb3duKCkge1xuICAgICAgICB0aGlzLmlzRHJvcERvd25Jc09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0VGV4dC5uZXh0KCcnKTtcbiAgICAgICAgdGhpcy5pbnB1dFJlZi5pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93SGlkZURyb3Bkb3duKGFjdGlvbjogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duKSB7XG4gICAgICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gYWN0aW9uO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubGFiZWxNb2RlICE9PSAnQ29sb3InKSB7XG4gICAgICAgICAgICB0aGlzLmdldFN1cGVyQ29udHJvbCEuc2V0VmFsdWUobnVsbCk7XG5cbiAgICAgICAgICAgIHRoaXMucG9wb3ZlclJlZj8uY2xvc2UoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIERldGFpbHMgcGFnZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5jdXN0b21DbGFzcz8uaW5jbHVkZXMoJ2RldGFpbHMtcGFnZXMnKSAmJlxuICAgICAgICAgICAgIWFjdGlvblxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmVtaXQodGhpcy5fYWN0aXZlSXRlbSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TWFpbkdyb3VwKCkge1xuICAgICAgICBsZXQgbWFpbkdyb3VwOiBJT3B0aW9uTW9kZWxbXSA9IFtdO1xuICAgICAgICB0aGlzLl9vcHRpb25zLm1hcCgoZ3JvdXBzKSA9PiB7XG4gICAgICAgICAgICBtYWluR3JvdXAucHVzaChcbiAgICAgICAgICAgICAgICAuLi5ncm91cHNbXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4IGFzIGtleW9mIElPcHRpb25Nb2RlbFxuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBtYWluR3JvdXA7XG4gICAgfVxuXG4gICAgcHVibGljIGRyb3BEb3duS2V5TmF2aWdhdGlvbih7XG4gICAgICAgIGtleUNvZGUsXG4gICAgICAgIGRhdGEsXG4gICAgfToge1xuICAgICAgICBrZXlDb2RlOiBudW1iZXI7XG4gICAgICAgIGRhdGE6IGFueTtcbiAgICB9KSB7XG4gICAgICAgIC8vIE5hdmlnYXRlIGRvd25cbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDQwKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duTmF2aWdhdGlvbigxKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBOYXZpZ2F0ZSB1cFxuICAgICAgICBpZiAoa2V5Q29kZSA9PT0gMzgpIHtcbiAgICAgICAgICAgIHRoaXMuZHJvcGRvd25OYXZpZ2F0aW9uKC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByZXNzICdlbnRlcidcbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtO1xuICAgICAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcuc2VhcmNoaW5Hcm91cEluZGV4KSB7XG4gICAgICAgICAgICAgICAgbGV0IG1haW5Hcm91cCA9IHRoaXMuZ2V0TWFpbkdyb3VwKCk7XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtID0gbWFpbkdyb3VwW3RoaXMuaW5wdXRIb3ZlcmVkSXRlbV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbSA9XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA+IC0xXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYub3B0aW9uc1tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICA6IHsgW3RoaXMubGFiZWxdOiAnJyB9O1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5PcGVuTW9kYWwgJiZcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW0/Llt0aGlzLmxhYmVsXT8udG9Mb3dlckNhc2UoKSA9PT0gJ2FkZCBuZXcnXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IDc2NTUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IERyb3Bkb3duU3RyaW5nRW51bS5BRERfTkVXLFxuICAgICAgICAgICAgICAgICAgICBjYW5PcGVuTW9kYWw6IHRydWUsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RHJvcGRvd25WYWx1ZSh7IG9wdGlvbjogc2VsZWN0ZWRJdGVtIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGtleUNvZGUgPT09IDkpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5wb3BvdmVyUmVmLmlzT3BlbigpKSB0aGlzLnBvcG92ZXJSZWY/Lm9wZW4oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXREcm9wZG93blZhbHVlKHtcbiAgICAgICAgb3B0aW9uLFxuICAgICAgICBvcHRpb25WYWx1ZSxcbiAgICAgICAgbGFiZWwsXG4gICAgICAgIHNldE5vdEZvdW5kRXJyb3IsXG4gICAgfTogU2VsZWN0RHJvcGRvd25WYWx1ZVR5cGUpIHtcbiAgICAgICAgdGhpcy5zZXROb3RGb3VuZEludmFsaWRGbGFnKHNldE5vdEZvdW5kRXJyb3IgfHwgZmFsc2UpO1xuICAgICAgICB0aGlzLmxhc3RWYWxpZE9wdGlvbiA9IG9wdGlvbjtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW0uZW1pdChvcHRpb24pO1xuICAgICAgICBjb25zdCBvcHRWYWx1ZSA9IG9wdGlvblZhbHVlID8gb3B0aW9uVmFsdWUgOiB0aGlzLm9wdGlvblZhbHVlO1xuICAgICAgICBjb25zdCBsYmVsID0gbGFiZWwgPyBsYWJlbCA6IHRoaXMubGFiZWw7XG4gICAgICAgIGNvbnN0IGNvbnRyb2xWYWx1ZSA9IG9wdFZhbHVlXG4gICAgICAgICAgICA/IG9wdGlvbltvcHRWYWx1ZSBhcyBrZXlvZiBJT3B0aW9uTW9kZWxdXG4gICAgICAgICAgICA6IG9wdGlvbjtcblxuICAgICAgICBjb25zdCBpbnB1dFZhbHVlID0gb3B0aW9uW2xiZWwgYXMga2V5b2YgSU9wdGlvbk1vZGVsXSB8fCBjb250cm9sVmFsdWU7XG5cbiAgICAgICAgdGhpcy5fYWN0aXZlSXRlbSA9IG9wdGlvbjtcbiAgICAgICAgdGhpcy5zZXRDb250cm9sVmFsdWUoY29udHJvbFZhbHVlLCBpbnB1dFZhbHVlKTtcbiAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXRUZXh0Lm5leHQoJycpO1xuICAgIH1cblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIE11bHRpc2VsZWN0IERyb3Bkb3duIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICBwdWJsaWMgb25NdWx0aXNlbGVjdFNlbGVjdChvcHRpb246IElPcHRpb25Nb2RlbCk6IHZvaWQge1xuICAgICAgICB0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzID0gZmFsc2U7XG4gICAgICAgIC8vdGhpcy5pbnB1dENvbmZpZy5sYWJlbCA9IHVuZGVmaW5lZDtcblxuICAgICAgICBpZiAodGhpcy5tdWx0aXNlbGVjdEl0ZW1zLnNvbWUoKGl0ZW0pID0+IGl0ZW0uaWQgPT09IG9wdGlvbi5pZCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uaWQgPT09IG9wdGlvbi5pZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoIWl0ZW0uYWN0aXZlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcyA9IHRoaXMuX29wdGlvbnMuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSk7XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQodGhpcy5tdWx0aXNlbGVjdEl0ZW1zKTtcblxuICAgICAgICB0aGlzLl9vcHRpb25zID0gdGhpcy5fb3B0aW9ucy5zb3J0KFxuICAgICAgICAgICAgKHgsIHkpID0+IE51bWJlcih5LmFjdGl2ZSkgLSBOdW1iZXIoeC5hY3RpdmUpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMub3JpZ2luYWxPcHRpb25zID0gWy4uLnRoaXMuX29wdGlvbnNdO1xuXG4gICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uYWN0aXZlKVxuICAgICAgICAgICAgLnNsaWNlKC0xKVswXTtcblxuICAgICAgICBpZiAodGhpcy5pbnB1dFJlZikge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFJlZi5pc0ZvY3VzSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRSZWYuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZU11bHRpU2VsZWN0SXRlbShpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLm9yaWdpbmFsT3B0aW9ucy5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLmlkID09PSB0aGlzLm11bHRpc2VsZWN0SXRlbXNbaW5kZXhdLmlkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5tdWx0aXNlbGVjdEl0ZW1zW2luZGV4XSxcbiAgICAgICAgICAgICAgICAgICAgYWN0aXZlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLnNvcnQoXG4gICAgICAgICAgICAoeCwgeSkgPT4gTnVtYmVyKHkuYWN0aXZlKSAtIE51bWJlcih4LmFjdGl2ZSlcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLm9yaWdpbmFsT3B0aW9ucyA9IHRoaXMuX29wdGlvbnM7XG4gICAgICAgIHRoaXMubXVsdGlzZWxlY3RJdGVtcy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICAgIGlmICghdGhpcy5tdWx0aXNlbGVjdEl0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5sYXN0QWN0aXZlTXVsdGlzZWxlY3RJdGVtID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMubGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbSA9IHRoaXMuX29wdGlvbnNcbiAgICAgICAgICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtLmFjdGl2ZSlcbiAgICAgICAgICAgICAgICAuc2xpY2UoLTEpWzBdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3RlZEl0ZW1zLmVtaXQoXG4gICAgICAgICAgICB0aGlzLm11bHRpc2VsZWN0SXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHsgLi4uaXRlbSB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcyhjdXJyZW50TGFiZWw/OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5tdWx0aXNlbGVjdEl0ZW1zID0gW107XG4gICAgICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLl9vcHRpb25zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogZmFsc2UsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5vcmlnaW5hbE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zO1xuICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbXMuZW1pdChudWxsKTtcblxuICAgICAgICB0aGlzLmxhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW0gPSBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyB0b2dnbGVNdWx0aXNlbGVjdERyb3Bkb3duKCkge1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pc011bHRpU2VsZWN0SW5wdXRGb2N1cyA9ICF0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzO1xuXG4gICAgICAgIGlmICh0aGlzLmlzTXVsdGlTZWxlY3RJbnB1dEZvY3VzKSB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZW91dERyb3Bkb3duID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmLm9wZW4oKTtcbiAgICAgICAgICAgIH0sIDE1MCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0UmVmLmlzRm9jdXNJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5wb3BvdmVyUmVmPy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIEVuZCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgICBwdWJsaWMgZHJvcGRvd25WYWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkID0gJyc7XG4gICAgcHVibGljIHNldENvbnRyb2xWYWx1ZSh2YWx1ZT86IHN0cmluZywgZHJvcGRvd25JbnB1dFZhbHVlPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UodmFsdWUpOyAvLyBOb3RpZnkgQW5ndWxhciBmb3JtIGFib3V0IHRoZSBjaGFuZ2VcbiAgICAgICAgaWYgKHZhbHVlKSB0aGlzLm9uVG91Y2hlZCgpOyAvLyBNYXJrIGFzIHRvdWNoZWRcbiAgICAgICAgdGhpcy5kcm9wZG93blZhbHVlID0gZHJvcGRvd25JbnB1dFZhbHVlIHx8IHZhbHVlO1xuICAgICAgICB0aGlzLmlucHV0Rm9ybUNvbnRyb2wucGF0Y2hWYWx1ZShkcm9wZG93bklucHV0VmFsdWUgfHwgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE5hdmlnYXRlIHRocm91Z2ggZHJvcGRvd24gd2l0aCBrZXlib2FyZCBhcnJvd3NcbiAgICAgKi9cbiAgICBwcml2YXRlIGRyb3Bkb3duTmF2aWdhdGlvbihzdGVwOiBudW1iZXIpIHtcbiAgICAgICAgY29uc3QgbmV4dFN0ZXAgPSB0aGlzLmlucHV0SG92ZXJlZEl0ZW0gKyBzdGVwO1xuXG4gICAgICAgIGlmIChuZXh0U3RlcCA+IHRoaXMuZHJvcGRvd25Db21wb25lbnRSZWYuZHJvcGRvd25PcHRpb24ubGVuZ3RoIC0gMSlcbiAgICAgICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9IDA7XG4gICAgICAgIGVsc2UgaWYgKG5leHRTdGVwIDwgMClcbiAgICAgICAgICAgIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9XG4gICAgICAgICAgICAgICAgdGhpcy5kcm9wZG93bkNvbXBvbmVudFJlZi5kcm9wZG93bk9wdGlvbi5sZW5ndGggLSAxO1xuICAgICAgICBlbHNlIHRoaXMuaW5wdXRIb3ZlcmVkSXRlbSA9IG5leHRTdGVwO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5jbGVhclRpbWVvdXREcm9wZG93bik7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIGNsYXNzPVwiYXBwbGljYXRpb24tZHJvcGRvd25cIlxuICAgIFtuZ0NsYXNzXT1cIlxuICAgICAgICBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgfCBpbnB1dERyb3Bkb3duTXVsdGlzZWxlY3RDbGFzc1xuICAgICAgICAgICAgICAgIDogbXVsdGlzZWxlY3RJdGVtc1xuICAgICAgICAgICAgICAgIDogaXNNdWx0aVNlbGVjdElucHV0Rm9jdXNcbiAgICBcIlxuPlxuICAgIEBpZiAobXVsdGlzZWxlY3RJdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJtdWx0aXNlbGVjdC1sYWJlbFwiPlxuICAgICAgICAgICAge3sgbXVsdGlTZWxlY3RMYWJlbCB9fVxuICAgICAgICA8L3A+XG4gICAgfVxuXG4gICAgQGlmIChpbnB1dENvbmZpZy5tdWx0aVNlbGVjdERyb3Bkb3duQWN0aXZlKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgYXJyb3cgLS0+XG4gICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgY2xhc3M9XCJtdWx0aXNlbGVjdC1hcnJvd1wiXG4gICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMuaW5wdXREcm9wZG93bkFycm93U3ZnXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVNdWx0aXNlbGVjdERyb3Bkb3duKClcIlxuICAgICAgICA+PC9zdmctaWNvbj5cbiAgICB9XG5cbiAgICBAaWYgKG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoICYmICFpbnB1dENvbmZpZy5pc0Rpc2FibGVkKSB7XG4gICAgICAgIDwhLS0gTXVsdGlzZWxlY3QgY2xlYXIgYWxsIC0tPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImlucHV0LWNsZWFyIG11bHRpc2VsZWN0LWNsZWFyXCJcbiAgICAgICAgICAgIG1haW5Ub29sdGlwPVwiQ2xlYXIgQWxsXCJcbiAgICAgICAgICAgIG5nYlRvb2x0aXBcbiAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgIHRvb2x0aXBCYWNrZ3JvdW5kPVwiIzJmMmYyZlwiXG4gICAgICAgICAgICAoY2xpY2spPVwiZGVsZXRlQWxsTXVsdGlTZWxlY3RJdGVtcygpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJpbnB1dC1jbGVhci14XCJcbiAgICAgICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICBpbnB1dENvbmZpZy5tdWx0aXNlbGVjdERyb3Bkb3duICYmXG4gICAgICAgIG11bHRpc2VsZWN0SXRlbXMubGVuZ3RoICYmXG4gICAgICAgIF90ZW1wbGF0ZSA9PT0gJ211bHRpc2VsZWN0J1xuICAgICkge1xuICAgICAgICA8IS0tIE11bHRpc2VsZWN0IGl0ZW1zIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbXMge3sgbXVsdGlzZWxlY3RUZW1wbGF0ZSB9fVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lcj4gPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICBtdWx0aVNlbGVjdCBvZiBtdWx0aXNlbGVjdEl0ZW1zO1xuICAgICAgICAgICAgICAgIHRyYWNrICRpbmRleDtcbiAgICAgICAgICAgICAgICBsZXQgaW5kID0gJGluZGV4XG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm11bHRpc2VsZWN0LWl0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAge3sgbXVsdGlTZWxlY3Q/Lm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgLSBUb3RhbCBDb3VudGVyIC0tPlxuICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubXVsdGlTZWxlY3RJdGVtUmFuZ2UgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fSBvZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG11bHRpU2VsZWN0Py50b3RhbENvdW50ZXIgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIEBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tdWx0aVNlbGVjdEl0ZW1SYW5nZSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgIW11bHRpU2VsZWN0Py50b3RhbENvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBtdWx0aVNlbGVjdD8uYWN0aXZlQ291bnRlciB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGlmICghaW5wdXRDb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBBY3RpdmUgQ291bnRlciAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVtb3ZlTXVsdGlTZWxlY3RJdGVtKGluZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXVsdGlzZWxlY3QtaXRlbS1jbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFpblRvb2x0aXA9XCJDbGVhclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdiVG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwidG9wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwQmFja2dyb3VuZD1cIiMyZjJmMmZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImlucHV0RHJvcGRvd25TdmdSb3V0ZXMueENsZWFyU3ZnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9zdmctaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIHNlYXJjaCAtLT5cblxuICAgIEBpZiAoIWlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIEBpZiAoIXNlYXJjaElucHV0VGV4dC52YWx1ZSkge1xuICAgICAgICAgICAgPCEtLSA8ZGl2XG4gICAgICAgICAgICAoc2Nyb2xsKT1cIm9uU2Nyb2xsRHJvcGRvd24oJGV2ZW50LnRhcmdldClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgIHNjcm9sbDogX29wdGlvbnMgfCBjYURyb3Bkb3duQ291bnQ6IF90ZW1wbGF0ZSxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1ncm91cHMnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdncm91cHMnIHx8XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2xvYWQtYnJva2VyLWNvbnRhY3QnLFxuICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWZ1ZWwtZnJhbmNoaXNlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICdtZXJnZS1kcm9wZG93bi1ib2R5LXdpdGgtaW5wdXQnOlxuICAgICAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCxcbiAgICAgICAgICAgICAgICAnbm8tcmVzdWx0LWNvbnRhaW5lcic6IF9vcHRpb25zWzBdPy5uYW1lID09PSAnTm8gUmVzdWx0cycsXG4gICAgICAgICAgICAgICAgJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnOlxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnLFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLW9wdGlvbnMgIHt7IGlucHV0Q29uZmlnLmRyb3Bkb3duV2lkdGhDbGFzcyB9fVwiXG4gICAgICAgID4gLS0+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW2NsYXNzLm9wZW5dPVwiaXNEcm9wRG93bklzT3BlblwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLmxlZnRJY29uXT1cImlucHV0Q29uZmlnLnBsYWNlaG9sZGVySWNvblwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgICAgICdkcm9wZG93bi1vcHRpb25zLWdyb3Vwcyc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdncm91cHMnIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZnVlbC1mcmFuY2hpc2UnOlxuICAgICAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZnVlbC1mcmFuY2hpc2UnLFxuICAgICAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLm1lcmdlRHJvcGRvd25Cb2R5V2l0aElucHV0LFxuICAgICAgICAgICAgICAgICAgICAnc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZSc6XG4gICAgICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnLFxuICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd25fdmFsdWUgZHJvcGRvd24tb3B0aW9ucyAge3tcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEBzd2l0Y2ggKF90ZW1wbGF0ZSkge1xuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFU19UVEQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkcm9wZG93bi1vcHRpb24gZHJvcGRvd24tZG91YmxlLWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dOb1Jlc3Vsc3RdPVwiZmFsc2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2luZGV4XT1cIjBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtIVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGQtaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfQlJPS0VSKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfU0hJUFBFUikge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChhY3RpdmVJdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLXNoaXBwZXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSW5PcHRpb25dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtc2hpcHBlci1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGFjdGl2ZUl0ZW0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibG9hZC1icm9rZXItY29udGFjdC1ncm91cHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdC1pdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0RJU1BBVENIRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbl09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkcm9wZG93bldpdGhJbWFnZV09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNJbk9wdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1kaXNwYXRjaGVyLWl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBAZGVmYXVsdCB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tIFNwZWNpYWwgRHJvcGRvd24gU2VsZWN0ZWQgU1ZHIHdpdGggb3IgV2l0aG91dCBUZXh0IC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgQGlmIChpbnB1dENvbmZpZy5kcm9wZG93bkltYWdlSW5wdXQgJiYgYWN0aXZlSXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmctaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0IVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5wdXREcm9wZG93bkdldEljb25zOiBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tc2VsZWN0ZWQtaW1hZ2Uge3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndW5zZXQtY29sb3InOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8uY2xhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3ZnU3R5bGVdPVwie1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbDogaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtPy5jb2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAnI2ZmZmZmZicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zy1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dD8ud2l0aFRleHQgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaW5wdXRDb25maWcuZHJvcGRvd25JbWFnZUlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkcm9wZG93blZhbHVlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxjYS1pbnB1dC10ZXN0XG4gICAgICAgICAgICAjdDI9XCJuZ2JQb3BvdmVyXCJcbiAgICAgICAgICAgIFtuZ2JQb3BvdmVyXT1cImNhSW5wdXREcm9wZG93blBvcG92ZXJcIlxuICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgW2F1dG9DbG9zZV09XCInb3V0c2lkZSdcIlxuICAgICAgICAgICAgW2NvbnRhaW5lcl09XCInYm9keSdcIlxuICAgICAgICAgICAgW3BsYWNlbWVudF09XCJcbiAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT0gJ3N2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGUnXG4gICAgICAgICAgICAgICAgICAgID8gWydib3R0b20tbGVmdCcsICd0b3AtbGVmdCddXG4gICAgICAgICAgICAgICAgICAgIDogWydib3R0b20tbGVmdCddXG4gICAgICAgICAgICBcIlxuICAgICAgICAgICAgI2lucHV0XG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiaW5wdXRGb3JtQ29udHJvbCB8IGZvcm1Db250cm9sXCJcbiAgICAgICAgICAgIFtwYXJlbnRDb250cm9sXT1cImdldFN1cGVyQ29udHJvbFwiXG4gICAgICAgICAgICBbaW5jb3JyZWN0VmFsdWVdPVwiaXNJbmNvcnJlY3RWYWx1ZVwiXG4gICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgW3NlbGVjdGVkRHJvcGRvd25MYWJlbENvbG9yXT1cIlxuICAgICAgICAgICAgICAgIGlucHV0Q29uZmlnLmRyb3Bkb3duTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgPyBhY3RpdmVJdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGFjdGl2ZUl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIDogYWN0aXZlSXRlbUNvbG9yXG4gICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFt0ZW1wbGF0ZV09XCJfdGVtcGxhdGVcIlxuICAgICAgICAgICAgKGJsdXJJbnB1dCk9XCJvbkJsdXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjbGVhcik9XCJvbkNsZWFySW5wdXRFdmVudCgkZXZlbnQpXCJcbiAgICAgICAgICAgIChjb21tYW5kRXZlbnQpPVwiY29tbWFuZEV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgKHNob3dIaWRlRHJvcGRvd24pPVwic2hvd0hpZGVEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgIChkcm9wRG93bktleU5hdmlnYXRpb24pPVwiZHJvcERvd25LZXlOYXZpZ2F0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgKGluY29ycmVjdEV2ZW50KT1cIm9uSW5jb3JyZWN0SW5wdXQoJGV2ZW50KVwiXG4gICAgICAgICAgICAoaGlkZGVuKT1cImhhbmRsZUhpZGRlbkRyb3Bkb3duKClcIlxuICAgICAgICAgICAgKHNob3duKT1cImhhbmRsZU9wZW5Ecm9wZG93bigpXCJcbiAgICAgICAgPjwvY2EtaW5wdXQtdGVzdD5cbiAgICB9XG5cbiAgICA8IS0tIERyb3Bkb3duIGljb24gaW5zdGVhZCBvZiBpbnB1dCAtLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnLmlzSWNvbklucHV0KSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIGlucHV0LWljb24tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICB2YWxpZDpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaXNWYWxpZEljb24gJiZcbiAgICAgICAgICAgICAgICAgICAgIWlucHV0Q29uZmlnLmlucHV0SWNvbj8uaW5jbHVkZXMoJ2N1c3RvbScpLFxuICAgICAgICAgICAgICAgIGFjdGl2ZTogcG9wb3ZlclJlZj8uaXNPcGVuKCksXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2Zy1pY29uXG4gICAgICAgICAgICAgICAgI3QyPVwibmdiUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgW25nYlBvcG92ZXJdPVwiY2FJbnB1dERyb3Bkb3duUG9wb3ZlclwiXG4gICAgICAgICAgICAgICAgcG9wb3ZlckNsYXNzPVwiY2EtaW5wdXQtZHJvcGRvd25cIlxuICAgICAgICAgICAgICAgIFthdXRvQ2xvc2VdPVwiJ291dHNpZGUnXCJcbiAgICAgICAgICAgICAgICBbY29udGFpbmVyXT1cIidib2R5J1wiXG4gICAgICAgICAgICAgICAgW3BsYWNlbWVudF09XCJbJ2JvdHRvbS1sZWZ0J11cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaW5wdXQtaWNvblwiXG4gICAgICAgICAgICAgICAgW3NyY109XCJcbiAgICAgICAgICAgICAgICAgICAgaW5wdXREcm9wZG93blN2Z1JvdXRlcy5yZXBhaXJQbVN2Z1JvdXRlICtcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcuaW5wdXRJY29uXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L3N2Zy1pY29uPlxuICAgICAgICA8L2Rpdj5cbiAgICB9XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjY2FJbnB1dERyb3Bkb3duUG9wb3Zlcj5cbiAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEcm9wZG93biBvcHRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cbiAgICBAaWYgKGlucHV0Q29uZmlnPy5tZXJnZURyb3Bkb3duQm9keVdpdGhJbnB1dCAmJiBfb3B0aW9ucz8ubGVuZ3RoKSB7XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24tb3B0aW9ucy1kaXZpZGVyIHt7XG4gICAgICAgICAgICAgICAgaW5wdXRDb25maWcuZHJvcGRvd25XaWR0aENsYXNzXG4gICAgICAgICAgICB9fVwiXG4gICAgICAgICAgICBbY2xhc3MuZGlzcGF0Y2hfZHJvcGRvd25dPVwiX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJ1wiXG4gICAgICAgID48L2Rpdj5cbiAgICB9XG5cbiAgICBAaWYgKFxuICAgICAgICAoaW5wdXRDb25maWc/Lm5hbWUgIT0gJ0FkZHJlc3MnICYmXG4gICAgICAgICAgICBpbnB1dENvbmZpZz8ubmFtZSAhPSAnUm91dGluZ0FkZHJlc3MnICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCkgfHxcbiAgICAgICAgKChpbnB1dENvbmZpZz8ubmFtZSA9PSAnQWRkcmVzcycgfHxcbiAgICAgICAgICAgIGlucHV0Q29uZmlnPy5uYW1lID09ICdSb3V0aW5nQWRkcmVzcycpICYmXG4gICAgICAgICAgICAhaW5wdXRDb25maWcuaXNEaXNhYmxlZCAmJlxuICAgICAgICAgICAgX29wdGlvbnM/Lmxlbmd0aClcbiAgICApIHtcbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbERyb3Bkb3duKCRldmVudC50YXJnZXQpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICBzY3JvbGw6IF9vcHRpb25zIHwgY2FEcm9wZG93bkNvdW50OiBfdGVtcGxhdGUsXG4gICAgICAgICAgICAgICAgJ2Ryb3Bkb3duLW9wdGlvbnMtZ3JvdXBzJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09PSAnZ3JvdXBzJyB8fFxuICAgICAgICAgICAgICAgICAgICBfdGVtcGxhdGUgPT09ICdsb2FkLWJyb2tlci1jb250YWN0JyxcbiAgICAgICAgICAgICAgICAnZHJvcGRvd24tb3B0aW9ucy1mdWVsLWZyYW5jaGlzZSc6XG4gICAgICAgICAgICAgICAgICAgIF90ZW1wbGF0ZSA9PT0gJ2Z1ZWwtZnJhbmNoaXNlJyxcbiAgICAgICAgICAgICAgICAnbWVyZ2UtZHJvcGRvd24tYm9keS13aXRoLWlucHV0JzpcbiAgICAgICAgICAgICAgICAgICAgaW5wdXRDb25maWcubWVyZ2VEcm9wZG93bkJvZHlXaXRoSW5wdXQsXG4gICAgICAgICAgICAgICAgJ25vLXJlc3VsdC1jb250YWluZXInOiBfb3B0aW9uc1swXT8ubmFtZSA9PT0gJ05vIFJlc3VsdHMnLFxuICAgICAgICAgICAgICAgICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJzpcbiAgICAgICAgICAgICAgICAgICAgX3RlbXBsYXRlID09ICdzdmd0ZXh0LWRpc3BhdGNoLXRlbXBsYXRlJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1vcHRpb25zICB7eyBpbnB1dENvbmZpZy5kcm9wZG93bldpZHRoQ2xhc3MgfX1cIlxuICAgICAgICA+XG4gICAgICAgICAgICBAc3dpdGNoIChfdGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTVkcgVGVtcGxhdGUgKFJlbmRlciBzdmdzIG9yIHRleHQgaWYgc3ZncyBkb2Vzbid0IGV4aXN0ICkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5TVkdfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Ryb3Bkb3duV2l0aEltYWdlXT1cImlucHV0Q29uZmlnLmRyb3Bkb3duSW1hZ2VJbnB1dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Zy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyIFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkcm9wZG93blN2Z1RlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPiAtLT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBTdmcgVGV4dCBUZW1wbGF0ZSAoZGlzcGxheSBmbGV4KSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlNWR1RFWFRfVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1zdmd0ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtdGVtcGxhdGU+XG5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cInN2Z1RleHRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tRGlzcGF0Y2ggZHJvcGRvd24tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uU1ZHVEVYVF9ESVNQQVRDSF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLXN2Z3RleHQtZGlzcGF0Y2gtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tc3ZndGV4dC1kaXNwYXRjaC10ZW1wbGF0ZT5cblxuICAgICAgICAgICAgICAgICAgICA8IS0tIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGlzcGF0Y2hUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgID48L25nLWNvbnRhaW5lcj4gLS0+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gRGV0YWlscyB0ZW1wbGF0ZSAodHJ1Y2ssIHRyYWlsZXIuLi4gZGV0YWlscy1wYWdlcykgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uREVUQUlMU19URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRldGFpbHMtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NvcnRdPVwiX3NvcnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kZXRhaWxzLXRlbXBsYXRlPlxuXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkZXRhaWxzVGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICA+PC9uZy1jb250YWluZXI+IC0tPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEdyb3VwaW5nIHRlbXBsYXRlIChjYW4gc2VlIG9uIGNvbnRhY3QgbW9kYWwpICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkdST1VQUykge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwc1xuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWdyb3Vwcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBNdWx0aXNlbGVjdCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLk1VTFRJU0VMRUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbXVsdGlzZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhc3RBY3RpdmVNdWx0aXNlbGVjdEl0ZW1dPVwibGFzdEFjdGl2ZU11bHRpc2VsZWN0SXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uTXVsdGlzZWxlY3RTZWxlY3QpPVwib25NdWx0aXNlbGVjdFNlbGVjdCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLW11bHRpc2VsZWN0PlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMYWJlbHMgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MQUJFTFMpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sYWJlbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbE1vZGVdPVwibGFiZWxNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjYW5BZGROZXddPVwiX2NhbkFkZE5ld1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxhYmVscz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEaXNwYXRjaCBUZW1wbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkRJU1BBVENIKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZGlzcGF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kaXNwYXRjaD5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBMb2FkIERpc3BhdGNoZXIgVGVtcGxhdGUgKHVzZXIgYXZhdGFyICsgdXNlciBuYW1lKSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLkxPQURfRElTUEFUQ0hFUikge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXI+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBDb21iaW5lIFRydWNrLVRyYWlsZXItRHJpdmVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9ESVNQQVRDSEVTX1RURCkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtZGlzcGF0Y2hlcy10dGRcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWRpc3BhdGNoZXMtdHRkPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9CUk9LRVIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1sb2FkLWJyb2tlclxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIExvYWQgQnJva2VyIENvbnRhY3QgVGVtcGxhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5MT0FEX0JST0tFUl9DT05UQUNUKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1icm9rZXItY29udGFjdFxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLWxvYWQtYnJva2VyLWNvbnRhY3Q+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gTG9hZCBTaGlwcGVyIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uTE9BRF9TSElQUEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tbG9hZC1zaGlwcGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFRlbXBsYXRlIFRleHQgLSBDb3VudGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uVEVYVF9DT1VOVEVSKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tdGV4dC1jb3VudGVyPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIEZ1ZWwgRnJhbmNoaXNlIFRlbXBsYXRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT5cblxuICAgICAgICAgICAgICAgIEBjYXNlIChkcm9wZG93blRlbXBsYXRlVHlwZUVudW0uRlVFTF9GUkFOQ0hJU0UpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICh0b2dnbGVOZXN0ZWRMaXN0KT1cInRvZ2dsZU5lc3RlZExpc3QoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtR3JvdXApPVwib25BY3RpdmVJdGVtR3JvdXAoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1mdWVsLWZyYW5jaGlzZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIERvdWJsZSBUZXh0IFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfVEVYVF9URU1QTEFURSkge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRvdWJsZS10ZXh0LXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAjZHJvcGRvd25Db21wb25lbnRSZWZcbiAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNhRHJvcGRvd25PcHRpb25zUGlwZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBfb3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjYW5BZGROZXdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc29ydFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthY3RpdmVJdGVtXT1cImFjdGl2ZUl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGU+XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgPCEtLSBEb3VibGUgQ29sdW1uIFRlbXBsYXRlIC0tPlxuXG4gICAgICAgICAgICAgICAgQGNhc2UgKGRyb3Bkb3duVGVtcGxhdGVUeXBlRW51bS5ET1VCTEVfQ09MVU1OX1RFTVBMQVRFKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tZG91YmxlLXRleHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1kb3VibGUtdGV4dC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tIFRyaXBsZSBDb2x1bW4gVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlRSSVBMRV9DT0xVTU5fVEVNUExBVEUpIHtcbiAgICAgICAgICAgICAgICAgICAgPGFwcC1jYS1pbnB1dC1kcm9wZG93bi10cmlwbGUtdGV4dC10ZW1wbGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgI2Ryb3Bkb3duQ29tcG9uZW50UmVmXG4gICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjYURyb3Bkb3duT3B0aW9uc1BpcGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogX29wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY2FuQWRkTmV3XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHNvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbYWN0aXZlSXRlbV09XCJhY3RpdmVJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hUZXh0XT1cInNlYXJjaElucHV0VGV4dC52YWx1ZSB8fCAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAob25BY3RpdmVJdGVtKT1cIm9uQWN0aXZlSXRlbSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dEhvdmVyZWRJdGVtXT1cImlucHV0SG92ZXJlZEl0ZW1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYXBwLWNhLWlucHV0LWRyb3Bkb3duLXRyaXBsZS10ZXh0LXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIDwhLS0gUEFZUk9MTCBUUlVDS1MgVGVtcGxhdGUgLS0+XG5cbiAgICAgICAgICAgICAgICBAY2FzZSAoZHJvcGRvd25UZW1wbGF0ZVR5cGVFbnVtLlBBWVJPTExfVFJVQ0tTKSB7XG4gICAgICAgICAgICAgICAgICAgIDxhcHAtY2EtaW5wdXQtZHJvcGRvd24tcGF5cm9sbC10cnVja3NcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoVGV4dF09XCJzZWFyY2hJbnB1dFRleHQudmFsdWUgfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKG9uQWN0aXZlSXRlbSk9XCJvbkFjdGl2ZUl0ZW0oJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRIb3ZlcmVkSXRlbV09XCJpbnB1dEhvdmVyZWRJdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgID48L2FwcC1jYS1pbnB1dC1kcm9wZG93bi1wYXlyb2xsLXRydWNrcz5cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICA8IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBEZWZhdWx0IFRlbXBsYXRlIC0gUmVuZGVyIE9ubHkgVGV4dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+XG4gICAgICAgICAgICAgICAgQGRlZmF1bHQge1xuICAgICAgICAgICAgICAgICAgICA8YXBwLWNhLWlucHV0LWRyb3Bkb3duLWRlZmF1bHQtdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICNkcm9wZG93bkNvbXBvbmVudFJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgY2FEcm9wZG93bk9wdGlvbnNQaXBlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IF9vcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGlucHV0Q29uZmlnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNhbkFkZE5ld1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBzb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2FjdGl2ZUl0ZW1dPVwiYWN0aXZlSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaFRleHRdPVwic2VhcmNoSW5wdXRUZXh0LnZhbHVlIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChvbkFjdGl2ZUl0ZW0pPVwib25BY3RpdmVJdGVtKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SG92ZXJlZEl0ZW1dPVwiaW5wdXRIb3ZlcmVkSXRlbVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICA+PC9hcHAtY2EtaW5wdXQtZHJvcGRvd24tZGVmYXVsdC10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|
|
@@ -31674,7 +31674,7 @@ class CaInputDropdownTestComponent {
|
|
|
31674
31674
|
set options(values) {
|
|
31675
31675
|
if (values)
|
|
31676
31676
|
this._options = [...values];
|
|
31677
|
-
console.log(
|
|
31677
|
+
console.log('update with optins', values, this.firstWriteValue);
|
|
31678
31678
|
if (this.firstWriteValue) {
|
|
31679
31679
|
this.writeValueToFormControl(this.firstWriteValue);
|
|
31680
31680
|
}
|
|
@@ -31741,8 +31741,9 @@ class CaInputDropdownTestComponent {
|
|
|
31741
31741
|
return this.superControl.control;
|
|
31742
31742
|
}
|
|
31743
31743
|
writeValue(value) {
|
|
31744
|
-
console.log(
|
|
31745
|
-
|
|
31744
|
+
console.log('WRITE VALUE FIRST', value);
|
|
31745
|
+
if (value)
|
|
31746
|
+
this.firstWriteValue = value;
|
|
31746
31747
|
this.writeValueToFormControl(value);
|
|
31747
31748
|
}
|
|
31748
31749
|
writeValueToFormControl(value) {
|