ontimize-web-ngx 15.2.1 → 15.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/svg/ontimize-icon-set.svg +0 -1
- package/esm2020/lib/components/form/navigation/o-form.navigation.class.mjs +5 -4
- package/esm2020/lib/components/input/currency-input/o-currency-input.component.mjs +3 -3
- package/esm2020/lib/components/input/integer-input/o-integer-input.component.mjs +6 -6
- package/esm2020/lib/components/input/percent-input/o-percent-input.component.mjs +3 -3
- package/esm2020/lib/components/input/real-input/o-real-input.component.mjs +3 -3
- package/esm2020/lib/components/input/text-input/o-text-input.component.mjs +15 -13
- package/esm2020/lib/components/table/column/cell-editor/integer/o-table-cell-editor-integer.component.mjs +6 -6
- package/esm2020/lib/components/table/column/cell-editor/real/o-table-cell-editor-real.component.mjs +6 -6
- package/esm2020/lib/components/table/column/cell-renderer/cell-renderer.mjs +5 -3
- package/esm2020/lib/components/table/column/o-table-column.component.mjs +2 -2
- package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs +80 -19
- package/esm2020/lib/components/table/extensions/export-button/o-table-export-button.component.mjs +10 -11
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-export-configuration.class.mjs +1 -1
- package/esm2020/lib/components/table/extensions/header/table-menu/o-table-menu.component.mjs +10 -1
- package/esm2020/lib/components/table/o-table.component.mjs +7 -6
- package/esm2020/lib/config/o-directives.mjs +4 -2
- package/esm2020/lib/directives/index.mjs +2 -1
- package/esm2020/lib/directives/input-regulate.directive.mjs +70 -0
- package/esm2020/lib/i18n/i18n.mjs +21 -3
- package/esm2020/lib/interfaces/export-service.interface.mjs +1 -1
- package/esm2020/lib/services/ontimize/ontimize-export-3xx.service.mjs +7 -5
- package/esm2020/lib/services/ontimize-export-data-provider-3x.service.mjs +6 -3
- package/esm2020/lib/shared/shared.module.mjs +4 -3
- package/esm2020/lib/validators/o-validators.mjs +1 -1
- package/fesm2015/ontimize-web-ngx.mjs +2994 -2833
- package/fesm2015/ontimize-web-ngx.mjs.map +1 -1
- package/fesm2020/ontimize-web-ngx.mjs +2972 -2811
- package/fesm2020/ontimize-web-ngx.mjs.map +1 -1
- package/lib/components/input/text-input/o-text-input.component.d.ts +2 -1
- package/lib/components/table/column/o-table-column.component.d.ts +1 -1
- package/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.d.ts +24 -1
- package/lib/components/table/extensions/dialog/o-table-dialog-components.d.ts +1 -1
- package/lib/components/table/extensions/export-button/o-table-export-button.component.d.ts +2 -2
- package/lib/components/table/extensions/footer/o-table-footer-components.d.ts +1 -1
- package/lib/components/table/extensions/header/o-table-header-components.d.ts +2 -2
- package/lib/components/table/extensions/header/table-menu/o-table-export-configuration.class.d.ts +1 -0
- package/lib/components/table/extensions/header/table-menu/o-table-menu.component.d.ts +1 -0
- package/lib/components/table/o-table.component.d.ts +4 -3
- package/lib/directives/index.d.ts +1 -0
- package/lib/directives/input-regulate.directive.d.ts +23 -0
- package/lib/i18n/i18n.d.ts +18 -0
- package/lib/interfaces/export-service.interface.d.ts +1 -1
- package/lib/services/ontimize/ontimize-export-3xx.service.d.ts +1 -1
- package/lib/shared/shared.module.d.ts +15 -14
- package/package.json +1 -1
|
@@ -362,7 +362,7 @@ export class OTableColumnComponent {
|
|
|
362
362
|
}
|
|
363
363
|
}
|
|
364
364
|
OTableColumnComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableColumnComponent, deps: [{ token: forwardRef(() => OTableComponent) }, { token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
365
|
-
OTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnComponent, selector: "o-table-column", inputs: { attr: "attr", title: "title", titleAlign: ["title-align", "titleAlign"], contentAlign: ["content-align", "contentAlign"], orderable: "orderable", searchable: "searchable", groupable: "groupable", type: "type", editable: "editable", width: "width", minWidth: ["min-width", "minWidth"], maxWidth: ["max-width", "maxWidth"], asyncLoad: ["async-load", "asyncLoad"], sqlType: ["sql-type", "sqlType"], tooltip: "tooltip", tooltipValue: ["tooltip-value", "tooltipValue"], tooltipFunction: ["tooltip-function", "tooltipFunction"], multiline: "multiline", resizable: "resizable", filterExpressionFunction: ["filter-expression-function", "filterExpressionFunction"], class: "class", angularValidatorsFn: ["validators", "angularValidatorsFn"], angularValidatorsFnErrors: ["validators-errors", "angularValidatorsFnErrors"], angularAsyncValidatorsFn: ["async-validators", "angularAsyncValidatorsFn"], trueValue: ["true-value", "trueValue"], falseValue: ["false-value", "falseValue"], booleanType: ["boolean-type", "booleanType"], renderTrueValue: ["render-true-value", "renderTrueValue"], renderFalseValue: ["render-false-value", "renderFalseValue"], renderType: ["render-type", "renderType"], currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"], format: "format", imageType: ["image-type", "imageType"], emptyImage: ["empty-image", "emptyImage"], avatar: "avatar", icon: "icon", svgIcon: ["svg-icon", "svgIcon"], action: "action", text: "text", iconPosition: ["icon-position", "iconPosition"], entity: "entity", service: "service", columns: "columns", translate: "translate", valueColumn: ["value-column", "valueColumn"], valueColumnType: ["value-column-type", "valueColumnType"], parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], serviceType: ["service-type", "serviceType"], translateArgsFn: ["translate-params", "translateArgsFn"], orequired: ["required", "orequired"], showPlaceHolder: ["show-placeholder", "showPlaceHolder"], olabel: ["label", "olabel"], updateRecordOnEdit: ["update-record-on-edit", "updateRecordOnEdit"], showNotificationOnEdit: ["show-notification-on-edit", "showNotificationOnEdit"], enabled: "enabled", min: "min", max: "max", step: "step", locale: "locale", oStartView: ["start-view", "oStartView"], oTouchUi: ["touch-ui", "oTouchUi"], startAt: ["start-at", "startAt"], filterDate: ["filter-date", "filterDate"], dateValueType: ["date-value-type", "dateValueType"], oDateFormat: ["date-format", "oDateFormat"], oDateLocale: ["date-locale", "oDateLocale"], oDateStartView: ["date-start-view", "oDateStartView"], oMinDate: ["date-min", "oMinDate"], oMaxDate: ["date-max", "oMaxDate"], oDateTouchUi: ["date-touch-ui", "oDateTouchUi"], oDateStartAt: ["date-start-at", "oDateStartAt"], oHourFormat: ["hour-format", "oHourFormat"], oHourMin: ["hour-min", "oHourMin"], oHourMax: ["hour-max", "oHourMax"], oHourPlaceholder: ["hour-placeholder", "oHourPlaceholder"], oDatePlaceholder: ["date-placeholder", "oDatePlaceholder"] }, outputs: { onClick: "onClick", onDataLoaded: "onDataLoaded", editionStarted: "editionStarted", editionCancelled: "editionCancelled", editionCommitted: "editionCommitted", onPostUpdateRecord: "onPostUpdateRecord" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<span #container>\n</span>", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
365
|
+
OTableColumnComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableColumnComponent, selector: "o-table-column", inputs: { attr: "attr", title: "title", titleAlign: ["title-align", "titleAlign"], contentAlign: ["content-align", "contentAlign"], orderable: "orderable", searchable: "searchable", groupable: "groupable", type: "type", editable: "editable", width: "width", minWidth: ["min-width", "minWidth"], maxWidth: ["max-width", "maxWidth"], asyncLoad: ["async-load", "asyncLoad"], sqlType: ["sql-type", "sqlType"], tooltip: "tooltip", tooltipValue: ["tooltip-value", "tooltipValue"], tooltipFunction: ["tooltip-function", "tooltipFunction"], multiline: "multiline", resizable: "resizable", filterExpressionFunction: ["filter-expression-function", "filterExpressionFunction"], class: "class", angularValidatorsFn: ["validators", "angularValidatorsFn"], angularValidatorsFnErrors: ["validators-errors", "angularValidatorsFnErrors"], angularAsyncValidatorsFn: ["async-validators", "angularAsyncValidatorsFn"], trueValue: ["true-value", "trueValue"], falseValue: ["false-value", "falseValue"], booleanType: ["boolean-type", "booleanType"], renderTrueValue: ["render-true-value", "renderTrueValue"], renderFalseValue: ["render-false-value", "renderFalseValue"], renderType: ["render-type", "renderType"], grouping: "grouping", thousandSeparator: ["thousand-separator", "thousandSeparator"], decimalSeparator: ["decimal-separator", "decimalSeparator"], minDecimalDigits: ["min-decimal-digits", "minDecimalDigits"], maxDecimalDigits: ["max-decimal-digits", "maxDecimalDigits"], currencySymbol: ["currency-symbol", "currencySymbol"], currencySymbolPosition: ["currency-symbol-position", "currencySymbolPosition"], format: "format", imageType: ["image-type", "imageType"], emptyImage: ["empty-image", "emptyImage"], avatar: "avatar", icon: "icon", svgIcon: ["svg-icon", "svgIcon"], action: "action", text: "text", iconPosition: ["icon-position", "iconPosition"], entity: "entity", service: "service", columns: "columns", translate: "translate", valueColumn: ["value-column", "valueColumn"], valueColumnType: ["value-column-type", "valueColumnType"], parentKeys: ["parent-keys", "parentKeys"], queryMethod: ["query-method", "queryMethod"], serviceType: ["service-type", "serviceType"], translateArgsFn: ["translate-params", "translateArgsFn"], orequired: ["required", "orequired"], showPlaceHolder: ["show-placeholder", "showPlaceHolder"], olabel: ["label", "olabel"], updateRecordOnEdit: ["update-record-on-edit", "updateRecordOnEdit"], showNotificationOnEdit: ["show-notification-on-edit", "showNotificationOnEdit"], enabled: "enabled", min: "min", max: "max", step: "step", locale: "locale", oStartView: ["start-view", "oStartView"], oTouchUi: ["touch-ui", "oTouchUi"], startAt: ["start-at", "startAt"], filterDate: ["filter-date", "filterDate"], dateValueType: ["date-value-type", "dateValueType"], oDateFormat: ["date-format", "oDateFormat"], oDateLocale: ["date-locale", "oDateLocale"], oDateStartView: ["date-start-view", "oDateStartView"], oMinDate: ["date-min", "oMinDate"], oMaxDate: ["date-max", "oMaxDate"], oDateTouchUi: ["date-touch-ui", "oDateTouchUi"], oDateStartAt: ["date-start-at", "oDateStartAt"], oHourFormat: ["hour-format", "oHourFormat"], oHourMin: ["hour-min", "oHourMin"], oHourMax: ["hour-max", "oHourMax"], oHourPlaceholder: ["hour-placeholder", "oHourPlaceholder"], oDatePlaceholder: ["date-placeholder", "oDatePlaceholder"] }, outputs: { onClick: "onClick", onDataLoaded: "onDataLoaded", editionStarted: "editionStarted", editionCancelled: "editionCancelled", editionCommitted: "editionCommitted", onPostUpdateRecord: "onPostUpdateRecord" }, viewQueries: [{ propertyName: "container", first: true, predicate: ["container"], descendants: true, read: ViewContainerRef, static: true }], ngImport: i0, template: "<span #container>\n</span>", styles: [""], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
366
366
|
__decorate([
|
|
367
367
|
BooleanInputConverter(),
|
|
368
368
|
__metadata("design:type", Boolean)
|
|
@@ -437,4 +437,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
|
|
|
437
437
|
type: ViewChild,
|
|
438
438
|
args: ['container', { read: ViewContainerRef, static: true }]
|
|
439
439
|
}] } });
|
|
440
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFaEksTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFHM0MsTUFBTTtJQUdOLE9BQU87SUFHUCx5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LEVBQUU7O3dEQUNhO0FBQ3JDO0lBQUMscUJBQXFCLEVBQUU7OzhEQUNTO0FBRWpDO0lBQUMscUJBQXFCLEVBQUU7O2lFQUNXO0FBQ25DO0lBQUMscUJBQXFCLEVBQUU7O3FFQUNnQjtBQU94QztJQUFDLHFCQUFxQixFQUFFOzt1REFDWTtBQU1wQztJQUFDLG9CQUFvQixFQUFFOztrREFDWDtBQUNaO0lBQUMsb0JBQW9CLEVBQUU7O2tEQUNYO0FBQ1o7SUFBQyxvQkFBb0IsRUFBRTs7bURBQ1Y7QUFDYjtJQUFDLG9CQUFvQixFQUFFOzsrREFDTTtBQUM3QjtJQUFDLG9CQUFvQixFQUFFOzsrREFDTTtBQUc3QjtJQUFDLHFCQUFxQixFQUFFOztrRUFDYTtBQUNyQztJQUFDLHFCQUFxQixFQUFFOzt5REFDSjtBQVdwQjtJQUFDLHFCQUFxQixFQUFFOzt3REFDRzs0RkFuSmhCLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxVQUN2Qyw2QkFBNkIsV0FDNUIsOEJBQThCOzswQkE2SnBDLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQzttRUF6SXBDLFFBQVEsTUFLUixPQUFPLE1BZ0VKLFNBQVMsTUFZVCxTQUFTLE1BRW5CLGVBQWUsTUFHZixrQkFBa0IsTUFFbEIsc0JBQXNCLE1BUVosUUFBUSxNQU9sQixHQUFHLE1BRUgsR0FBRyxNQUVILElBQUksTUFFSixnQkFBZ0IsTUFFaEIsZ0JBQWdCLE1BSWhCLG1CQUFtQixNQUVuQixVQUFVLE1BWVYsU0FBUyxNQUdULFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciwgTnVtYmVySW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPUGVyY2VudGFnZVZhbHVlQmFzZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9vLXBlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9kYXRlLWZpbHRlci1mdW5jdGlvbi50eXBlJztcbmltcG9ydCB7IEVycm9yRGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Vycm9yLWRhdGEudHlwZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IE9EYXRlVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvby1kYXRlLXZhbHVlLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IGVkaXRvcnNNYXBwaW5nLCBPX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFMsIE9fVEFCTEVfQ0VMTF9FRElUT1JTX09VVFBVVFMgfSBmcm9tICcuL2NlbGwtZWRpdG9yL2NlbGwtZWRpdG9yJztcbmltcG9ydCB7IE9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLCBPX1RBQkxFX0NFTExfUkVOREVSRVJTX09VVFBVVFMsIHJlbmRlcmVyc01hcHBpbmcgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXIvY2VsbC1yZW5kZXJlcic7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTiA9IFtcblxuICAvLyBhdHRyIFtzdHJpbmddOiBjb2x1bW4gbmFtZS5cbiAgJ2F0dHInLFxuXG4gIC8vIHRpdGxlIFtzdHJpbmddOiBjb2x1bW4gdGl0bGUuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAndGl0bGUnLFxuXG4gIC8vIHRpdGxlLWFsaWduIFtzdGFydCB8IGNlbnRlciB8IGVuZF06IGNvbHVtbiB0aXRsZSBhbGlnbm1lbnQuIERlZmF1bHQ6IGNlbnRlci5cbiAgJ3RpdGxlQWxpZ246IHRpdGxlLWFsaWduJyxcblxuICAvLyBjb250ZW50LWFsaWduIFtzdGFydCB8IGNlbnRlciB8IGVuZF06IGNvbHVtbiBjb250ZW50IGFsaWdubWVudC5cbiAgJ2NvbnRlbnRBbGlnbjogY29udGVudC1hbGlnbicsXG5cbiAgLy8gb3JkZXJhYmxlIFtub3x5ZXNdOiBjb2x1bW4gY2FuIGJlIHNvcnRlZC4gRGVmYXVsdDogeWVzLlxuICAnb3JkZXJhYmxlJyxcblxuICAvLyBzZWFyY2hhYmxlIFtub3x5ZXNdOiBzZWFyY2hpbmdzIGFyZSBwZXJmb3JtZWQgaW50byBjb2x1bW4gY29udGVudC4gRGVmYXVsdDogeWVzLlxuICAnc2VhcmNoYWJsZScsXG5cbiAgLy8gZ3JvdXBhYmxlIFtub3x5ZXN8dHJ1ZXxmYWxzZV06IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgY29sdW1uIGNhbiBiZSBncm91cGFibGVcbiAgJ2dyb3VwYWJsZScsXG5cbiAgLy8gdHlwZSBbYm9vbGVhbnxpbnRlZ2VyfHJlYWx8Y3VycmVuY3l8ZGF0ZXxpbWFnZV06IGNvbHVtbiB0eXBlLiBEZWZhdWx0OiBubyB2YWx1ZSAoc3RyaW5nKS5cbiAgJ3R5cGUnLFxuXG4gIC8vIGVkaXRhYmxlIFtub3x5ZXNdOiBjb2x1bW4gY2FuIGJlIGVkaXRlZCBkaXJlY3RseSBvdmVyIHRoZSB0YWJsZS4gRGVmYXVsdDogbm8uXG4gICdlZGl0YWJsZScsXG5cbiAgJ3dpZHRoJyxcblxuICAvLyBvbmx5IGluIHBpeGVsc1xuICAnbWluV2lkdGg6IG1pbi13aWR0aCcsXG5cbiAgLy8gb25seSBpbiBwaXhlbHNcbiAgJ21heFdpZHRoOiBtYXgtd2lkdGgnLFxuXG4gIC8vIGFzeW5jLWxvYWQgW25vfHllc3x0cnVlfGZhbHNlXTogYXN5bmNocm9ub3VzIHF1ZXJ5LiBEZWZhdWx0OiBub1xuICAnYXN5bmNMb2FkIDogYXN5bmMtbG9hZCcsXG5cbiAgLy8gc3FsdHlwZVtzdHJpbmddOiBEYXRhIHR5cGUgYWNjb3JkaW5nIHRvIEphdmEgc3RhbmRhcmQuIFNlZSBTUUxUeXBlIGNsYXNzLiBEZWZhdWx0OiAnT1RIRVInXG4gICdzcWxUeXBlOiBzcWwtdHlwZScsXG5cbiAgJ3Rvb2x0aXAnLFxuXG4gICd0b29sdGlwVmFsdWU6IHRvb2x0aXAtdmFsdWUnLFxuXG4gICd0b29sdGlwRnVuY3Rpb246IHRvb2x0aXAtZnVuY3Rpb24nLFxuXG4gICdtdWx0aWxpbmUnLFxuXG4gICdyZXNpemFibGUnLFxuXG4gICdmaWx0ZXJFeHByZXNzaW9uRnVuY3Rpb246IGZpbHRlci1leHByZXNzaW9uLWZ1bmN0aW9uJyxcblxuICAnY2xhc3MnLFxuXG4gICdhbmd1bGFyVmFsaWRhdG9yc0ZuOiB2YWxpZGF0b3JzJyxcblxuICAnYW5ndWxhclZhbGlkYXRvcnNGbkVycm9yczogdmFsaWRhdG9ycy1lcnJvcnMnLFxuXG4gICdhbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm46IGFzeW5jLXZhbGlkYXRvcnMnLFxuXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLFxuICAuLi5PX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFNcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DT0xVTU4gPSBbXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfT1VUUFVUUyxcbiAgLi4uT19UQUJMRV9DRUxMX0VESVRPUlNfT1VUUFVUU1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbHVtbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9UYWJsZUNvbHVtbiwgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIHB1YmxpYyByZW5kZXJlcjogYW55O1xuICBwdWJsaWMgZWRpdG9yOiBhbnk7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcbiAgcHVibGljIGF0dHI6IHN0cmluZztcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXRsZUFsaWduOiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZW50QWxpZ246ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBwdWJsaWMgc3FsVHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX1NRTFR5cGU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9kZWZhdWx0U1FMVHlwZUtleTogc3RyaW5nID0gJ09USEVSJztcbiAgcHJvdGVjdGVkIF9vcmRlcmFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfcmVzaXphYmxlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX3NlYXJjaGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgX2dyb3VwYWJsZTogYm9vbGVhbjtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgd2lkdGg6IHN0cmluZztcbiAgcHVibGljIG1pbldpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXhXaWR0aDogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHRvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG9vbHRpcFZhbHVlOiBzdHJpbmc7XG4gIHRvb2x0aXBGdW5jdGlvbjogKHJvd0RhdGE6IGFueSkgPT4gYW55O1xuICBwdWJsaWMgY2xhc3M6IHN0cmluZztcblxuICBzZXQgbXVsdGlsaW5lKHZhbDogYm9vbGVhbikge1xuICAgIHZhbCA9IFV0aWwucGFyc2VCb29sZWFuKFN0cmluZyh2YWwpKTtcbiAgICB0aGlzLl9tdWx0aWxpbmUgPSB2YWw7XG4gIH1cbiAgZ2V0IG11bHRpbGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlsaW5lO1xuICB9XG4gIHByb3RlY3RlZCBfbXVsdGlsaW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm46IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnM6IEVycm9yRGF0YVtdID0gW107XG5cbiAgcHVibGljIGFuZ3VsYXJBc3luY1ZhbGlkYXRvcnNGbjogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XG5cbiAgZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uOiAoY29sdW1uQXR0cjogc3RyaW5nLCBxdWlja0ZpbHRlcj86IHN0cmluZykgPT4gRXhwcmVzc2lvbjtcblxuICAvKiBpbnB1dCByZW5kZXJlciBiYXNlICovXG4gIHB1YmxpYyBfZmlsdGVyU291cmNlOiAncmVuZGVyJyB8ICdkYXRhJyB8ICdib3RoJyA9ICdyZW5kZXInO1xuICBwdWJsaWMgZmlsdGVyRnVuY3Rpb246IChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IGFueSwgcXVpY2tGaWx0ZXI/OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qIGlucHV0IHJlbmRlcmVyIGRhdGUgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdDogc3RyaW5nO1xuICAvKiBpbnB1dCByZW5kZXJlciBpbnRlZ2VyICovXG4gIHByb3RlY3RlZCBncm91cGluZzogYW55ID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSAnLCc7XG4gIC8qIGlucHV0IHJlbmRlcmVyIHJlYWwgKi9cbiAgcHJvdGVjdGVkIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZyA9ICcuJztcblxuICAvKiBpbnB1dCByZW5kZXJlciBjdXJyZW5jeSAqL1xuICBwcm90ZWN0ZWQgY3VycmVuY3lTeW1ib2w6IHN0cmluZztcbiAgcHJvdGVjdGVkIGN1cnJlbmN5U3ltYm9sUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBib29sZWFuICovXG4gIHByb3RlY3RlZCB0cnVlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGZhbHNlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIHJlbmRlclRydWVWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyRmFsc2VWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyVHlwZTogc3RyaW5nID0gJ3N0cmluZyc7XG4gIHByb3RlY3RlZCBib29sZWFuVHlwZTogc3RyaW5nID0gJ2Jvb2xlYW4nO1xuXG4gIC8qIGlucHV0IGltYWdlICovXG4gIHByb3RlY3RlZCBpbWFnZVR5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGF2YXRhcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZW1wdHlJbWFnZTogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGFjdGlvbiAqL1xuICBwcm90ZWN0ZWQgaWNvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWN0aW9uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCB0ZXh0OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpY29uUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBzZXJ2aWNlICovXG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlcnZpY2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IHN0cmluZztcbiAgcHJvdGVjdGVkIHZhbHVlQ29sdW1uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBwYXJlbnRLZXlzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBxdWVyeU1ldGhvZDogc3RyaW5nID0gQ29kZXMuUVVFUllfTUVUSE9EO1xuICBwcm90ZWN0ZWQgc2VydmljZVR5cGU6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCB0cmFuc2xhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyogaW5wdXQgcmVuZGVyZXIgdHJhbnNsYXRlICovXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVBcmdzRm46IChyb3dEYXRhOiBhbnkpID0+IGFueVtdO1xuICAvKiBpbnB1dCB0aW1lICovXG4gIG9EYXRlRm9ybWF0ID0gJ0wnO1xuICBvSG91ckZvcm1hdCA9IDI0O1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIHBlcmNlbnRhZ2UgKi9cbiAgdmFsdWVCYXNlOiBPUGVyY2VudGFnZVZhbHVlQmFzZVR5cGUgPSAxO1xuXG4gIC8qIGlucHV0IGVkaXRvciAqL1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd1BsYWNlSG9sZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIG9sYWJlbDogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgdXBkYXRlUmVjb3JkT25FZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dOb3RpZmljYXRpb25PbkVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiBpbnB1dCBlZGl0b3IgZGF0ZSAqL1xuICBwcm90ZWN0ZWQgbG9jYWxlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBvU3RhcnRWaWV3OiAnbW9udGgnIHwgJ3llYXInID0gJ21vbnRoJztcbiAgcHJvdGVjdGVkIG9NaW5EYXRlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBvTWF4RGF0ZTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9Ub3VjaFVpOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvU3RhcnRBdDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZmlsdGVyRGF0ZTogRGF0ZUZpbHRlckZ1bmN0aW9uO1xuICBwcm90ZWN0ZWQgZGF0ZVZhbHVlVHlwZTogT0RhdGVWYWx1ZVR5cGUgPSAndGltZXN0YW1wJztcblxuICAvKiBpbnB1dCBlZGl0b3IgaW50ZWdlciAqL1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtaW46IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWF4OiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIHN0ZXA6IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWluRGVjaW1hbERpZ2l0czogbnVtYmVyID0gMjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWF4RGVjaW1hbERpZ2l0czogbnVtYmVyID0gMjtcblxuICAvKiBpbnB1dCBlZGl0b3IgYm9vbGVhbiAqL1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgaW5kZXRlcm1pbmF0ZU9uTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgYXV0b0NvbW1pdDogYm9vbGVhbjtcblxuICAvKiBvdXRwdXQgY2VsbCByZW5kZXJlciBhY3Rpb24gKi9cbiAgb25DbGljazogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICAvKiBvdXRwdXQgY2VsbCBlZGl0b3IgKi9cbiAgZWRpdGlvblN0YXJ0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIGVkaXRpb25DYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIGVkaXRpb25Db21taXR0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIG9uUG9zdFVwZGF0ZVJlY29yZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgYXN5bmNMb2FkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT1RhYmxlQ29tcG9uZW50KSkgcHVibGljIHRhYmxlOiBPVGFibGVDb21wb25lbnQsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgfVxuXG4gIHN0YXRpYyBhZGRFZGl0b3IodHlwZTogc3RyaW5nLCBlZGl0b3JDbGFzc1JlZmVyZW5jZTogYW55KSB7XG4gICAgaWYgKCFlZGl0b3JzTWFwcGluZy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSAmJiBVdGlsLmlzRGVmaW5lZChlZGl0b3JDbGFzc1JlZmVyZW5jZSkpIHtcbiAgICAgIGVkaXRvcnNNYXBwaW5nW3R5cGVdID0gZWRpdG9yQ2xhc3NSZWZlcmVuY2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ncm91cGluZyA9IFV0aWwucGFyc2VCb29sZWFuKHRoaXMuZ3JvdXBpbmcsIHRydWUpO1xuICAgIHRoaXMudGl0bGVBbGlnbiA9IHRoaXMucGFyc2VUaXRsZUFsaWduKCk7XG4gICAgdGhpcy50YWJsZS5yZWdpc3RlckNvbHVtbih0aGlzKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMudGFibGUub25SZWluaXRpYWxpemUuc3Vic2NyaWJlKCgpID0+IHRoaXMudGFibGUucmVnaXN0ZXJDb2x1bW4odGhpcykpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZVJlbmRlcmVyKCk7XG4gICAgdGhpcy5jcmVhdGVFZGl0b3IoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcGFyc2VUaXRsZUFsaWduKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYWxpZ24gPSAodGhpcy50aXRsZUFsaWduIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBDb2Rlcy5BVkFJTEFCTEVfQ09MVU1OX1RJVExFX0FMSUdOUy5pbmRleE9mKGFsaWduKSAhPT0gLTEgPyBhbGlnbiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBvcmlnaW5hbFdpZHRoKCkge1xuICAgIGxldCBvcmlnaW5hbFdpZHRoID0gdGhpcy53aWR0aDtcbiAgICBjb25zdCBweFZhbCA9IFV0aWwuZXh0cmFjdFBpeGVsc1ZhbHVlKG9yaWdpbmFsV2lkdGgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChweFZhbCkpIHtcbiAgICAgIG9yaWdpbmFsV2lkdGggPSBweFZhbCArICcnO1xuXG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFdpZHRoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlbmRlcmVyKCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5yZW5kZXJlcikgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSkge1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gcmVuZGVyZXJzTWFwcGluZ1t0aGlzLnR5cGVdO1xuICAgICAgaWYgKGNvbXBvbmVudFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBuZXdSZW5kZXJlcjtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFJlZik7XG4gICAgICAgIG5ld1JlbmRlcmVyID0gcmVmLmluc3RhbmNlO1xuICAgICAgICBuZXdSZW5kZXJlci5maWx0ZXJTb3VyY2UgPSB0aGlzLmZpbHRlclNvdXJjZTtcbiAgICAgICAgbmV3UmVuZGVyZXIuZmlsdGVyRnVuY3Rpb24gPSB0aGlzLmZpbHRlckZ1bmN0aW9uO1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sID0gdGhpcy5jdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sUG9zaXRpb24gPSB0aGlzLmN1cnJlbmN5U3ltYm9sUG9zaXRpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5kZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWluRGVjaW1hbERpZ2l0cyA9IHRoaXMubWluRGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1heERlY2ltYWxEaWdpdHMgPSB0aGlzLm1heERlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZvcm1hdCA9IHRoaXMuZm9ybWF0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5mb3JtYXQgPSB0aGlzLmZvcm1hdDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZ3JvdXBpbmcgPSB0aGlzLmdyb3VwaW5nO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGhvdXNhbmRTZXBhcmF0b3IgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cnVlVmFsdWUgPSB0aGlzLnRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZhbHNlVmFsdWUgPSB0aGlzLmZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUcnVlVmFsdWUgPSB0aGlzLnJlbmRlclRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlckZhbHNlVmFsdWUgPSB0aGlzLnJlbmRlckZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUeXBlID0gdGhpcy5yZW5kZXJUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYm9vbGVhblR5cGUgPSB0aGlzLmJvb2xlYW5UeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci52YWx1ZUJhc2UgPSB0aGlzLnZhbHVlQmFzZTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmRlY2ltYWxTZXBhcmF0b3IgPSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5taW5EZWNpbWFsRGlnaXRzID0gdGhpcy5taW5EZWNpbWFsRGlnaXRzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWF4RGVjaW1hbERpZ2l0cyA9IHRoaXMubWF4RGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmdyb3VwaW5nID0gdGhpcy5ncm91cGluZztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRob3VzYW5kU2VwYXJhdG9yID0gdGhpcy50aG91c2FuZFNlcGFyYXRvcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmltYWdlVHlwZSA9IHRoaXMuaW1hZ2VUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYXZhdGFyID0gdGhpcy5hdmF0YXI7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5lbXB0eUltYWdlID0gdGhpcy5lbXB0eUltYWdlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYWN0aW9uJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmljb24gPSB0aGlzLmljb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5hY3Rpb24gPSB0aGlzLmFjdGlvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRleHQgPSB0aGlzLnRleHQ7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pY29uUG9zaXRpb24gPSB0aGlzLmljb25Qb3NpdGlvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2s7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzZXJ2aWNlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmVudGl0eSA9IHRoaXMuZW50aXR5O1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuc2VydmljZSA9IHRoaXMuc2VydmljZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci52YWx1ZUNvbHVtbiA9IHRoaXMudmFsdWVDb2x1bW47XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5wYXJlbnRLZXlzID0gdGhpcy5wYXJlbnRLZXlzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIucXVlcnlNZXRob2QgPSB0aGlzLnF1ZXJ5TWV0aG9kO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuc2VydmljZVR5cGUgPSB0aGlzLnNlcnZpY2VUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudHJhbnNsYXRlID0gdGhpcy50cmFuc2xhdGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0cmFuc2xhdGUnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIudHJhbnNsYXRlQXJnc0ZuID0gdGhpcy50cmFuc2xhdGVBcmdzRm47XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVuZGVyZXIobmV3UmVuZGVyZXIpO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYnVpbGRDZWxsRWRpdG9yKHR5cGU6IHN0cmluZywgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBwcm9wc09yaWdpbjogYW55LCByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGxldCBlZGl0b3I7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gZWRpdG9yc01hcHBpbmdbdHlwZV0gfHwgZWRpdG9yc01hcHBpbmcudGV4dDtcbiAgICBpZiAoY29tcG9uZW50UmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmID0gY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRSZWYpO1xuICAgIGVkaXRvciA9IHJlZi5pbnN0YW5jZTtcbiAgICBpZiAocHJvcHNPcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGVkaXRvci5mb3JtYXQgPSBwcm9wc09yaWdpbi5mb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLmxvY2FsZSA9IHByb3BzT3JpZ2luLmxvY2FsZTtcbiAgICAgICAgICBlZGl0b3Iub1N0YXJ0VmlldyA9IHByb3BzT3JpZ2luLm9TdGFydFZpZXc7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG4gICAgICAgICAgZWRpdG9yLm9Ub3VjaFVpID0gcHJvcHNPcmlnaW4ub1RvdWNoVWk7XG4gICAgICAgICAgZWRpdG9yLm9TdGFydEF0ID0gcHJvcHNPcmlnaW4ub1N0YXJ0QXQ7XG4gICAgICAgICAgZWRpdG9yLmZpbHRlckRhdGUgPSBwcm9wc09yaWdpbi5maWx0ZXJEYXRlO1xuICAgICAgICAgIGVkaXRvci5kYXRlVmFsdWVUeXBlID0gcHJvcHNPcmlnaW4uZGF0ZVZhbHVlVHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgZWRpdG9yLm9EYXRlRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0RhdGVGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0hvdXJGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlTG9jYWxlID0gcHJvcHNPcmlnaW4ub0RhdGVMb2NhbGU7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG5cbiAgICAgICAgICBlZGl0b3Iub1RvdWNoVWkgPSBwcm9wc09yaWdpbi5vVG91Y2hVaTtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVTdGFydEF0ID0gcHJvcHNPcmlnaW4ub0RhdGVTdGFydEF0O1xuICAgICAgICAgIGVkaXRvci5vRGF0ZVRleHRJbnB1dEVuYWJsZWQgPSBwcm9wc09yaWdpbi5vRGF0ZVRleHRJbnB1dEVuYWJsZWQ7XG5cbiAgICAgICAgICBlZGl0b3Iub0hvdXJNaW4gPSBwcm9wc09yaWdpbi5vSG91ck1pbjtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJNYXggPSBwcm9wc09yaWdpbi5vSG91ck1heDtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJUZXh0SW5wdXRFbmFibGVkID0gcHJvcHNPcmlnaW4ub0hvdXJUZXh0SW5wdXRFbmFibGVkO1xuICAgICAgICAgIGVkaXRvci5vSG91clBsYWNlaG9sZGVyID0gcHJvcHNPcmlnaW4ub0hvdXJQbGFjZWhvbGRlcjtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVQbGFjZWhvbGRlciA9IHByb3BzT3JpZ2luLm9EYXRlUGxhY2Vob2xkZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIGVkaXRvci5ib29sZWFuVHlwZSA9IHByb3BzT3JpZ2luLmJvb2xlYW5UeXBlO1xuICAgICAgICAgIGVkaXRvci5pbmRldGVybWluYXRlT25OdWxsID0gcHJvcHNPcmlnaW4uaW5kZXRlcm1pbmF0ZU9uTnVsbDtcbiAgICAgICAgICBlZGl0b3IuYXV0b0NvbW1pdCA9IHByb3BzT3JpZ2luLmF1dG9Db21taXQ7XG4gICAgICAgICAgZWRpdG9yLnRydWVWYWx1ZSA9IHByb3BzT3JpZ2luLnRydWVWYWx1ZTtcbiAgICAgICAgICBlZGl0b3IuZmFsc2VWYWx1ZSA9IHByb3BzT3JpZ2luLmZhbHNlVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICBlZGl0b3IubWluID0gcHJvcHNPcmlnaW4ubWluO1xuICAgICAgICAgIGVkaXRvci5tYXggPSBwcm9wc09yaWdpbi5tYXg7XG4gICAgICAgICAgZWRpdG9yLnN0ZXAgPSBVdGlsLmlzRGVmaW5lZChwcm9wc09yaWdpbi5zdGVwKSA/IHByb3BzT3JpZ2luLnN0ZXAgOiBlZGl0b3Iuc3RlcDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZWRpdG9yLm9sYWJlbCA9IHByb3BzT3JpZ2luLm9sYWJlbDtcbiAgICAgIGVkaXRvci50eXBlID0gcHJvcHNPcmlnaW4udHlwZTtcbiAgICB9XG4gICAgZWRpdG9yLnJlZ2lzdGVySW5Db2x1bW4gPSByZWdpc3RlckluQ29sdW1uO1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVFZGl0b3IoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmVkaXRvcikgJiYgdGhpcy5lZGl0YWJsZSkge1xuICAgICAgY29uc3QgbmV3RWRpdG9yID0gdGhpcy5idWlsZENlbGxFZGl0b3IodGhpcy50eXBlLCB0aGlzLmNvbnRhaW5lciwgdGhpcyk7XG4gICAgICBpZiAobmV3RWRpdG9yKSB7XG4gICAgICAgIG5ld0VkaXRvci5vcmVxdWlyZWQgPSB0aGlzLm9yZXF1aXJlZDtcbiAgICAgICAgbmV3RWRpdG9yLnNob3dQbGFjZUhvbGRlciA9IHRoaXMuc2hvd1BsYWNlSG9sZGVyO1xuICAgICAgICBuZXdFZGl0b3IudXBkYXRlUmVjb3JkT25FZGl0ID0gdGhpcy51cGRhdGVSZWNvcmRPbkVkaXQ7XG4gICAgICAgIG5ld0VkaXRvci5zaG93Tm90aWZpY2F0aW9uT25FZGl0ID0gdGhpcy5zaG93Tm90aWZpY2F0aW9uT25FZGl0O1xuICAgICAgICBuZXdFZGl0b3IuZWRpdGlvblN0YXJ0ZWQgPSB0aGlzLmVkaXRpb25TdGFydGVkO1xuICAgICAgICBuZXdFZGl0b3IuZWRpdGlvbkNhbmNlbGxlZCA9IHRoaXMuZWRpdGlvbkNhbmNlbGxlZDtcbiAgICAgICAgbmV3RWRpdG9yLmVkaXRpb25Db21taXR0ZWQgPSB0aGlzLmVkaXRpb25Db21taXR0ZWQ7XG4gICAgICAgIG5ld0VkaXRvci5vblBvc3RVcGRhdGVSZWNvcmQgPSB0aGlzLm9uUG9zdFVwZGF0ZVJlY29yZDtcbiAgICAgICAgdGhpcy5yZWdpc3RlckVkaXRvcihuZXdFZGl0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclJlbmRlcmVyKHJlbmRlcmVyOiBhbnkpIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9Db2wucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckVkaXRvcihlZGl0b3I6IGFueSkge1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvQ29sLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvci5pbml0aWFsaXplKCk7XG4gIH1cblxuICBzZXQgb3JkZXJhYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fb3JkZXJhYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wub3JkZXJhYmxlID0gdGhpcy5fb3JkZXJhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcmRlcmFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb3JkZXJhYmxlO1xuICB9XG5cbiAgc2V0IHJlc2l6YWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX3Jlc2l6YWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLnJlc2l6YWJsZSA9IHRoaXMuX3Jlc2l6YWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgcmVzaXphYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc2l6YWJsZTtcbiAgfVxuXG4gIHNldCBzZWFyY2hhYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fc2VhcmNoYWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLnNlYXJjaGFibGUgPSB0aGlzLl9zZWFyY2hhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzZWFyY2hhYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaGFibGU7XG4gIH1cblxuICBzZXQgZ3JvdXBhYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fZ3JvdXBhYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wuZ3JvdXBhYmxlID0gdGhpcy5fZ3JvdXBhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBncm91cGFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZ3JvdXBhYmxlO1xuICB9XG5cbiAgZ2V0U1FMVHlwZSgpOiBudW1iZXIge1xuICAgIGlmICghKHRoaXMuc3FsVHlwZSAmJiB0aGlzLnNxbFR5cGUubGVuZ3RoID4gMCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdUSU1FU1RBTVAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnSU5URUdFUic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdCT09MRUFOJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVhbCc6XG4gICAgICAgIGNhc2UgJ3BlcmNlbnRhZ2UnOlxuICAgICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ0RPVUJMRSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNxbHQgPSB0aGlzLnNxbFR5cGUgJiYgdGhpcy5zcWxUeXBlLmxlbmd0aCA+IDAgPyB0aGlzLnNxbFR5cGUgOiB0aGlzLl9kZWZhdWx0U1FMVHlwZUtleTtcbiAgICB0aGlzLl9TUUxUeXBlID0gU1FMVHlwZXMuZ2V0U1FMVHlwZVZhbHVlKHNxbHQpO1xuICAgIHJldHVybiB0aGlzLl9TUUxUeXBlO1xuICB9XG5cbiAgc2V0IGZpbHRlclNvdXJjZSh2YWw6IHN0cmluZykge1xuICAgIGNvbnN0IGxvd2VyVmFsID0gKHZhbCB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9maWx0ZXJTb3VyY2UgPSAobG93ZXJWYWwgPT09ICdyZW5kZXInIHx8IGxvd2VyVmFsID09PSAnZGF0YScgfHwgbG93ZXJWYWwgPT09ICdib3RoJykgPyBsb3dlclZhbCA6ICdyZW5kZXInO1xuICB9XG5cbiAgZ2V0IGZpbHRlclNvdXJjZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTb3VyY2U7XG4gIH1cbn1cbiIsIjxzcGFuICNjb250YWluZXI+XG48L3NwYW4+Il19
|
|
440
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1jb2x1bW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvY29sdW1uL28tdGFibGUtY29sdW1uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2NvbHVtbi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLFNBQVMsRUFDVCxnQkFBZ0IsRUFDakIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVwQyxPQUFPLEVBQUUscUJBQXFCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQU9sRyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUMxQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLGNBQWMsRUFBRSwyQkFBMkIsRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3RILE9BQU8sRUFBRSw2QkFBNkIsRUFBRSw4QkFBOEIsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtCQUErQixDQUFDOzs7QUFFaEksTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUc7SUFHM0MsTUFBTTtJQUdOLE9BQU87SUFHUCx5QkFBeUI7SUFHekIsNkJBQTZCO0lBRzdCLFdBQVc7SUFHWCxZQUFZO0lBR1osV0FBVztJQUdYLE1BQU07SUFHTixVQUFVO0lBRVYsT0FBTztJQUdQLHFCQUFxQjtJQUdyQixxQkFBcUI7SUFHckIsd0JBQXdCO0lBR3hCLG1CQUFtQjtJQUVuQixTQUFTO0lBRVQsNkJBQTZCO0lBRTdCLG1DQUFtQztJQUVuQyxXQUFXO0lBRVgsV0FBVztJQUVYLHNEQUFzRDtJQUV0RCxPQUFPO0lBRVAsaUNBQWlDO0lBRWpDLDhDQUE4QztJQUU5Qyw0Q0FBNEM7SUFFNUMsR0FBRyw2QkFBNkI7SUFDaEMsR0FBRywyQkFBMkI7Q0FDL0IsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLDhCQUE4QixHQUFHO0lBQzVDLEdBQUcsOEJBQThCO0lBQ2pDLEdBQUcsNEJBQTRCO0NBQ2hDLENBQUM7QUFVRixNQUFNLE9BQU8scUJBQXFCO0lBNEJoQyxJQUFJLFNBQVMsQ0FBQyxHQUFZO1FBQ3hCLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3JDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxDQUFDO0lBQ3hCLENBQUM7SUFDRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQXdIRCxZQUNvRCxLQUFzQixFQUM5RCxRQUFrQjtRQURzQixVQUFLLEdBQUwsS0FBSyxDQUFpQjtRQUM5RCxhQUFRLEdBQVIsUUFBUSxDQUFVO1FBaEpwQix1QkFBa0IsR0FBVyxPQUFPLENBQUM7UUFHckMsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHL0IsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUsxQixZQUFPLEdBQVksS0FBSyxDQUFDO1FBWXRCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFL0Isd0JBQW1CLEdBQWtCLEVBQUUsQ0FBQztRQUN4Qyw4QkFBeUIsR0FBZ0IsRUFBRSxDQUFDO1FBRTVDLDZCQUF3QixHQUF1QixFQUFFLENBQUM7UUFLbEQsa0JBQWEsR0FBK0IsUUFBUSxDQUFDO1FBS2xELGFBQVEsR0FBUSxJQUFJLENBQUM7UUFDckIsc0JBQWlCLEdBQVcsR0FBRyxDQUFDO1FBRWhDLHFCQUFnQixHQUFXLEdBQUcsQ0FBQztRQVcvQixlQUFVLEdBQVcsUUFBUSxDQUFDO1FBQzlCLGdCQUFXLEdBQVcsU0FBUyxDQUFDO1FBbUJoQyxnQkFBVyxHQUFXLEtBQUssQ0FBQyxZQUFZLENBQUM7UUFHekMsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUlyQyxnQkFBVyxHQUFHLEdBQUcsQ0FBQztRQUNsQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUdqQixjQUFTLEdBQTZCLENBQUMsQ0FBQztRQUk5QixjQUFTLEdBQVksS0FBSyxDQUFDO1FBRXJDLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBR2pDLHVCQUFrQixHQUFZLElBQUksQ0FBQztRQUVuQywyQkFBc0IsR0FBWSxLQUFLLENBQUM7UUFJOUIsZUFBVSxHQUFxQixPQUFPLENBQUM7UUFJdkMsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixrQkFBYSxHQUFtQixXQUFXLENBQUM7UUFVdEQscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBRTdCLHFCQUFnQixHQUFXLENBQUMsQ0FBQztRQUk3Qix3QkFBbUIsR0FBWSxLQUFLLENBQUM7UUFLckMsWUFBTyxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBRzNELG1CQUFjLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDbEUscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEUscUJBQWdCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEUsdUJBQWtCLEdBQXlCLElBQUksWUFBWSxFQUFVLENBQUM7UUFHdEUsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUtuQixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUFNM0MsQ0FBQztJQUVELE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBWSxFQUFFLG9CQUF5QjtRQUN0RCxJQUFJLENBQUMsY0FBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixDQUFDLEVBQUU7WUFDaEYsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLG9CQUFvQixDQUFDO1NBQzdDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN6QyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVELGVBQWU7UUFDYixNQUFNLEtBQUssR0FBRyxDQUFDLElBQUksQ0FBQyxVQUFVLElBQUksRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDcEQsT0FBTyxLQUFLLENBQUMsNkJBQTZCLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUN2RixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsSUFBSSxhQUFhLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDckQsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ3pCLGFBQWEsR0FBRyxLQUFLLEdBQUcsRUFBRSxDQUFDO1NBRTVCO1FBQ0QsT0FBTyxhQUFhLENBQUM7SUFDdkIsQ0FBQztJQUVTLGNBQWM7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQy9ELE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNqRCxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7Z0JBQzlCLElBQUksV0FBVyxDQUFDO2dCQUNoQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztnQkFDekQsV0FBVyxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7Z0JBQzNCLFdBQVcsQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDN0MsV0FBVyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUNqRCxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7b0JBQ2pCLEtBQUssVUFBVTt3QkFDYixXQUFXLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUM7d0JBQ2pELFdBQVcsQ0FBQyxzQkFBc0IsR0FBRyxJQUFJLENBQUMsc0JBQXNCLENBQUM7d0JBQ2pFLFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3JELFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3JELFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3JELFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDckMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDdkQsTUFBTTtvQkFDUixLQUFLLE1BQU07d0JBQ1QsV0FBVyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO3dCQUNqQyxNQUFNO29CQUNSLEtBQUssTUFBTTt3QkFDVCxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7d0JBQ2pDLE1BQU07b0JBQ1IsS0FBSyxTQUFTO3dCQUNaLFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDckMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDdkQsTUFBTTtvQkFDUixLQUFLLFNBQVM7d0JBQ1osV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUN2QyxXQUFXLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7d0JBQ3pDLFdBQVcsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQzt3QkFDbkQsV0FBVyxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQzt3QkFDckQsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO3dCQUN6QyxXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7d0JBQzNDLE1BQU07b0JBQ1IsS0FBSyxZQUFZO3dCQUNmLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFFekMsS0FBSyxNQUFNO3dCQUNULFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3JELFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3JELFdBQVcsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7d0JBQ3JELFdBQVcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQzt3QkFDckMsV0FBVyxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQzt3QkFDdkQsTUFBTTtvQkFDUixLQUFLLE9BQU87d0JBQ1YsV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUN2QyxXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7d0JBQ2pDLFdBQVcsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzt3QkFDekMsTUFBTTtvQkFDUixLQUFLLFFBQVE7d0JBQ1gsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO3dCQUM3QixXQUFXLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7d0JBQ2pDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQzt3QkFDN0IsV0FBVyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDO3dCQUM3QyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7d0JBQ25DLE1BQU07b0JBQ1IsS0FBSyxTQUFTO3dCQUNaLFdBQVcsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQzt3QkFDakMsV0FBVyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNuQyxXQUFXLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUM7d0JBQ25DLFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQzt3QkFDM0MsV0FBVyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDO3dCQUN6QyxXQUFXLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7d0JBQzNDLFdBQVcsQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQzt3QkFDM0MsV0FBVyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO3dCQUN2QyxNQUFNO29CQUNSLEtBQUssV0FBVzt3QkFDZCxXQUFXLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUM7d0JBQ25ELE1BQU07aUJBQ1Q7Z0JBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBRXBDO1NBQ0Y7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLElBQVksRUFBRSxTQUEyQixFQUFFLFdBQWdCLEVBQUUsbUJBQTRCLElBQUk7UUFDM0csSUFBSSxNQUFNLENBQUM7UUFDWCxNQUFNLFlBQVksR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQztRQUNqRSxJQUFJLFlBQVksS0FBSyxTQUFTLEVBQUU7WUFDOUIsT0FBTyxNQUFNLENBQUM7U0FDZjtRQUVELE1BQU0sR0FBRyxHQUFHLFNBQVMsQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEQsTUFBTSxHQUFHLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDdEIsSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQzdCLFFBQVEsSUFBSSxFQUFFO2dCQUNaLEtBQUssTUFBTTtvQkFDVCxNQUFNLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLENBQUM7b0JBQ25DLE1BQU0sQ0FBQyxNQUFNLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQztvQkFDbkMsTUFBTSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUMsVUFBVSxDQUFDO29CQUMzQyxNQUFNLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUN2QyxNQUFNLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztvQkFDM0MsTUFBTSxDQUFDLGFBQWEsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDO29CQUNqRCxNQUFNO2dCQUNSLEtBQUssTUFBTTtvQkFDVCxNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7b0JBQzdDLE1BQU0sQ0FBQyxXQUFXLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQztvQkFDN0MsTUFBTSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUMsV0FBVyxDQUFDO29CQUM3QyxNQUFNLENBQUMsUUFBUSxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUM7b0JBQ3ZDLE1BQU0sQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztvQkFFdkMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUN2QyxNQUFNLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQyxZQUFZLENBQUM7b0JBQy9DLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxXQUFXLENBQUMscUJBQXFCLENBQUM7b0JBRWpFLE1BQU0sQ0FBQyxRQUFRLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztvQkFDdkMsTUFBTSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO29CQUN2QyxNQUFNLENBQUMscUJBQXFCLEdBQUcsV0FBVyxDQUFDLHFCQUFxQixDQUFDO29CQUNqRSxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDO29CQUN2RCxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsV0FBVyxDQUFDLGdCQUFnQixDQUFDO29CQUN2RCxNQUFNO2dCQUNSLEtBQUssU0FBUztvQkFDWixNQUFNLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQyxXQUFXLENBQUM7b0JBQzdDLE1BQU0sQ0FBQyxtQkFBbUIsR0FBRyxXQUFXLENBQUMsbUJBQW1CLENBQUM7b0JBQzdELE1BQU0sQ0FBQyxVQUFVLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztvQkFDM0MsTUFBTSxDQUFDLFNBQVMsR0FBRyxXQUFXLENBQUMsU0FBUyxDQUFDO29CQUN6QyxNQUFNLENBQUMsVUFBVSxHQUFHLFdBQVcsQ0FBQyxVQUFVLENBQUM7b0JBQzNDLE1BQU07Z0JBQ1IsS0FBSyxTQUFTLENBQUM7Z0JBQ2YsS0FBSyxZQUFZLENBQUM7Z0JBQ2xCLEtBQUssVUFBVSxDQUFDO2dCQUNoQixLQUFLLE1BQU07b0JBQ1QsTUFBTSxDQUFDLEdBQUcsR0FBRyxXQUFXLENBQUMsR0FBRyxDQUFDO29CQUM3QixNQUFNLENBQUMsR0FBRyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUM7b0JBQzdCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7b0JBQ2hGLE1BQU07Z0JBQ1IsS0FBSyxPQUFPO29CQUNWLE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTTthQUNUO1lBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDO1lBQ25DLE1BQU0sQ0FBQyxJQUFJLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQztTQUNoQztRQUNELE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQztRQUUzQyxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRVMsWUFBWTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNqRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUN4RSxJQUFJLFNBQVMsRUFBRTtnQkFDYixTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7Z0JBQ3JDLFNBQVMsQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztnQkFDakQsU0FBUyxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztnQkFDdkQsU0FBUyxDQUFDLHNCQUFzQixHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztnQkFDL0QsU0FBUyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUMvQyxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNuRCxTQUFTLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO2dCQUNuRCxTQUFTLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUN2RCxJQUFJLENBQUMsY0FBYyxDQUFDLFNBQVMsQ0FBQyxDQUFDO2FBQ2hDO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsUUFBYTtRQUNuQyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMvQjtRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVNLGNBQWMsQ0FBQyxNQUFXO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksS0FBSyxTQUFTLEVBQUU7WUFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQzNCO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxHQUFRO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxHQUFHLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM5QyxJQUFJLElBQUksRUFBRTtZQUNSLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUNsQztJQUNILENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksVUFBVSxDQUFDLEdBQVE7UUFDckIsSUFBSSxDQUFDLFdBQVcsR0FBRyxPQUFPLEdBQUcsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDakYsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzlDLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsR0FBUTtRQUNwQixJQUFJLENBQUMsVUFBVSxHQUFHLE9BQU8sR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNoRixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUMsSUFBSSxJQUFJLEVBQUU7WUFDUixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUM7U0FDbEM7SUFDSCxDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxVQUFVO1FBQ1IsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRTtZQUM5QyxRQUFRLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ2pCLEtBQUssTUFBTTtvQkFDVCxJQUFJLENBQUMsT0FBTyxHQUFHLFdBQVcsQ0FBQztvQkFDM0IsTUFBTTtnQkFDUixLQUFLLFNBQVM7b0JBQ1osSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7b0JBQ3pCLE1BQU07Z0JBQ1IsS0FBSyxTQUFTO29CQUNaLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDO29CQUN6QixNQUFNO2dCQUNSLEtBQUssTUFBTSxDQUFDO2dCQUNaLEtBQUssWUFBWSxDQUFDO2dCQUNsQixLQUFLLFVBQVU7b0JBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUM7b0JBQ3hCLE1BQU07YUFDVDtTQUNGO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztRQUM5RixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLFlBQVksQ0FBQyxHQUFXO1FBQzFCLE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxhQUFhLEdBQUcsQ0FBQyxRQUFRLEtBQUssUUFBUSxJQUFJLFFBQVEsS0FBSyxNQUFNLElBQUksUUFBUSxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNuSCxDQUFDO0lBRUQsSUFBSSxZQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0lBQzVCLENBQUM7O21IQXpjVSxxQkFBcUIsa0JBMkp0QixVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsZUFBZSxDQUFDO3VHQTNKaEMscUJBQXFCLDBtSEFxSkEsZ0JBQWdCLDJDQ25RbEQsNEJBQ087QUQ4SEw7SUFBQyxxQkFBcUIsRUFBRTs7dURBQ1M7QUFJakM7SUFBQyxxQkFBcUIsRUFBRTs7c0RBQ1E7QUErRGhDO0lBQUMscUJBQXFCLEVBQUU7O3dEQUNhO0FBV3JDO0lBQUMscUJBQXFCLEVBQUU7O3dEQUNhO0FBQ3JDO0lBQUMscUJBQXFCLEVBQUU7OzhEQUNTO0FBRWpDO0lBQUMscUJBQXFCLEVBQUU7O2lFQUNXO0FBQ25DO0lBQUMscUJBQXFCLEVBQUU7O3FFQUNnQjtBQU94QztJQUFDLHFCQUFxQixFQUFFOzt1REFDWTtBQU1wQztJQUFDLG9CQUFvQixFQUFFOztrREFDWDtBQUNaO0lBQUMsb0JBQW9CLEVBQUU7O2tEQUNYO0FBQ1o7SUFBQyxvQkFBb0IsRUFBRTs7bURBQ1Y7QUFDYjtJQUFDLG9CQUFvQixFQUFFOzsrREFDTTtBQUM3QjtJQUFDLG9CQUFvQixFQUFFOzsrREFDTTtBQUc3QjtJQUFDLHFCQUFxQixFQUFFOztrRUFDYTtBQUNyQztJQUFDLHFCQUFxQixFQUFFOzt5REFDSjtBQVdwQjtJQUFDLHFCQUFxQixFQUFFOzt3REFDRzs0RkFuSmhCLHFCQUFxQjtrQkFSakMsU0FBUzsrQkFDRSxnQkFBZ0IsbUJBR1QsdUJBQXVCLENBQUMsTUFBTSxVQUN2Qyw2QkFBNkIsV0FDNUIsOEJBQThCOzswQkE2SnBDLE1BQU07MkJBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQzttRUF6SXBDLFFBQVEsTUFLUixPQUFPLE1BZ0VKLFNBQVMsTUFZVCxTQUFTLE1BRW5CLGVBQWUsTUFHZixrQkFBa0IsTUFFbEIsc0JBQXNCLE1BUVosUUFBUSxNQU9sQixHQUFHLE1BRUgsR0FBRyxNQUVILElBQUksTUFFSixnQkFBZ0IsTUFFaEIsZ0JBQWdCLE1BSWhCLG1CQUFtQixNQUVuQixVQUFVLE1BWVYsU0FBUyxNQUdULFNBQVM7c0JBRFIsU0FBUzt1QkFBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgZm9yd2FyZFJlZixcbiAgSW5qZWN0LFxuICBJbmplY3RvcixcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0NvbnRhaW5lclJlZlxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEFzeW5jVmFsaWRhdG9yRm4sIFZhbGlkYXRvckZuIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJvb2xlYW5JbnB1dENvbnZlcnRlciwgTnVtYmVySW5wdXRDb252ZXJ0ZXIgfSBmcm9tICcuLi8uLi8uLi9kZWNvcmF0b3JzL2lucHV0LWNvbnZlcnRlcic7XG5pbXBvcnQgeyBPVGFibGVDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzL28tdGFibGUtY29sdW1uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBPUGVyY2VudGFnZVZhbHVlQmFzZVR5cGUgfSBmcm9tICcuLi8uLi8uLi9waXBlcy9vLXBlcmNlbnRhZ2UucGlwZSc7XG5pbXBvcnQgeyBEYXRlRmlsdGVyRnVuY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9kYXRlLWZpbHRlci1mdW5jdGlvbi50eXBlJztcbmltcG9ydCB7IEVycm9yRGF0YSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2Vycm9yLWRhdGEudHlwZSc7XG5pbXBvcnQgeyBFeHByZXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvZXhwcmVzc2lvbi50eXBlJztcbmltcG9ydCB7IE9EYXRlVmFsdWVUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvby1kYXRlLXZhbHVlLnR5cGUnO1xuaW1wb3J0IHsgQ29kZXMgfSBmcm9tICcuLi8uLi8uLi91dGlsL2NvZGVzJztcbmltcG9ydCB7IFNRTFR5cGVzIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC9zcWx0eXBlcyc7XG5pbXBvcnQgeyBVdGlsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbC91dGlsJztcbmltcG9ydCB7IE9UYWJsZUNvbXBvbmVudCB9IGZyb20gJy4uL28tdGFibGUuY29tcG9uZW50JztcbmltcG9ydCB7IGVkaXRvcnNNYXBwaW5nLCBPX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFMsIE9fVEFCTEVfQ0VMTF9FRElUT1JTX09VVFBVVFMgfSBmcm9tICcuL2NlbGwtZWRpdG9yL2NlbGwtZWRpdG9yJztcbmltcG9ydCB7IE9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLCBPX1RBQkxFX0NFTExfUkVOREVSRVJTX09VVFBVVFMsIHJlbmRlcmVyc01hcHBpbmcgfSBmcm9tICcuL2NlbGwtcmVuZGVyZXIvY2VsbC1yZW5kZXJlcic7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTiA9IFtcblxuICAvLyBhdHRyIFtzdHJpbmddOiBjb2x1bW4gbmFtZS5cbiAgJ2F0dHInLFxuXG4gIC8vIHRpdGxlIFtzdHJpbmddOiBjb2x1bW4gdGl0bGUuIERlZmF1bHQ6IG5vIHZhbHVlLlxuICAndGl0bGUnLFxuXG4gIC8vIHRpdGxlLWFsaWduIFtzdGFydCB8IGNlbnRlciB8IGVuZF06IGNvbHVtbiB0aXRsZSBhbGlnbm1lbnQuIERlZmF1bHQ6IGNlbnRlci5cbiAgJ3RpdGxlQWxpZ246IHRpdGxlLWFsaWduJyxcblxuICAvLyBjb250ZW50LWFsaWduIFtzdGFydCB8IGNlbnRlciB8IGVuZF06IGNvbHVtbiBjb250ZW50IGFsaWdubWVudC5cbiAgJ2NvbnRlbnRBbGlnbjogY29udGVudC1hbGlnbicsXG5cbiAgLy8gb3JkZXJhYmxlIFtub3x5ZXNdOiBjb2x1bW4gY2FuIGJlIHNvcnRlZC4gRGVmYXVsdDogeWVzLlxuICAnb3JkZXJhYmxlJyxcblxuICAvLyBzZWFyY2hhYmxlIFtub3x5ZXNdOiBzZWFyY2hpbmdzIGFyZSBwZXJmb3JtZWQgaW50byBjb2x1bW4gY29udGVudC4gRGVmYXVsdDogeWVzLlxuICAnc2VhcmNoYWJsZScsXG5cbiAgLy8gZ3JvdXBhYmxlIFtub3x5ZXN8dHJ1ZXxmYWxzZV06IEluZGljYXRlcyB3aGV0aGVyIG9yIG5vdCB0aGUgY29sdW1uIGNhbiBiZSBncm91cGFibGVcbiAgJ2dyb3VwYWJsZScsXG5cbiAgLy8gdHlwZSBbYm9vbGVhbnxpbnRlZ2VyfHJlYWx8Y3VycmVuY3l8ZGF0ZXxpbWFnZV06IGNvbHVtbiB0eXBlLiBEZWZhdWx0OiBubyB2YWx1ZSAoc3RyaW5nKS5cbiAgJ3R5cGUnLFxuXG4gIC8vIGVkaXRhYmxlIFtub3x5ZXNdOiBjb2x1bW4gY2FuIGJlIGVkaXRlZCBkaXJlY3RseSBvdmVyIHRoZSB0YWJsZS4gRGVmYXVsdDogbm8uXG4gICdlZGl0YWJsZScsXG5cbiAgJ3dpZHRoJyxcblxuICAvLyBvbmx5IGluIHBpeGVsc1xuICAnbWluV2lkdGg6IG1pbi13aWR0aCcsXG5cbiAgLy8gb25seSBpbiBwaXhlbHNcbiAgJ21heFdpZHRoOiBtYXgtd2lkdGgnLFxuXG4gIC8vIGFzeW5jLWxvYWQgW25vfHllc3x0cnVlfGZhbHNlXTogYXN5bmNocm9ub3VzIHF1ZXJ5LiBEZWZhdWx0OiBub1xuICAnYXN5bmNMb2FkIDogYXN5bmMtbG9hZCcsXG5cbiAgLy8gc3FsdHlwZVtzdHJpbmddOiBEYXRhIHR5cGUgYWNjb3JkaW5nIHRvIEphdmEgc3RhbmRhcmQuIFNlZSBTUUxUeXBlIGNsYXNzLiBEZWZhdWx0OiAnT1RIRVInXG4gICdzcWxUeXBlOiBzcWwtdHlwZScsXG5cbiAgJ3Rvb2x0aXAnLFxuXG4gICd0b29sdGlwVmFsdWU6IHRvb2x0aXAtdmFsdWUnLFxuXG4gICd0b29sdGlwRnVuY3Rpb246IHRvb2x0aXAtZnVuY3Rpb24nLFxuXG4gICdtdWx0aWxpbmUnLFxuXG4gICdyZXNpemFibGUnLFxuXG4gICdmaWx0ZXJFeHByZXNzaW9uRnVuY3Rpb246IGZpbHRlci1leHByZXNzaW9uLWZ1bmN0aW9uJyxcblxuICAnY2xhc3MnLFxuXG4gICdhbmd1bGFyVmFsaWRhdG9yc0ZuOiB2YWxpZGF0b3JzJyxcblxuICAnYW5ndWxhclZhbGlkYXRvcnNGbkVycm9yczogdmFsaWRhdG9ycy1lcnJvcnMnLFxuXG4gICdhbmd1bGFyQXN5bmNWYWxpZGF0b3JzRm46IGFzeW5jLXZhbGlkYXRvcnMnLFxuXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfSU5QVVRTLFxuICAuLi5PX1RBQkxFX0NFTExfRURJVE9SU19JTlBVVFNcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09VVFBVVFNfT19UQUJMRV9DT0xVTU4gPSBbXG4gIC4uLk9fVEFCTEVfQ0VMTF9SRU5ERVJFUlNfT1VUUFVUUyxcbiAgLi4uT19UQUJMRV9DRUxMX0VESVRPUlNfT1VUUFVUU1xuXTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1jb2x1bW4nLFxuICB0ZW1wbGF0ZVVybDogJy4vby10YWJsZS1jb2x1bW4uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9vLXRhYmxlLWNvbHVtbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaW5wdXRzOiBERUZBVUxUX0lOUFVUU19PX1RBQkxFX0NPTFVNTixcbiAgb3V0cHV0czogREVGQVVMVF9PVVRQVVRTX09fVEFCTEVfQ09MVU1OXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUNvbHVtbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9UYWJsZUNvbHVtbiwgT25EZXN0cm95LCBPbkluaXQsIEFmdGVyVmlld0luaXQge1xuXG4gIHB1YmxpYyByZW5kZXJlcjogYW55O1xuICBwdWJsaWMgZWRpdG9yOiBhbnk7XG5cbiAgcHVibGljIHR5cGU6IHN0cmluZztcbiAgcHVibGljIGF0dHI6IHN0cmluZztcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XG4gIHB1YmxpYyB0aXRsZUFsaWduOiBzdHJpbmc7XG4gIHB1YmxpYyBjb250ZW50QWxpZ246ICdzdGFydCcgfCAnY2VudGVyJyB8ICdlbmQnO1xuICBwdWJsaWMgc3FsVHlwZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX1NRTFR5cGU6IG51bWJlcjtcbiAgcHJvdGVjdGVkIF9kZWZhdWx0U1FMVHlwZUtleTogc3RyaW5nID0gJ09USEVSJztcbiAgcHJvdGVjdGVkIF9vcmRlcmFibGU6IGJvb2xlYW47XG4gIHByb3RlY3RlZCBfcmVzaXphYmxlOiBib29sZWFuO1xuICBwcm90ZWN0ZWQgX3NlYXJjaGFibGU6IGJvb2xlYW4gPSB0cnVlO1xuICBwcm90ZWN0ZWQgX2dyb3VwYWJsZTogYm9vbGVhbjtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHB1YmxpYyBlZGl0YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xuICBwdWJsaWMgd2lkdGg6IHN0cmluZztcbiAgcHVibGljIG1pbldpZHRoOiBzdHJpbmc7XG4gIHB1YmxpYyBtYXhXaWR0aDogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHVibGljIHRvb2x0aXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgdG9vbHRpcFZhbHVlOiBzdHJpbmc7XG4gIHRvb2x0aXBGdW5jdGlvbjogKHJvd0RhdGE6IGFueSkgPT4gYW55O1xuICBwdWJsaWMgY2xhc3M6IHN0cmluZztcblxuICBzZXQgbXVsdGlsaW5lKHZhbDogYm9vbGVhbikge1xuICAgIHZhbCA9IFV0aWwucGFyc2VCb29sZWFuKFN0cmluZyh2YWwpKTtcbiAgICB0aGlzLl9tdWx0aWxpbmUgPSB2YWw7XG4gIH1cbiAgZ2V0IG11bHRpbGluZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fbXVsdGlsaW5lO1xuICB9XG4gIHByb3RlY3RlZCBfbXVsdGlsaW5lOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm46IFZhbGlkYXRvckZuW10gPSBbXTtcbiAgcHVibGljIGFuZ3VsYXJWYWxpZGF0b3JzRm5FcnJvcnM6IEVycm9yRGF0YVtdID0gW107XG5cbiAgcHVibGljIGFuZ3VsYXJBc3luY1ZhbGlkYXRvcnNGbjogQXN5bmNWYWxpZGF0b3JGbltdID0gW107XG5cbiAgZmlsdGVyRXhwcmVzc2lvbkZ1bmN0aW9uOiAoY29sdW1uQXR0cjogc3RyaW5nLCBxdWlja0ZpbHRlcj86IHN0cmluZykgPT4gRXhwcmVzc2lvbjtcblxuICAvKiBpbnB1dCByZW5kZXJlciBiYXNlICovXG4gIHB1YmxpYyBfZmlsdGVyU291cmNlOiAncmVuZGVyJyB8ICdkYXRhJyB8ICdib3RoJyA9ICdyZW5kZXInO1xuICBwdWJsaWMgZmlsdGVyRnVuY3Rpb246IChjZWxsVmFsdWU6IGFueSwgcm93VmFsdWU6IGFueSwgcXVpY2tGaWx0ZXI/OiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qIGlucHV0IHJlbmRlcmVyIGRhdGUgKi9cbiAgcHJvdGVjdGVkIGZvcm1hdDogc3RyaW5nO1xuICAvKiBpbnB1dCByZW5kZXJlciBpbnRlZ2VyICovXG4gIHByb3RlY3RlZCBncm91cGluZzogYW55ID0gdHJ1ZTtcbiAgcHJvdGVjdGVkIHRob3VzYW5kU2VwYXJhdG9yOiBzdHJpbmcgPSAnLCc7XG4gIC8qIGlucHV0IHJlbmRlcmVyIHJlYWwgKi9cbiAgcHJvdGVjdGVkIGRlY2ltYWxTZXBhcmF0b3I6IHN0cmluZyA9ICcuJztcblxuICAvKiBpbnB1dCByZW5kZXJlciBjdXJyZW5jeSAqL1xuICBwcm90ZWN0ZWQgY3VycmVuY3lTeW1ib2w6IHN0cmluZztcbiAgcHJvdGVjdGVkIGN1cnJlbmN5U3ltYm9sUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBib29sZWFuICovXG4gIHByb3RlY3RlZCB0cnVlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIGZhbHNlVmFsdWU6IGFueTtcbiAgcHJvdGVjdGVkIHJlbmRlclRydWVWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyRmFsc2VWYWx1ZTogYW55O1xuICBwcm90ZWN0ZWQgcmVuZGVyVHlwZTogc3RyaW5nID0gJ3N0cmluZyc7XG4gIHByb3RlY3RlZCBib29sZWFuVHlwZTogc3RyaW5nID0gJ2Jvb2xlYW4nO1xuXG4gIC8qIGlucHV0IGltYWdlICovXG4gIHByb3RlY3RlZCBpbWFnZVR5cGU6IHN0cmluZztcbiAgcHJvdGVjdGVkIGF2YXRhcjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZW1wdHlJbWFnZTogc3RyaW5nO1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIGFjdGlvbiAqL1xuICBwcm90ZWN0ZWQgaWNvbjogc3RyaW5nO1xuICBwcm90ZWN0ZWQgYWN0aW9uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCB0ZXh0OiBzdHJpbmc7XG4gIHByb3RlY3RlZCBpY29uUG9zaXRpb246IHN0cmluZztcblxuICAvKiBpbnB1dCByZW5kZXJlciBzZXJ2aWNlICovXG4gIHByb3RlY3RlZCBlbnRpdHk6IHN0cmluZztcbiAgcHJvdGVjdGVkIHNlcnZpY2U6IHN0cmluZztcbiAgcHJvdGVjdGVkIGNvbHVtbnM6IHN0cmluZztcbiAgcHJvdGVjdGVkIHZhbHVlQ29sdW1uOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBwYXJlbnRLZXlzOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBxdWVyeU1ldGhvZDogc3RyaW5nID0gQ29kZXMuUVVFUllfTUVUSE9EO1xuICBwcm90ZWN0ZWQgc2VydmljZVR5cGU6IHN0cmluZztcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHByb3RlY3RlZCB0cmFuc2xhdGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgLyogaW5wdXQgcmVuZGVyZXIgdHJhbnNsYXRlICovXG4gIHByb3RlY3RlZCB0cmFuc2xhdGVBcmdzRm46IChyb3dEYXRhOiBhbnkpID0+IGFueVtdO1xuICAvKiBpbnB1dCB0aW1lICovXG4gIG9EYXRlRm9ybWF0ID0gJ0wnO1xuICBvSG91ckZvcm1hdCA9IDI0O1xuXG4gIC8qIGlucHV0IHJlbmRlcmVyIHBlcmNlbnRhZ2UgKi9cbiAgdmFsdWVCYXNlOiBPUGVyY2VudGFnZVZhbHVlQmFzZVR5cGUgPSAxO1xuXG4gIC8qIGlucHV0IGVkaXRvciAqL1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgc2hvd1BsYWNlSG9sZGVyOiBib29sZWFuID0gZmFsc2U7XG4gIG9sYWJlbDogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgdXBkYXRlUmVjb3JkT25FZGl0OiBib29sZWFuID0gdHJ1ZTtcbiAgQEJvb2xlYW5JbnB1dENvbnZlcnRlcigpXG4gIHNob3dOb3RpZmljYXRpb25PbkVkaXQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKiBpbnB1dCBlZGl0b3IgZGF0ZSAqL1xuICBwcm90ZWN0ZWQgbG9jYWxlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBvU3RhcnRWaWV3OiAnbW9udGgnIHwgJ3llYXInID0gJ21vbnRoJztcbiAgcHJvdGVjdGVkIG9NaW5EYXRlOiBzdHJpbmc7XG4gIHByb3RlY3RlZCBvTWF4RGF0ZTogc3RyaW5nO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgcHJvdGVjdGVkIG9Ub3VjaFVpOiBib29sZWFuID0gZmFsc2U7XG4gIHByb3RlY3RlZCBvU3RhcnRBdDogc3RyaW5nO1xuICBwcm90ZWN0ZWQgZmlsdGVyRGF0ZTogRGF0ZUZpbHRlckZ1bmN0aW9uO1xuICBwcm90ZWN0ZWQgZGF0ZVZhbHVlVHlwZTogT0RhdGVWYWx1ZVR5cGUgPSAndGltZXN0YW1wJztcblxuICAvKiBpbnB1dCBlZGl0b3IgaW50ZWdlciAqL1xuICBATnVtYmVySW5wdXRDb252ZXJ0ZXIoKVxuICBtaW46IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWF4OiBudW1iZXI7XG4gIEBOdW1iZXJJbnB1dENvbnZlcnRlcigpXG4gIHN0ZXA6IG51bWJlcjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWluRGVjaW1hbERpZ2l0czogbnVtYmVyID0gMjtcbiAgQE51bWJlcklucHV0Q29udmVydGVyKClcbiAgbWF4RGVjaW1hbERpZ2l0czogbnVtYmVyID0gMjtcblxuICAvKiBpbnB1dCBlZGl0b3IgYm9vbGVhbiAqL1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgaW5kZXRlcm1pbmF0ZU9uTnVsbDogYm9vbGVhbiA9IGZhbHNlO1xuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgYXV0b0NvbW1pdDogYm9vbGVhbjtcblxuICAvKiBvdXRwdXQgY2VsbCByZW5kZXJlciBhY3Rpb24gKi9cbiAgb25DbGljazogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICAvKiBvdXRwdXQgY2VsbCBlZGl0b3IgKi9cbiAgZWRpdGlvblN0YXJ0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIGVkaXRpb25DYW5jZWxsZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIGVkaXRpb25Db21taXR0ZWQ6IEV2ZW50RW1pdHRlcjxvYmplY3Q+ID0gbmV3IEV2ZW50RW1pdHRlcjxvYmplY3Q+KCk7XG4gIG9uUG9zdFVwZGF0ZVJlY29yZDogRXZlbnRFbWl0dGVyPG9iamVjdD4gPSBuZXcgRXZlbnRFbWl0dGVyPG9iamVjdD4oKTtcblxuICBAQm9vbGVhbklucHV0Q29udmVydGVyKClcbiAgYXN5bmNMb2FkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQFZpZXdDaGlsZCgnY29udGFpbmVyJywgeyByZWFkOiBWaWV3Q29udGFpbmVyUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmO1xuXG4gIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBASW5qZWN0KGZvcndhcmRSZWYoKCkgPT4gT1RhYmxlQ29tcG9uZW50KSkgcHVibGljIHRhYmxlOiBPVGFibGVDb21wb25lbnQsXG4gICAgcHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvclxuICApIHtcbiAgfVxuXG4gIHN0YXRpYyBhZGRFZGl0b3IodHlwZTogc3RyaW5nLCBlZGl0b3JDbGFzc1JlZmVyZW5jZTogYW55KSB7XG4gICAgaWYgKCFlZGl0b3JzTWFwcGluZy5oYXNPd25Qcm9wZXJ0eSh0eXBlKSAmJiBVdGlsLmlzRGVmaW5lZChlZGl0b3JDbGFzc1JlZmVyZW5jZSkpIHtcbiAgICAgIGVkaXRvcnNNYXBwaW5nW3R5cGVdID0gZWRpdG9yQ2xhc3NSZWZlcmVuY2U7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5ncm91cGluZyA9IFV0aWwucGFyc2VCb29sZWFuKHRoaXMuZ3JvdXBpbmcsIHRydWUpO1xuICAgIHRoaXMudGl0bGVBbGlnbiA9IHRoaXMucGFyc2VUaXRsZUFsaWduKCk7XG4gICAgdGhpcy50YWJsZS5yZWdpc3RlckNvbHVtbih0aGlzKTtcbiAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKHRoaXMudGFibGUub25SZWluaXRpYWxpemUuc3Vic2NyaWJlKCgpID0+IHRoaXMudGFibGUucmVnaXN0ZXJDb2x1bW4odGhpcykpKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmNyZWF0ZVJlbmRlcmVyKCk7XG4gICAgdGhpcy5jcmVhdGVFZGl0b3IoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcGFyc2VUaXRsZUFsaWduKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYWxpZ24gPSAodGhpcy50aXRsZUFsaWduIHx8ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIHJldHVybiBDb2Rlcy5BVkFJTEFCTEVfQ09MVU1OX1RJVExFX0FMSUdOUy5pbmRleE9mKGFsaWduKSAhPT0gLTEgPyBhbGlnbiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGdldCBvcmlnaW5hbFdpZHRoKCkge1xuICAgIGxldCBvcmlnaW5hbFdpZHRoID0gdGhpcy53aWR0aDtcbiAgICBjb25zdCBweFZhbCA9IFV0aWwuZXh0cmFjdFBpeGVsc1ZhbHVlKG9yaWdpbmFsV2lkdGgpO1xuICAgIGlmIChVdGlsLmlzRGVmaW5lZChweFZhbCkpIHtcbiAgICAgIG9yaWdpbmFsV2lkdGggPSBweFZhbCArICcnO1xuXG4gICAgfVxuICAgIHJldHVybiBvcmlnaW5hbFdpZHRoO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVJlbmRlcmVyKCk6IHZvaWQge1xuICAgIGlmICghVXRpbC5pc0RlZmluZWQodGhpcy5yZW5kZXJlcikgJiYgVXRpbC5pc0RlZmluZWQodGhpcy50eXBlKSkge1xuICAgICAgY29uc3QgY29tcG9uZW50UmVmID0gcmVuZGVyZXJzTWFwcGluZ1t0aGlzLnR5cGVdO1xuICAgICAgaWYgKGNvbXBvbmVudFJlZiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGxldCBuZXdSZW5kZXJlcjtcbiAgICAgICAgY29uc3QgcmVmID0gdGhpcy5jb250YWluZXIuY3JlYXRlQ29tcG9uZW50KGNvbXBvbmVudFJlZik7XG4gICAgICAgIG5ld1JlbmRlcmVyID0gcmVmLmluc3RhbmNlO1xuICAgICAgICBuZXdSZW5kZXJlci5maWx0ZXJTb3VyY2UgPSB0aGlzLmZpbHRlclNvdXJjZTtcbiAgICAgICAgbmV3UmVuZGVyZXIuZmlsdGVyRnVuY3Rpb24gPSB0aGlzLmZpbHRlckZ1bmN0aW9uO1xuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgIGNhc2UgJ2N1cnJlbmN5JzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sID0gdGhpcy5jdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmN1cnJlbmN5U3ltYm9sUG9zaXRpb24gPSB0aGlzLmN1cnJlbmN5U3ltYm9sUG9zaXRpb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5kZWNpbWFsU2VwYXJhdG9yID0gdGhpcy5kZWNpbWFsU2VwYXJhdG9yO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWluRGVjaW1hbERpZ2l0cyA9IHRoaXMubWluRGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm1heERlY2ltYWxEaWdpdHMgPSB0aGlzLm1heERlY2ltYWxEaWdpdHM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5ncm91cGluZyA9IHRoaXMuZ3JvdXBpbmc7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50aG91c2FuZFNlcGFyYXRvciA9IHRoaXMudGhvdXNhbmRTZXBhcmF0b3I7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdkYXRlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZvcm1hdCA9IHRoaXMuZm9ybWF0O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5mb3JtYXQgPSB0aGlzLmZvcm1hdDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIuZ3JvdXBpbmcgPSB0aGlzLmdyb3VwaW5nO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudGhvdXNhbmRTZXBhcmF0b3IgPSB0aGlzLnRob3VzYW5kU2VwYXJhdG9yO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci50cnVlVmFsdWUgPSB0aGlzLnRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmZhbHNlVmFsdWUgPSB0aGlzLmZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUcnVlVmFsdWUgPSB0aGlzLnJlbmRlclRydWVWYWx1ZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnJlbmRlckZhbHNlVmFsdWUgPSB0aGlzLnJlbmRlckZhbHNlVmFsdWU7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5yZW5kZXJUeXBlID0gdGhpcy5yZW5kZXJUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYm9vbGVhblR5cGUgPSB0aGlzLmJvb2xlYW5UeXBlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAncGVyY2VudGFnZSc6XG4gICAgICAgICAgICBuZXdSZW5kZXJlci52YWx1ZUJhc2UgPSB0aGlzLnZhbHVlQmFzZTtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tZmFsbHRocm91Z2hcbiAgICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmRlY2ltYWxTZXBhcmF0b3IgPSB0aGlzLmRlY2ltYWxTZXBhcmF0b3I7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5taW5EZWNpbWFsRGlnaXRzID0gdGhpcy5taW5EZWNpbWFsRGlnaXRzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIubWF4RGVjaW1hbERpZ2l0cyA9IHRoaXMubWF4RGVjaW1hbERpZ2l0cztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmdyb3VwaW5nID0gdGhpcy5ncm91cGluZztcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRob3VzYW5kU2VwYXJhdG9yID0gdGhpcy50aG91c2FuZFNlcGFyYXRvcjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2ltYWdlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmltYWdlVHlwZSA9IHRoaXMuaW1hZ2VUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuYXZhdGFyID0gdGhpcy5hdmF0YXI7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5lbXB0eUltYWdlID0gdGhpcy5lbXB0eUltYWdlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnYWN0aW9uJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmljb24gPSB0aGlzLmljb247XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5hY3Rpb24gPSB0aGlzLmFjdGlvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLnRleHQgPSB0aGlzLnRleHQ7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5pY29uUG9zaXRpb24gPSB0aGlzLmljb25Qb3NpdGlvbjtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLm9uQ2xpY2sgPSB0aGlzLm9uQ2xpY2s7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdzZXJ2aWNlJzpcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmVudGl0eSA9IHRoaXMuZW50aXR5O1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuc2VydmljZSA9IHRoaXMuc2VydmljZTtcbiAgICAgICAgICAgIG5ld1JlbmRlcmVyLmNvbHVtbnMgPSB0aGlzLmNvbHVtbnM7XG4gICAgICAgICAgICBuZXdSZW5kZXJlci52YWx1ZUNvbHVtbiA9IHRoaXMudmFsdWVDb2x1bW47XG4gICAgICAgICAgICBuZXdSZW5kZXJlci5wYXJlbnRLZXlzID0gdGhpcy5wYXJlbnRLZXlzO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIucXVlcnlNZXRob2QgPSB0aGlzLnF1ZXJ5TWV0aG9kO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIuc2VydmljZVR5cGUgPSB0aGlzLnNlcnZpY2VUeXBlO1xuICAgICAgICAgICAgbmV3UmVuZGVyZXIudHJhbnNsYXRlID0gdGhpcy50cmFuc2xhdGU7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICd0cmFuc2xhdGUnOlxuICAgICAgICAgICAgbmV3UmVuZGVyZXIudHJhbnNsYXRlQXJnc0ZuID0gdGhpcy50cmFuc2xhdGVBcmdzRm47XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVuZGVyZXIobmV3UmVuZGVyZXIpO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYnVpbGRDZWxsRWRpdG9yKHR5cGU6IHN0cmluZywgY29udGFpbmVyOiBWaWV3Q29udGFpbmVyUmVmLCBwcm9wc09yaWdpbjogYW55LCByZWdpc3RlckluQ29sdW1uOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGxldCBlZGl0b3I7XG4gICAgY29uc3QgY29tcG9uZW50UmVmID0gZWRpdG9yc01hcHBpbmdbdHlwZV0gfHwgZWRpdG9yc01hcHBpbmcudGV4dDtcbiAgICBpZiAoY29tcG9uZW50UmVmID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBlZGl0b3I7XG4gICAgfVxuXG4gICAgY29uc3QgcmVmID0gY29udGFpbmVyLmNyZWF0ZUNvbXBvbmVudChjb21wb25lbnRSZWYpO1xuICAgIGVkaXRvciA9IHJlZi5pbnN0YW5jZTtcbiAgICBpZiAocHJvcHNPcmlnaW4gIT09IHVuZGVmaW5lZCkge1xuICAgICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIGVkaXRvci5mb3JtYXQgPSBwcm9wc09yaWdpbi5mb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLmxvY2FsZSA9IHByb3BzT3JpZ2luLmxvY2FsZTtcbiAgICAgICAgICBlZGl0b3Iub1N0YXJ0VmlldyA9IHByb3BzT3JpZ2luLm9TdGFydFZpZXc7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG4gICAgICAgICAgZWRpdG9yLm9Ub3VjaFVpID0gcHJvcHNPcmlnaW4ub1RvdWNoVWk7XG4gICAgICAgICAgZWRpdG9yLm9TdGFydEF0ID0gcHJvcHNPcmlnaW4ub1N0YXJ0QXQ7XG4gICAgICAgICAgZWRpdG9yLmZpbHRlckRhdGUgPSBwcm9wc09yaWdpbi5maWx0ZXJEYXRlO1xuICAgICAgICAgIGVkaXRvci5kYXRlVmFsdWVUeXBlID0gcHJvcHNPcmlnaW4uZGF0ZVZhbHVlVHlwZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAndGltZSc6XG4gICAgICAgICAgZWRpdG9yLm9EYXRlRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0RhdGVGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9Ib3VyRm9ybWF0ID0gcHJvcHNPcmlnaW4ub0hvdXJGb3JtYXQ7XG4gICAgICAgICAgZWRpdG9yLm9EYXRlTG9jYWxlID0gcHJvcHNPcmlnaW4ub0RhdGVMb2NhbGU7XG4gICAgICAgICAgZWRpdG9yLm9NaW5EYXRlID0gcHJvcHNPcmlnaW4ub01pbkRhdGU7XG4gICAgICAgICAgZWRpdG9yLm9NYXhEYXRlID0gcHJvcHNPcmlnaW4ub01heERhdGU7XG5cbiAgICAgICAgICBlZGl0b3Iub1RvdWNoVWkgPSBwcm9wc09yaWdpbi5vVG91Y2hVaTtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVTdGFydEF0ID0gcHJvcHNPcmlnaW4ub0RhdGVTdGFydEF0O1xuICAgICAgICAgIGVkaXRvci5vRGF0ZVRleHRJbnB1dEVuYWJsZWQgPSBwcm9wc09yaWdpbi5vRGF0ZVRleHRJbnB1dEVuYWJsZWQ7XG5cbiAgICAgICAgICBlZGl0b3Iub0hvdXJNaW4gPSBwcm9wc09yaWdpbi5vSG91ck1pbjtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJNYXggPSBwcm9wc09yaWdpbi5vSG91ck1heDtcbiAgICAgICAgICBlZGl0b3Iub0hvdXJUZXh0SW5wdXRFbmFibGVkID0gcHJvcHNPcmlnaW4ub0hvdXJUZXh0SW5wdXRFbmFibGVkO1xuICAgICAgICAgIGVkaXRvci5vSG91clBsYWNlaG9sZGVyID0gcHJvcHNPcmlnaW4ub0hvdXJQbGFjZWhvbGRlcjtcbiAgICAgICAgICBlZGl0b3Iub0RhdGVQbGFjZWhvbGRlciA9IHByb3BzT3JpZ2luLm9EYXRlUGxhY2Vob2xkZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIGVkaXRvci5ib29sZWFuVHlwZSA9IHByb3BzT3JpZ2luLmJvb2xlYW5UeXBlO1xuICAgICAgICAgIGVkaXRvci5pbmRldGVybWluYXRlT25OdWxsID0gcHJvcHNPcmlnaW4uaW5kZXRlcm1pbmF0ZU9uTnVsbDtcbiAgICAgICAgICBlZGl0b3IuYXV0b0NvbW1pdCA9IHByb3BzT3JpZ2luLmF1dG9Db21taXQ7XG4gICAgICAgICAgZWRpdG9yLnRydWVWYWx1ZSA9IHByb3BzT3JpZ2luLnRydWVWYWx1ZTtcbiAgICAgICAgICBlZGl0b3IuZmFsc2VWYWx1ZSA9IHByb3BzT3JpZ2luLmZhbHNlVmFsdWU7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgICBjYXNlICdwZXJjZW50YWdlJzpcbiAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICBjYXNlICdyZWFsJzpcbiAgICAgICAgICBlZGl0b3IubWluID0gcHJvcHNPcmlnaW4ubWluO1xuICAgICAgICAgIGVkaXRvci5tYXggPSBwcm9wc09yaWdpbi5tYXg7XG4gICAgICAgICAgZWRpdG9yLnN0ZXAgPSBVdGlsLmlzRGVmaW5lZChwcm9wc09yaWdpbi5zdGVwKSA/IHByb3BzT3JpZ2luLnN0ZXAgOiBlZGl0b3Iuc3RlcDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnaW1hZ2UnOlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgZWRpdG9yLm9sYWJlbCA9IHByb3BzT3JpZ2luLm9sYWJlbDtcbiAgICAgIGVkaXRvci50eXBlID0gcHJvcHNPcmlnaW4udHlwZTtcbiAgICB9XG4gICAgZWRpdG9yLnJlZ2lzdGVySW5Db2x1bW4gPSByZWdpc3RlckluQ29sdW1uO1xuXG4gICAgcmV0dXJuIGVkaXRvcjtcbiAgfVxuXG4gIHByb3RlY3RlZCBjcmVhdGVFZGl0b3IoKSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZCh0aGlzLmVkaXRvcikgJiYgdGhpcy5lZGl0YWJsZSkge1xuICAgICAgY29uc3QgbmV3RWRpdG9yID0gdGhpcy5idWlsZENlbGxFZGl0b3IodGhpcy50eXBlLCB0aGlzLmNvbnRhaW5lciwgdGhpcyk7XG4gICAgICBpZiAobmV3RWRpdG9yKSB7XG4gICAgICAgIG5ld0VkaXRvci5vcmVxdWlyZWQgPSB0aGlzLm9yZXF1aXJlZDtcbiAgICAgICAgbmV3RWRpdG9yLnNob3dQbGFjZUhvbGRlciA9IHRoaXMuc2hvd1BsYWNlSG9sZGVyO1xuICAgICAgICBuZXdFZGl0b3IudXBkYXRlUmVjb3JkT25FZGl0ID0gdGhpcy51cGRhdGVSZWNvcmRPbkVkaXQ7XG4gICAgICAgIG5ld0VkaXRvci5zaG93Tm90aWZpY2F0aW9uT25FZGl0ID0gdGhpcy5zaG93Tm90aWZpY2F0aW9uT25FZGl0O1xuICAgICAgICBuZXdFZGl0b3IuZWRpdGlvblN0YXJ0ZWQgPSB0aGlzLmVkaXRpb25TdGFydGVkO1xuICAgICAgICBuZXdFZGl0b3IuZWRpdGlvbkNhbmNlbGxlZCA9IHRoaXMuZWRpdGlvbkNhbmNlbGxlZDtcbiAgICAgICAgbmV3RWRpdG9yLmVkaXRpb25Db21taXR0ZWQgPSB0aGlzLmVkaXRpb25Db21taXR0ZWQ7XG4gICAgICAgIG5ld0VkaXRvci5vblBvc3RVcGRhdGVSZWNvcmQgPSB0aGlzLm9uUG9zdFVwZGF0ZVJlY29yZDtcbiAgICAgICAgdGhpcy5yZWdpc3RlckVkaXRvcihuZXdFZGl0b3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlclJlbmRlcmVyKHJlbmRlcmVyOiBhbnkpIHtcbiAgICB0aGlzLnJlbmRlcmVyID0gcmVuZGVyZXI7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG9Db2wucmVuZGVyZXIgPSB0aGlzLnJlbmRlcmVyO1xuICAgIH1cbiAgICB0aGlzLnJlbmRlcmVyLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3RlckVkaXRvcihlZGl0b3I6IGFueSkge1xuICAgIHRoaXMuZWRpdG9yID0gZWRpdG9yO1xuICAgIGNvbnN0IG9Db2wgPSB0aGlzLnRhYmxlLmdldE9Db2x1bW4odGhpcy5hdHRyKTtcbiAgICBpZiAob0NvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBvQ29sLmVkaXRvciA9IHRoaXMuZWRpdG9yO1xuICAgIH1cbiAgICB0aGlzLmVkaXRvci5pbml0aWFsaXplKCk7XG4gIH1cblxuICBzZXQgb3JkZXJhYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fb3JkZXJhYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wub3JkZXJhYmxlID0gdGhpcy5fb3JkZXJhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcmRlcmFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fb3JkZXJhYmxlO1xuICB9XG5cbiAgc2V0IHJlc2l6YWJsZSh2YWw6IGFueSkge1xuICAgIHRoaXMuX3Jlc2l6YWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLnJlc2l6YWJsZSA9IHRoaXMuX3Jlc2l6YWJsZTtcbiAgICB9XG4gIH1cblxuICBnZXQgcmVzaXphYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc2l6YWJsZTtcbiAgfVxuXG4gIHNldCBzZWFyY2hhYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fc2VhcmNoYWJsZSA9IHR5cGVvZiB2YWwgPT09ICdib29sZWFuJyA/IHZhbCA6IFV0aWwucGFyc2VCb29sZWFuKHZhbCwgdHJ1ZSk7XG4gICAgY29uc3Qgb0NvbCA9IHRoaXMudGFibGUuZ2V0T0NvbHVtbih0aGlzLmF0dHIpO1xuICAgIGlmIChvQ29sKSB7XG4gICAgICBvQ29sLnNlYXJjaGFibGUgPSB0aGlzLl9zZWFyY2hhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBzZWFyY2hhYmxlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaGFibGU7XG4gIH1cblxuICBzZXQgZ3JvdXBhYmxlKHZhbDogYW55KSB7XG4gICAgdGhpcy5fZ3JvdXBhYmxlID0gdHlwZW9mIHZhbCA9PT0gJ2Jvb2xlYW4nID8gdmFsIDogVXRpbC5wYXJzZUJvb2xlYW4odmFsLCB0cnVlKTtcbiAgICBjb25zdCBvQ29sID0gdGhpcy50YWJsZS5nZXRPQ29sdW1uKHRoaXMuYXR0cik7XG4gICAgaWYgKG9Db2wpIHtcbiAgICAgIG9Db2wuZ3JvdXBhYmxlID0gdGhpcy5fZ3JvdXBhYmxlO1xuICAgIH1cbiAgfVxuXG4gIGdldCBncm91cGFibGUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5fZ3JvdXBhYmxlO1xuICB9XG5cbiAgZ2V0U1FMVHlwZSgpOiBudW1iZXIge1xuICAgIGlmICghKHRoaXMuc3FsVHlwZSAmJiB0aGlzLnNxbFR5cGUubGVuZ3RoID4gMCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdUSU1FU1RBTVAnO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgICB0aGlzLnNxbFR5cGUgPSAnSU5URUdFUic7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgIHRoaXMuc3FsVHlwZSA9ICdCT09MRUFOJztcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncmVhbCc6XG4gICAgICAgIGNhc2UgJ3BlcmNlbnRhZ2UnOlxuICAgICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgICAgdGhpcy5zcWxUeXBlID0gJ0RPVUJMRSc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGNvbnN0IHNxbHQgPSB0aGlzLnNxbFR5cGUgJiYgdGhpcy5zcWxUeXBlLmxlbmd0aCA+IDAgPyB0aGlzLnNxbFR5cGUgOiB0aGlzLl9kZWZhdWx0U1FMVHlwZUtleTtcbiAgICB0aGlzLl9TUUxUeXBlID0gU1FMVHlwZXMuZ2V0U1FMVHlwZVZhbHVlKHNxbHQpO1xuICAgIHJldHVybiB0aGlzLl9TUUxUeXBlO1xuICB9XG5cbiAgc2V0IGZpbHRlclNvdXJjZSh2YWw6IHN0cmluZykge1xuICAgIGNvbnN0IGxvd2VyVmFsID0gKHZhbCB8fCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB0aGlzLl9maWx0ZXJTb3VyY2UgPSAobG93ZXJWYWwgPT09ICdyZW5kZXInIHx8IGxvd2VyVmFsID09PSAnZGF0YScgfHwgbG93ZXJWYWwgPT09ICdib3RoJykgPyBsb3dlclZhbCA6ICdyZW5kZXInO1xuICB9XG5cbiAgZ2V0IGZpbHRlclNvdXJjZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9maWx0ZXJTb3VyY2U7XG4gIH1cbn1cbiIsIjxzcGFuICNjb250YWluZXI+XG48L3NwYW4+Il19
|
package/esm2020/lib/components/table/extensions/dialog/export/o-table-export-dialog.component.mjs
CHANGED
|
@@ -2,8 +2,8 @@ import { HttpErrorResponse } from '@angular/common/http';
|
|
|
2
2
|
import { ChangeDetectionStrategy, Component, Inject, Injector, ViewEncapsulation } from '@angular/core';
|
|
3
3
|
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
|
|
4
4
|
import { Subscription } from 'rxjs';
|
|
5
|
-
import { filter } from 'rxjs/operators';
|
|
6
5
|
import { AppConfig } from '../../../../../config/app-config';
|
|
6
|
+
import { moveItemInArray } from '@angular/cdk/drag-drop';
|
|
7
7
|
import { OntimizeExportServiceProvider } from '../../../../../services/factories';
|
|
8
8
|
import { OntimizeExportService } from '../../../../../services/ontimize/ontimize-export.service';
|
|
9
9
|
import { SnackBarService } from '../../../../../services/snackbar.service';
|
|
@@ -16,21 +16,54 @@ import * as i0 from "@angular/core";
|
|
|
16
16
|
import * as i1 from "@angular/material/dialog";
|
|
17
17
|
import * as i2 from "@angular/common";
|
|
18
18
|
import * as i3 from "@angular/flex-layout/flex";
|
|
19
|
-
import * as i4 from "@angular/
|
|
20
|
-
import * as i5 from "@angular/material/
|
|
21
|
-
import * as i6 from "
|
|
22
|
-
import * as i7 from "
|
|
23
|
-
import * as i8 from "
|
|
19
|
+
import * as i4 from "@angular/forms";
|
|
20
|
+
import * as i5 from "@angular/material/button";
|
|
21
|
+
import * as i6 from "@angular/material/button-toggle";
|
|
22
|
+
import * as i7 from "@angular/material/expansion";
|
|
23
|
+
import * as i8 from "@angular/material/icon";
|
|
24
|
+
import * as i9 from "@angular/material/input";
|
|
25
|
+
import * as i10 from "@angular/material/form-field";
|
|
26
|
+
import * as i11 from "@angular/material/list";
|
|
27
|
+
import * as i12 from "@angular/material/radio";
|
|
28
|
+
import * as i13 from "@angular/cdk/drag-drop";
|
|
29
|
+
import * as i14 from "../../../../../pipes/o-translate.pipe";
|
|
30
|
+
import * as i15 from "../../header/table-menu/o-table-export-configuration.class";
|
|
24
31
|
export class OTableExportDialogComponent {
|
|
25
32
|
constructor(dialogRef, injector, config) {
|
|
26
33
|
this.dialogRef = dialogRef;
|
|
27
34
|
this.injector = injector;
|
|
28
35
|
this.config = config;
|
|
29
36
|
this.subscription = new Subscription();
|
|
37
|
+
this.orientations = [{ text: "EXPORT.DIALOG.VERTICAL", value: true }, { text: "EXPORT.DIALOG.HORIZONTAL", value: false }];
|
|
38
|
+
this.exportTypes = [{
|
|
39
|
+
exportType: 'xlsx',
|
|
40
|
+
svgIcon: 'ontimize:EXCEL',
|
|
41
|
+
olabel: 'TABLE.BUTTONS.EXCEL',
|
|
42
|
+
className: 'excel-button'
|
|
43
|
+
}, {
|
|
44
|
+
exportType: 'html',
|
|
45
|
+
svgIcon: 'ontimize:HTML',
|
|
46
|
+
olabel: 'TABLE.BUTTONS.HTML',
|
|
47
|
+
className: 'html-button'
|
|
48
|
+
}, {
|
|
49
|
+
exportType: 'pdf',
|
|
50
|
+
svgIcon: 'ontimize:PDF',
|
|
51
|
+
olabel: 'TABLE.BUTTONS.PDF',
|
|
52
|
+
className: 'pdf-button'
|
|
53
|
+
}, {
|
|
54
|
+
exportType: 'csv',
|
|
55
|
+
svgIcon: 'ontimize:CSV',
|
|
56
|
+
olabel: 'TABLE.BUTTONS.CSV',
|
|
57
|
+
className: 'csv-button'
|
|
58
|
+
}];
|
|
59
|
+
this.vertical = true;
|
|
60
|
+
this.filename = '';
|
|
61
|
+
this.isExpanded = false;
|
|
30
62
|
this.snackBarService = injector.get(SnackBarService);
|
|
31
63
|
this.translateService = this.injector.get(OTranslateService);
|
|
32
64
|
this.oTableExportButtonService = this.injector.get(OTableExportButtonService);
|
|
33
65
|
this.appConfig = this.injector.get(AppConfig);
|
|
66
|
+
this.selectedExportFormat = this.getDefaultSelection();
|
|
34
67
|
if (config && Util.isDefined(config.visibleButtons)) {
|
|
35
68
|
this.visibleButtons = Util.parseArray(config.visibleButtons.toLowerCase(), true);
|
|
36
69
|
}
|
|
@@ -42,8 +75,9 @@ export class OTableExportDialogComponent {
|
|
|
42
75
|
this.subscription.unsubscribe();
|
|
43
76
|
}
|
|
44
77
|
initialize() {
|
|
78
|
+
this.columnsData = this.config.columns;
|
|
79
|
+
this.columns = [...this.columnsData];
|
|
45
80
|
this.configureService();
|
|
46
|
-
this.subscription.add(this.oTableExportButtonService.export$.pipe(filter(type => ['xlsx', 'html', 'pdf'].indexOf(type) === -1)).subscribe(e => this.export(e)));
|
|
47
81
|
}
|
|
48
82
|
configureService() {
|
|
49
83
|
let loadingService = OntimizeExportService;
|
|
@@ -54,15 +88,29 @@ export class OTableExportDialogComponent {
|
|
|
54
88
|
const serviceCfg = this.exportService.getDefaultServiceConfiguration(this.config.service);
|
|
55
89
|
this.exportService.configureService(serviceCfg);
|
|
56
90
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
91
|
+
updateColumnsSort() {
|
|
92
|
+
this.columns.sort((a, b) => {
|
|
93
|
+
let indexA = this.columnsData.findIndex(x => x === a);
|
|
94
|
+
let indexB = this.columnsData.findIndex(x => x === b);
|
|
95
|
+
return indexA - indexB;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
dropColumns(event) {
|
|
99
|
+
moveItemInArray(this.columnsData, event.previousIndex, event.currentIndex);
|
|
100
|
+
this.updateColumnsSort();
|
|
101
|
+
}
|
|
102
|
+
columnsCompareFunction(co1, co2) {
|
|
103
|
+
return co1.id === co2.id;
|
|
104
|
+
}
|
|
105
|
+
export() {
|
|
61
106
|
this.dialogRef.close(true);
|
|
62
|
-
this.exportService.exportData(
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
107
|
+
this.exportService.exportData(this.selectedExportFormat, this.columns, !this.vertical, this.filename).subscribe({
|
|
108
|
+
next: () => {
|
|
109
|
+
this.snackBarService.open('MESSAGES.SUCCESS_EXPORT_TABLE_DATA', { icon: 'check_circle' });
|
|
110
|
+
},
|
|
111
|
+
error: (err) => {
|
|
112
|
+
this.handleError(err);
|
|
113
|
+
}
|
|
66
114
|
});
|
|
67
115
|
}
|
|
68
116
|
isButtonVisible(btn) {
|
|
@@ -81,6 +129,15 @@ export class OTableExportDialogComponent {
|
|
|
81
129
|
}
|
|
82
130
|
return isVisible;
|
|
83
131
|
}
|
|
132
|
+
getDefaultSelection() {
|
|
133
|
+
const useExportConfiguration3X = this.appConfig.useExportConfiguration();
|
|
134
|
+
if (useExportConfiguration3X) {
|
|
135
|
+
return Codes.VISIBLE_EXPORT_BUTTONS3X[0];
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
return Codes.VISIBLE_EXPORT_BUTTONS[0];
|
|
139
|
+
}
|
|
140
|
+
}
|
|
84
141
|
handleError(err) {
|
|
85
142
|
if (err instanceof HttpErrorResponse) {
|
|
86
143
|
this.snackBarService.open(err.message, { icon: 'error' });
|
|
@@ -89,20 +146,24 @@ export class OTableExportDialogComponent {
|
|
|
89
146
|
this.snackBarService.open('MESSAGES.ERROR_EXPORT_TABLE_DATA', { icon: 'error' });
|
|
90
147
|
}
|
|
91
148
|
}
|
|
149
|
+
onChangeMatButtonToggleGroup(event) {
|
|
150
|
+
event.source.buttonToggleGroup.value = event.value;
|
|
151
|
+
this.selectedExportFormat = event.value;
|
|
152
|
+
}
|
|
92
153
|
}
|
|
93
154
|
OTableExportDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableExportDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: i0.Injector }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
94
155
|
OTableExportDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: OTableExportDialogComponent, selector: "o-table-export-dialog", host: { classAttribute: "o-table-export-dialog" }, providers: [
|
|
95
156
|
OntimizeExportServiceProvider
|
|
96
|
-
], ngImport: i0, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.EXPORT' | oTranslate }}</span>\n<mat-dialog-content>\n <div mat-subheader>{{ 'TABLE.DIALOG.EXPORT.DESCRIPTION' | oTranslate }}</div>\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-around center\" fxLayoutGap=\"8px\">\n <o-table-export-button #excelButton *ngIf=\"isButtonVisible('xlsx')\" svg-icon=\"ontimize:EXCEL\" label=\"TABLE.BUTTONS.EXCEL\" export-type=\"xlsx\"\n (onClick)=\"export('xlsx', excelButton)\" class=\"excel-button\"></o-table-export-button>\n <o-table-export-button #htmlButton *ngIf=\"isButtonVisible('html')\" svg-icon=\"ontimize:HTML\" label=\"TABLE.BUTTONS.HTML\" export-type=\"html\"\n (onClick)=\"export('html', htmlButton)\" class=\"html-button\"></o-table-export-button>\n <o-table-export-button #pdfButton *ngIf=\"isButtonVisible('pdf')\" svg-icon=\"ontimize:PDF\" label=\"TABLE.BUTTONS.PDF\" export-type=\"pdf\"\n (onClick)=\"export('pdf', pdfButton)\" class=\"pdf-button\"></o-table-export-button>\n <o-table-export-button #csvButton *ngIf=\"isButtonVisible('csv')\" svg-icon=\"ontimize:CSV\" label=\"TABLE.BUTTONS.CSV\" export-type=\"pdf\"\n (onClick)=\"export('csv', csvButton)\" class=\"pdf-button\"></o-table-export-button>\n <ng-container *ngTemplateOutlet=\"config.options\"></ng-container>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n</mat-dialog-actions>\n", styles: [".o-table-export-dialog .mat-icon{padding:6px 6px 0;width:48px;height:48px;font-size:48px}.o-table-export-dialog .mat-mdc-raised-button{height:initial}.o-table-export-dialog .mat-mdc-raised-button .mdc-button__label{line-height:initial}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "component", type: i4.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i5.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "component", type: i6.OTableExportButtonComponent, selector: "o-table-export-button", inputs: ["icon", "svg-icon", "label", "export-type"], outputs: ["onClick"] }, { kind: "pipe", type: i7.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
157
|
+
], ngImport: i0, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.EXPORT' | oTranslate }}</span>\n<mat-dialog-content class=\"dialog_content\">\n <div mat-subheader>{{ 'TABLE.DIALOG.EXPORT.DESCRIPTION' | oTranslate }}</div>\n <mat-button-toggle-group class=\"type_toggle_group\" #group=\"matButtonToggleGroup\" [(ngModel)]=\"selectedExportFormat\">\n <ng-container *ngFor=\"let button of exportTypes\">\n <mat-button-toggle [value]=\"button.exportType\" *ngIf=\"isButtonVisible(button.exportType)\" class=\"button.className\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate;context:{button:button}\"></ng-container>\n </mat-button-toggle>\n </ng-container>\n\n <ng-container *ngFor=\"let customButton of config.options\">\n <mat-button-toggle [value]=\"customButton.exportType\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate;context:{button:customButton}\"></ng-container>\n </mat-button-toggle>\n </ng-container>\n </mat-button-toggle-group>\n <mat-expansion-panel class=\"acordion\" [expanded]=\"isExpanded\">\n <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n <mat-panel-title>\n {{ 'EXPORT.DIALOG.ADVANCED_OPTIONS' | oTranslate }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"inputs_container\">\n <mat-label class=\"dialog-titles\">{{'EXPORT.DIALOG.FILE_NAME'|oTranslate}}</mat-label>\n <mat-form-field subscriptSizing=\"dynamic\" class=\"filename_input\">\n <input matInput [(ngModel)]=\"filename\" placeholder=\"{{ 'EXPORT.DIALOG.FILE_NAME.PLACEHOLDER' | oTranslate }}\" />\n </mat-form-field>\n <span class=\"dialog-titles\">{{'EXPORT.DIALOG.ORIENTATION'|oTranslate}}</span>\n <mat-radio-group name=\"Orientation\" [(ngModel)]=\"vertical\" fxLayout=\"row\" fxLayoutGap=\"12px\" [disabled]=\"selectedExportFormat !== 'pdf'\">\n <mat-radio-button *ngFor=\"let orientation of orientations\" name=\"Orientation\" [value]=\"orientation.value\"\n [checked]=\"vertical === orientation.value\">\n {{ orientation.text | oTranslate}}\n </mat-radio-button>\n </mat-radio-group>\n <span class=\"dialog-titles\">{{'EXPORT.DIALOG.COLUMNS'|oTranslate}}</span>\n <mat-selection-list dense #columnsList cdkDropList [cdkDropListData]=\"columnsData\" (cdkDropListDropped)=\"dropColumns($event)\" class=\"columns\"\n [(ngModel)]=\"columns\" [compareWith]=\"columnsCompareFunction\">\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let column of columnsData\" [value]=\"column\" cdkDrag>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <span matListItemLine fxFlex>\n {{column | oTranslate}}\n </span>\n <mat-icon mat-list-icon class=\"button-edit\">drag_handle</mat-icon>\n </div>\n </mat-list-option>\n </mat-selection-list>\n\n </div>\n </mat-expansion-panel>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button class=\"export_button\" (click)=\"export()\">\n <mat-icon>ios_share</mat-icon>\n <span>{{ 'EXPORT.DIALOG.EXPORT_BUTTON' | oTranslate }}</span>\n </button>\n</mat-dialog-actions>\n\n<ng-template #buttonTemplate let-button=\"button\">\n <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"button.icon!==undefined\" style=\"vertical-align:middle\">{{ button.icon }}</mat-icon>\n <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"button.svgIcon!==undefined\" style=\"vertical-align:middle\"\n [svgIcon]=\"button.svgIcon\"></mat-icon>\n {{ button.olabel | oTranslate }}\n</ng-template>\n", styles: [".o-table-export-dialog .mat-mdc-raised-button{height:initial}.o-table-export-dialog .mat-mdc-raised-button .mdc-button__label{line-height:initial}.o-table-export-dialog mat-selection-list{margin-bottom:20px}.o-table-export-dialog .filename_input{margin-top:10px;display:flex;margin-bottom:20px}.o-table-export-dialog mat-radio-group{margin-top:10px;margin-bottom:20px}.o-table-export-dialog span.dialog-titles{font-weight:500}.o-table-export-dialog .acordion.mat-expansion-panel{box-shadow:none}.o-table-export-dialog .acordion.mat-expansion-panel .mat-expansion-panel-body{padding:0}.o-table-export-dialog .mat-expansion-panel-header:not([aria-disabled=true]){border-bottom:1px solid rgba(0,0,0,.16)}.o-table-export-dialog .mat-expansion-panel-header{border-radius:initial;margin-bottom:10px}.o-table-export-dialog .dialog_content{display:flex;flex-direction:column;height:100%;padding-bottom:0}.o-table-export-dialog .acordion{flex-grow:1;max-height:100%}.o-table-export-dialog .acordion.mat-expansion-panel.mat-expanded{overflow-y:auto}.o-table-export-dialog mat-expanded .inputs-container{max-height:100%;overflow-y:auto}.o-table-export-dialog .type_toggle_group{margin-bottom:20px}.o-table-export-dialog .type_toggle_group .mat-button-toggle{flex:1}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutGapDirective, selector: " [fxLayoutGap], [fxLayoutGap.xs], [fxLayoutGap.sm], [fxLayoutGap.md], [fxLayoutGap.lg], [fxLayoutGap.xl], [fxLayoutGap.lt-sm], [fxLayoutGap.lt-md], [fxLayoutGap.lt-lg], [fxLayoutGap.lt-xl], [fxLayoutGap.gt-xs], [fxLayoutGap.gt-sm], [fxLayoutGap.gt-md], [fxLayoutGap.gt-lg]", inputs: ["fxLayoutGap", "fxLayoutGap.xs", "fxLayoutGap.sm", "fxLayoutGap.md", "fxLayoutGap.lg", "fxLayoutGap.xl", "fxLayoutGap.lt-sm", "fxLayoutGap.lt-md", "fxLayoutGap.lt-lg", "fxLayoutGap.lt-xl", "fxLayoutGap.gt-xs", "fxLayoutGap.gt-sm", "fxLayoutGap.gt-md", "fxLayoutGap.gt-lg"] }, { kind: "directive", type: i3.DefaultLayoutAlignDirective, selector: " [fxLayoutAlign], [fxLayoutAlign.xs], [fxLayoutAlign.sm], [fxLayoutAlign.md], [fxLayoutAlign.lg], [fxLayoutAlign.xl], [fxLayoutAlign.lt-sm], [fxLayoutAlign.lt-md], [fxLayoutAlign.lt-lg], [fxLayoutAlign.lt-xl], [fxLayoutAlign.gt-xs], [fxLayoutAlign.gt-sm], [fxLayoutAlign.gt-md], [fxLayoutAlign.gt-lg]", inputs: ["fxLayoutAlign", "fxLayoutAlign.xs", "fxLayoutAlign.sm", "fxLayoutAlign.md", "fxLayoutAlign.lg", "fxLayoutAlign.xl", "fxLayoutAlign.lt-sm", "fxLayoutAlign.lt-md", "fxLayoutAlign.lt-lg", "fxLayoutAlign.lt-xl", "fxLayoutAlign.gt-xs", "fxLayoutAlign.gt-sm", "fxLayoutAlign.gt-md", "fxLayoutAlign.gt-lg"] }, { kind: "directive", type: i3.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.MatButtonToggleGroup, selector: "mat-button-toggle-group", inputs: ["appearance", "name", "vertical", "value", "multiple", "disabled"], outputs: ["valueChange", "change"], exportAs: ["matButtonToggleGroup"] }, { kind: "component", type: i6.MatButtonToggle, selector: "mat-button-toggle", inputs: ["disableRipple", "aria-label", "aria-labelledby", "id", "name", "value", "tabIndex", "appearance", "checked", "disabled"], outputs: ["change"], exportAs: ["matButtonToggle"] }, { kind: "directive", type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "component", type: i7.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i7.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i7.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i10.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i10.MatLabel, selector: "mat-label" }, { kind: "component", type: i11.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i11.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "checkboxPosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i11.MatListSubheaderCssMatStyler, selector: "[mat-subheader], [matSubheader]" }, { kind: "directive", type: i11.MatListItemLine, selector: "[matListItemLine]" }, { kind: "directive", type: i12.MatRadioGroup, selector: "mat-radio-group", exportAs: ["matRadioGroup"] }, { kind: "component", type: i12.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex"], exportAs: ["matRadioButton"] }, { kind: "directive", type: i13.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i13.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "pipe", type: i14.OTranslatePipe, name: "oTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
97
158
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: OTableExportDialogComponent, decorators: [{
|
|
98
159
|
type: Component,
|
|
99
160
|
args: [{ selector: 'o-table-export-dialog', providers: [
|
|
100
161
|
OntimizeExportServiceProvider
|
|
101
162
|
], changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
102
163
|
class: 'o-table-export-dialog'
|
|
103
|
-
}, encapsulation: ViewEncapsulation.None, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.EXPORT' | oTranslate }}</span>\n<mat-dialog-content>\n <div mat-subheader>{{ 'TABLE.DIALOG.EXPORT.DESCRIPTION' | oTranslate }}</div>\n <
|
|
104
|
-
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i0.Injector }, { type:
|
|
164
|
+
}, encapsulation: ViewEncapsulation.None, template: "<span mat-dialog-title>{{ 'TABLE.BUTTONS.EXPORT' | oTranslate }}</span>\n<mat-dialog-content class=\"dialog_content\">\n <div mat-subheader>{{ 'TABLE.DIALOG.EXPORT.DESCRIPTION' | oTranslate }}</div>\n <mat-button-toggle-group class=\"type_toggle_group\" #group=\"matButtonToggleGroup\" [(ngModel)]=\"selectedExportFormat\">\n <ng-container *ngFor=\"let button of exportTypes\">\n <mat-button-toggle [value]=\"button.exportType\" *ngIf=\"isButtonVisible(button.exportType)\" class=\"button.className\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate;context:{button:button}\"></ng-container>\n </mat-button-toggle>\n </ng-container>\n\n <ng-container *ngFor=\"let customButton of config.options\">\n <mat-button-toggle [value]=\"customButton.exportType\">\n <ng-container *ngTemplateOutlet=\"buttonTemplate;context:{button:customButton}\"></ng-container>\n </mat-button-toggle>\n </ng-container>\n </mat-button-toggle-group>\n <mat-expansion-panel class=\"acordion\" [expanded]=\"isExpanded\">\n <mat-expansion-panel-header collapsedHeight=\"32px\" expandedHeight=\"32px\">\n <mat-panel-title>\n {{ 'EXPORT.DIALOG.ADVANCED_OPTIONS' | oTranslate }}\n </mat-panel-title>\n </mat-expansion-panel-header>\n <div class=\"inputs_container\">\n <mat-label class=\"dialog-titles\">{{'EXPORT.DIALOG.FILE_NAME'|oTranslate}}</mat-label>\n <mat-form-field subscriptSizing=\"dynamic\" class=\"filename_input\">\n <input matInput [(ngModel)]=\"filename\" placeholder=\"{{ 'EXPORT.DIALOG.FILE_NAME.PLACEHOLDER' | oTranslate }}\" />\n </mat-form-field>\n <span class=\"dialog-titles\">{{'EXPORT.DIALOG.ORIENTATION'|oTranslate}}</span>\n <mat-radio-group name=\"Orientation\" [(ngModel)]=\"vertical\" fxLayout=\"row\" fxLayoutGap=\"12px\" [disabled]=\"selectedExportFormat !== 'pdf'\">\n <mat-radio-button *ngFor=\"let orientation of orientations\" name=\"Orientation\" [value]=\"orientation.value\"\n [checked]=\"vertical === orientation.value\">\n {{ orientation.text | oTranslate}}\n </mat-radio-button>\n </mat-radio-group>\n <span class=\"dialog-titles\">{{'EXPORT.DIALOG.COLUMNS'|oTranslate}}</span>\n <mat-selection-list dense #columnsList cdkDropList [cdkDropListData]=\"columnsData\" (cdkDropListDropped)=\"dropColumns($event)\" class=\"columns\"\n [(ngModel)]=\"columns\" [compareWith]=\"columnsCompareFunction\">\n <mat-list-option checkboxPosition=\"before\" *ngFor=\"let column of columnsData\" [value]=\"column\" cdkDrag>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-around center\">\n <span matListItemLine fxFlex>\n {{column | oTranslate}}\n </span>\n <mat-icon mat-list-icon class=\"button-edit\">drag_handle</mat-icon>\n </div>\n </mat-list-option>\n </mat-selection-list>\n\n </div>\n </mat-expansion-panel>\n</mat-dialog-content>\n\n<mat-dialog-actions fxLayoutAlign=\"end center\">\n <button type=\"button\" mat-stroked-button [mat-dialog-close]=\"false\" class=\"o-button-default cancel\">{{ 'CANCEL' | oTranslate }}</button>\n <button type=\"button\" mat-stroked-button class=\"export_button\" (click)=\"export()\">\n <mat-icon>ios_share</mat-icon>\n <span>{{ 'EXPORT.DIALOG.EXPORT_BUTTON' | oTranslate }}</span>\n </button>\n</mat-dialog-actions>\n\n<ng-template #buttonTemplate let-button=\"button\">\n <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"button.icon!==undefined\" style=\"vertical-align:middle\">{{ button.icon }}</mat-icon>\n <mat-icon class=\"material-icons o-button-icon\" *ngIf=\"button.svgIcon!==undefined\" style=\"vertical-align:middle\"\n [svgIcon]=\"button.svgIcon\"></mat-icon>\n {{ button.olabel | oTranslate }}\n</ng-template>\n", styles: [".o-table-export-dialog .mat-mdc-raised-button{height:initial}.o-table-export-dialog .mat-mdc-raised-button .mdc-button__label{line-height:initial}.o-table-export-dialog mat-selection-list{margin-bottom:20px}.o-table-export-dialog .filename_input{margin-top:10px;display:flex;margin-bottom:20px}.o-table-export-dialog mat-radio-group{margin-top:10px;margin-bottom:20px}.o-table-export-dialog span.dialog-titles{font-weight:500}.o-table-export-dialog .acordion.mat-expansion-panel{box-shadow:none}.o-table-export-dialog .acordion.mat-expansion-panel .mat-expansion-panel-body{padding:0}.o-table-export-dialog .mat-expansion-panel-header:not([aria-disabled=true]){border-bottom:1px solid rgba(0,0,0,.16)}.o-table-export-dialog .mat-expansion-panel-header{border-radius:initial;margin-bottom:10px}.o-table-export-dialog .dialog_content{display:flex;flex-direction:column;height:100%;padding-bottom:0}.o-table-export-dialog .acordion{flex-grow:1;max-height:100%}.o-table-export-dialog .acordion.mat-expansion-panel.mat-expanded{overflow-y:auto}.o-table-export-dialog mat-expanded .inputs-container{max-height:100%;overflow-y:auto}.o-table-export-dialog .type_toggle_group{margin-bottom:20px}.o-table-export-dialog .type_toggle_group .mat-button-toggle{flex:1}\n"] }]
|
|
165
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: i0.Injector }, { type: i15.OTableExportConfiguration, decorators: [{
|
|
105
166
|
type: Inject,
|
|
106
167
|
args: [MAT_DIALOG_DATA]
|
|
107
168
|
}] }]; } });
|
|
108
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1leHBvcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2V4cG9ydC9vLXRhYmxlLWV4cG9ydC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9kaWFsb2cvZXhwb3J0L28tdGFibGUtZXhwb3J0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRzdELE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1B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Q2xGO0lBQ0gsQ0FBQzs7eUhBMUZVLDJCQUEyQixzRUFhNUIsZUFBZTs2R0FiZCwyQkFBMkIsbUdBVDNCO1FBQ1QsNkJBQTZCO0tBQzlCLDBCQ3ZCSCwraERBbUJBOzRGRFdhLDJCQUEyQjtrQkFidkMsU0FBUzsrQkFDRSx1QkFBdUIsYUFHdEI7d0JBQ1QsNkJBQTZCO3FCQUM5QixtQkFDZ0IsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixLQUFLLEVBQUUsdUJBQXVCO3FCQUMvQixpQkFDYyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFlbEMsTUFBTTsyQkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uZmlnL2FwcC1jb25maWcnO1xuXG5pbXBvcnQgeyBJRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvZXhwb3J0LXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0U2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLWV4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPVGFibGVFeHBvcnRCdXR0b25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXhwb3J0LWJ1dHRvbi9vLXRhYmxlLWV4cG9ydC1idXR0b24uc2VydmljZSc7XG5pbXBvcnQgeyBPVGFibGVFeHBvcnRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1leHBvcnQtY29uZmlndXJhdGlvbi5jbGFzcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ28tdGFibGUtZXhwb3J0LWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnby10YWJsZS1leHBvcnQtZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ28tdGFibGUtZXhwb3J0LWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBPbnRpbWl6ZUV4cG9ydFNlcnZpY2VQcm92aWRlclxuICBdLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgaG9zdDoge1xuICAgIGNsYXNzOiAnby10YWJsZS1leHBvcnQtZGlhbG9nJ1xuICB9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIE9UYWJsZUV4cG9ydERpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBwcm90ZWN0ZWQgc25hY2tCYXJTZXJ2aWNlOiBTbmFja0JhclNlcnZpY2U7XG4gIHByb3RlY3RlZCBleHBvcnRTZXJ2aWNlOiBJRXhwb3J0U2VydmljZTtcbiAgcHJvdGVjdGVkIHRyYW5zbGF0ZVNlcnZpY2U6IE9UcmFuc2xhdGVTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgb1RhYmxlRXhwb3J0QnV0dG9uU2VydmljZTogT1RhYmxlRXhwb3J0QnV0dG9uU2VydmljZTtcbiAgcHJvdGVjdGVkIHZpc2libGVCdXR0b25zOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBzdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiA9IG5ldyBTdWJzY3JpcHRpb24oKTtcbiAgcHJpdmF0ZSBhcHBDb25maWc6IEFwcENvbmZpZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T1RhYmxlRXhwb3J0RGlhbG9nQ29tcG9uZW50PixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgY29uZmlnOiBPVGFibGVFeHBvcnRDb25maWd1cmF0aW9uXG4gICkge1xuICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNuYWNrQmFyU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMub1RhYmxlRXhwb3J0QnV0dG9uU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UYWJsZUV4cG9ydEJ1dHRvblNlcnZpY2UpO1xuICAgIHRoaXMuYXBwQ29uZmlnID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwQ29uZmlnKVxuXG4gICAgaWYgKGNvbmZpZyAmJiBVdGlsLmlzRGVmaW5lZChjb25maWcudmlzaWJsZUJ1dHRvbnMpKSB7XG4gICAgICB0aGlzLnZpc2libGVCdXR0b25zID0gVXRpbC5wYXJzZUFycmF5KGNvbmZpZy52aXNpYmxlQnV0dG9ucy50b0xvd2VyQ2FzZSgpLCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBpbml0aWFsaXplKCk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlndXJlU2VydmljZSgpO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9uLmFkZChcbiAgICAgIHRoaXMub1RhYmxlRXhwb3J0QnV0dG9uU2VydmljZS5leHBvcnQkLnBpcGUoZmlsdGVyKHR5cGUgPT4gWyd4bHN4JywgJ2h0bWwnLCAncGRmJ10uaW5kZXhPZih0eXBlKSA9PT0gLTEpKS5zdWJzY3JpYmUoZSA9PiB0aGlzLmV4cG9ydChlKSlcbiAgICApO1xuICB9XG5cbiAgY29uZmlndXJlU2VydmljZSgpOiB2b2lkIHtcbiAgICBsZXQgbG9hZGluZ1NlcnZpY2U6IGFueSA9IE9udGltaXplRXhwb3J0U2VydmljZTtcbiAgICBpZiAodGhpcy5jb25maWcuc2VydmljZVR5cGUpIHtcbiAgICAgIGxvYWRpbmdTZXJ2aWNlID0gdGhpcy5jb25maWcuc2VydmljZVR5cGU7XG4gICAgfVxuICAgIHRoaXMuZXhwb3J0U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KGxvYWRpbmdTZXJ2aWNlKTtcbiAgICBjb25zdCBzZXJ2aWNlQ2ZnID0gdGhpcy5leHBvcnRTZXJ2aWNlLmdldERlZmF1bHRTZXJ2aWNlQ29uZmlndXJhdGlvbih0aGlzLmNvbmZpZy5zZXJ2aWNlKTtcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuY29uZmlndXJlU2VydmljZShzZXJ2aWNlQ2ZnKTtcbiAgfVxuXG4gIGV4cG9ydChleHBvcnRUeXBlOiBzdHJpbmcsIGJ1dHRvbj86IGFueSk6IHZvaWQge1xuXG4gICAgaWYgKGJ1dHRvbikge1xuICAgICAgYnV0dG9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLmRpYWxvZ1JlZi5jbG9zZSh0cnVlKTtcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RGF0YShleHBvcnRUeXBlKS5zdWJzY3JpYmUoXG4gICAgICByZXMgPT4ge1xuICAgICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKCdNRVNTQUdFUy5TVUNDRVNTX0VYUE9SVF9UQUJMRV9EQVRBJywgeyBpY29uOiAnY2hlY2tfY2lyY2xlJyB9KTtcbiAgICAgIH0sXG4gICAgICBlcnIgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGlzQnV0dG9uVmlzaWJsZShidG46IHN0cmluZyk6IGJvb2xlYW4ge1xuXG4gICAgY29uc3QgdXNlRXhwb3J0Q29uZmlndXJhdGlvbjNYID0gdGhpcy5hcHBDb25maWcudXNlRXhwb3J0Q29uZmlndXJhdGlvbigpO1xuICAgIGxldCBpc1Zpc2libGUgPSB0cnVlO1xuICAgIGlmICh0aGlzLnZpc2libGVCdXR0b25zKSB7XG4gICAgICBpc1Zpc2libGUgPSB0aGlzLnZpc2libGVCdXR0b25zLmluZGV4T2YoYnRuKSAhPT0gLTE7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh1c2VFeHBvcnRDb25maWd1cmF0aW9uM1gpIHtcbiAgICAgICAgaXNWaXNpYmxlID0gQ29kZXMuVklTSUJMRV9FWFBPUlRfQlVUVE9OUzNYLmluZGV4T2YoYnRuKSAhPT0gLTE7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpc1Zpc2libGUgPSBDb2Rlcy5WSVNJQkxFX0VYUE9SVF9CVVRUT05TLmluZGV4T2YoYnRuKSAhPT0gLTFcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXNWaXNpYmxlO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZUVycm9yKGVycik6IHZvaWQge1xuICAgIGlmIChlcnIgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbihlcnIubWVzc2FnZSwgeyBpY29uOiAnZXJyb3InIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKCdNRVNTQUdFUy5FUlJPUl9FWFBPUlRfVEFCTEVfREFUQScsIHsgaWNvbjogJ2Vycm9yJyB9KTtcbiAgICB9XG4gIH1cbn1cbiIsIjxzcGFuIG1hdC1kaWFsb2ctdGl0bGU+e3sgJ1RBQkxFLkJVVFRPTlMuRVhQT1JUJyB8IG9UcmFuc2xhdGUgfX08L3NwYW4+XG48bWF0LWRpYWxvZy1jb250ZW50PlxuICA8ZGl2IG1hdC1zdWJoZWFkZXI+e3sgJ1RBQkxFLkRJQUxPRy5FWFBPUlQuREVTQ1JJUFRJT04nIHwgb1RyYW5zbGF0ZSB9fTwvZGl2PlxuICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXBcIiBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiIGZ4TGF5b3V0R2FwPVwiOHB4XCI+XG4gICAgPG8tdGFibGUtZXhwb3J0LWJ1dHRvbiAjZXhjZWxCdXR0b24gKm5nSWY9XCJpc0J1dHRvblZpc2libGUoJ3hsc3gnKVwiIHN2Zy1pY29uPVwib250aW1pemU6RVhDRUxcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuRVhDRUxcIiBleHBvcnQtdHlwZT1cInhsc3hcIlxuICAgICAgKG9uQ2xpY2spPVwiZXhwb3J0KCd4bHN4JywgZXhjZWxCdXR0b24pXCIgY2xhc3M9XCJleGNlbC1idXR0b25cIj48L28tdGFibGUtZXhwb3J0LWJ1dHRvbj5cbiAgICA8by10YWJsZS1leHBvcnQtYnV0dG9uICNodG1sQnV0dG9uICpuZ0lmPVwiaXNCdXR0b25WaXNpYmxlKCdodG1sJylcIiBzdmctaWNvbj1cIm9udGltaXplOkhUTUxcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuSFRNTFwiIGV4cG9ydC10eXBlPVwiaHRtbFwiXG4gICAgICAob25DbGljayk9XCJleHBvcnQoJ2h0bWwnLCBodG1sQnV0dG9uKVwiIGNsYXNzPVwiaHRtbC1idXR0b25cIj48L28tdGFibGUtZXhwb3J0LWJ1dHRvbj5cbiAgICA8by10YWJsZS1leHBvcnQtYnV0dG9uICNwZGZCdXR0b24gKm5nSWY9XCJpc0J1dHRvblZpc2libGUoJ3BkZicpXCIgc3ZnLWljb249XCJvbnRpbWl6ZTpQREZcIiBsYWJlbD1cIlRBQkxFLkJVVFRPTlMuUERGXCIgZXhwb3J0LXR5cGU9XCJwZGZcIlxuICAgICAgKG9uQ2xpY2spPVwiZXhwb3J0KCdwZGYnLCBwZGZCdXR0b24pXCIgY2xhc3M9XCJwZGYtYnV0dG9uXCI+PC9vLXRhYmxlLWV4cG9ydC1idXR0b24+XG4gICAgPG8tdGFibGUtZXhwb3J0LWJ1dHRvbiAjY3N2QnV0dG9uICpuZ0lmPVwiaXNCdXR0b25WaXNpYmxlKCdjc3YnKVwiIHN2Zy1pY29uPVwib250aW1pemU6Q1NWXCIgbGFiZWw9XCJUQUJMRS5CVVRUT05TLkNTVlwiIGV4cG9ydC10eXBlPVwicGRmXCJcbiAgICAgIChvbkNsaWNrKT1cImV4cG9ydCgnY3N2JywgY3N2QnV0dG9uKVwiIGNsYXNzPVwicGRmLWJ1dHRvblwiPjwvby10YWJsZS1leHBvcnQtYnV0dG9uPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb25maWcub3B0aW9uc1wiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbWF0LWRpYWxvZy1jb250ZW50PlxuXG48bWF0LWRpYWxvZy1hY3Rpb25zIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCI+XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1zdHJva2VkLWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJmYWxzZVwiIGNsYXNzPVwiby1idXR0b24tZGVmYXVsdCBjYW5jZWxcIj57eyAnQ0FOQ0VMJyB8IG9UcmFuc2xhdGUgfX08L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
|
|
169
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiby10YWJsZS1leHBvcnQtZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29udGltaXplLXdlYi1uZ3gvc3JjL2xpYi9jb21wb25lbnRzL3RhYmxlL2V4dGVuc2lvbnMvZGlhbG9nL2V4cG9ydC9vLXRhYmxlLWV4cG9ydC1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL2NvbXBvbmVudHMvdGFibGUvZXh0ZW5zaW9ucy9kaWFsb2cvZXhwb3J0L28tdGFibGUtZXhwb3J0LWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQXFCLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNILE9BQU8sRUFBRSxlQUFlLEVBQUUsWUFBWSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFFN0QsT0FBTyxFQUFlLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRXRFLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2pHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsS0FBSyxFQUFFLE1B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aW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIEluamVjdG9yLCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1BVF9ESUFMT0dfREFUQSwgTWF0RGlhbG9nUmVmIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vY29uZmlnL2FwcC1jb25maWcnO1xuXG5pbXBvcnQgeyBDZGtEcmFnRHJvcCwgbW92ZUl0ZW1JbkFycmF5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2RyYWctZHJvcCc7XG5pbXBvcnQgeyBJRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL2ludGVyZmFjZXMvZXhwb3J0LXNlcnZpY2UuaW50ZXJmYWNlJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0U2VydmljZVByb3ZpZGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZXMvZmFjdG9yaWVzJztcbmltcG9ydCB7IE9udGltaXplRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLWV4cG9ydC5zZXJ2aWNlJztcbmltcG9ydCB7IFNuYWNrQmFyU2VydmljZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2VzL3NuYWNrYmFyLnNlcnZpY2UnO1xuaW1wb3J0IHsgT1RyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlcy90cmFuc2xhdGUvby10cmFuc2xhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBDb2RlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvY29kZXMnO1xuaW1wb3J0IHsgVXRpbCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3V0aWwvdXRpbCc7XG5pbXBvcnQgeyBPVGFibGVFeHBvcnRCdXR0b25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vZXhwb3J0LWJ1dHRvbi9vLXRhYmxlLWV4cG9ydC1idXR0b24uc2VydmljZSc7XG5pbXBvcnQgeyBPVGFibGVFeHBvcnRDb25maWd1cmF0aW9uIH0gZnJvbSAnLi4vLi4vaGVhZGVyL3RhYmxlLW1lbnUvby10YWJsZS1leHBvcnQtY29uZmlndXJhdGlvbi5jbGFzcyc7XG5pbXBvcnQgeyBNYXRCdXR0b25Ub2dnbGVDaGFuZ2UgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24tdG9nZ2xlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnby10YWJsZS1leHBvcnQtZGlhbG9nJyxcbiAgdGVtcGxhdGVVcmw6ICdvLXRhYmxlLWV4cG9ydC1kaWFsb2cuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnby10YWJsZS1leHBvcnQtZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIE9udGltaXplRXhwb3J0U2VydmljZVByb3ZpZGVyXG4gIF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgY2xhc3M6ICdvLXRhYmxlLWV4cG9ydC1kaWFsb2cnXG4gIH0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgT1RhYmxlRXhwb3J0RGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuXG4gIHByb3RlY3RlZCBzbmFja0JhclNlcnZpY2U6IFNuYWNrQmFyU2VydmljZTtcbiAgcHJvdGVjdGVkIGV4cG9ydFNlcnZpY2U6IElFeHBvcnRTZXJ2aWNlO1xuICBwcm90ZWN0ZWQgdHJhbnNsYXRlU2VydmljZTogT1RyYW5zbGF0ZVNlcnZpY2U7XG4gIHByb3RlY3RlZCBvVGFibGVFeHBvcnRCdXR0b25TZXJ2aWNlOiBPVGFibGVFeHBvcnRCdXR0b25TZXJ2aWNlO1xuICBwcm90ZWN0ZWQgdmlzaWJsZUJ1dHRvbnM6IHN0cmluZ1tdO1xuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uID0gbmV3IFN1YnNjcmlwdGlvbigpO1xuICBwcml2YXRlIGFwcENvbmZpZzogQXBwQ29uZmlnO1xuICBjb2x1bW5zOiBzdHJpbmdbXTtcbiAgY29sdW1uc0RhdGE6IHN0cmluZ1tdO1xuICBwdWJsaWMgb3JpZW50YXRpb25zID0gW3sgdGV4dDogXCJFWFBPUlQuRElBTE9HLlZFUlRJQ0FMXCIsIHZhbHVlOiB0cnVlIH0sIHsgdGV4dDogXCJFWFBPUlQuRElBTE9HLkhPUklaT05UQUxcIiwgdmFsdWU6IGZhbHNlIH1dO1xuICBwdWJsaWMgZXhwb3J0VHlwZXMgPSBbe1xuICAgIGV4cG9ydFR5cGU6ICd4bHN4JyxcbiAgICBzdmdJY29uOiAnb250aW1pemU6RVhDRUwnLFxuICAgIG9sYWJlbDogJ1RBQkxFLkJVVFRPTlMuRVhDRUwnLFxuICAgIGNsYXNzTmFtZTogJ2V4Y2VsLWJ1dHRvbidcbiAgfSwge1xuICAgIGV4cG9ydFR5cGU6ICdodG1sJyxcbiAgICBzdmdJY29uOiAnb250aW1pemU6SFRNTCcsXG4gICAgb2xhYmVsOiAnVEFCTEUuQlVUVE9OUy5IVE1MJyxcbiAgICBjbGFzc05hbWU6ICdodG1sLWJ1dHRvbidcbiAgfSwge1xuICAgIGV4cG9ydFR5cGU6ICdwZGYnLFxuICAgIHN2Z0ljb246ICdvbnRpbWl6ZTpQREYnLFxuICAgIG9sYWJlbDogJ1RBQkxFLkJVVFRPTlMuUERGJyxcbiAgICBjbGFzc05hbWU6ICdwZGYtYnV0dG9uJ1xuICB9LCB7XG4gICAgZXhwb3J0VHlwZTogJ2NzdicsXG4gICAgc3ZnSWNvbjogJ29udGltaXplOkNTVicsXG4gICAgb2xhYmVsOiAnVEFCTEUuQlVUVE9OUy5DU1YnLFxuICAgIGNsYXNzTmFtZTogJ2Nzdi1idXR0b24nXG4gIH1dO1xuICB2ZXJ0aWNhbDogYm9vbGVhbiA9IHRydWU7XG4gIHNlbGVjdGVkRXhwb3J0Rm9ybWF0OiBzdHJpbmc7XG4gIGZpbGVuYW1lOiBzdHJpbmcgPSAnJztcbiAgaXNFeHBhbmRlZDogYm9vbGVhbiA9IGZhbHNlO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8T1RhYmxlRXhwb3J0RGlhbG9nQ29tcG9uZW50PixcbiAgICBwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIEBJbmplY3QoTUFUX0RJQUxPR19EQVRBKSBwdWJsaWMgY29uZmlnOiBPVGFibGVFeHBvcnRDb25maWd1cmF0aW9uXG4gICkge1xuICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFNuYWNrQmFyU2VydmljZSk7XG4gICAgdGhpcy50cmFuc2xhdGVTZXJ2aWNlID0gdGhpcy5pbmplY3Rvci5nZXQoT1RyYW5zbGF0ZVNlcnZpY2UpO1xuICAgIHRoaXMub1RhYmxlRXhwb3J0QnV0dG9uU2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KE9UYWJsZUV4cG9ydEJ1dHRvblNlcnZpY2UpO1xuICAgIHRoaXMuYXBwQ29uZmlnID0gdGhpcy5pbmplY3Rvci5nZXQoQXBwQ29uZmlnKTtcbiAgICB0aGlzLnNlbGVjdGVkRXhwb3J0Rm9ybWF0ID0gdGhpcy5nZXREZWZhdWx0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoY29uZmlnICYmIFV0aWwuaXNEZWZpbmVkKGNvbmZpZy52aXNpYmxlQnV0dG9ucykpIHtcbiAgICAgIHRoaXMudmlzaWJsZUJ1dHRvbnMgPSBVdGlsLnBhcnNlQXJyYXkoY29uZmlnLnZpc2libGVCdXR0b25zLnRvTG93ZXJDYXNlKCksIHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGluaXRpYWxpemUoKTogdm9pZCB7XG4gICAgdGhpcy5jb2x1bW5zRGF0YSA9IHRoaXMuY29uZmlnLmNvbHVtbnM7XG4gICAgdGhpcy5jb2x1bW5zID0gWy4uLnRoaXMuY29sdW1uc0RhdGFdO1xuICAgIHRoaXMuY29uZmlndXJlU2VydmljZSgpO1xuICB9XG5cbiAgY29uZmlndXJlU2VydmljZSgpOiB2b2lkIHtcbiAgICBsZXQgbG9hZGluZ1NlcnZpY2U6IGFueSA9IE9udGltaXplRXhwb3J0U2VydmljZTtcbiAgICBpZiAodGhpcy5jb25maWcuc2VydmljZVR5cGUpIHtcbiAgICAgIGxvYWRpbmdTZXJ2aWNlID0gdGhpcy5jb25maWcuc2VydmljZVR5cGU7XG4gICAgfVxuICAgIHRoaXMuZXhwb3J0U2VydmljZSA9IHRoaXMuaW5qZWN0b3IuZ2V0KGxvYWRpbmdTZXJ2aWNlKTtcbiAgICBjb25zdCBzZXJ2aWNlQ2ZnID0gdGhpcy5leHBvcnRTZXJ2aWNlLmdldERlZmF1bHRTZXJ2aWNlQ29uZmlndXJhdGlvbih0aGlzLmNvbmZpZy5zZXJ2aWNlKTtcbiAgICB0aGlzLmV4cG9ydFNlcnZpY2UuY29uZmlndXJlU2VydmljZShzZXJ2aWNlQ2ZnKTtcbiAgfVxuICB1cGRhdGVDb2x1bW5zU29ydCgpIHtcbiAgICB0aGlzLmNvbHVtbnMuc29ydCgoYTogYW55LCBiOiBhbnkpID0+IHtcbiAgICAgIGxldCBpbmRleEEgPSB0aGlzLmNvbHVtbnNEYXRhLmZpbmRJbmRleCh4ID0+IHggPT09IGEpO1xuICAgICAgbGV0IGluZGV4QiA9IHRoaXMuY29sdW1uc0RhdGEuZmluZEluZGV4KHggPT4geCA9PT0gYik7XG4gICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xuICAgIH0pO1xuICB9XG4gIGRyb3BDb2x1bW5zKGV2ZW50OiBDZGtEcmFnRHJvcDxzdHJpbmdbXT4pIHtcbiAgICBtb3ZlSXRlbUluQXJyYXkodGhpcy5jb2x1bW5zRGF0YSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcbiAgICB0aGlzLnVwZGF0ZUNvbHVtbnNTb3J0KCk7XG4gIH1cbiAgY29sdW1uc0NvbXBhcmVGdW5jdGlvbihjbzE6IGFueSwgY28yOiBhbnkpIHtcbiAgICByZXR1cm4gY28xLmlkID09PSBjbzIuaWQ7XG4gIH1cblxuICBleHBvcnQoKTogdm9pZCB7XG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UodHJ1ZSk7XG4gICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydERhdGEodGhpcy5zZWxlY3RlZEV4cG9ydEZvcm1hdCwgdGhpcy5jb2x1bW5zLCAhdGhpcy52ZXJ0aWNhbCwgdGhpcy5maWxlbmFtZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgdGhpcy5zbmFja0JhclNlcnZpY2Uub3BlbignTUVTU0FHRVMuU1VDQ0VTU19FWFBPUlRfVEFCTEVfREFUQScsIHsgaWNvbjogJ2NoZWNrX2NpcmNsZScgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycik7XG4gICAgICB9XG4gICAgfVxuICAgICk7XG4gIH1cblxuICBpc0J1dHRvblZpc2libGUoYnRuOiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGNvbnN0IHVzZUV4cG9ydENvbmZpZ3VyYXRpb24zWCA9IHRoaXMuYXBwQ29uZmlnLnVzZUV4cG9ydENvbmZpZ3VyYXRpb24oKTtcbiAgICBsZXQgaXNWaXNpYmxlID0gdHJ1ZTtcbiAgICBpZiAodGhpcy52aXNpYmxlQnV0dG9ucykge1xuICAgICAgaXNWaXNpYmxlID0gdGhpcy52aXNpYmxlQnV0dG9ucy5pbmRleE9mKGJ0bikgIT09IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodXNlRXhwb3J0Q29uZmlndXJhdGlvbjNYKSB7XG4gICAgICAgIGlzVmlzaWJsZSA9IENvZGVzLlZJU0lCTEVfRVhQT1JUX0JVVFRPTlMzWC5pbmRleE9mKGJ0bikgIT09IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXNWaXNpYmxlID0gQ29kZXMuVklTSUJMRV9FWFBPUlRfQlVUVE9OUy5pbmRleE9mKGJ0bikgIT09IC0xXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGlzVmlzaWJsZTtcbiAgfVxuXG4gIGdldERlZmF1bHRTZWxlY3Rpb24oKSB7XG4gICAgY29uc3QgdXNlRXhwb3J0Q29uZmlndXJhdGlvbjNYID0gdGhpcy5hcHBDb25maWcudXNlRXhwb3J0Q29uZmlndXJhdGlvbigpO1xuXG4gICAgaWYgKHVzZUV4cG9ydENvbmZpZ3VyYXRpb24zWCkge1xuICAgICAgcmV0dXJuIENvZGVzLlZJU0lCTEVfRVhQT1JUX0JVVFRPTlMzWFswXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIENvZGVzLlZJU0lCTEVfRVhQT1JUX0JVVFRPTlNbMF07XG4gICAgfVxuXG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlRXJyb3IoZXJyKTogdm9pZCB7XG4gICAgaWYgKGVyciBpbnN0YW5jZW9mIEh0dHBFcnJvclJlc3BvbnNlKSB7XG4gICAgICB0aGlzLnNuYWNrQmFyU2VydmljZS5vcGVuKGVyci5tZXNzYWdlLCB7IGljb246ICdlcnJvcicgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc25hY2tCYXJTZXJ2aWNlLm9wZW4oJ01FU1NBR0VTLkVSUk9SX0VYUE9SVF9UQUJMRV9EQVRBJywgeyBpY29uOiAnZXJyb3InIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlTWF0QnV0dG9uVG9nZ2xlR3JvdXAoZXZlbnQ6IE1hdEJ1dHRvblRvZ2dsZUNoYW5nZSkge1xuICAgIGV2ZW50LnNvdXJjZS5idXR0b25Ub2dnbGVHcm91cC52YWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgIHRoaXMuc2VsZWN0ZWRFeHBvcnRGb3JtYXQgPSBldmVudC52YWx1ZTtcbiAgfVxufVxuIiwiPHNwYW4gbWF0LWRpYWxvZy10aXRsZT57eyAnVEFCTEUuQlVUVE9OUy5FWFBPUlQnIHwgb1RyYW5zbGF0ZSB9fTwvc3Bhbj5cbjxtYXQtZGlhbG9nLWNvbnRlbnQgY2xhc3M9XCJkaWFsb2dfY29udGVudFwiPlxuICA8ZGl2IG1hdC1zdWJoZWFkZXI+e3sgJ1RBQkxFLkRJQUxPRy5FWFBPUlQuREVTQ1JJUFRJT04nIHwgb1RyYW5zbGF0ZSB9fTwvZGl2PlxuICA8bWF0LWJ1dHRvbi10b2dnbGUtZ3JvdXAgY2xhc3M9XCJ0eXBlX3RvZ2dsZV9ncm91cFwiICNncm91cD1cIm1hdEJ1dHRvblRvZ2dsZUdyb3VwXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZEV4cG9ydEZvcm1hdFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGJ1dHRvbiBvZiBleHBvcnRUeXBlc1wiPlxuICAgICAgPG1hdC1idXR0b24tdG9nZ2xlIFt2YWx1ZV09XCJidXR0b24uZXhwb3J0VHlwZVwiICpuZ0lmPVwiaXNCdXR0b25WaXNpYmxlKGJ1dHRvbi5leHBvcnRUeXBlKVwiIGNsYXNzPVwiYnV0dG9uLmNsYXNzTmFtZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYnV0dG9uVGVtcGxhdGU7Y29udGV4dDp7YnV0dG9uOmJ1dHRvbn1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbWF0LWJ1dHRvbi10b2dnbGU+XG4gICAgPC9uZy1jb250YWluZXI+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21CdXR0b24gb2YgY29uZmlnLm9wdGlvbnNcIj5cbiAgICAgIDxtYXQtYnV0dG9uLXRvZ2dsZSBbdmFsdWVdPVwiY3VzdG9tQnV0dG9uLmV4cG9ydFR5cGVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1dHRvblRlbXBsYXRlO2NvbnRleHQ6e2J1dHRvbjpjdXN0b21CdXR0b259XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L21hdC1idXR0b24tdG9nZ2xlPlxuICAgIDwvbmctY29udGFpbmVyPlxuICA8L21hdC1idXR0b24tdG9nZ2xlLWdyb3VwPlxuICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cImFjb3JkaW9uXCIgW2V4cGFuZGVkXT1cImlzRXhwYW5kZWRcIj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgY29sbGFwc2VkSGVpZ2h0PVwiMzJweFwiIGV4cGFuZGVkSGVpZ2h0PVwiMzJweFwiPlxuICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAge3sgJ0VYUE9SVC5ESUFMT0cuQURWQU5DRURfT1BUSU9OUycgfCBvVHJhbnNsYXRlIH19XG4gICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgIDxkaXYgY2xhc3M9XCJpbnB1dHNfY29udGFpbmVyXCI+XG4gICAgICA8bWF0LWxhYmVsIGNsYXNzPVwiZGlhbG9nLXRpdGxlc1wiPnt7J0VYUE9SVC5ESUFMT0cuRklMRV9OQU1FJ3xvVHJhbnNsYXRlfX08L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtZm9ybS1maWVsZCBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgY2xhc3M9XCJmaWxlbmFtZV9pbnB1dFwiPlxuICAgICAgICA8aW5wdXQgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWxlbmFtZVwiIHBsYWNlaG9sZGVyPVwie3sgJ0VYUE9SVC5ESUFMT0cuRklMRV9OQU1FLlBMQUNFSE9MREVSJyB8IG9UcmFuc2xhdGUgfX1cIiAvPlxuICAgICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgICAgIDxzcGFuIGNsYXNzPVwiZGlhbG9nLXRpdGxlc1wiPnt7J0VYUE9SVC5ESUFMT0cuT1JJRU5UQVRJT04nfG9UcmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDxtYXQtcmFkaW8tZ3JvdXAgbmFtZT1cIk9yaWVudGF0aW9uXCIgWyhuZ01vZGVsKV09XCJ2ZXJ0aWNhbFwiIGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMnB4XCIgW2Rpc2FibGVkXT1cInNlbGVjdGVkRXhwb3J0Rm9ybWF0ICE9PSAncGRmJ1wiPlxuICAgICAgICA8bWF0LXJhZGlvLWJ1dHRvbiAqbmdGb3I9XCJsZXQgb3JpZW50YXRpb24gb2Ygb3JpZW50YXRpb25zXCIgbmFtZT1cIk9yaWVudGF0aW9uXCIgW3ZhbHVlXT1cIm9yaWVudGF0aW9uLnZhbHVlXCJcbiAgICAgICAgICBbY2hlY2tlZF09XCJ2ZXJ0aWNhbCA9PT0gb3JpZW50YXRpb24udmFsdWVcIj5cbiAgICAgICAgICB7eyBvcmllbnRhdGlvbi50ZXh0IHwgb1RyYW5zbGF0ZX19XG4gICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkaWFsb2ctdGl0bGVzXCI+e3snRVhQT1JULkRJQUxPRy5DT0xVTU5TJ3xvVHJhbnNsYXRlfX08L3NwYW4+XG4gICAgICA8bWF0LXNlbGVjdGlvbi1saXN0IGRlbnNlICNjb2x1bW5zTGlzdCBjZGtEcm9wTGlzdCBbY2RrRHJvcExpc3REYXRhXT1cImNvbHVtbnNEYXRhXCIgKGNka0Ryb3BMaXN0RHJvcHBlZCk9XCJkcm9wQ29sdW1ucygkZXZlbnQpXCIgY2xhc3M9XCJjb2x1bW5zXCJcbiAgICAgICAgWyhuZ01vZGVsKV09XCJjb2x1bW5zXCIgW2NvbXBhcmVXaXRoXT1cImNvbHVtbnNDb21wYXJlRnVuY3Rpb25cIj5cbiAgICAgICAgPG1hdC1saXN0LW9wdGlvbiBjaGVja2JveFBvc2l0aW9uPVwiYmVmb3JlXCIgKm5nRm9yPVwibGV0IGNvbHVtbiBvZiBjb2x1bW5zRGF0YVwiIFt2YWx1ZV09XCJjb2x1bW5cIiBjZGtEcmFnPlxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEFsaWduPVwic3BhY2UtYXJvdW5kIGNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gbWF0TGlzdEl0ZW1MaW5lIGZ4RmxleD5cbiAgICAgICAgICAgICAge3tjb2x1bW4gfCBvVHJhbnNsYXRlfX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBtYXQtbGlzdC1pY29uIGNsYXNzPVwiYnV0dG9uLWVkaXRcIj5kcmFnX2hhbmRsZTwvbWF0LWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWxpc3Qtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0aW9uLWxpc3Q+XG5cbiAgICA8L2Rpdj5cbiAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgZnhMYXlvdXRBbGlnbj1cImVuZCBjZW50ZXJcIj5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LXN0cm9rZWQtYnV0dG9uIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCIgY2xhc3M9XCJvLWJ1dHRvbi1kZWZhdWx0IGNhbmNlbFwiPnt7ICdDQU5DRUwnIHwgb1RyYW5zbGF0ZSB9fTwvYnV0dG9uPlxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtc3Ryb2tlZC1idXR0b24gY2xhc3M9XCJleHBvcnRfYnV0dG9uXCIgKGNsaWNrKT1cImV4cG9ydCgpXCI+XG4gICAgPG1hdC1pY29uPmlvc19zaGFyZTwvbWF0LWljb24+XG4gICAgPHNwYW4+e3sgJ0VYUE9SVC5ESUFMT0cuRVhQT1JUX0JVVFRPTicgfCBvVHJhbnNsYXRlIH19PC9zcGFuPlxuICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuXG48bmctdGVtcGxhdGUgI2J1dHRvblRlbXBsYXRlIGxldC1idXR0b249XCJidXR0b25cIj5cbiAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgby1idXR0b24taWNvblwiICpuZ0lmPVwiYnV0dG9uLmljb24hPT11bmRlZmluZWRcIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOm1pZGRsZVwiPnt7IGJ1dHRvbi5pY29uIH19PC9tYXQtaWNvbj5cbiAgPG1hdC1pY29uIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgby1idXR0b24taWNvblwiICpuZ0lmPVwiYnV0dG9uLnN2Z0ljb24hPT11bmRlZmluZWRcIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOm1pZGRsZVwiXG4gICAgW3N2Z0ljb25dPVwiYnV0dG9uLnN2Z0ljb25cIj48L21hdC1pY29uPlxuICB7eyBidXR0b24ub2xhYmVsIHwgb1RyYW5zbGF0ZSB9fVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|