@messaia/cdk 17.1.5 → 18.0.0-rc02
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/base/base.module.mjs +8 -8
- package/esm2022/lib/base/components/base.component.mjs +4 -4
- package/esm2022/lib/base/components/dynamic-table-config-dialog.comnponent.mjs +3 -3
- package/esm2022/lib/base/components/generic-form-base.component.mjs +4 -4
- package/esm2022/lib/base/components/generic-form.component.mjs +3 -3
- package/esm2022/lib/base/components/generic-list.component.mjs +4 -4
- package/esm2022/lib/base/components/generic-reactive-form.component.mjs +4 -4
- package/esm2022/lib/base/constants/common.mjs +2 -2
- package/esm2022/lib/base/helpers/auth-helper.mjs +1 -1
- package/esm2022/lib/base/interceptors/base.interceptor.mjs +4 -4
- package/esm2022/lib/base/interceptors/caching-interceptor.mjs +4 -4
- package/esm2022/lib/base/interceptors/loading.interceptor.mjs +4 -4
- package/esm2022/lib/base/services/file.service.mjs +3 -3
- package/esm2022/lib/base/services/loading-screen.service.mjs +3 -3
- package/esm2022/lib/base/services/print.service.mjs +3 -3
- package/esm2022/lib/chips/chips.module.mjs +4 -4
- package/esm2022/lib/chips/components/chips.component.mjs +4 -4
- package/esm2022/lib/chips/directives/autocomplete-option.directive.mjs +3 -3
- package/esm2022/lib/chips/directives/chip.directive.mjs +3 -3
- package/esm2022/lib/common/behaviors/control-value-accesor.mixin.mjs +1 -1
- package/esm2022/lib/common/behaviors/disabled.mixin.mjs +1 -1
- package/esm2022/lib/common/common.module.mjs +4 -4
- package/esm2022/lib/common/directives/delayed-hover.directive.mjs +4 -4
- package/esm2022/lib/common/directives/disable-control.directive.mjs +4 -4
- package/esm2022/lib/common/functions/utils.mjs +4 -4
- package/esm2022/lib/common/helpers/app-storage.mjs +4 -4
- package/esm2022/lib/common/helpers/dynamic-builder.mjs +4 -4
- package/esm2022/lib/common/helpers/dynamic-component-compiler.mjs +3 -3
- package/esm2022/lib/common/models/app-setting.mjs +3 -3
- package/esm2022/lib/common/pipes/data-source.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/enum.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/file-size.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/filter.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/first-letter.mjs +3 -3
- package/esm2022/lib/common/pipes/form-array.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/form-control.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/form-group.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/func.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/join.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/keys.mjs +4 -4
- package/esm2022/lib/common/pipes/month-name.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/nested-property.mjs +3 -3
- package/esm2022/lib/common/pipes/only-number.mjs +4 -4
- package/esm2022/lib/common/pipes/order.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/placeholder.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/property-join.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/safe-html.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/split.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/time.pipe.mjs +4 -4
- package/esm2022/lib/common/pipes/titlecase.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/truncate.pipe.mjs +3 -3
- package/esm2022/lib/common/pipes/values.mjs +3 -3
- package/esm2022/lib/common/services/base.service.mjs +3 -3
- package/esm2022/lib/common/services/enum.service.mjs +4 -4
- package/esm2022/lib/common/services/event-queue.service.mjs +3 -3
- package/esm2022/lib/dialogs/alert-dialog/alert-dialog.component.mjs +3 -3
- package/esm2022/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +3 -3
- package/esm2022/lib/dialogs/dialog.component.mjs +13 -13
- package/esm2022/lib/dialogs/dialogs.module.mjs +4 -4
- package/esm2022/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +3 -3
- package/esm2022/lib/dialogs/services/dialog.service.mjs +4 -4
- package/esm2022/lib/file/file-input.component.mjs +4 -4
- package/esm2022/lib/file/file.module.mjs +4 -4
- package/esm2022/lib/form-validators/algorithm/luhn-algorithm.mjs +1 -1
- package/esm2022/lib/form-validators/core/default-container.mjs +10 -10
- package/esm2022/lib/form-validators/directives/base-directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/control-host.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/html-control-template.directive.mjs +3 -3
- package/esm2022/lib/form-validators/directives/rx-form.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/async-validation.directive.mjs +3 -3
- package/esm2022/lib/form-validators/directives/template-validations/base-validator.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/control-expression-process.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/file-control.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +4 -4
- package/esm2022/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +4 -4
- package/esm2022/lib/form-validators/domain/disable-provider.mjs +1 -1
- package/esm2022/lib/form-validators/domain/element-processor/decimal.provider.mjs +4 -4
- package/esm2022/lib/form-validators/domain/element-processor/mask.provider.mjs +1 -1
- package/esm2022/lib/form-validators/domain/form-data.mjs +1 -1
- package/esm2022/lib/form-validators/models/form-builder-configuration.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/allOf.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/and.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/async/base.async.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/choice.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/compare.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/compose.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/contains.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/cusip.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/custom.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/different.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/even.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/extension.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/factor.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/file.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/grid.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/iban.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/image.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/ip.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/json.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/latLong.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/mask.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/minLength.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/not.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/numeric.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/odd.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/or.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/password.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/pattern.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/port.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/range.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/required.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/rule.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/time.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/unique.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +1 -1
- package/esm2022/lib/form-validators/reactive-form-validators/url.validator.mjs +1 -1
- package/esm2022/lib/form-validators/services/base-form-builder.mjs +1 -1
- package/esm2022/lib/form-validators/services/entity.service.mjs +1 -1
- package/esm2022/lib/form-validators/services/form-control.mjs +1 -1
- package/esm2022/lib/form-validators/services/reactive-form.module.mjs +8 -8
- package/esm2022/lib/form-validators/services/rx-form-array.mjs +1 -1
- package/esm2022/lib/form-validators/services/rx-form-builder.mjs +4 -4
- package/esm2022/lib/form-validators/services/rx-form-group.mjs +1 -1
- package/esm2022/lib/form-validators/services/typed-form-builder.mjs +3 -3
- package/esm2022/lib/form-validators/util/app-util.mjs +1 -1
- package/esm2022/lib/form-validators/util/check-length.mjs +1 -1
- package/esm2022/lib/form-validators/util/config-provider.mjs +1 -1
- package/esm2022/lib/form-validators/util/date-checker.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/date-provider.mjs +1 -1
- package/esm2022/lib/form-validators/util/form-provider.mjs +1 -1
- package/esm2022/lib/form-validators/util/instance-provider.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/ip-checker.mjs +1 -1
- package/esm2022/lib/form-validators/util/linq.mjs +1 -1
- package/esm2022/lib/form-validators/util/object-maker.mjs +1 -1
- package/esm2022/lib/form-validators/util/reactive-form-config.mjs +1 -1
- package/esm2022/lib/form-validators/util/regex-validator.mjs +1 -1
- package/esm2022/lib/form-validators/util/relational-checker.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/reset-form.mjs +1 -1
- package/esm2022/lib/form-validators/util/sanitizers.mjs +1 -1
- package/esm2022/lib/form-validators/util/time-checker.function.mjs +1 -1
- package/esm2022/lib/form-validators/util/validator-value-checker.mjs +1 -1
- package/esm2022/lib/form-validators/validators-extension/base-validator.function.mjs +1 -1
- package/esm2022/lib/form-validators/validators-function/alpha-validation.function.mjs +1 -1
- package/esm2022/lib/form-validators/validators-function/regex-validation.function.mjs +1 -1
- package/esm2022/lib/forms/components/datepicker/datepicker-header.component.mjs +3 -3
- package/esm2022/lib/forms/components/generic-form/generic-form.component.mjs +16 -16
- package/esm2022/lib/forms/directives/mat-form-field-editor.directive.mjs +4 -4
- package/esm2022/lib/forms/directives/mat-form-field-readonly.directive.mjs +4 -4
- package/esm2022/lib/forms/directives/nested-property-ng-model.directive.mjs +4 -4
- package/esm2022/lib/forms/directives/vd-generic-form-custom-field.directive.mjs +3 -3
- package/esm2022/lib/forms/forms.module.mjs +4 -4
- package/esm2022/lib/forms/functions/decorators.mjs +1 -1
- package/esm2022/lib/forms/functions/functions.mjs +1 -1
- package/esm2022/lib/forms/helpers/abstract-mat-form-field.mjs +4 -4
- package/esm2022/lib/forms/helpers/abstract-select-form-field.component.mjs +4 -4
- package/esm2022/lib/forms/helpers/value-accessor-base.mjs +3 -3
- package/esm2022/lib/forms/pipes/group-filter.pipe.mjs +4 -4
- package/esm2022/lib/forms/validators/empty-string-reset.directive.mjs +4 -4
- package/esm2022/lib/forms/validators/equal-validator.directive.mjs +4 -4
- package/esm2022/lib/forms/validators/native-element-injector.directive.mjs +4 -4
- package/esm2022/lib/forms/validators/unique-validator-directive.mjs +4 -4
- package/esm2022/lib/http/http.module.mjs +7 -11
- package/esm2022/lib/http/services/generic.service.mjs +1 -1
- package/esm2022/lib/layout/dynamic-menu/dynamic-menu.component.mjs +3 -3
- package/esm2022/lib/layout/layout-card-over/layout-card-over.component.mjs +3 -3
- package/esm2022/lib/layout/layout-compact/layout-compact.component.mjs +4 -4
- package/esm2022/lib/layout/layout-footer/layout-footer.component.mjs +4 -4
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.component.mjs +4 -4
- package/esm2022/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +9 -9
- package/esm2022/lib/layout/layout-nav/layout-nav.component.mjs +5 -5
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.component.mjs +4 -4
- package/esm2022/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +9 -9
- package/esm2022/lib/layout/layout-toggle.class.mjs +4 -4
- package/esm2022/lib/layout/layout.component.mjs +4 -4
- package/esm2022/lib/layout/layout.directives.mjs +9 -9
- package/esm2022/lib/layout/layout.module.mjs +4 -4
- package/esm2022/lib/layout/list-toolbar/list-toolbar.component.mjs +3 -3
- package/esm2022/lib/layout/navigation-drawer/navigation-drawer.component.mjs +10 -10
- package/esm2022/lib/list/components/list.component.mjs +3 -3
- package/esm2022/lib/list/directives/vd-list-option.directive.mjs +3 -3
- package/esm2022/lib/list/list.module.mjs +4 -4
- package/esm2022/lib/media/directives/media-toggle.directive.mjs +4 -4
- package/esm2022/lib/media/media.module.mjs +4 -4
- package/esm2022/lib/media/services/media.service.mjs +4 -4
- package/esm2022/lib/menu/components/menu.component.mjs +4 -4
- package/esm2022/lib/menu/menu.module.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-form-includes.resolve.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-item-form-includes.resolve.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-list-projection.resolve.mjs +4 -4
- package/esm2022/lib/menu/resolvers/menu-settings.resolve.mjs +3 -3
- package/esm2022/lib/menu/services/menu-items.service.mjs +3 -3
- package/esm2022/lib/menu/services/menu.resolve.mjs +7 -7
- package/esm2022/lib/menu/services/menu.service.mjs +3 -3
- package/esm2022/lib/search/search.module.mjs +4 -4
- package/esm2022/lib/select/components/select.component.mjs +4 -4
- package/esm2022/lib/select/directives/vd-select-option.directive.mjs +3 -3
- package/esm2022/lib/select/directives/vd-select-trigger.directive.mjs +3 -3
- package/esm2022/lib/select/select.module.mjs +4 -4
- package/esm2022/lib/table/components/dynamic-table/dynamic-table.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-clear.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-date.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-input.component.mjs +4 -4
- package/esm2022/lib/table/components/filter-select.component.mjs +7 -7
- package/esm2022/lib/table/directives/data-source-filter.directive.mjs +4 -4
- package/esm2022/lib/table/directives/vd-table-field.directive.mjs +3 -3
- package/esm2022/lib/table/functions/decorators.mjs +1 -1
- package/esm2022/lib/table/functions/functions.mjs +1 -1
- package/esm2022/lib/table/paginator-intl.mjs +4 -4
- package/esm2022/lib/table/table.data-source.mjs +1 -1
- package/esm2022/lib/table/table.module.mjs +4 -4
- package/esm2022/lib/table/table.static-data-source.mjs +1 -1
- package/fesm2022/messaia-cdk.mjs +486 -490
- package/fesm2022/messaia-cdk.mjs.map +1 -1
- package/lib/common/styles/_theme-functions.scss +0 -23
- package/lib/common/styles/colors/_colors-dark.scss +1350 -345
- package/lib/common/styles/colors/_colors-light.scss +3157 -829
- package/lib/common/styles/core/_button.scss +35 -29
- package/lib/common/styles/{_common-theme.scss → m2/_common-theme.scss} +6 -6
- package/lib/common/styles/m2/_theme-functions.scss +21 -0
- package/lib/common/styles/m3/_common-theme.scss +47 -0
- package/lib/common/styles/m3/_theme-functions.scss +21 -0
- package/lib/common/styles/platform.scss +1 -1
- package/lib/common/theming/_all-theme.scss +1 -1
- package/lib/common/theming/_m2-all-theme.scss +27 -0
- package/lib/http/http.module.d.ts +1 -2
- package/lib/layout/{_layout-theme.scss → _m2-layout-theme.scss} +11 -10
- package/package.json +3 -3
|
@@ -388,10 +388,10 @@ export class AbstractSelectFormField extends AbstractMatFormField {
|
|
|
388
388
|
log(message, ...optionalParams) {
|
|
389
389
|
console.log(message, optionalParams);
|
|
390
390
|
}
|
|
391
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
392
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
391
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AbstractSelectFormField, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive });
|
|
392
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: AbstractSelectFormField, inputs: { enum: "enum", textPrefix: "textPrefix", optionTextProperty: "optionTextProperty", optionValueProperty: "optionValueProperty", matIconKey: "matIconKey", svgIconKey: "svgIconKey", fontSet: "fontSet", prefix: "prefix", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", cache: "cache", selectFirst: "selectFirst", sortBy: "sortBy", mapper: "mapper", defaultOption: "defaultOption", multiple: "multiple", sorted: "sorted", endpoint: "endpoint", params: "params", projection: "projection", loadData: "loadData", enumFilter: "enumFilter", disabled: "disabled", compareWith: "compareWith", searchField: "searchField" }, outputs: { onValueChange: "change", onItemChange: "itemChange", onSelected: "selected", onItemSelected: "itemSelected", onLaunch: "launch" }, usesInheritance: true, ngImport: i0 });
|
|
393
393
|
}
|
|
394
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: AbstractSelectFormField, decorators: [{
|
|
395
395
|
type: Directive
|
|
396
396
|
}], ctorParameters: () => [{ type: undefined }, { type: i0.Injector }, { type: i1.NgControl, decorators: [{
|
|
397
397
|
type: Optional
|
|
@@ -469,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
469
469
|
}], searchField: [{
|
|
470
470
|
type: Input
|
|
471
471
|
}] } });
|
|
472
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvaGVscGVycy9hYnN0cmFjdC1zZWxlY3QtZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUVuRixNQUFNLE9BQWdCLHVCQUEyQixTQUFRLG9CQUF1QjtJQWlVcEU7SUEvVFg7O09BRUc7SUFDSyxlQUFlLEdBQTJCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRS9FOztPQUVHO0lBQ0ssV0FBVyxHQUEyQixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMsQ0FBQztJQUUzRTs7T0FFRztJQUNPLEtBQUssQ0FBYztJQUU3Qjs7T0FFRztJQUNPLGNBQWMsR0FBWSxJQUFJLENBQUM7SUFFekM7O09BRUc7SUFDTyxTQUFTLEdBQVksS0FBSyxDQUFDO0lBRXJDOztPQUVHO0lBQ08sT0FBTyxHQUFZLElBQUksQ0FBQztJQUVsQzs7T0FFRztJQUNPLFNBQVMsQ0FBcUI7SUFFeEM7O09BRUc7SUFDTyxPQUFPLEdBQVEsRUFBRSxDQUFDO0lBRTVCOztPQUVHO0lBQ08sV0FBVyxDQUFxQjtJQUUxQzs7T0FFRztJQUNPLFNBQVMsR0FBWSxJQUFJLENBQUM7SUFFcEM7O09BRUc7SUFDTyxXQUFXLENBQVk7SUFFakM7O09BRUc7SUFDSyxZQUFZLENBQWlDO0lBRXJEOztPQUVHO0lBQ0ksa0JBQWtCLEdBQUcsQ0FBQyxFQUFPLEVBQUUsRUFBTyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0lBRTVEOztPQUVHO0lBRUksSUFBSSxDQUFNO0lBRWpCOztPQUVHO0lBRUksVUFBVSxHQUFXLEVBQUUsQ0FBQztJQUUvQjs7O09BR0c7SUFFSSxrQkFBa0IsR0FBVyxNQUFNLENBQUM7SUFFM0M7OztPQUdHO0lBRUksbUJBQW1CLEdBQVcsSUFBSSxDQUFDO0lBRTFDOztPQUVHO0lBRUksVUFBVSxDQUFVO0lBRTNCOztPQUVHO0lBRUksVUFBVSxDQUFVO0lBRTNCOztPQUVHO0lBRUksT0FBTyxHQUFZLDJCQUEyQixDQUFDO0lBRXREOztPQUVHO0lBRUksTUFBTSxHQUFRLEVBQUUsQ0FBQztJQUV4Qjs7T0FFRztJQUVJLE9BQU8sQ0FBTTtJQUVwQjs7T0FFRztJQUVJLGVBQWUsQ0FBTTtJQUU1Qjs7T0FFRztJQUVJLFVBQVUsR0FBWSxJQUFJLENBQUM7SUFFbEM7O09BRUc7SUFFSSxLQUFLLEdBQVksSUFBSSxDQUFDO0lBRTdCOztPQUVHO0lBRUksV0FBVyxHQUFZLEtBQUssQ0FBQztJQUVwQzs7T0FFRztJQUVJLE1BQU0sQ0FBVTtJQUV2Qjs7T0FFRztJQUVJLE1BQU0sQ0FBcUI7SUFFbEM7O09BRUc7SUFDSSxVQUFVLENBQTRCO0lBRTdDOztPQUVHO0lBQ0gsSUFDVyxhQUFhLEtBQUssT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQztJQUMxRCxJQUFXLGFBQWEsQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWpJOztPQUVHO0lBQ0gsSUFDVyxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNoRCxJQUFXLFFBQVEsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXZHOztPQUVHO0lBQ0gsSUFDVyxNQUFNLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUM1QyxJQUFXLE1BQU0sQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sR0FBRyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRXJHOztPQUVHO0lBQ0gsSUFDVyxRQUFRLEtBQW9DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDL0UsSUFBVyxRQUFRLENBQUMsUUFBMkIsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFdkc7O09BRUc7SUFDSCxJQUNXLE1BQU0sS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQzVDLElBQVcsTUFBTSxDQUFDLE1BQVc7UUFDNUIsSUFBSSxNQUFNLEVBQUU7WUFDWCwwQkFBMEI7WUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDbkMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLFdBQVcsRUFBRTtvQkFDM0UsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7aUJBQ25CO1lBQ0YsQ0FBQyxDQUFDLENBQUM7WUFFSCx5Q0FBeUM7WUFDekMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxFQUFFO2dCQUM1RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQU0sQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3ZCO1NBQ0Q7SUFDRixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLFVBQVUsS0FBd0IsT0FBTyxJQUFJLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDN0UsSUFBVyxVQUFVLENBQUMsVUFBeUMsSUFBSSxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFM0g7O09BRUc7SUFDSCxJQUNXLFFBQVEsS0FBSyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQ2hELElBQVcsUUFBUSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsU0FBUyxHQUFHLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUUzRzs7T0FFRztJQUNILElBQ1csVUFBVSxLQUEyQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQzFFLElBQVcsVUFBVSxDQUFDLFVBQW9CLElBQUksSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRWxHOztPQUVHO0lBQ0gsSUFDVyxRQUFRLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLElBQVcsUUFBUSxDQUFDLFFBQWE7UUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqRCxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDckIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztTQUN6QjtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsWUFBWTtRQUN0QixJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDbEIsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO2dCQUNyQixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBUyxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2FBQ3pHO1lBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVHO1FBRUQsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQ1csV0FBVyxLQUFrRCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ25HLElBQVcsV0FBVyxDQUFDLEVBQStDLElBQUksSUFBSSxDQUFDLFlBQVksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRW5HOztPQUVHO0lBRUksYUFBYSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWxFOztPQUVHO0lBRUksWUFBWSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWpFOztPQUVHO0lBRUksVUFBVSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRS9EOztPQUVHO0lBRUksY0FBYyxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRW5FOztPQUVHO0lBRUksUUFBUSxHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO0lBRTdEOztPQUVHO0lBQ00sV0FBVyxDQUFzQjtJQUUxQzs7Ozs7Ozs7Ozs7T0FXRztJQUNILFlBQ0MsV0FBbUIsRUFDVCxRQUFrQixFQUNSLFNBQW9CLEVBQzVCLFVBQWtCLEVBQ2xCLGVBQW1DLEVBQy9DLHdCQUEyQyxFQUMzQyxZQUEwQixFQUMxQixVQUFzQixFQUN0QixpQkFBb0M7UUFFcEMsS0FBSyxDQUFDLFdBQVcsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSx3QkFBd0IsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFUeEgsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQVU1QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNmLElBQUksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUN0QztJQUNGLENBQUM7SUFFRDs7O09BR0c7SUFDSCxRQUFRO1FBQ1AsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRXBDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNkLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sR0FBRyxXQUFXLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRWxGLHdCQUF3QjtZQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDckMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM1RTtZQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDcEM7U0FDRDthQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO2dCQUNyRixJQUFJLE9BQU8sR0FBRyxJQUFJLFdBQVcsRUFBRSxDQUFDO2dCQUNoQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7b0JBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLENBQUM7aUJBQ25DO2dCQUVELDBCQUEwQjtnQkFDMUIsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFFbkQsNEJBQTRCO2dCQUM1QixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7b0JBQ3BCLE1BQU0sQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO2lCQUNqRztnQkFFRCxpQkFBaUI7Z0JBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFO29CQUN4RCxNQUFNLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDO2lCQUN2RDtnQkFFRCxrQkFBa0I7Z0JBQ2xCLElBQUksUUFBUSxHQUFHLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFVLElBQUksQ0FBQyxRQUFTLENBQUM7Z0JBQ25HLElBQUksSUFBSSxDQUFDLEtBQUssSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtvQkFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7eUJBQzVELElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3lCQUN2RCxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUU7d0JBQ2QsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQzt3QkFFeEMsSUFBSSxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUU7NEJBQ2hFLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQzt5QkFDdkQ7d0JBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTs0QkFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt5QkFDcEM7d0JBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBTSxDQUFDLENBQUM7d0JBQzlCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztvQkFDeEMsQ0FBQyxDQUFDLENBQUM7aUJBQ0o7WUFDRixDQUFDLENBQUMsQ0FBQztTQUNIO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxLQUFVO1FBQ3BCLDZDQUE2QztRQUM3QyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTVCLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDaEMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNwQztRQUVELElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZLENBQUMsTUFBVztRQUM5QixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxLQUFVO1FBQ25DLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRzthQUFNO1lBQ04sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ25HO0lBQ0YsQ0FBQztJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLEtBQVU7UUFDakMsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdHO2FBQU07WUFDTixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakc7SUFDRixDQUFDO0lBRUQ7OztPQUdHO0lBQ0ksWUFBWSxDQUFDLE1BQWE7UUFDaEMsSUFBSSxVQUFVLEdBQVksTUFBTSxFQUFFLE1BQTJCLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUMzRSxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDckIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVksQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNsSTthQUFNO1lBQ04sSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hJO0lBQ0YsQ0FBQztJQUVEOztPQUVHO0lBQ08sZUFBZTtRQUN4QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzNGLENBQUM7SUFFRDs7T0FFRztJQUNPLFdBQVc7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLEdBQUcsQ0FBQyxPQUFZLEVBQUUsR0FBRyxjQUFxQjtRQUNoRCxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQztJQUN0QyxDQUFDOzBIQWplb0IsdUJBQXVCOzhHQUF2Qix1QkFBdUI7OzJGQUF2Qix1QkFBdUI7a0JBRDVDLFNBQVM7OzBCQW1VUCxRQUFROzswQkFBSSxJQUFJOzswQkFDaEIsUUFBUTs7MEJBQ1IsUUFBUTs2SkE3UEgsSUFBSTtzQkFEVixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBUUMsa0JBQWtCO3NCQUR4QixLQUFLO2dCQVFDLG1CQUFtQjtzQkFEekIsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsT0FBTztzQkFEYixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPQyxPQUFPO3NCQURiLEtBQUs7Z0JBT0MsZUFBZTtzQkFEckIsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLEtBQUs7c0JBRFgsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLE1BQU07c0JBRFosS0FBSztnQkFPQyxNQUFNO3NCQURaLEtBQUs7Z0JBWUssYUFBYTtzQkFEdkIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQVFLLE1BQU07c0JBRGhCLEtBQUs7Z0JBUUssUUFBUTtzQkFEbEIsS0FBSztnQkFRSyxNQUFNO3NCQURoQixLQUFLO2dCQXVCSyxVQUFVO3NCQURwQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBUUssVUFBVTtzQkFEcEIsS0FBSztnQkFRSyxRQUFRO3NCQURsQixLQUFLO2dCQStCSyxXQUFXO3NCQURyQixLQUFLO2dCQVFDLGFBQWE7c0JBRG5CLE1BQU07dUJBQUMsUUFBUTtnQkFPVCxZQUFZO3NCQURsQixNQUFNO3VCQUFDLFlBQVk7Z0JBT2IsVUFBVTtzQkFEaEIsTUFBTTt1QkFBQyxVQUFVO2dCQU9YLGNBQWM7c0JBRHBCLE1BQU07dUJBQUMsY0FBYztnQkFPZixRQUFRO3NCQURkLE1BQU07dUJBQUMsUUFBUTtnQkFNUCxXQUFXO3NCQUFuQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xyXG5pbXBvcnQgeyBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwSGVhZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYsIERpcmVjdGl2ZSwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbmplY3RvciwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXBEaXJlY3RpdmUsIE5nQ29udHJvbCwgTmdGb3JtIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBFcnJvclN0YXRlTWF0Y2hlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIG1hcCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBJY29uIH0gZnJvbSAnLi4vLi4vY29tbW9uL21vZGVscy9pY29uJztcclxuaW1wb3J0IHsgRW51bVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvZW51bS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RNYXRGb3JtRmllbGQgfSBmcm9tICcuLi8uLi9mb3Jtcy9oZWxwZXJzL2Fic3RyYWN0LW1hdC1mb3JtLWZpZWxkJztcclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFNlbGVjdEZvcm1GaWVsZDxUPiBleHRlbmRzIEFic3RyYWN0TWF0Rm9ybUZpZWxkPFQ+IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcblx0LyoqXHJcblx0ICogQSBCZWhhdmlvclN1YmplY3QgdGhhdCB0cmFja3MgY2hhbmdlcyB0byB0aGUgZW5kcG9pbnQgZGF0YS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbmRwb2ludENoYW5nZTogQmVoYXZpb3JTdWJqZWN0PGFueVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoPGFueT5bXSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgQmVoYXZpb3JTdWJqZWN0IHRoYXQgdHJhY2tzIGNoYW5nZXMgdG8gdGhlIGVudW0gZGF0YS5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbnVtQ2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCg8YW55PltdKTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIEhUVFAgY2xpZW50IHNlcnZpY2UgdXNlZCB0byBmZXRjaCBkYXRhIGZyb20gYW4gQVBJLlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfaHR0cD86IEh0dHBDbGllbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGRlZmF1bHQgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZCBieSBkZWZhdWx0LlxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBfZGVmYXVsdE9wdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9uIGlzIGVuYWJsZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9tdWx0aXBsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBvcHRpb25zIHNob3VsZCBiZSBzb3J0ZWQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9zb3J0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgQVBJIGVuZHBvaW50IG9yIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBlbmRwb2ludCBVUkwuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9lbmRwb2ludD86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG5cclxuXHQvKipcclxuXHQgKiBQYXJhbWV0ZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgQVBJIHJlcXVlc3QuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wYXJhbXM6IGFueSA9IHt9O1xyXG5cclxuXHQvKipcclxuXHQgKiBQcm9qZWN0aW9uIGZpZWxkcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgQVBJIHJlcXVlc3QuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9wcm9qZWN0aW9uPzogc3RyaW5nIHwgc3RyaW5nW107XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdG8gbG9hZCBkYXRhIGF1dG9tYXRpY2FsbHkuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9sb2FkRGF0YTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBlbnVtIGRhdGEuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9lbnVtRmlsdGVyPzogRnVuY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gY29tcGFyZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy5cclxuXHQgKi9cclxuXHRwcml2YXRlIF9jb21wYXJlV2l0aD86IChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIGNvbXBhcmUgb3B0aW9uIHZhbHVlcyB3aXRoIHRoZSBzZWxlY3RlZCB2YWx1ZXMuXHJcblx0ICovXHJcblx0cHVibGljIGRlZmF1bHRDb21wYXJlV2l0aCA9IChvMTogYW55LCBvMjogYW55KSA9PiBvMSA9PT0gbzI7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBlbnVtZXJhdGlvbiBkYXRhIG9yIGVuZHBvaW50IGZvciB0aGUgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBlbnVtOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbmFsIHByZWZpeCB0ZXh0IHRvIGRpc3BsYXkuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgdGV4dFByZWZpeDogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBwcm9wZXJ0eSBuYW1lIGluIHRoZSBvcHRpb24gb2JqZWN0IGZvciB0aGUgdGV4dCB0byBkaXNwbGF5LlxyXG5cdCAqIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggcHJvcGVydHkgb2YgdGhlIG9wdGlvbiBvYmplY3QgdG8gc2hvdyBhcyB0aGUgb3B0aW9uJ3MgdGV4dC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBvcHRpb25UZXh0UHJvcGVydHk6IHN0cmluZyA9ICduYW1lJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByb3BlcnR5IG5hbWUgaW4gdGhlIG9wdGlvbiBvYmplY3QgZm9yIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9ucy5cclxuXHQgKiBUaGlzIGlzIHVzZWQgdG8gaWRlbnRpZnkgdGhlIHVuaXF1ZSB2YWx1ZSBmb3IgZWFjaCBvcHRpb24uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgb3B0aW9uVmFsdWVQcm9wZXJ0eTogc3RyaW5nID0gJ2lkJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGtleSBmb3IgdGhlIE1hdGVyaWFsIGljb24gdG8gZGlzcGxheS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBtYXRJY29uS2V5Pzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5IGZvciB0aGUgU1ZHIGljb24gdG8gZGlzcGxheS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzdmdJY29uS2V5Pzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBGb250IHNldCBuYW1lIGZvciBmb250IGljb24uXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZm9udFNldD86IHN0cmluZyA9ICdtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkJztcclxuXHJcblx0LyoqXHJcblx0ICogT3B0aW9uYWwgcHJlZml4IHRvIGRpc3BsYXkgYmVmb3JlIHRoZSBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHByZWZpeDogYW55ID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG9wdGlvbnM6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgZmlsdGVyZWQgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgb3B0aW9ucyBjYW4gYmUgZmlsdGVyZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdG8gY2FjaGUgdGhlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2FjaGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRvIHNlbGVjdCB0aGUgZmlyc3Qgb3B0aW9uIGJ5IGRlZmF1bHQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc2VsZWN0Rmlyc3Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGZpZWxkIGJ5IHdoaWNoIHRvIHNvcnQgdGhlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgc29ydEJ5Pzogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIG1hcCB0aGUgb3B0aW9ucyBiZWZvcmUgZGlzcGxheWluZy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBtYXBwZXI/OiAoeDogYW55W10pID0+IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byByZXR1cm4gdGhlIGljb24gZm9yIGEgZ2l2ZW4gb3B0aW9uLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBvcHRpb25JY29uPzogKHg6IGFueSkgPT4gSWNvbjxULCBhbnk+O1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBkZWZhdWx0IG9wdGlvbiBzaG91bGQgYmUgc2VsZWN0ZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGRlZmF1bHRPcHRpb24oKSB7IHJldHVybiB0aGlzLl9kZWZhdWx0T3B0aW9uOyB9XHJcblx0cHVibGljIHNldCBkZWZhdWx0T3B0aW9uKGRlZmF1bHRPcHRpb24pIHsgdGhpcy5fZGVmYXVsdE9wdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkZWZhdWx0T3B0aW9uKTsgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9uIGlzIGVuYWJsZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IG11bHRpcGxlKCkgeyByZXR1cm4gdGhpcy5fbXVsdGlwbGU7IH1cclxuXHRwdWJsaWMgc2V0IG11bHRpcGxlKG11bHRpKSB7IHRoaXMuX211bHRpcGxlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpKTsgdGhpcy5zdGF0ZUNoYW5nZXMubmV4dCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIG9wdGlvbnMgc2hvdWxkIGJlIHNvcnRlZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgc29ydGVkKCkgeyByZXR1cm4gdGhpcy5fc29ydGVkOyB9XHJcblx0cHVibGljIHNldCBzb3J0ZWQoc29ydGVkKSB7IHRoaXMuX3NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShzb3J0ZWQpOyB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogVGhlIEFQSSBlbmRwb2ludCBvciBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgZW5kcG9pbnQgVVJMLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBlbmRwb2ludCgpOiBzdHJpbmcgfCBGdW5jdGlvbiB8IHVuZGVmaW5lZCB7IHJldHVybiB0aGlzLl9lbmRwb2ludDsgfVxyXG5cdHB1YmxpYyBzZXQgZW5kcG9pbnQoZW5kcG9pbnQ6IHN0cmluZyB8IEZ1bmN0aW9uKSB7IHRoaXMuX2VuZHBvaW50ID0gZW5kcG9pbnQ7IHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogUGFyYW1ldGVycyB0byBiZSBzZW50IHdpdGggdGhlIEFQSSByZXF1ZXN0LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBwYXJhbXMoKSB7IHJldHVybiB0aGlzLl9wYXJhbXM7IH1cclxuXHRwdWJsaWMgc2V0IHBhcmFtcyhwYXJhbXM6IGFueSkge1xyXG5cdFx0aWYgKHBhcmFtcykge1xyXG5cdFx0XHQvLyBSZW1vdmUgZW1wdHkgcGFyYW1ldGVyc1xyXG5cdFx0XHRPYmplY3Qua2V5cyhwYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRcdGlmIChwYXJhbXNba2V5XSA9PSBudWxsIHx8IHBhcmFtc1trZXldID09ICcnIHx8IHBhcmFtc1trZXldID09ICd1bmRlZmluZWQnKSB7XHJcblx0XHRcdFx0XHRkZWxldGUgcGFyYW1zW2tleV07XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHJcblx0XHRcdC8vIFVwZGF0ZSBwYXJhbWV0ZXJzIGlmIHRoZXkgaGF2ZSBjaGFuZ2VkXHJcblx0XHRcdGlmIChKU09OLnN0cmluZ2lmeSh0aGlzLl9wYXJhbXMpICE9PSBKU09OLnN0cmluZ2lmeShwYXJhbXMpKSB7XHJcblx0XHRcdFx0dGhpcy5fcGFyYW1zID0gcGFyYW1zO1xyXG5cdFx0XHRcdHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb2plY3Rpb24gZmllbGRzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBBUEkgcmVxdWVzdC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgcHJvamVjdGlvbigpOiBzdHJpbmcgfCBzdHJpbmdbXSB7IHJldHVybiB0aGlzLl9wcm9qZWN0aW9uID8/ICcnOyB9XHJcblx0cHVibGljIHNldCBwcm9qZWN0aW9uKHByb2plY3Rpb246IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkKSB7IHRoaXMuX3Byb2plY3Rpb24gPSBwcm9qZWN0aW9uOyB0aGlzLmVuZHBvaW50Q2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdG8gbG9hZCBkYXRhIGF1dG9tYXRpY2FsbHkuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGxvYWREYXRhKCkgeyByZXR1cm4gdGhpcy5fbG9hZERhdGE7IH1cclxuXHRwdWJsaWMgc2V0IGxvYWREYXRhKGxvYWREYXRhKSB7IHRoaXMuX2xvYWREYXRhID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGxvYWREYXRhKTsgdGhpcy5lbmRwb2ludENoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGZpbHRlciBmdW5jdGlvbiB0byBhcHBseSB0byB0aGUgZW51bSBkYXRhLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBlbnVtRmlsdGVyKCk6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2VudW1GaWx0ZXI7IH1cclxuXHRwdWJsaWMgc2V0IGVudW1GaWx0ZXIoZW51bUZpbHRlcjogRnVuY3Rpb24pIHsgdGhpcy5fZW51bUZpbHRlciA9IGVudW1GaWx0ZXI7IHRoaXMuZW51bUNoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGRpc2FibGVkLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBkaXNhYmxlZCgpIHsgcmV0dXJuIHRoaXMuX3JlYWRvbmx5IHx8IHN1cGVyLmRpc2FibGVkOyB9XHJcblx0cHVibGljIHNldCBkaXNhYmxlZChkaXNhYmxlZDogYW55KSB7XHJcblx0XHR0aGlzLl9kaXNhYmxlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShkaXNhYmxlZCk7XHJcblx0XHRpZiAodGhpcy5mb2N1c2VkKSB7XHJcblx0XHRcdHRoaXMuZm9jdXNlZCA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdmFsdWUocykuXHJcblx0ICovXHJcblx0cHVibGljIGdldCBjdXJyZW50VmFsdWUoKTogYW55IHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdGlmICh0aGlzLmNvbXBhcmVXaXRoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+ICg8YW55W10+KHRoaXMuX3ZhbHVlIHx8IFtdKSkuc29tZSh5ID0+IHRoaXMuY29tcGFyZVdpdGghKHgsIHkpKSk7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigoeDogYW55KSA9PiAoPGFueVtdPih0aGlzLl92YWx1ZSB8fCBbXSkpLmluY2x1ZGVzKHhbdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB0aGlzLm9wdGlvbnM/LmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMub3B0aW9uVmFsdWVQcm9wZXJ0eV0gPT0gdGhpcy5fdmFsdWUpWzBdO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byBjb21wYXJlIHRoZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy4gVGhlIGZpcnN0IGFyZ3VtZW50XHJcblx0ICogaXMgYSB2YWx1ZSBmcm9tIGFuIG9wdGlvbi4gVGhlIHNlY29uZCBpcyBhIHZhbHVlIGZyb20gdGhlIHNlbGVjdGlvbi4gQSBib29sZWFuXHJcblx0ICogc2hvdWxkIGJlIHJldHVybmVkLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBjb21wYXJlV2l0aCgpOiAoKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2NvbXBhcmVXaXRoOyB9XHJcblx0cHVibGljIHNldCBjb21wYXJlV2l0aChmbjogKChvMTogYW55LCBvMjogYW55KSA9PiBib29sZWFuKSB8IHVuZGVmaW5lZCkgeyB0aGlzLl9jb21wYXJlV2l0aCA9IGZuOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNoYW5nZT86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnY2hhbmdlJylcclxuXHRwdWJsaWMgb25WYWx1ZUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogaXRlbUNoYW5nZT86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnaXRlbUNoYW5nZScpXHJcblx0cHVibGljIG9uSXRlbUNoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ3NlbGVjdGVkJylcclxuXHRwdWJsaWMgb25TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogaXRlbVNlbGVjdGVkPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdpdGVtU2VsZWN0ZWQnKVxyXG5cdHB1YmxpYyBvbkl0ZW1TZWxlY3RlZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogbGF1bmNoPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdsYXVuY2gnKVxyXG5cdHB1YmxpYyBvbkxhdW5jaDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcclxuXHJcblx0LyoqXHJcblx0ICogc2VhcmNoRmllbGQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIHNlYXJjaEZpZWxkPzogKHg6IGFueSkgPT4gc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSBjb250cm9sVHlwZSBcclxuXHQgKiBAcGFyYW0gaW5qZWN0b3IgXHJcblx0ICogQHBhcmFtIG5nQ29udHJvbCBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybSBcclxuXHQgKiBAcGFyYW0gcGFyZW50Rm9ybUdyb3VwIFxyXG5cdCAqIEBwYXJhbSBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIgXHJcblx0ICogQHBhcmFtIGZvY3VzTW9uaXRvciBcclxuXHQgKiBAcGFyYW0gZWxlbWVudFJlZiBcclxuXHQgKiBAcGFyYW0gY2hhbmdlRGV0ZWN0b3JSZWYgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoXHJcblx0XHRjb250cm9sVHlwZTogc3RyaW5nLFxyXG5cdFx0cHJvdGVjdGVkIGluamVjdG9yOiBJbmplY3RvcixcclxuXHRcdEBPcHRpb25hbCgpIEBTZWxmKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtOiBOZ0Zvcm0sXHJcblx0XHRAT3B0aW9uYWwoKSBwYXJlbnRGb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZSxcclxuXHRcdGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlcjogRXJyb3JTdGF0ZU1hdGNoZXIsXHJcblx0XHRmb2N1c01vbml0b3I6IEZvY3VzTW9uaXRvcixcclxuXHRcdGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcblx0XHRjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcclxuXHQpIHtcclxuXHRcdHN1cGVyKGNvbnRyb2xUeXBlLCBuZ0NvbnRyb2wsIHBhcmVudEZvcm0sIHBhcmVudEZvcm1Hcm91cCwgZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyLCBmb2N1c01vbml0b3IsIGVsZW1lbnRSZWYsIGNoYW5nZURldGVjdG9yUmVmKTtcclxuXHRcdGlmICghdGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMuX2h0dHAgPSBpbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBhIGNvbXBvbmVudCdzIFxyXG5cdCAqIHZpZXcgaGFzIGJlZW4gZnVsbHkgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucztcclxuXHJcblx0XHRpZiAodGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyYWJsZSA9IGZhbHNlO1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IEVudW1TZXJ2aWNlLnRvQXJyYXkodGhpcy5lbnVtLCB0aGlzLnByZWZpeCk7XHJcblxyXG5cdFx0XHQvKiBBcHBseSBlbnVtIGZpbHRlcnMgKi9cclxuXHRcdFx0aWYgKHRoaXMuX2VudW1GaWx0ZXIgJiYgdGhpcy5vcHRpb25zKSB7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMuZmlsdGVyKHRoaXMuX2VudW1GaWx0ZXIpO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdFx0dGhpcy5oYW5kbGVJdGVtU2VsZWN0ZWQodGhpcy52YWx1ZSk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSBpZiAoIXRoaXMub3B0aW9ucykge1xyXG5cdFx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5waXBlKGRpc3RpbmN0VW50aWxDaGFuZ2VkKCkpLnBpcGUoZGVib3VuY2VUaW1lKDEpKS5zdWJzY3JpYmUoXyA9PiB7XHJcblx0XHRcdFx0bGV0IGhlYWRlcnMgPSBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHRcdFx0XHRpZiAodGhpcy5jYWNoZSkge1xyXG5cdFx0XHRcdFx0aGVhZGVycy5zZXQoJ0NsaWVudC1DYWNoZScsICdZZXMnKTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEluaXQgcGFyYW1zLCBpZiBudWxsICovXHJcblx0XHRcdFx0bGV0IHBhcmFtcyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3BhcmFtcyB8fCB7fSk7XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdFx0XHRwYXJhbXMucHJvamVjdGlvbiA9IEFycmF5LmlzQXJyYXkodGhpcy5wcm9qZWN0aW9uKSA/IHRoaXMucHJvamVjdGlvbi5qb2luKCcsJykgOiB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBBZGQgc29ydGluZyAqL1xyXG5cdFx0XHRcdGlmICghdGhpcy5wYXJhbXMuc29ydEJ5ICYmICh0aGlzLnNvcnRCeSB8fCB0aGlzLnNvcnRlZCkpIHtcclxuXHRcdFx0XHRcdHBhcmFtcy5zb3J0QnkgPSB0aGlzLnNvcnRCeSB8fCB0aGlzLm9wdGlvblRleHRQcm9wZXJ0eTtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEdldCBlbmRwb2ludCAqL1xyXG5cdFx0XHRcdGxldCBlbmRwb2ludCA9IHR5cGVvZiB0aGlzLmVuZHBvaW50ID09PSAnZnVuY3Rpb24nID8gdGhpcy5lbmRwb2ludCh0aGlzKSA6ICg8c3RyaW5nPnRoaXMuZW5kcG9pbnQpO1xyXG5cdFx0XHRcdGlmICh0aGlzLl9odHRwICYmIGVuZHBvaW50ICYmIHRoaXMubG9hZERhdGEpIHtcclxuXHRcdFx0XHRcdHRoaXMuX2h0dHAuZ2V0KGVuZHBvaW50LCB7IHBhcmFtczogcGFyYW1zLCBoZWFkZXJzOiBoZWFkZXJzIH0pXHJcblx0XHRcdFx0XHRcdC5waXBlKG1hcCgoeDogYW55KSA9PiB0aGlzLm1hcHBlciA/IHRoaXMubWFwcGVyKHgpIDogeCkpXHJcblx0XHRcdFx0XHRcdC5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLm9wdGlvbnMgPSB4O1xyXG5cclxuXHRcdFx0XHRcdFx0XHRpZiAodGhpcy5zZWxlY3RGaXJzdCAmJiAhdGhpcy52YWx1ZSAmJiB0aGlzLm9wdGlvbnM/Lmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMudmFsdWUgPSB0aGlzLm9wdGlvbnNbMF1bdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0c3VwZXIud3JpdGVWYWx1ZSh0aGlzLnZhbHVlISk7XHJcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBGcm9tIENvbnRyb2xWYWx1ZUFjY2Vzc29yIGludGVyZmFjZVxyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuXHRcdC8qIFdyaXRlIHRoZSB2YWx1ZSBhbmQgdHJpZ2dlciBzb21lIGV2ZW50cyAqL1xyXG5cdFx0c3VwZXIud3JpdGVWYWx1ZSh2YWx1ZSk7XHJcblx0XHR0aGlzLm9uU2VsZWN0ZWQuZW1pdCh2YWx1ZSk7XHJcblxyXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdH1cclxuXHJcblx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIE1ldGhvZCBleGVjdXRlZCB3aGVuIGFuIG9wdGlvbiBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUNoYW5nZSgkZXZlbnQ6IGFueSk6IHZvaWQge1xyXG5cdFx0dGhpcy5vblZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KTtcclxuXHRcdHRoaXMuaGFuZGxlSXRlbUNoYW5nZSgkZXZlbnQudmFsdWUpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBpdGVtIGNoYW5nZXNcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUl0ZW1TZWxlY3RlZCh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHR0aGlzLm9uSXRlbVNlbGVjdGVkLmVtaXQodGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiAodmFsdWUgfHwgW10pLmluY2x1ZGVzKHhbdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XSkpKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XSA9PSB2YWx1ZSlbMF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBpdGVtIGNoYW5nZXNcclxuXHQgKiBAcGFyYW0gdmFsdWUgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUl0ZW1DaGFuZ2UodmFsdWU6IGFueSk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1DaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+ICh2YWx1ZSB8fCBbXSkuaW5jbHVkZXMoeFt0aGlzLm9wdGlvblZhbHVlUHJvcGVydHldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1DaGFuZ2UuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XSA9PSB2YWx1ZSlbMF0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGVscyBmaWx0ZXIgZXZlbnRcclxuXHQgKiBAcGFyYW0gJGV2ZW50IFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBoYW5kbGVGaWx0ZXIoJGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0bGV0IHNlYXJjaFRleHQ6IHN0cmluZyA9ICgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWUgPz8gJyc7XHJcblx0XHRpZiAodGhpcy5zZWFyY2hGaWVsZCkge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4gdGhpcy5zZWFyY2hGaWVsZCEoeCk/LnRvTG93ZXJDYXNlKCkuc2VhcmNoKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgPiAtMSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLm9wdGlvblRleHRQcm9wZXJ0eV0/LnRvTG93ZXJDYXNlKCkuc2VhcmNoKHNlYXJjaFRleHQudG9Mb3dlckNhc2UoKSkgPiAtMSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcmlnZ2VyIGVuZHBvaW50IGNoYW5nZWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZW5kcG9pbnRDaGFuZ2VkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5fcGFyYW1zLCB0aGlzLnByb2plY3Rpb24sIHRoaXMuX2xvYWREYXRhXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUcmlnZ2VyIGVudW0gY2hhbmdlZFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBlbnVtQ2hhbmdlZCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuX2VudW1DaGFuZ2UubmV4dChbdGhpcy5fZW51bUZpbHRlcl0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9nIHRvIGNvbnNvbGVcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBcclxuXHQgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcblx0ICovXHJcblx0cHVibGljIGxvZyhtZXNzYWdlOiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG5cdFx0Y29uc29sZS5sb2cobWVzc2FnZSwgb3B0aW9uYWxQYXJhbXMpO1xyXG5cdH1cclxufSJdfQ==
|
|
472
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3Qtc2VsZWN0LWZvcm0tZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvaGVscGVycy9hYnN0cmFjdC1zZWxlY3QtZm9ybS1maWVsZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0QsT0FBTyxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsUUFBUSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDeEksT0FBTyxFQUFFLGtCQUFrQixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN2RSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFaEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLDZDQUE2QyxDQUFDOzs7OztBQUVuRixNQUFNLE9BQWdCLHVCQUEyQixTQUFRLG9CQUF1QjtJQWlVcEU7SUEvVFg7O09BRUc7SUFDSyxlQUFlLEdBQTJCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRS9FOztPQUVHO0lBQ0ssV0FBVyxHQUEyQixJQUFJLGVBQWUsQ0FBTSxFQUFFLENBQUMs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O3NCQURwQixLQUFLO2dCQVFLLFFBQVE7c0JBRGxCLEtBQUs7Z0JBK0JLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBUUMsYUFBYTtzQkFEbkIsTUFBTTt1QkFBQyxRQUFRO2dCQU9ULFlBQVk7c0JBRGxCLE1BQU07dUJBQUMsWUFBWTtnQkFPYixVQUFVO3NCQURoQixNQUFNO3VCQUFDLFVBQVU7Z0JBT1gsY0FBYztzQkFEcEIsTUFBTTt1QkFBQyxjQUFjO2dCQU9mLFFBQVE7c0JBRGQsTUFBTTt1QkFBQyxRQUFRO2dCQU1QLFdBQVc7c0JBQW5CLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XHJcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBTZWxmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cERpcmVjdGl2ZSwgTmdDb250cm9sLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEVycm9yU3RhdGVNYXRjaGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IEljb24gfSBmcm9tICcuLi8uLi9jb21tb24vbW9kZWxzL2ljb24nO1xyXG5pbXBvcnQgeyBFbnVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9lbnVtLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdE1hdEZvcm1GaWVsZCB9IGZyb20gJy4uLy4uL2Zvcm1zL2hlbHBlcnMvYWJzdHJhY3QtbWF0LWZvcm0tZmllbGQnO1xyXG5ARGlyZWN0aXZlKClcclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0U2VsZWN0Rm9ybUZpZWxkPFQ+IGV4dGVuZHMgQWJzdHJhY3RNYXRGb3JtRmllbGQ8VD4gaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuXHQvKipcclxuXHQgKiBBIEJlaGF2aW9yU3ViamVjdCB0aGF0IHRyYWNrcyBjaGFuZ2VzIHRvIHRoZSBlbmRwb2ludCBkYXRhLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2VuZHBvaW50Q2hhbmdlOiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCg8YW55PltdKTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBCZWhhdmlvclN1YmplY3QgdGhhdCB0cmFja3MgY2hhbmdlcyB0byB0aGUgZW51bSBkYXRhLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2VudW1DaGFuZ2U6IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4gPSBuZXcgQmVoYXZpb3JTdWJqZWN0KDxhbnk+W10pO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgSFRUUCBjbGllbnQgc2VydmljZSB1c2VkIHRvIGZldGNoIGRhdGEgZnJvbSBhbiBBUEkuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9odHRwPzogSHR0cENsaWVudDtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgZGVmYXVsdCBvcHRpb24gc2hvdWxkIGJlIHNlbGVjdGVkIGJ5IGRlZmF1bHQuXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIF9kZWZhdWx0T3B0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgZW5hYmxlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX211bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIG9wdGlvbnMgc2hvdWxkIGJlIHNvcnRlZC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3NvcnRlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBBUEkgZW5kcG9pbnQgb3IgYSBmdW5jdGlvbiByZXR1cm5pbmcgdGhlIGVuZHBvaW50IFVSTC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2VuZHBvaW50Pzogc3RyaW5nIHwgRnVuY3Rpb247XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhcmFtZXRlcnMgdG8gYmUgc2VudCB3aXRoIHRoZSBBUEkgcmVxdWVzdC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIFByb2plY3Rpb24gZmllbGRzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBBUEkgcmVxdWVzdC5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX3Byb2plY3Rpb24/OiBzdHJpbmcgfCBzdHJpbmdbXTtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0byBsb2FkIGRhdGEgYXV0b21hdGljYWxseS5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2xvYWREYXRhOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogQSBmaWx0ZXIgZnVuY3Rpb24gdG8gYXBwbHkgdG8gdGhlIGVudW0gZGF0YS5cclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgX2VudW1GaWx0ZXI/OiBGdW5jdGlvbjtcclxuXHJcblx0LyoqXHJcblx0ICogQSBmdW5jdGlvbiB0byBjb21wYXJlIG9wdGlvbiB2YWx1ZXMgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWVzLlxyXG5cdCAqL1xyXG5cdHByaXZhdGUgX2NvbXBhcmVXaXRoPzogKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW47XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gY29tcGFyZSBvcHRpb24gdmFsdWVzIHdpdGggdGhlIHNlbGVjdGVkIHZhbHVlcy5cclxuXHQgKi9cclxuXHRwdWJsaWMgZGVmYXVsdENvbXBhcmVXaXRoID0gKG8xOiBhbnksIG8yOiBhbnkpID0+IG8xID09PSBvMjtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGVudW1lcmF0aW9uIGRhdGEgb3IgZW5kcG9pbnQgZm9yIHRoZSBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGVudW06IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogT3B0aW9uYWwgcHJlZml4IHRleHQgdG8gZGlzcGxheS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyB0ZXh0UHJlZml4OiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByb3BlcnR5IG5hbWUgaW4gdGhlIG9wdGlvbiBvYmplY3QgZm9yIHRoZSB0ZXh0IHRvIGRpc3BsYXkuXHJcblx0ICogVGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGljaCBwcm9wZXJ0eSBvZiB0aGUgb3B0aW9uIG9iamVjdCB0byBzaG93IGFzIHRoZSBvcHRpb24ncyB0ZXh0LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG9wdGlvblRleHRQcm9wZXJ0eTogc3RyaW5nID0gJ25hbWUnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgcHJvcGVydHkgbmFtZSBpbiB0aGUgb3B0aW9uIG9iamVjdCBmb3IgdGhlIHZhbHVlIG9mIHRoZSBvcHRpb25zLlxyXG5cdCAqIFRoaXMgaXMgdXNlZCB0byBpZGVudGlmeSB0aGUgdW5pcXVlIHZhbHVlIGZvciBlYWNoIG9wdGlvbi5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBvcHRpb25WYWx1ZVByb3BlcnR5OiBzdHJpbmcgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5IGZvciB0aGUgTWF0ZXJpYWwgaWNvbiB0byBkaXNwbGF5LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG1hdEljb25LZXk/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBrZXkgZm9yIHRoZSBTVkcgaWNvbiB0byBkaXNwbGF5LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHN2Z0ljb25LZXk/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZvbnQgc2V0IG5hbWUgZm9yIGZvbnQgaWNvbi5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmb250U2V0Pzogc3RyaW5nID0gJ21hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBPcHRpb25hbCBwcmVmaXggdG8gZGlzcGxheSBiZWZvcmUgdGhlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcHJlZml4OiBhbnkgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGxpc3Qgb2YgYXZhaWxhYmxlIG9wdGlvbnMuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgb3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbGlzdCBvZiBmaWx0ZXJlZCBvcHRpb25zLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGZpbHRlcmVkT3B0aW9uczogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBvcHRpb25zIGNhbiBiZSBmaWx0ZXJlZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmaWx0ZXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0byBjYWNoZSB0aGUgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBjYWNoZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdG8gc2VsZWN0IHRoZSBmaXJzdCBvcHRpb24gYnkgZGVmYXVsdC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzZWxlY3RGaXJzdDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgZmllbGQgYnkgd2hpY2ggdG8gc29ydCB0aGUgb3B0aW9ucy5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0Qnk/OiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZnVuY3Rpb24gdG8gbWFwIHRoZSBvcHRpb25zIGJlZm9yZSBkaXNwbGF5aW5nLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG1hcHBlcj86ICh4OiBhbnlbXSkgPT4gYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgaWNvbiBmb3IgYSBnaXZlbiBvcHRpb24uXHJcblx0ICovXHJcblx0cHVibGljIG9wdGlvbkljb24/OiAoeDogYW55KSA9PiBJY29uPFQsIGFueT47XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGRlZmF1bHQgb3B0aW9uIHNob3VsZCBiZSBzZWxlY3RlZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgZGVmYXVsdE9wdGlvbigpIHsgcmV0dXJuIHRoaXMuX2RlZmF1bHRPcHRpb247IH1cclxuXHRwdWJsaWMgc2V0IGRlZmF1bHRPcHRpb24oZGVmYXVsdE9wdGlvbikgeyB0aGlzLl9kZWZhdWx0T3B0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGRlZmF1bHRPcHRpb24pOyB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgZW5hYmxlZC5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgbXVsdGlwbGUoKSB7IHJldHVybiB0aGlzLl9tdWx0aXBsZTsgfVxyXG5cdHB1YmxpYyBzZXQgbXVsdGlwbGUobXVsdGkpIHsgdGhpcy5fbXVsdGlwbGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkobXVsdGkpOyB0aGlzLnN0YXRlQ2hhbmdlcy5uZXh0KCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgb3B0aW9ucyBzaG91bGQgYmUgc29ydGVkLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBzb3J0ZWQoKSB7IHJldHVybiB0aGlzLl9zb3J0ZWQ7IH1cclxuXHRwdWJsaWMgc2V0IHNvcnRlZChzb3J0ZWQpIHsgdGhpcy5fc29ydGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHNvcnRlZCk7IHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgQVBJIGVuZHBvaW50IG9yIGEgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBlbmRwb2ludCBVUkwuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGVuZHBvaW50KCk6IHN0cmluZyB8IEZ1bmN0aW9uIHwgdW5kZWZpbmVkIHsgcmV0dXJuIHRoaXMuX2VuZHBvaW50OyB9XHJcblx0cHVibGljIHNldCBlbmRwb2ludChlbmRwb2ludDogc3RyaW5nIHwgRnVuY3Rpb24pIHsgdGhpcy5fZW5kcG9pbnQgPSBlbmRwb2ludDsgdGhpcy5lbmRwb2ludENoYW5nZWQoKTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXJhbWV0ZXJzIHRvIGJlIHNlbnQgd2l0aCB0aGUgQVBJIHJlcXVlc3QuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IHBhcmFtcygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtczsgfVxyXG5cdHB1YmxpYyBzZXQgcGFyYW1zKHBhcmFtczogYW55KSB7XHJcblx0XHRpZiAocGFyYW1zKSB7XHJcblx0XHRcdC8vIFJlbW92ZSBlbXB0eSBwYXJhbWV0ZXJzXHJcblx0XHRcdE9iamVjdC5rZXlzKHBhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdFx0aWYgKHBhcmFtc1trZXldID09IG51bGwgfHwgcGFyYW1zW2tleV0gPT0gJycgfHwgcGFyYW1zW2tleV0gPT0gJ3VuZGVmaW5lZCcpIHtcclxuXHRcdFx0XHRcdGRlbGV0ZSBwYXJhbXNba2V5XTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cclxuXHRcdFx0Ly8gVXBkYXRlIHBhcmFtZXRlcnMgaWYgdGhleSBoYXZlIGNoYW5nZWRcclxuXHRcdFx0aWYgKEpTT04uc3RyaW5naWZ5KHRoaXMuX3BhcmFtcykgIT09IEpTT04uc3RyaW5naWZ5KHBhcmFtcykpIHtcclxuXHRcdFx0XHR0aGlzLl9wYXJhbXMgPSBwYXJhbXM7XHJcblx0XHRcdFx0dGhpcy5lbmRwb2ludENoYW5nZWQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUHJvamVjdGlvbiBmaWVsZHMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIEFQSSByZXF1ZXN0LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGdldCBwcm9qZWN0aW9uKCk6IHN0cmluZyB8IHN0cmluZ1tdIHsgcmV0dXJuIHRoaXMuX3Byb2plY3Rpb24gPz8gJyc7IH1cclxuXHRwdWJsaWMgc2V0IHByb2plY3Rpb24ocHJvamVjdGlvbjogc3RyaW5nIHwgc3RyaW5nW10gfCB1bmRlZmluZWQpIHsgdGhpcy5fcHJvamVjdGlvbiA9IHByb2plY3Rpb247IHRoaXMuZW5kcG9pbnRDaGFuZ2VkKCk7IH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0byBsb2FkIGRhdGEgYXV0b21hdGljYWxseS5cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBnZXQgbG9hZERhdGEoKSB7IHJldHVybiB0aGlzLl9sb2FkRGF0YTsgfVxyXG5cdHB1YmxpYyBzZXQgbG9hZERhdGEobG9hZERhdGEpIHsgdGhpcy5fbG9hZERhdGEgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkobG9hZERhdGEpOyB0aGlzLmVuZHBvaW50Q2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgZmlsdGVyIGZ1bmN0aW9uIHRvIGFwcGx5IHRvIHRoZSBlbnVtIGRhdGEuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGVudW1GaWx0ZXIoKTogRnVuY3Rpb24gfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fZW51bUZpbHRlcjsgfVxyXG5cdHB1YmxpYyBzZXQgZW51bUZpbHRlcihlbnVtRmlsdGVyOiBGdW5jdGlvbikgeyB0aGlzLl9lbnVtRmlsdGVyID0gZW51bUZpbHRlcjsgdGhpcy5lbnVtQ2hhbmdlZCgpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZGlzYWJsZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGRpc2FibGVkKCkgeyByZXR1cm4gdGhpcy5fcmVhZG9ubHkgfHwgc3VwZXIuZGlzYWJsZWQ7IH1cclxuXHRwdWJsaWMgc2V0IGRpc2FibGVkKGRpc2FibGVkOiBhbnkpIHtcclxuXHRcdHRoaXMuX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KGRpc2FibGVkKTtcclxuXHRcdGlmICh0aGlzLmZvY3VzZWQpIHtcclxuXHRcdFx0dGhpcy5mb2N1c2VkID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuc3RhdGVDaGFuZ2VzLm5leHQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB2YWx1ZShzKS5cclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0IGN1cnJlbnRWYWx1ZSgpOiBhbnkge1xyXG5cdFx0aWYgKHRoaXMubXVsdGlwbGUpIHtcclxuXHRcdFx0aWYgKHRoaXMuY29tcGFyZVdpdGgpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5vcHRpb25zPy5maWx0ZXIoKHg6IGFueSkgPT4gKDxhbnlbXT4odGhpcy5fdmFsdWUgfHwgW10pKS5zb21lKHkgPT4gdGhpcy5jb21wYXJlV2l0aCEoeCwgeSkpKTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+ICg8YW55W10+KHRoaXMuX3ZhbHVlIHx8IFtdKSkuaW5jbHVkZXMoeFt0aGlzLm9wdGlvblZhbHVlUHJvcGVydHldKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucz8uZmlsdGVyKCh4OiBhbnkpID0+IHhbdGhpcy5vcHRpb25WYWx1ZVByb3BlcnR5XSA9PSB0aGlzLl92YWx1ZSlbMF07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBBIGZ1bmN0aW9uIHRvIGNvbXBhcmUgdGhlIG9wdGlvbiB2YWx1ZXMgd2l0aCB0aGUgc2VsZWN0ZWQgdmFsdWVzLiBUaGUgZmlyc3QgYXJndW1lbnRcclxuXHQgKiBpcyBhIHZhbHVlIGZyb20gYW4gb3B0aW9uLiBUaGUgc2Vjb25kIGlzIGEgdmFsdWUgZnJvbSB0aGUgc2VsZWN0aW9uLiBBIGJvb2xlYW5cclxuXHQgKiBzaG91bGQgYmUgcmV0dXJuZWQuXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZ2V0IGNvbXBhcmVXaXRoKCk6ICgobzE6IGFueSwgbzI6IGFueSkgPT4gYm9vbGVhbikgfCB1bmRlZmluZWQgeyByZXR1cm4gdGhpcy5fY29tcGFyZVdpdGg7IH1cclxuXHRwdWJsaWMgc2V0IGNvbXBhcmVXaXRoKGZuOiAoKG8xOiBhbnksIG8yOiBhbnkpID0+IGJvb2xlYW4pIHwgdW5kZWZpbmVkKSB7IHRoaXMuX2NvbXBhcmVXaXRoID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogY2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdjaGFuZ2UnKVxyXG5cdHB1YmxpYyBvblZhbHVlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtQ2hhbmdlPzogZnVuY3Rpb25cclxuXHQgKi9cclxuXHRAT3V0cHV0KCdpdGVtQ2hhbmdlJylcclxuXHRwdWJsaWMgb25JdGVtQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWxlY3RlZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QE91dHB1dCgnc2VsZWN0ZWQnKVxyXG5cdHB1YmxpYyBvblNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBpdGVtU2VsZWN0ZWQ/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2l0ZW1TZWxlY3RlZCcpXHJcblx0cHVibGljIG9uSXRlbVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBsYXVuY2g/OiBmdW5jdGlvblxyXG5cdCAqL1xyXG5cdEBPdXRwdXQoJ2xhdW5jaCcpXHJcblx0cHVibGljIG9uTGF1bmNoOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuXHQvKipcclxuXHQgKiBzZWFyY2hGaWVsZD86IGZ1bmN0aW9uXHJcblx0ICovXHJcblx0QElucHV0KCkgc2VhcmNoRmllbGQ/OiAoeDogYW55KSA9PiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIGNvbnRyb2xUeXBlIFxyXG5cdCAqIEBwYXJhbSBpbmplY3RvciBcclxuXHQgKiBAcGFyYW0gbmdDb250cm9sIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtIFxyXG5cdCAqIEBwYXJhbSBwYXJlbnRGb3JtR3JvdXAgXHJcblx0ICogQHBhcmFtIGRlZmF1bHRFcnJvclN0YXRlTWF0Y2hlciBcclxuXHQgKiBAcGFyYW0gZm9jdXNNb25pdG9yIFxyXG5cdCAqIEBwYXJhbSBlbGVtZW50UmVmIFxyXG5cdCAqIEBwYXJhbSBjaGFuZ2VEZXRlY3RvclJlZiBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihcclxuXHRcdGNvbnRyb2xUeXBlOiBzdHJpbmcsXHJcblx0XHRwcm90ZWN0ZWQgaW5qZWN0b3I6IEluamVjdG9yLFxyXG5cdFx0QE9wdGlvbmFsKCkgQFNlbGYoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm06IE5nRm9ybSxcclxuXHRcdEBPcHRpb25hbCgpIHBhcmVudEZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlLFxyXG5cdFx0ZGVmYXVsdEVycm9yU3RhdGVNYXRjaGVyOiBFcnJvclN0YXRlTWF0Y2hlcixcclxuXHRcdGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxyXG5cdFx0ZWxlbWVudFJlZjogRWxlbWVudFJlZixcclxuXHRcdGNoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZlxyXG5cdCkge1xyXG5cdFx0c3VwZXIoY29udHJvbFR5cGUsIG5nQ29udHJvbCwgcGFyZW50Rm9ybSwgcGFyZW50Rm9ybUdyb3VwLCBkZWZhdWx0RXJyb3JTdGF0ZU1hdGNoZXIsIGZvY3VzTW9uaXRvciwgZWxlbWVudFJlZiwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xyXG5cdFx0aWYgKCF0aGlzLmVudW0pIHtcclxuXHRcdFx0dGhpcy5faHR0cCA9IGluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGEgY29tcG9uZW50J3MgXHJcblx0ICogdmlldyBoYXMgYmVlbiBmdWxseSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zO1xyXG5cclxuXHRcdGlmICh0aGlzLmVudW0pIHtcclxuXHRcdFx0dGhpcy5maWx0ZXJhYmxlID0gZmFsc2U7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zID0gRW51bVNlcnZpY2UudG9BcnJheSh0aGlzLmVudW0sIHRoaXMucHJlZml4KTtcclxuXHJcblx0XHRcdC8qIEFwcGx5IGVudW0gZmlsdGVycyAqL1xyXG5cdFx0XHRpZiAodGhpcy5fZW51bUZpbHRlciAmJiB0aGlzLm9wdGlvbnMpIHtcclxuXHRcdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIodGhpcy5fZW51bUZpbHRlcik7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMub3B0aW9ucykpIHtcclxuXHRcdFx0XHR0aGlzLmhhbmRsZUl0ZW1TZWxlY3RlZCh0aGlzLnZhbHVlKTtcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIGlmICghdGhpcy5vcHRpb25zKSB7XHJcblx0XHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLnBpcGUoZGlzdGluY3RVbnRpbENoYW5nZWQoKSkucGlwZShkZWJvdW5jZVRpbWUoMSkpLnN1YnNjcmliZShfID0+IHtcclxuXHRcdFx0XHRsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0XHRcdGlmICh0aGlzLmNhY2hlKSB7XHJcblx0XHRcdFx0XHRoZWFkZXJzLnNldCgnQ2xpZW50LUNhY2hlJywgJ1llcycpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogSW5pdCBwYXJhbXMsIGlmIG51bGwgKi9cclxuXHRcdFx0XHRsZXQgcGFyYW1zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fcGFyYW1zIHx8IHt9KTtcclxuXHJcblx0XHRcdFx0LyogQWRkIHByb2plY3Rpb24sIGlmIGFueSAqL1xyXG5cdFx0XHRcdGlmICh0aGlzLnByb2plY3Rpb24pIHtcclxuXHRcdFx0XHRcdHBhcmFtcy5wcm9qZWN0aW9uID0gQXJyYXkuaXNBcnJheSh0aGlzLnByb2plY3Rpb24pID8gdGhpcy5wcm9qZWN0aW9uLmpvaW4oJywnKSA6IHRoaXMucHJvamVjdGlvbjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBzb3J0aW5nICovXHJcblx0XHRcdFx0aWYgKCF0aGlzLnBhcmFtcy5zb3J0QnkgJiYgKHRoaXMuc29ydEJ5IHx8IHRoaXMuc29ydGVkKSkge1xyXG5cdFx0XHRcdFx0cGFyYW1zLnNvcnRCeSA9IHRoaXMuc29ydEJ5IHx8IHRoaXMub3B0aW9uVGV4dFByb3BlcnR5O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogR2V0IGVuZHBvaW50ICovXHJcblx0XHRcdFx0bGV0IGVuZHBvaW50ID0gdHlwZW9mIHRoaXMuZW5kcG9pbnQgPT09ICdmdW5jdGlvbicgPyB0aGlzLmVuZHBvaW50KHRoaXMpIDogKDxzdHJpbmc+dGhpcy5lbmRwb2ludCk7XHJcblx0XHRcdFx0aWYgKHRoaXMuX2h0dHAgJiYgZW5kcG9pbnQgJiYgdGhpcy5sb2FkRGF0YSkge1xyXG5cdFx0XHRcdFx0dGhpcy5faHR0cC5nZXQoZW5kcG9pbnQsIHsgcGFyYW1zOiBwYXJhbXMsIGhlYWRlcnM6IGhlYWRlcnMgfSlcclxuXHRcdFx0XHRcdFx0LnBpcGUobWFwKCh4OiBhbnkpID0+IHRoaXMubWFwcGVyID8gdGhpcy5tYXBwZXIoeCkgOiB4KSlcclxuXHRcdFx0XHRcdFx0LnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucyA9IHg7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGlmICh0aGlzLnNlbGVjdEZpcnN0ICYmICF0aGlzLnZhbHVlICYmIHRoaXMub3B0aW9ucz8ubGVuZ3RoID4gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy52YWx1ZSA9IHRoaXMub3B0aW9uc1swXVt0aGlzLm9wdGlvblZhbHVlUHJvcGVydHldO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5vcHRpb25zKSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oYW5kbGVJdGVtU2VsZWN0ZWQodGhpcy52YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRcdFx0XHRzdXBlci53cml0ZVZhbHVlKHRoaXMudmFsdWUhKTtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZyb20gQ29udHJvbFZhbHVlQWNjZXNzb3IgaW50ZXJmYWNlXHJcblx0ICogQHBhcmFtIHZhbHVlIFxyXG5cdCAqL1xyXG5cdHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0LyogV3JpdGUgdGhlIHZhbHVlIGFuZCB0cmlnZ2VyIHNvbWUgZXZlbnRzICovXHJcblx0XHRzdXBlci53cml0ZVZhbHVlKHZhbHVlKTtcclxuXHRcdHRoaXMub25TZWxlY3RlZC5lbWl0KHZhbHVlKTtcclxuXHJcblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLm9wdGlvbnMpKSB7XHJcblx0XHRcdHRoaXMuaGFuZGxlSXRlbVNlbGVjdGVkKHRoaXMudmFsdWUpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMuY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTWV0aG9kIGV4ZWN1dGVkIHdoZW4gYW4gb3B0aW9uIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlQ2hhbmdlKCRldmVudDogYW55KTogdm9pZCB7XHJcblx0XHR0aGlzLm9uVmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpO1xyXG5cdFx0dGhpcy5oYW5kbGVJdGVtQ2hhbmdlKCRldmVudC52YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGl0ZW0gY2hhbmdlc1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlSXRlbVNlbGVjdGVkKHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLm11bHRpcGxlKSB7XHJcblx0XHRcdHRoaXMub25JdGVtU2VsZWN0ZWQuZW1pdCh0aGlzLm9wdGlvbnMuZmlsdGVyKCh4OiBhbnkpID0+ICh2YWx1ZSB8fCBbXSkuaW5jbHVkZXMoeFt0aGlzLm9wdGlvblZhbHVlUHJvcGVydHldKSkpO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy5vbkl0ZW1TZWxlY3RlZC5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLm9wdGlvblZhbHVlUHJvcGVydHldID09IHZhbHVlKVswXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kbGVzIGl0ZW0gY2hhbmdlc1xyXG5cdCAqIEBwYXJhbSB2YWx1ZSBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlSXRlbUNoYW5nZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy5tdWx0aXBsZSkge1xyXG5cdFx0XHR0aGlzLm9uSXRlbUNoYW5nZS5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4gKHZhbHVlIHx8IFtdKS5pbmNsdWRlcyh4W3RoaXMub3B0aW9uVmFsdWVQcm9wZXJ0eV0pKSk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR0aGlzLm9uSXRlbUNoYW5nZS5lbWl0KHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLm9wdGlvblZhbHVlUHJvcGVydHldID09IHZhbHVlKVswXSk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kZWxzIGZpbHRlciBldmVudFxyXG5cdCAqIEBwYXJhbSAkZXZlbnQgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUZpbHRlcigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgc2VhcmNoVGV4dDogc3RyaW5nID0gKCRldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZSA/PyAnJztcclxuXHRcdGlmICh0aGlzLnNlYXJjaEZpZWxkKSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB0aGlzLnNlYXJjaEZpZWxkISh4KT8udG9Mb3dlckNhc2UoKS5zZWFyY2goc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+IC0xKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMub3B0aW9uVGV4dFByb3BlcnR5XT8udG9Mb3dlckNhc2UoKS5zZWFyY2goc2VhcmNoVGV4dC50b0xvd2VyQ2FzZSgpKSA+IC0xKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyaWdnZXIgZW5kcG9pbnQgY2hhbmdlZFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBlbmRwb2ludENoYW5nZWQoKTogdm9pZCB7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLl9wYXJhbXMsIHRoaXMucHJvamVjdGlvbiwgdGhpcy5fbG9hZERhdGFdKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRyaWdnZXIgZW51bSBjaGFuZ2VkXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGVudW1DaGFuZ2VkKCk6IHZvaWQge1xyXG5cdFx0dGhpcy5fZW51bUNoYW5nZS5uZXh0KFt0aGlzLl9lbnVtRmlsdGVyXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2cgdG8gY29uc29sZVxyXG5cdCAqIEBwYXJhbSBtZXNzYWdlIFxyXG5cdCAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuXHQgKi9cclxuXHRwdWJsaWMgbG9nKG1lc3NhZ2U6IGFueSwgLi4ub3B0aW9uYWxQYXJhbXM6IGFueVtdKSB7XHJcblx0XHRjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcblx0fVxyXG59Il19
|
|
@@ -134,10 +134,10 @@ export class ValueAccessorBase extends MatFormFieldControl {
|
|
|
134
134
|
ngOnDestroy() {
|
|
135
135
|
this.stateChanges.complete();
|
|
136
136
|
}
|
|
137
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
138
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
137
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ValueAccessorBase, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
138
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: ValueAccessorBase, host: { properties: { "attr.aria-describedby": "this.describedBy" } }, usesInheritance: true, ngImport: i0 });
|
|
139
139
|
}
|
|
140
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
140
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: ValueAccessorBase, decorators: [{
|
|
141
141
|
type: Directive
|
|
142
142
|
}], propDecorators: { describedBy: [{
|
|
143
143
|
type: HostBinding,
|
|
@@ -24,11 +24,11 @@ export class GroupFilterPipe {
|
|
|
24
24
|
return true;
|
|
25
25
|
});
|
|
26
26
|
}
|
|
27
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
28
|
-
/** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
|
27
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: GroupFilterPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
28
|
+
/** @nocollapse */ static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: GroupFilterPipe, name: "groupFilter" });
|
|
29
29
|
}
|
|
30
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
30
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: GroupFilterPipe, decorators: [{
|
|
31
31
|
type: Pipe,
|
|
32
32
|
args: [{ name: 'groupFilter' }]
|
|
33
33
|
}] });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXAtZmlsdGVyLnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9waXBlcy9ncm91cC1maWx0ZXIucGlwZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFpQixNQUFNLGVBQWUsQ0FBQzs7QUFLcEQsTUFBTSxPQUFPLGVBQWU7SUFDeEI7Ozs7Ozs7T0FPRztJQUNILFNBQVMsQ0FBQyxNQUF3QyxFQUFFLFNBQWUsRUFBRSxJQUFnQixFQUFFLE9BQWE7UUFDaEcsMERBQTBEO1FBQzFELElBQUksQ0FBQyxNQUFNO1lBQUUsT0FBTyxFQUFFLENBQUM7UUFFdkIsb0RBQW9EO1FBQ3BELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUN6Qiw0Q0FBNEM7WUFDNUMsSUFBSSxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsaUdBQWlHO2dCQUNqRyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2pELENBQUM7WUFDRCwrRUFBK0U7WUFDL0UsT0FBTyxJQUFJLENBQUM7UUFDaEIsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDOzBIQXZCUSxlQUFlO3dIQUFmLGVBQWU7OzJGQUFmLGVBQWU7a0JBRDNCLElBQUk7bUJBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiB9IGZyb20gJy4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb24nO1xyXG5cclxuQFBpcGUoeyBuYW1lOiAnZ3JvdXBGaWx0ZXInIH0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cEZpbHRlclBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcclxuICAgIC8qKlxyXG4gICAgICogRmlsdGVycyBhbiBhcnJheSBvZiBGb3JtRmllbGRHcm91cERlZmluaXRpb24gaW5zdGFuY2VzIGJhc2VkIG9uIGEgcHJvdmlkZWQgY29uZGl0aW9uLlxyXG4gICAgICogQHBhcmFtIGdyb3VwcyAtIEFycmF5IG9mIEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiBpbnN0YW5jZXMgdG8gZmlsdGVyLlxyXG4gICAgICogQHBhcmFtIGZvcm1WYWx1ZSAtIFRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBmb3JtLlxyXG4gICAgICogQHBhcmFtIGZvcm0gLSBUaGUgRm9ybUdyb3VwIGluc3RhbmNlLlxyXG4gICAgICogQHBhcmFtIGNvbnRleHQgLSBUaGUgY29udGV4dCBvZiB0aGUgY29tcG9uZW50LlxyXG4gICAgICogQHJldHVybnMgRmlsdGVyZWQgYXJyYXkgb2YgRm9ybUZpZWxkR3JvdXBEZWZpbml0aW9uIGluc3RhbmNlcy5cclxuICAgICAqL1xyXG4gICAgdHJhbnNmb3JtKGdyb3Vwcz86IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbjxhbnk+W10sIGZvcm1WYWx1ZT86IGFueSwgZm9ybT86IEZvcm1Hcm91cCwgY29udGV4dD86IGFueSk6IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbjxhbnk+W10ge1xyXG4gICAgICAgIC8qIFJldHVybiBhbiBlbXB0eSBhcnJheSBpZiBncm91cHMgaXMgbnVsbCBvciB1bmRlZmluZWQgKi9cclxuICAgICAgICBpZiAoIWdyb3VwcykgcmV0dXJuIFtdO1xyXG5cclxuICAgICAgICAvKiBGaWx0ZXIgdGhlIGdyb3VwcyBhcnJheSBiYXNlZCBvbiB0aGUgY29uZGl0aW9uICovXHJcbiAgICAgICAgcmV0dXJuIGdyb3Vwcy5maWx0ZXIoZ3JvdXAgPT4ge1xyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgZ3JvdXAgaGFzIGEgaGlkZSBmdW5jdGlvbiAqL1xyXG4gICAgICAgICAgICBpZiAoZ3JvdXAuaGlkZSkge1xyXG4gICAgICAgICAgICAgICAgLyogSWYgaGlkZSBmdW5jdGlvbiBleGlzdHMsIHJldHVybiB0cnVlIGlmIGl0IGV2YWx1YXRlcyB0byBmYWxzZSAoaS5lLiwgZ3JvdXAgc2hvdWxkIGJlIHNob3duKSAqL1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICFncm91cC5oaWRlKGZvcm1WYWx1ZSwgZm9ybSwgY29udGV4dCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyogSWYgaGlkZSBmdW5jdGlvbiBkb2Vzbid0IGV4aXN0LCByZXR1cm4gdHJ1ZSAoaS5lLiwgZ3JvdXAgc2hvdWxkIGJlIHNob3duKSAqL1xyXG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufSJdfQ==
|
|
@@ -12,14 +12,14 @@ export class EmptyStringResetDirective {
|
|
|
12
12
|
}
|
|
13
13
|
return null;
|
|
14
14
|
}
|
|
15
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
16
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
15
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EmptyStringResetDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
16
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: EmptyStringResetDirective, selector: "[ngModel],[formControlName],[formControl]", providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef((() => EmptyStringResetDirective)), multi: true }], ngImport: i0 });
|
|
17
17
|
}
|
|
18
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
18
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EmptyStringResetDirective, decorators: [{
|
|
19
19
|
type: Directive,
|
|
20
20
|
args: [{
|
|
21
21
|
selector: '[ngModel],[formControlName],[formControl]',
|
|
22
22
|
providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef((() => EmptyStringResetDirective)), multi: true }]
|
|
23
23
|
}]
|
|
24
24
|
}] });
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1wdHktc3RyaW5nLXJlc2V0LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL3ZhbGlkYXRvcnMvZW1wdHktc3RyaW5nLXJlc2V0LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN0RCxPQUFPLEVBQW1CLGFBQWEsRUFBYSxNQUFNLGdCQUFnQixDQUFDOztBQU0zRSxNQUFNLE9BQU8seUJBQXlCO0lBRWxDOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxPQUF3QjtRQUM3QixJQUFJLE9BQU8sT0FBTyxFQUFFLEtBQUssS0FBSyxRQUFRLElBQUksT0FBTyxFQUFFLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUM3RCxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDOzBIQVpRLHlCQUF5Qjs4R0FBekIseUJBQXlCLG9FQUZ2QixDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLHlCQUF5QixFQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDOzsyRkFFckcseUJBQXlCO2tCQUpyQyxTQUFTO21CQUFDO29CQUNQLFFBQVEsRUFBRSwyQ0FBMkM7b0JBQ3JELFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSwwQkFBMEIsRUFBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDakgiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIGZvcndhcmRSZWYgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIFZhbGlkYXRvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tuZ01vZGVsXSxbZm9ybUNvbnRyb2xOYW1lXSxbZm9ybUNvbnRyb2xdJyxcclxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRW1wdHlTdHJpbmdSZXNldERpcmVjdGl2ZSksIG11bHRpOiB0cnVlIH1dXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFbXB0eVN0cmluZ1Jlc2V0RGlyZWN0aXZlIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIE1ldGhvZCB0aGF0IHBlcmZvcm1zIHN5bmNocm9ub3VzIHZhbGlkYXRpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgY29udHJvbC5cclxuICAgICAqIEBwYXJhbSBjb250cm9sIFxyXG4gICAgICovXHJcbiAgICB2YWxpZGF0ZShjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjb250cm9sPy52YWx1ZSA9PT0gJ3N0cmluZycgJiYgY29udHJvbD8udmFsdWUgPT0gXCJcIikge1xyXG4gICAgICAgICAgICBjb250cm9sLnNldFZhbHVlKG51bGwpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -50,10 +50,10 @@ export class EqualValidator {
|
|
|
50
50
|
}
|
|
51
51
|
return null;
|
|
52
52
|
}
|
|
53
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
54
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
53
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EqualValidator, deps: [{ token: 'validateEqual', attribute: true }, { token: 'reverse', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
54
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: EqualValidator, selector: "[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]", providers: [{ provide: NG_VALIDATORS, useExisting: forwardRef((() => EqualValidator)), multi: true }], ngImport: i0 });
|
|
55
55
|
}
|
|
56
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
56
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: EqualValidator, decorators: [{
|
|
57
57
|
type: Directive,
|
|
58
58
|
args: [{
|
|
59
59
|
selector: '[validateEqual][formControlName],[validateEqual][formControl],[validateEqual][ngModel]',
|
|
@@ -66,4 +66,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
66
66
|
type: Attribute,
|
|
67
67
|
args: ['reverse']
|
|
68
68
|
}] }] });
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXF1YWwtdmFsaWRhdG9yLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL3ZhbGlkYXRvcnMvZXF1YWwtdmFsaWRhdG9yLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFtQixhQUFhLEVBQWEsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFLM0UsTUFBTSxPQUFPLGNBQWM7SUFNcUI7SUFBb0Q7SUFMbkc7Ozs7T0FJRztJQUNILFlBQStDLGFBQXFCLEVBQStCLE9BQWU7UUFBbkUsa0JBQWEsR0FBYixhQUFhLENBQVE7UUFBK0IsWUFBTyxHQUFQLE9BQU8sQ0FBUTtJQUFJLENBQUM7SUFFdkg7O09BRUc7SUFDSCxJQUFZLFNBQVM7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDaEMsT0FBTyxJQUFJLENBQUMsT0FBTyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDL0MsQ0FBQztJQUVEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxDQUFrQjtRQUMxQix1Q0FBdUM7UUFDdkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQztRQUVoQixtQ0FBbUM7UUFDbkMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZDLHFCQUFxQjtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMzQyxPQUFPO2dCQUNOLGFBQWEsRUFBRSxLQUFLO2FBQ3BCLENBQUE7UUFDRixDQUFDO1FBRUQsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQUMsQ0FBQyxNQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU8sQ0FBQyxDQUFDLE1BQU07Z0JBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsaUNBQWlDO1FBQ2pDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMxQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUNYLGFBQWEsRUFBRSxLQUFLO2FBQ3BCLENBQUMsQ0FBQTtRQUNILENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNiLENBQUM7MEhBaERXLGNBQWMsa0JBTUgsZUFBZSw4QkFBMkMsU0FBUzs4R0FOOUUsY0FBYyxpSEFGZixDQUFDLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxDQUFDLGNBQWMsRUFBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7MkZBRXZGLGNBQWM7a0JBSjFCLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLHdGQUF3RjtvQkFDbEcsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLGVBQWUsRUFBQyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztpQkFDbkc7OzBCQU9hLFNBQVM7MkJBQUMsZUFBZTs7MEJBQWlDLFNBQVM7MkJBQUMsU0FBUyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEF0dHJpYnV0ZSwgRGlyZWN0aXZlLCBmb3J3YXJkUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgTkdfVkFMSURBVE9SUywgVmFsaWRhdG9yIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5ARGlyZWN0aXZlKHtcclxuXHRzZWxlY3RvcjogJ1t2YWxpZGF0ZUVxdWFsXVtmb3JtQ29udHJvbE5hbWVdLFt2YWxpZGF0ZUVxdWFsXVtmb3JtQ29udHJvbF0sW3ZhbGlkYXRlRXF1YWxdW25nTW9kZWxdJyxcclxuXHRwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVxdWFsVmFsaWRhdG9yKSwgbXVsdGk6IHRydWUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIEVxdWFsVmFsaWRhdG9yIGltcGxlbWVudHMgVmFsaWRhdG9yIHtcclxuXHQvKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIHZhbGlkYXRlRXF1YWwgXHJcblx0ICogQHBhcmFtIHJldmVyc2UgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IoQEF0dHJpYnV0ZSgndmFsaWRhdGVFcXVhbCcpIHB1YmxpYyB2YWxpZGF0ZUVxdWFsOiBzdHJpbmcsIEBBdHRyaWJ1dGUoJ3JldmVyc2UnKSBwdWJsaWMgcmV2ZXJzZTogc3RyaW5nKSB7IH1cclxuXHJcblx0LyoqXHJcblx0ICogSXMgcmV2ZXJzZVxyXG5cdCAqL1xyXG5cdHByaXZhdGUgZ2V0IGlzUmV2ZXJzZSgpIHtcclxuXHRcdGlmICghdGhpcy5yZXZlcnNlKSByZXR1cm4gZmFsc2U7XHJcblx0XHRyZXR1cm4gdGhpcy5yZXZlcnNlID09PSAndHJ1ZScgPyB0cnVlIDogZmFsc2U7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDaGVja3MgdGhlIGVxdWFsaXR5IG9mIHRoZSB2YWx1ZXNcclxuXHQgKiBAcGFyYW0gYyBcclxuXHQgKi9cclxuXHR2YWxpZGF0ZShjOiBBYnN0cmFjdENvbnRyb2wpOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgbnVsbCB7XHJcblx0XHQvKiBTZWxmIHZhbHVlIChlLmcuIHJldHlwZSBwYXNzd29yZCkgKi9cclxuXHRcdGxldCB2ID0gYy52YWx1ZTtcclxuXHJcblx0XHQvKiBDb250cm9sIHZhbHVlIChlLmcuIHBhc3N3b3JkKSAqL1xyXG5cdFx0bGV0IGUgPSBjLnJvb3QuZ2V0KHRoaXMudmFsaWRhdGVFcXVhbCk7XHJcblxyXG5cdFx0LyogVmFsdWUgbm90IGVxdWFsICovXHJcblx0XHRpZiAoZSAmJiB2ICE9PSBlLnZhbHVlICYmICF0aGlzLmlzUmV2ZXJzZSkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdHZhbGlkYXRlRXF1YWw6IGZhbHNlXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiBWYWx1ZSBlcXVhbCBhbmQgcmV2ZXJzZSAqL1xyXG5cdFx0aWYgKGUgJiYgdiA9PT0gZS52YWx1ZSAmJiB0aGlzLmlzUmV2ZXJzZSkge1xyXG5cdFx0XHRkZWxldGUgZS5lcnJvcnMhWyd2YWxpZGF0ZUVxdWFsJ107XHJcblx0XHRcdGlmICghT2JqZWN0LmtleXMoZS5lcnJvcnMhKS5sZW5ndGgpIGUuc2V0RXJyb3JzKG51bGwpO1xyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFZhbHVlIG5vdCBlcXVhbCBhbmQgcmV2ZXJzZSAqL1xyXG5cdFx0aWYgKGUgJiYgdiAhPT0gZS52YWx1ZSAmJiB0aGlzLmlzUmV2ZXJzZSkge1xyXG5cdFx0XHRlLnNldEVycm9ycyh7XHJcblx0XHRcdFx0dmFsaWRhdGVFcXVhbDogZmFsc2VcclxuXHRcdFx0fSlcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcbn0iXX0=
|
|
@@ -23,13 +23,13 @@ export class NativeElementInjectorDirective {
|
|
|
23
23
|
control.nativeElement = el.nativeElement;
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
27
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
26
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NativeElementInjectorDirective, deps: [{ token: i0.ElementRef }, { token: i1.NgControl }, { token: i1.NgModel, optional: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
27
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: NativeElementInjectorDirective, selector: "[ngModel], [formControl], [formControlName]", ngImport: i0 });
|
|
28
28
|
}
|
|
29
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
29
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: NativeElementInjectorDirective, decorators: [{
|
|
30
30
|
type: Directive,
|
|
31
31
|
args: [{ selector: '[ngModel], [formControl], [formControlName]' }]
|
|
32
32
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i1.NgControl }, { type: i1.NgModel, decorators: [{
|
|
33
33
|
type: Optional
|
|
34
34
|
}] }] });
|
|
35
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmF0aXZlLWVsZW1lbnQtaW5qZWN0b3IuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvZm9ybXMvdmFsaWRhdG9ycy9uYXRpdmUtZWxlbWVudC1pbmplY3Rvci5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7OztBQUdwRCxNQUFNLE9BQU8sOEJBQThCO0lBUW5CO0lBQXdCO0lBQXdDO0lBTnBGOzs7OztPQUtHO0lBQ0gsWUFBb0IsRUFBYyxFQUFVLE9BQWtCLEVBQXNCLEtBQWM7UUFBOUUsT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQUFVLFlBQU8sR0FBUCxPQUFPLENBQVc7UUFBc0IsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUM5RixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNKLEtBQUssQ0FBQyxPQUFRLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDMUQsQ0FBQzthQUFNLENBQUM7WUFDRSxPQUFRLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUM7UUFDcEQsQ0FBQztJQUNMLENBQUM7MEhBZFEsOEJBQThCOzhHQUE5Qiw4QkFBOEI7OzJGQUE5Qiw4QkFBOEI7a0JBRDFDLFNBQVM7bUJBQUMsRUFBRSxRQUFRLEVBQUUsNkNBQTZDLEVBQUU7OzBCQVNELFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIE9wdGlvbmFsIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgTmdDb250cm9sLCBOZ01vZGVsIH0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XHJcblxyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbbmdNb2RlbF0sIFtmb3JtQ29udHJvbF0sIFtmb3JtQ29udHJvbE5hbWVdJyB9KVxyXG5leHBvcnQgY2xhc3MgTmF0aXZlRWxlbWVudEluamVjdG9yRGlyZWN0aXZlIHtcclxuXHJcbiAgICAvKipcclxuICAgICAqIENvbnN0cnVjdG9yXHJcbiAgICAgKiBAcGFyYW0gZWwgXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBcclxuICAgICAqIEBwYXJhbSBtb2RlbCBcclxuICAgICAqL1xyXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBjb250cm9sOiBOZ0NvbnRyb2wsIEBPcHRpb25hbCgpIHByaXZhdGUgbW9kZWw6IE5nTW9kZWwpIHtcclxuICAgICAgICBpZiAoISFtb2RlbCkge1xyXG4gICAgICAgICAgICAoPGFueT5tb2RlbC5jb250cm9sKS5uYXRpdmVFbGVtZW50ID0gZWwubmF0aXZlRWxlbWVudDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAoPGFueT5jb250cm9sKS5uYXRpdmVFbGVtZW50ID0gZWwubmF0aXZlRWxlbWVudDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -64,10 +64,10 @@ export class UniqueValidatorDirective {
|
|
|
64
64
|
}
|
|
65
65
|
}));
|
|
66
66
|
}
|
|
67
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
68
|
-
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
67
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UniqueValidatorDirective, deps: [{ token: i1.HttpClient }, { token: 'unique', attribute: true }], target: i0.ɵɵFactoryTarget.Directive });
|
|
68
|
+
/** @nocollapse */ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.0.6", type: UniqueValidatorDirective, selector: "[unique]", inputs: { uniqueProperty: "uniqueProperty", uniqueId: "uniqueId", uniqueParams: "uniqueParams", invert: "invert" }, providers: [{ provide: NG_ASYNC_VALIDATORS, useExisting: UniqueValidatorDirective, multi: true }], ngImport: i0 });
|
|
69
69
|
}
|
|
70
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: UniqueValidatorDirective, decorators: [{
|
|
71
71
|
type: Directive,
|
|
72
72
|
args: [{
|
|
73
73
|
selector: '[unique]',
|
|
@@ -85,4 +85,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
85
85
|
}], invert: [{
|
|
86
86
|
type: Input
|
|
87
87
|
}] } });
|
|
88
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
88
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLXZhbGlkYXRvci1kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy92YWxpZGF0b3JzL3VuaXF1ZS12YWxpZGF0b3ItZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUQsT0FBTyxFQUFtQixtQkFBbUIsRUFBYSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sOEJBQThCLENBQUM7OztBQU1yRCxNQUFNLE9BQU8sd0JBQXdCO0lBNkJiO0lBQThDO0lBM0JsRTs7T0FFRztJQUVJLGNBQWMsQ0FBVTtJQUUvQjs7T0FFRztJQUVJLFFBQVEsQ0FBVTtJQUV6Qjs7T0FFRztJQUVJLFlBQVksR0FBUSxFQUFFLENBQUM7SUFFOUI7O09BRUc7SUFFSSxNQUFNLENBQVc7SUFFeEI7O09BRUc7SUFDSCxZQUFvQixJQUFnQixFQUE4QixNQUFjO1FBQTVELFNBQUksR0FBSixJQUFJLENBQVk7UUFBOEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUFJLENBQUM7SUFFckY7OztPQUdHO0lBQ0gsUUFBUSxDQUFDLE9BQXdCO1FBQzdCLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBRUQsaUJBQWlCO1FBQ2pCLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRSxLQUFLLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsY0FBZSxDQUFDLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztRQUV4RCxPQUFPLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQzthQUN2RSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDOUIsU0FBUyxDQUFDLENBQUMsS0FBYyxFQUFFLEVBQUU7WUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZixJQUFJLEtBQUssRUFBRSxDQUFDO29CQUNSLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEIsQ0FBQztxQkFBTSxDQUFDO29CQUNKLE9BQU8sQ0FBQyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUNqQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNKLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDVCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2xCLENBQUM7cUJBQU0sQ0FBQztvQkFDSixPQUFPLENBQUMsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztnQkFDakMsQ0FBQztZQUNMLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2hCLENBQUM7MEhBL0RRLHdCQUF3Qiw0Q0E2QmdCLFFBQVE7OEdBN0JoRCx3QkFBd0IsdUpBRnRCLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLHdCQUF3QixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQzs7MkZBRXhGLHdCQUF3QjtrQkFKcEMsU0FBUzttQkFBQztvQkFDUCxRQUFRLEVBQUUsVUFBVTtvQkFDcEIsU0FBUyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVywwQkFBMEIsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUM7aUJBQ3BHOzswQkE4QjBDLFNBQVM7MkJBQUMsUUFBUTt5Q0F2QmxELGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLFlBQVk7c0JBRGxCLEtBQUs7Z0JBT0MsTUFBTTtzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xyXG5pbXBvcnQgeyBBdHRyaWJ1dGUsIERpcmVjdGl2ZSwgSW5wdXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIE5HX0FTWU5DX1ZBTElEQVRPUlMsIFZhbGlkYXRvciB9IGZyb20gXCJAYW5ndWxhci9mb3Jtc1wiO1xyXG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tIFwiLi4vLi4vY29tbW9uL2Z1bmN0aW9ucy91dGlsc1wiO1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1t1bmlxdWVdJyxcclxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfQVNZTkNfVkFMSURBVE9SUywgdXNlRXhpc3Rpbmc6IFVuaXF1ZVZhbGlkYXRvckRpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfV1cclxufSlcclxuZXhwb3J0IGNsYXNzIFVuaXF1ZVZhbGlkYXRvckRpcmVjdGl2ZSBpbXBsZW1lbnRzIFZhbGlkYXRvciB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1bmlxdWVQcm9wZXJ0eTogc3RyaW5nXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdW5pcXVlUHJvcGVydHk/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1bmlxdWVJZDogbnVtYmVyXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgdW5pcXVlSWQ/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiB1bmlxdWVQYXJhbXM6IGFueVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHVuaXF1ZVBhcmFtczogYW55ID0ge307XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBpbnZlcnQ6IG51bWJlclxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGludmVydD86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb25zdHJ1Y3RvclxyXG4gICAgICovXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIEBBdHRyaWJ1dGUoJ3VuaXF1ZScpIHB1YmxpYyB1bmlxdWU6IHN0cmluZykgeyB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBNZXRob2QgdGhhdCBwZXJmb3JtcyBzeW5jaHJvbm91cyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGNvbnRyb2wuXHJcbiAgICAgKiBAcGFyYW0gY29udHJvbCBcclxuICAgICAqL1xyXG4gICAgdmFsaWRhdGUoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IG51bGwge1xyXG4gICAgICAgIGlmICghY29udHJvbC52YWx1ZSB8fCAhY29udHJvbC5kaXJ0eSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiByZXNvbHZlKG51bGwpKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEluaXQgcGFyYW1zICovXHJcbiAgICAgICAgdGhpcy51bmlxdWVQYXJhbXMgfHw9IHt9O1xyXG4gICAgICAgIHRoaXMudW5pcXVlUGFyYW1zLmlkIHx8PSB0aGlzLnVuaXF1ZUlkO1xyXG4gICAgICAgIHRoaXMudW5pcXVlUGFyYW1zW3RoaXMudW5pcXVlUHJvcGVydHkhXSA9IGNvbnRyb2wudmFsdWU7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZShyZXNvbHZlID0+XHJcbiAgICAgICAgICAgIHRoaXMuaHR0cC5nZXQodGhpcy51bmlxdWUsIHsgcGFyYW1zOiBVdGlscy5jbGVhbk9iamVjdCh0aGlzLnVuaXF1ZVBhcmFtcykgfSlcclxuICAgICAgICAgICAgICAgIC5waXBlKG1hcCgoeDogYW55KSA9PiB4LnZhbHVlKSlcclxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKHZhbHVlOiBib29sZWFuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmludmVydCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHsgbm90VW5pcXVlOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoeyBub3RVbmlxdWU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KSk7XHJcbiAgICB9XHJcbn0iXX0=
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';
|
|
2
2
|
import { NgModule } from '@angular/core';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
export { GenericService } from './services/generic.service';
|
|
5
5
|
export class VdHttpModule {
|
|
6
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7
|
-
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
8
|
-
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
6
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdHttpModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
7
|
+
/** @nocollapse */ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: VdHttpModule });
|
|
8
|
+
/** @nocollapse */ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdHttpModule, providers: [provideHttpClient(withInterceptorsFromDi())] });
|
|
9
9
|
}
|
|
10
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: VdHttpModule, decorators: [{
|
|
11
11
|
type: NgModule,
|
|
12
|
-
args: [{
|
|
13
|
-
imports: [
|
|
14
|
-
HttpClientModule,
|
|
15
|
-
],
|
|
16
|
-
}]
|
|
12
|
+
args: [{ imports: [], providers: [provideHttpClient(withInterceptorsFromDi())] }]
|
|
17
13
|
}] });
|
|
18
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaHR0cC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9odHRwL2h0dHAubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2pGLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRXpDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUc1RCxNQUFNLE9BQU8sWUFBWTswSEFBWixZQUFZOzJIQUFaLFlBQVk7MkhBQVosWUFBWSxhQURXLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDOzsyRkFDcEUsWUFBWTtrQkFEeEIsUUFBUTttQkFBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUMsc0JBQXNCLEVBQUUsQ0FBQyxDQUFDLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwcm92aWRlSHR0cENsaWVudCwgd2l0aEludGVyY2VwdG9yc0Zyb21EaSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmV4cG9ydCB7IEdlbmVyaWNTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UnO1xyXG5cclxuQE5nTW9kdWxlKHsgaW1wb3J0czogW10sIHByb3ZpZGVyczogW3Byb3ZpZGVIdHRwQ2xpZW50KHdpdGhJbnRlcmNlcHRvcnNGcm9tRGkoKSldIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEh0dHBNb2R1bGUgeyB9Il19
|
|
@@ -322,4 +322,4 @@ export class GenericService {
|
|
|
322
322
|
console.debug(message);
|
|
323
323
|
}
|
|
324
324
|
}
|
|
325
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvaHR0cC9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0MsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckksT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7SUFpQlA7SUFmbkI7O09BRUc7SUFDSSxJQUFJLENBQWE7SUFFeEI7O09BRUc7SUFDSSxJQUFJLEdBQTJCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRW5FOzs7O09BSUc7SUFDSCxZQUFtQixRQUFpQjtRQUFqQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFJLEVBQW1CLEVBQUUsTUFBc0IsRUFBRSxPQUFnQixFQUFFLGNBQXVCLElBQUk7UUFDdkcsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUk7YUFDckIsR0FBRyxDQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJ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LENBQUM7WUFFOUQsa0NBQWtDO1lBQ2xDLEtBQUssYUFBYSxDQUFDLGNBQWM7Z0JBQ2hDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pFLE9BQU8sU0FBUyxJQUFJLENBQUMsSUFBSSxRQUFRLFdBQVcsYUFBYSxDQUFDO1lBRTNELHNCQUFzQjtZQUN0QixLQUFLLGFBQWEsQ0FBQyxRQUFRO2dCQUMxQixPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksNEJBQTRCLENBQUM7WUFFdkQ7Z0JBQ0MsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLDhCQUE4QixLQUFLLENBQUMsSUFBSSxHQUFHLENBQUM7U0FDdEU7SUFDRixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLFlBQVksQ0FBQyxPQUFlO1FBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEIsQ0FBQztDQUdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cEV2ZW50VHlwZSwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsIEh0dHBSZXF1ZXN0IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgY2F0Y2hFcnJvciwgbWFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBVdGlscyB9IGZyb20gJy4uLy4uL2NvbW1vbi9mdW5jdGlvbnMvdXRpbHMnO1xyXG5pbXBvcnQgeyBTZXJ2aWNlTG9jYXRvciB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9zZXJ2aWNlLWxvY2F0b3InO1xyXG5cclxuZXhwb3J0IGNsYXNzIEdlbmVyaWNTZXJ2aWNlPFQgZXh0ZW5kcyBhbnk+IHtcclxuXHJcblx0LyoqXHJcblx0ICogSHR0cCBjbGllbnRcclxuXHQgKi9cclxuXHRwdWJsaWMgaHR0cDogSHR0cENsaWVudDtcclxuXHJcblx0LyoqXHJcblx0ICogTGlzdCBvZiBlbnRpdGllc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBsaXN0OiBCZWhhdmlvclN1YmplY3Q8YW55W10+ID0gbmV3IEJlaGF2aW9yU3ViamVjdCg8YW55PltdKTtcclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gaHR0cCBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3RvcihwdWJsaWMgZW5kcG9pbnQ/OiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuaHR0cCA9IFNlcnZpY2VMb2NhdG9yLmdldFNlcnZpY2UoSHR0cENsaWVudCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGEgc2luZ2xlIGVudGl0eVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGVudGl0eSBvciByZWxhdGl2ZSBwYXRoXHJcblx0ICogQHBhcmFtIHBhcmFtcyBBZGRzIHF1ZXJ5IHBhcmFtcyB0byB0aGUgcmVxdWVzdFxyXG5cdCAqIEBwYXJhbSBoZWFkZXJzIEFkZHMgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXQ8VD4oaWQ6IHN0cmluZyB8IG51bWJlciwgcGFyYW1zPzogT2JqZWN0IHwgbnVsbCwgaGVhZGVycz86IE9iamVjdCwgaGFuZGxlRXJyb3I6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCByZXF1ZXN0ID0gdGhpcy5odHRwXHJcblx0XHRcdC5nZXQ8VD4oYCR7dGhpcy5lbmRwb2ludH0vJHtpZH1gLCB7IHBhcmFtczogVXRpbHMudG9IdHRwUGFyYW1zKHBhcmFtcyksIGhlYWRlcnM6IHRoaXMudG9IdHRwSGVhZGVycyhoZWFkZXJzKSB9KTtcclxuXHJcblx0XHQvKiBIYW5kbGUgZXJyb3IgKi9cclxuXHRcdGlmIChoYW5kbGVFcnJvcikge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcignZ2V0JykpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVxdWVzdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvdW50cyBlbnRpdGllc1xyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBwYXJhbXMgQWRkcyBxdWVyeSBwYXJhbXMgdG8gdGhlIHJlcXVlc3RcclxuXHQgKiBAcGFyYW0gcGF0aCBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIGFjdGlvblxyXG5cdCAqIEBwYXJhbSBoZWFkZXJzIEFkZHMgaGVhZGVycyB0byB0aGUgcmVxdWVzdFx0IFxyXG5cdCAqIEBwYXJhbSBoYW5kbGVFcnJvciBIYW5kbGUgZXJyb3JzXHJcblx0ICovXHJcblx0cHVibGljIGNvdW50KHBhcmFtcz86IE9iamVjdCwgcGF0aD86IHN0cmluZyB8IG51bGwsIGhlYWRlcnM/OiBPYmplY3QsIGhhbmRsZUVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8bnVtYmVyPiB7XHJcblx0XHRsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG5cdFx0XHQuZ2V0PGFueT4oYCR7dGhpcy5lbmRwb2ludH0ke3BhdGggPyBwYXRoIDogJy9jb3VudCd9YCwgeyBwYXJhbXM6IFV0aWxzLnRvSHR0cFBhcmFtcyhwYXJhbXMpLCBoZWFkZXJzOiB0aGlzLnRvSHR0cEhlYWRlcnMoaGVhZGVycykgfSk7XHJcblxyXG5cdFx0LyogSGFuZGxlIGVycm9yICovXHJcblx0XHRpZiAoaGFuZGxlRXJyb3IpIHtcclxuXHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoJ2NvdW50JykpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVxdWVzdC5waXBlKG1hcCh4ID0+IHsgcmV0dXJuIDxudW1iZXI+eC52YWx1ZSB9KSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGEgbGlzdCBvZiBlbnRpdGllcy5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gcGFyYW1zIE9wdGlvbmFsLiBBZGRzIHF1ZXJ5IHBhcmFtcyB0byB0aGUgcmVxdWVzdC5cclxuXHQgKiBAcGFyYW0gcGF0aCBPcHRpb25hbC4gQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBhY3Rpb24uXHJcblx0ICogQHBhcmFtIGhlYWRlcnMgT3B0aW9uYWwuIEFkZHMgaGVhZGVycyB0byB0aGUgcmVxdWVzdC5cclxuXHQgKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHdpdGggdGhlIHJlc3BvbnNlIGRhdGEuXHJcblx0ICovXHJcblx0cHVibGljIGdldExpc3QocGFyYW1zPzogSHR0cFBhcmFtcyB8IE9iamVjdCB8IG51bGwsIHBhdGg/OiBzdHJpbmcgfCBudWxsLCBoZWFkZXJzPzogT2JqZWN0IHwgbnVsbCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5odHRwXHJcblx0XHRcdC5nZXQoYCR7dGhpcy5lbmRwb2ludH0ke3BhdGggPyBwYXRoIDogJyd9YCwgeyBwYXJhbXM6IHBhcmFtcyBpbnN0YW5jZW9mIEh0dHBQYXJhbXMgPyBwYXJhbXMgOiBVdGlscy50b0h0dHBQYXJhbXMocGFyYW1zKSwgaGVhZGVyczogdGhpcy50b0h0dHBIZWFkZXJzKGhlYWRlcnMpIH0pXHJcblx0XHRcdC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcignZ2V0TGlzdCcpKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMb2FkcyBkYXRhXHJcblx0ICogQHBhcmFtIHBhcmFtcyBBZGRzIHF1ZXJ5IHBhcmFtcyB0byB0aGUgcmVxdWVzdFxyXG5cdCAqIEBwYXJhbSBwYXRoIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uXHJcblx0ICogQHBhcmFtIGhlYWRlcnMgQWRkcyBoZWFkZXJzIHRvIHRoZSByZXF1ZXN0XHJcblx0ICovXHJcblx0cHVibGljIGxvYWRMaXN0KHBhcmFtcz86IE9iamVjdCB8IG51bGwsIHBhdGg/OiBzdHJpbmcgfCBudWxsLCBoZWFkZXJzPzogT2JqZWN0KTogdm9pZCB7XHJcblx0XHR0aGlzLmdldExpc3QocGFyYW1zLCBwYXRoLCBoZWFkZXJzKVxyXG5cdFx0XHQuc3Vic2NyaWJlKHggPT4gdGhpcy5saXN0Lm5leHQoeCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyByZXN1bHQgbGlzdCBhcyBPYnNlcnZhYmxlXHJcblx0ICovXHJcblx0cHVibGljIGdldExpc3RBc09ic2VydmFibGUoKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdHJldHVybiB0aGlzLmxpc3QuYXNPYnNlcnZhYmxlKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDcmVhdGVzIGFuIGVudGl0eVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgVGhlIGVudGl0eSB0byBjcmVhdGVcclxuXHQgKiBAcGFyYW0gcGF0aCBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIGFjdGlvblxyXG5cdCAqIEBwYXJhbSBodHRwT3B0aW9ucyBBZGRpdGlvbmFsIGh0dHAgb3B0aW9ucywgbGlrZSBoZWFkZXJzIGFuZCBzbyBvbiBcclxuXHQgKiBAcGFyYW0gaGFuZGxlRXJyb3IgSGFuZGxlIGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjcmVhdGU8VD4oZW50aXR5OiBhbnksIHBhdGg/OiBzdHJpbmcgfCBudWxsLCBodHRwT3B0aW9ucz86IE9iamVjdCwgaGFuZGxlRXJyb3I6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxUPiB7XHJcblx0XHRsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG5cdFx0XHQucG9zdDxUPihgJHt0aGlzLmVuZHBvaW50fSR7cGF0aCA/IHBhdGggOiAnJ31gLCBlbnRpdHksIGh0dHBPcHRpb25zKTtcclxuXHJcblx0XHQvKiBIYW5kbGUgZXJyb3IgKi9cclxuXHRcdGlmIChoYW5kbGVFcnJvcikge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcignY3JlYXRlJykpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVxdWVzdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwZGF0ZXMgYW4gZW50aXR5XHJcblx0ICogXHJcblx0ICogQHBhcmFtIGVudGl0eSBUaGUgZW50aXR5IHRvIHVwZGF0ZVxyXG5cdCAqIEBwYXJhbSBwYXRoIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uXHJcblx0ICogQHBhcmFtIGh0dHBPcHRpb25zIEFkZGl0aW9uYWwgaHR0cCBvcHRpb25zLCBsaWtlIGhlYWRlcnMgYW5kIHNvIG9uIFxyXG5cdCAqIEBwYXJhbSBoYW5kbGVFcnJvciBIYW5kbGUgZXJyb3JzXHJcblx0ICovXHJcblx0cHVibGljIHVwZGF0ZShpZDogc3RyaW5nIHwgbnVtYmVyLCBlbnRpdHk6IGFueSwgcGF0aD86IHN0cmluZyB8IG51bGwsIGh0dHBPcHRpb25zPzogT2JqZWN0LCBoYW5kbGVFcnJvcjogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0bGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBcclxuXHRcdFx0LnB1dDxUPihgJHt0aGlzLmVuZHBvaW50fSR7cGF0aCA/IHBhdGggOiAnJ30vJHtpZH1gLCBlbnRpdHksIGh0dHBPcHRpb25zKTtcclxuXHJcblx0XHQvKiBIYW5kbGUgZXJyb3IgKi9cclxuXHRcdGlmIChoYW5kbGVFcnJvcikge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcigndXBkYXRlJykpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVxdWVzdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFBhdGNoZXMgYW4gZW50aXR5XHJcblx0ICogXHJcblx0ICogQHBhcmFtIGlkIGlkIFRoZSBpZCBvZiB0aGUgaXRlbSB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSBib2R5IFRoZSBib2R5XHJcblx0ICogQHBhcmFtIHBhdGggQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBhY3Rpb25cclxuXHQgKiBAcGFyYW0gaHR0cE9wdGlvbnMgQWRkaXRpb25hbCBodHRwIG9wdGlvbnMsIGxpa2UgaGVhZGVycyBhbmQgc28gb24gXHJcblx0ICogQHBhcmFtIGhhbmRsZUVycm9yIEhhbmRsZSBlcnJvcnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGF0Y2goaWQ6IHN0cmluZyB8IG51bWJlciwgYm9keTogYW55LCBwYXRoPzogc3RyaW5nIHwgbnVsbCwgaHR0cE9wdGlvbnM/OiBPYmplY3QsIGhhbmRsZUVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG5cdFx0XHQucGF0Y2g8VD4oYCR7dGhpcy5lbmRwb2ludH0ke3BhdGggPyBwYXRoIDogJyd9LyR7aWR9YCwgYm9keSwgaHR0cE9wdGlvbnMpO1xyXG5cclxuXHRcdC8qIEhhbmRsZSBlcnJvciAqL1xyXG5cdFx0aWYgKGhhbmRsZUVycm9yKSB7XHJcblx0XHRcdHJlcXVlc3QgPSByZXF1ZXN0LnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKCdwYXRjaCcpKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlcXVlc3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIG11bHRpcGxlIGVudGl0aWVzXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGlkcyBUaGUgaWRzIG9mIHRoZSBpdGVtcyB0byBwYXRjaFxyXG5cdCAqIEBwYXJhbSBib2R5IFRoZSBib2R5XHJcblx0ICogQHBhcmFtIHBhdGggQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBhY3Rpb25cclxuXHQgKiBAcGFyYW0gaHR0cE9wdGlvbnMgQWRkaXRpb25hbCBodHRwIG9wdGlvbnMsIGxpa2UgaGVhZGVycyBhbmQgc28gb24gXHJcblx0ICogQHBhcmFtIGhhbmRsZUVycm9yIEhhbmRsZSBlcnJvcnNcclxuXHQgKi9cclxuXHRwdWJsaWMgcGF0Y2hMaXN0KGlkczogc3RyaW5nW10gfCBudW1iZXJbXSwgYm9keTogYW55LCBwYXRoPzogc3RyaW5nIHwgbnVsbCwgaHR0cE9wdGlvbnM/OiBPYmplY3QsIGhhbmRsZUVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG5cdFx0XHQucGF0Y2g8VD4oYCR7dGhpcy5lbmRwb2ludH0ke3BhdGggPyBwYXRoIDogJyd9YCwgYm9keSwgT2JqZWN0LmFzc2lnbihodHRwT3B0aW9ucyB8fCB7fSwgeyBwYXJhbXM6IFV0aWxzLnRvSHR0cFBhcmFtcyh7IGlkczogaWRzIH0pIH0pKTtcclxuXHJcblx0XHQvKiBIYW5kbGUgZXJyb3IgKi9cclxuXHRcdGlmIChoYW5kbGVFcnJvcikge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcigncGF0Y2gnKSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXF1ZXN0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBhbiBlbnRpdHkuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGlkIFRoZSBpZCBvZiB0aGUgaXRlbSB0byBkZWxldGVcclxuXHQgKiBAcGFyYW0gcGF0aCBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIGFjdGlvblxyXG5cdCAqIEBwYXJhbSBodHRwT3B0aW9ucyBBZGRpdGlvbmFsIGh0dHAgb3B0aW9ucywgbGlrZSBoZWFkZXJzIGFuZCBzbyBvbiAgXHJcblx0ICogQHBhcmFtIGhhbmRsZUVycm9yIEhhbmRsZSBlcnJvcnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlKGlkOiBzdHJpbmcgfCBudW1iZXIsIHBhdGg/OiBzdHJpbmcgfCBudWxsLCBodHRwT3B0aW9ucz86IE9iamVjdCwgaGFuZGxlRXJyb3I6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCByZXF1ZXN0ID0gdGhpcy5odHRwXHJcblx0XHRcdC5kZWxldGUoYCR7dGhpcy5lbmRwb2ludH0ke3BhdGggPyBwYXRoIDogJyd9LyR7aWR9YCwgaHR0cE9wdGlvbnMpO1xyXG5cclxuXHRcdC8qIEhhbmRsZSBlcnJvciAqL1xyXG5cdFx0aWYgKGhhbmRsZUVycm9yKSB7XHJcblx0XHRcdHJlcXVlc3QgPSByZXF1ZXN0LnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKCdkZWxldGUnKSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXF1ZXN0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRGVsZXRlcyBtdWx0aXBsZSBlbnRpdGllcy5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gaWRzIFRoZSBpZHMgb2YgdGhlIGl0ZW1zIHRvIGRlbGV0ZVxyXG5cdCAqIEBwYXJhbSBwYXRoIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uXHJcblx0ICogQHBhcmFtIGh0dHBPcHRpb25zIEFkZGl0aW9uYWwgaHR0cCBvcHRpb25zLCBsaWtlIGhlYWRlcnMgYW5kIHNvIG9uICBcclxuXHQgKiBAcGFyYW0gaGFuZGxlRXJyb3IgSGFuZGxlIGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkZWxldGVMaXN0KGlkczogc3RyaW5nW10gfCBudW1iZXJbXSwgcGF0aD86IHN0cmluZyB8IG51bGwsIGh0dHBPcHRpb25zPzogT2JqZWN0LCBoYW5kbGVFcnJvcjogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0bGV0IHJlcXVlc3QgPSB0aGlzLmh0dHAuZGVsZXRlKGAke3RoaXMuZW5kcG9pbnR9JHtwYXRoID8gcGF0aCA6ICcnfWAsIE9iamVjdC5hc3NpZ24oaHR0cE9wdGlvbnMgfHwge30sIHsgcGFyYW1zOiBVdGlscy50b0h0dHBQYXJhbXMoeyBpZHM6IGlkcyB9KSB9KSk7XHJcblxyXG5cdFx0LyogSGFuZGxlIGVycm9yICovXHJcblx0XHRpZiAoaGFuZGxlRXJyb3IpIHtcclxuXHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoJ2RlbGV0ZUxpc3QnKSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXF1ZXN0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRG93bmxvYWRzIGEgZmlsZVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBwYXRoIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uXHJcblx0ICogQHBhcmFtIHBhcmFtcyBTb21lIHF1ZXJ5IHBhcmFtc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBkb3dubG9hZChwYXRoOiBzdHJpbmcsIHBhcmFtcz86IE9iamVjdCwgaGFuZGxlRXJyb3I6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCByZXF1ZXN0ID0gdGhpcy5odHRwXHJcblx0XHRcdC5nZXQoYCR7dGhpcy5lbmRwb2ludH0vJHtwYXRoID8gcGF0aCA6ICdkb3dubG9hZCd9YCwgeyBwYXJhbXM6IFV0aWxzLnRvSHR0cFBhcmFtcyhwYXJhbXMpLCByZXNwb25zZVR5cGU6ICdhcnJheWJ1ZmZlcicsIG9ic2VydmU6ICdyZXNwb25zZScgfSlcclxuXHRcdFx0LnBpcGUobWFwKHggPT4geyByZXR1cm4geyBkYXRhOiB4LmJvZHksIGZpbGVuYW1lOiB0aGlzLmdldEZpbGVOYW1lRnJvbUhlYWRlcnMoeC5oZWFkZXJzKSB9IH0pKTtcclxuXHJcblx0XHQvKiBIYW5kbGUgZXJyb3IgKi9cclxuXHRcdGlmIChoYW5kbGVFcnJvcikge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5waXBlPGFueT4oY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKCdkb3dubG9hZCcpKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlcXVlc3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBEdXBsaWNhdGVzIGEgcmVjb3JkXHJcblx0ICogQHBhcmFtIGlkIFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBkdXBsaWNhdGUoaWQ6IG51bWJlcik6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5jcmVhdGUobnVsbCwgYC9kdXBsaWNhdGUvJHtpZH1gKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwbG9hZHMgYSBmaWxlXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgdG8gdXBsb2FkXHJcblx0ICogQHBhcmFtIHBhdGggQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBhY3Rpb25cclxuXHQgKi9cclxuXHRwdWJsaWMgdXBsb2FkKGZpbGU6IEZpbGUsIHBhdGg6IHN0cmluZyA9ICd1cGxvYWQnLCBleHRyYURhdGE/OiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0LyogQ3JlYXRlcyBmb3JtIGRhdGEgb2JqZWN0ICovXHJcblx0XHRjb25zdCBmb3JtRGF0YTogRm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuXHJcblx0XHQvKiBBZGQgdGhlIGZpbGUgdG8gdGhlIGZvcm0gZGF0YSAqL1xyXG5cdFx0Zm9ybURhdGEuYXBwZW5kKCdmaWxlJywgZmlsZSwgZmlsZS5uYW1lKTtcclxuXHJcblx0XHQvKiBJdGVyYXRlIGFuZCBzZXQgb3RoZXIgZm9ybSBkYXRhICovXHJcblx0XHRpZiAoZXh0cmFEYXRhKSB7XHJcblx0XHRcdGZvciAobGV0IGtleSBpbiBleHRyYURhdGEpIHtcclxuXHRcdFx0XHRmb3JtRGF0YS5hcHBlbmQoa2V5LCBleHRyYURhdGFba2V5XSlcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC8qIFNldCB0cnVlIHRvIHJlcG9ydFByb2dyZXNzIHRvIGVuYWJsZSB0cmFja2luZyBvZiBwcm9ncmVzcyBldmVudHMgKi9cclxuXHRcdGNvbnN0IHJlcSA9IG5ldyBIdHRwUmVxdWVzdCgnUE9TVCcsIGAke3RoaXMuZW5kcG9pbnR9LyR7cGF0aCA/IHBhdGggOiAndXBsb2FkJ31gLCBmb3JtRGF0YSwge1xyXG5cdFx0XHRyZXBvcnRQcm9ncmVzczogdHJ1ZVxyXG5cdFx0fSk7XHJcblxyXG5cdFx0LypcclxuXHRcdFRoZSBgSHR0cENsaWVudC5yZXF1ZXN0YCBBUEkgcHJvZHVjZXMgYSByYXcgZXZlbnQgc3RyZWFtXHJcblx0XHR3aGljaCBpbmNsdWRlcyBzdGFydCAoc2VudCksIHByb2dyZXNzLCBhbmQgcmVzcG9uc2UgZXZlbnRzLlxyXG5cdFx0Ki9cclxuXHRcdHJldHVybiB0aGlzLmh0dHAucmVxdWVzdChyZXEpO1xyXG5cdH07XHJcblxyXG5cdC8vLyNyZWdpb24gSGVscGVyc1xyXG5cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0IE9iamVjdCB0byBGcm9tRGF0YVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBib2R5XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHRvRm9ybURhdGEoYm9keTogYW55KTogRm9ybURhdGEge1xyXG5cdFx0aWYgKCFib2R5KSB7XHJcblx0XHRcdHJldHVybiBuZXcgRm9ybURhdGEoKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYm9keSlcclxuXHRcdFx0LmZpbHRlcihrZXkgPT4gYm9keVtrZXldICE9IG51bGwgJiYgYm9keVtrZXldICE9ICcnKVxyXG5cdFx0XHQucmVkdWNlKChwLCBrZXkpID0+IHsgcC5hcHBlbmQoa2V5LCBib2R5W2tleV0pOyByZXR1cm4gcCB9LCBuZXcgRm9ybURhdGEoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb252ZXJ0IE9iamVjdCB0byBIdHRwSGVhZGVyc1xyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBib2R5XHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHRvSHR0cEhlYWRlcnMoYm9keT86IE9iamVjdCB8IG51bGwpOiBIdHRwSGVhZGVycyB7XHJcblx0XHRpZiAoIWJvZHkpIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhib2R5KVxyXG5cdFx0XHQuZmlsdGVyKGtleSA9PiAoYm9keSBhcyBhbnkpW2tleV0gIT0gbnVsbCAmJiAoYm9keSBhcyBhbnkpW2tleV0gIT0gJycpXHJcblx0XHRcdC5yZWR1Y2UoKHAsIGtleSkgPT4gcC5zZXQoa2V5LCAoYm9keSBhcyBhbnkpW2tleV0pLCBuZXcgSHR0cEhlYWRlcnMoKSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIGZpbGUgbmFtZSBmcm9tIEh0dHBoZWFkZXJzOiBDb250ZW50LURpc3Bvc2l0aW9uXHJcblx0ICogQHBhcmFtIGRpc3Bvc2l0aW9uIFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBnZXRGaWxlTmFtZUZyb21IZWFkZXJzKGhlYWRlcnM6IEh0dHBIZWFkZXJzKTogc3RyaW5nIHtcclxuXHRcdHZhciBkaXNwb3NpdGlvbiA9IGhlYWRlcnMuZ2V0KCdjb250ZW50LWRpc3Bvc2l0aW9uJyk7XHJcblx0XHRpZiAoZGlzcG9zaXRpb24gJiYgZGlzcG9zaXRpb24uaW5kZXhPZignYXR0YWNobWVudCcpICE9PSAtMSkge1xyXG5cdFx0XHR2YXIgbWF0Y2hlcyA9IC9maWxlbmFtZVteOz1cXG5dKj0oKFsnXCJdKS4qP1xcMnxbXjtcXG5dKikvLmV4ZWMoZGlzcG9zaXRpb24pO1xyXG5cdFx0XHRpZiAobWF0Y2hlcyAhPSBudWxsICYmIG1hdGNoZXNbMV0pIHtcclxuXHRcdFx0XHRyZXR1cm4gbWF0Y2hlc1sxXS5yZXBsYWNlKC9bJ1wiXS9nLCAnJyk7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gXCJcIjtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJldHVybnMgYSBmdW5jdGlvbiB0aGF0IGhhbmRsZXMgSHR0cCBvcGVyYXRpb24gZmFpbHVyZXMuXHJcblx0ICogVGhpcyBlcnJvciBoYW5kbGVyIGxldHMgdGhlIGFwcCBjb250aW51ZSB0byBydW4gYXMgaWYgbm8gZXJyb3Igb2NjdXJyZWQuXHJcblx0ICogQHBhcmFtIG9wZXJhdGlvbiAtIG5hbWUgb2YgdGhlIG9wZXJhdGlvbiB0aGF0IGZhaWxlZFxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBoYW5kbGVFcnJvcihvcGVyYXRpb24gPSAnb3BlcmF0aW9uJykge1xyXG5cdFx0cmV0dXJuIChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpOiBPYnNlcnZhYmxlPGFueT4gPT4ge1xyXG5cdFx0XHRjb25zb2xlLmxvZyhlcnJvcik7XHJcblx0XHRcdGNvbnN0IG1lc3NhZ2UgPSAoZXJyb3IuZXJyb3IgaW5zdGFuY2VvZiBFcnJvckV2ZW50KSA/IGVycm9yLmVycm9yLm1lc3NhZ2UgOiBgc2VydmVyIHJldHVybmVkIGNvZGUgJHtlcnJvci5zdGF0dXN9IHdpdGggYm9keSBcIiR7ZXJyb3IuZXJyb3J9XCJgO1xyXG5cdFx0XHR0aHJvdyBuZXcgRXJyb3IoYCR7b3BlcmF0aW9ufSBmYWlsZWQ6ICR7bWVzc2FnZX1gKTtcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm4gZGlzdGluY3QgbWVzc2FnZSBmb3Igc2VudCwgdXBsb2FkIHByb2dyZXNzLCAmIHJlc3BvbnNlIGV2ZW50c1xyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgcmVzcG9uc2UgZXZlbnRcclxuXHQgKiBAcGFyYW0gZmlsZSBUaGUgZmlsZSBiZWVpbmcgdXBsb2FkZWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0RXZlbnRNZXNzYWdlKGV2ZW50OiBIdHRwRXZlbnQ8YW55PiwgZmlsZTogRmlsZSkge1xyXG5cdFx0c3dpdGNoIChldmVudC50eXBlKSB7XHJcblx0XHRcdC8qIFVwbG9hZCBzdGFydGVkICovXHJcblx0XHRcdGNhc2UgSHR0cEV2ZW50VHlwZS5TZW50OlxyXG5cdFx0XHRcdHJldHVybiBgVXBsb2FkaW5nIGZpbGUgXCIke2ZpbGUubmFtZX1cIiBvZiBzaXplICR7ZmlsZS5zaXplfS5gO1xyXG5cclxuXHRcdFx0LyogQ29tcHV0ZSBhbmQgc2hvdyB0aGUgJSBkb25lOiAqL1xyXG5cdFx0XHRjYXNlIEh0dHBFdmVudFR5cGUuVXBsb2FkUHJvZ3Jlc3M6XHJcblx0XHRcdFx0Y29uc3QgcGVyY2VudERvbmUgPSBNYXRoLnJvdW5kKDEwMCAqIGV2ZW50LmxvYWRlZCAvIChldmVudD8udG90YWwgPz8gMSkpO1xyXG5cdFx0XHRcdHJldHVybiBgRmlsZSBcIiR7ZmlsZS5uYW1lfVwiIGlzICR7cGVyY2VudERvbmV9JSB1cGxvYWRlZC5gO1xyXG5cclxuXHRcdFx0LyogVXBsb2FkIGNvbXBsZXRlZCAqL1xyXG5cdFx0XHRjYXNlIEh0dHBFdmVudFR5cGUuUmVzcG9uc2U6XHJcblx0XHRcdFx0cmV0dXJuIGBGaWxlIFwiJHtmaWxlLm5hbWV9XCIgd2FzIGNvbXBsZXRlbHkgdXBsb2FkZWQhYDtcclxuXHJcblx0XHRcdGRlZmF1bHQ6XHJcblx0XHRcdFx0cmV0dXJuIGBGaWxlIFwiJHtmaWxlLm5hbWV9XCIgc3VycHJpc2luZyB1cGxvYWQgZXZlbnQ6ICR7ZXZlbnQudHlwZX0uYDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNob3dzIHVwbG9hZCBwcm9ncmVzcy5cclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gbWVzc2FnZSBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgc2hvd1Byb2dyZXNzKG1lc3NhZ2U6IHN0cmluZykge1xyXG5cdFx0Y29uc29sZS5kZWJ1ZyhtZXNzYWdlKTtcclxuXHR9XHJcblxyXG5cdC8vI2VuZHJlZ2lvblxyXG59Il19
|
|
325
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvaHR0cC9zZXJ2aWNlcy9nZW5lcmljLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBZ0MsYUFBYSxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckksT0FBTyxFQUFFLGVBQWUsRUFBYyxNQUFNLE1BQU0sQ0FBQztBQUNuRCxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFFdkUsTUFBTSxPQUFPLGNBQWM7SUFpQlA7SUFmbkI7O09BRUc7SUFDSSxJQUFJLENBQWE7SUFFeEI7O09BRUc7SUFDSSxJQUFJLEdBQTJCLElBQUksZUFBZSxDQUFNLEVBQUUsQ0FBQyxDQUFDO0lBRW5FOzs7O09BSUc7SUFDSCxZQUFtQixRQUFpQjtRQUFqQixhQUFRLEdBQVIsUUFBUSxDQUFTO1FBQ25DLElBQUksQ0FBQyxJQUFJLEdBQUcsY0FBYyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFJLEVBQW1CLEVBQUUsTUFBc0IsRUFBRSxPQUFnQixFQUFFLGNBQXVCLElBQUk7UUFDdkcsSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUk7YUFDckIsR0FBRyxDQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxJQUFJ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LENBQUMsS0FBcUIsRUFBRSxJQUFVO1FBQzFELFFBQVEsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3BCLG9CQUFvQjtZQUNwQixLQUFLLGFBQWEsQ0FBQyxJQUFJO2dCQUN0QixPQUFPLG1CQUFtQixJQUFJLENBQUMsSUFBSSxhQUFhLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQztZQUU5RCxrQ0FBa0M7WUFDbEMsS0FBSyxhQUFhLENBQUMsY0FBYztnQkFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEtBQUssRUFBRSxLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDekUsT0FBTyxTQUFTLElBQUksQ0FBQyxJQUFJLFFBQVEsV0FBVyxhQUFhLENBQUM7WUFFM0Qsc0JBQXNCO1lBQ3RCLEtBQUssYUFBYSxDQUFDLFFBQVE7Z0JBQzFCLE9BQU8sU0FBUyxJQUFJLENBQUMsSUFBSSw0QkFBNEIsQ0FBQztZQUV2RDtnQkFDQyxPQUFPLFNBQVMsSUFBSSxDQUFDLElBQUksOEJBQThCLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQztRQUN2RSxDQUFDO0lBQ0YsQ0FBQztJQUVEOzs7O09BSUc7SUFDTyxZQUFZLENBQUMsT0FBZTtRQUNyQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3hCLENBQUM7Q0FHRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwRXZlbnQsIEh0dHBFdmVudFR5cGUsIEh0dHBIZWFkZXJzLCBIdHRwUGFyYW1zLCBIdHRwUmVxdWVzdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi8uLi9jb21tb24vZnVuY3Rpb25zL3V0aWxzJztcclxuaW1wb3J0IHsgU2VydmljZUxvY2F0b3IgfSBmcm9tICcuLi8uLi9jb21tb24vc2VydmljZXMvc2VydmljZS1sb2NhdG9yJztcclxuXHJcbmV4cG9ydCBjbGFzcyBHZW5lcmljU2VydmljZTxUIGV4dGVuZHMgYW55PiB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEh0dHAgY2xpZW50XHJcblx0ICovXHJcblx0cHVibGljIGh0dHA6IEh0dHBDbGllbnQ7XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpc3Qgb2YgZW50aXRpZXNcclxuXHQgKi9cclxuXHRwdWJsaWMgbGlzdDogQmVoYXZpb3JTdWJqZWN0PGFueVtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3QoPGFueT5bXSk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGh0dHAgXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IocHVibGljIGVuZHBvaW50Pzogc3RyaW5nKSB7XHJcblx0XHR0aGlzLmh0dHAgPSBTZXJ2aWNlTG9jYXRvci5nZXRTZXJ2aWNlKEh0dHBDbGllbnQpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBhIHNpbmdsZSBlbnRpdHlcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gaWQgVGhlIGlkIG9mIHRoZSBlbnRpdHkgb3IgcmVsYXRpdmUgcGF0aFxyXG5cdCAqIEBwYXJhbSBwYXJhbXMgQWRkcyBxdWVyeSBwYXJhbXMgdG8gdGhlIHJlcXVlc3RcclxuXHQgKiBAcGFyYW0gaGVhZGVycyBBZGRzIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcclxuXHQgKi9cclxuXHRwdWJsaWMgZ2V0PFQ+KGlkOiBzdHJpbmcgfCBudW1iZXIsIHBhcmFtcz86IE9iamVjdCB8IG51bGwsIGhlYWRlcnM/OiBPYmplY3QsIGhhbmRsZUVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG5cdFx0XHQuZ2V0PFQ+KGAke3RoaXMuZW5kcG9pbnR9LyR7aWR9YCwgeyBwYXJhbXM6IFV0aWxzLnRvSHR0cFBhcmFtcyhwYXJhbXMpLCBoZWFkZXJzOiB0aGlzLnRvSHR0cEhlYWRlcnMoaGVhZGVycykgfSk7XHJcblxyXG5cdFx0LyogSGFuZGxlIGVycm9yICovXHJcblx0XHRpZiAoaGFuZGxlRXJyb3IpIHtcclxuXHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoJ2dldCcpKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlcXVlc3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb3VudHMgZW50aXRpZXNcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gcGFyYW1zIEFkZHMgcXVlcnkgcGFyYW1zIHRvIHRoZSByZXF1ZXN0XHJcblx0ICogQHBhcmFtIHBhdGggQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBhY3Rpb25cclxuXHQgKiBAcGFyYW0gaGVhZGVycyBBZGRzIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3RcdCBcclxuXHQgKiBAcGFyYW0gaGFuZGxlRXJyb3IgSGFuZGxlIGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBjb3VudChwYXJhbXM/OiBPYmplY3QsIHBhdGg/OiBzdHJpbmcgfCBudWxsLCBoZWFkZXJzPzogT2JqZWN0LCBoYW5kbGVFcnJvcjogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xyXG5cdFx0bGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBcclxuXHRcdFx0LmdldDxhbnk+KGAke3RoaXMuZW5kcG9pbnR9JHtwYXRoID8gcGF0aCA6ICcvY291bnQnfWAsIHsgcGFyYW1zOiBVdGlscy50b0h0dHBQYXJhbXMocGFyYW1zKSwgaGVhZGVyczogdGhpcy50b0h0dHBIZWFkZXJzKGhlYWRlcnMpIH0pO1xyXG5cclxuXHRcdC8qIEhhbmRsZSBlcnJvciAqL1xyXG5cdFx0aWYgKGhhbmRsZUVycm9yKSB7XHJcblx0XHRcdHJlcXVlc3QgPSByZXF1ZXN0LnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKCdjb3VudCcpKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlcXVlc3QucGlwZShtYXAoeCA9PiB7IHJldHVybiA8bnVtYmVyPngudmFsdWUgfSkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBhIGxpc3Qgb2YgZW50aXRpZXMuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIHBhcmFtcyBPcHRpb25hbC4gQWRkcyBxdWVyeSBwYXJhbXMgdG8gdGhlIHJlcXVlc3QuXHJcblx0ICogQHBhcmFtIHBhdGggT3B0aW9uYWwuIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uLlxyXG5cdCAqIEBwYXJhbSBoZWFkZXJzIE9wdGlvbmFsLiBBZGRzIGhlYWRlcnMgdG8gdGhlIHJlcXVlc3QuXHJcblx0ICogQHJldHVybnMgQW4gT2JzZXJ2YWJsZSB3aXRoIHRoZSByZXNwb25zZSBkYXRhLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRMaXN0KHBhcmFtcz86IEh0dHBQYXJhbXMgfCBPYmplY3QgfCBudWxsLCBwYXRoPzogc3RyaW5nIHwgbnVsbCwgaGVhZGVycz86IE9iamVjdCB8IG51bGwpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuaHR0cFxyXG5cdFx0XHQuZ2V0KGAke3RoaXMuZW5kcG9pbnR9JHtwYXRoID8gcGF0aCA6ICcnfWAsIHsgcGFyYW1zOiBwYXJhbXMgaW5zdGFuY2VvZiBIdHRwUGFyYW1zID8gcGFyYW1zIDogVXRpbHMudG9IdHRwUGFyYW1zKHBhcmFtcyksIGhlYWRlcnM6IHRoaXMudG9IdHRwSGVhZGVycyhoZWFkZXJzKSB9KVxyXG5cdFx0XHQucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoJ2dldExpc3QnKSkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTG9hZHMgZGF0YVxyXG5cdCAqIEBwYXJhbSBwYXJhbXMgQWRkcyBxdWVyeSBwYXJhbXMgdG8gdGhlIHJlcXVlc3RcclxuXHQgKiBAcGFyYW0gcGF0aCBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIGFjdGlvblxyXG5cdCAqIEBwYXJhbSBoZWFkZXJzIEFkZHMgaGVhZGVycyB0byB0aGUgcmVxdWVzdFxyXG5cdCAqL1xyXG5cdHB1YmxpYyBsb2FkTGlzdChwYXJhbXM/OiBPYmplY3QgfCBudWxsLCBwYXRoPzogc3RyaW5nIHwgbnVsbCwgaGVhZGVycz86IE9iamVjdCk6IHZvaWQge1xyXG5cdFx0dGhpcy5nZXRMaXN0KHBhcmFtcywgcGF0aCwgaGVhZGVycylcclxuXHRcdFx0LnN1YnNjcmliZSh4ID0+IHRoaXMubGlzdC5uZXh0KHgpKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgcmVzdWx0IGxpc3QgYXMgT2JzZXJ2YWJsZVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBnZXRMaXN0QXNPYnNlcnZhYmxlKCk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRyZXR1cm4gdGhpcy5saXN0LmFzT2JzZXJ2YWJsZSgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ3JlYXRlcyBhbiBlbnRpdHlcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZW50aXR5IFRoZSBlbnRpdHkgdG8gY3JlYXRlXHJcblx0ICogQHBhcmFtIHBhdGggQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBhY3Rpb25cclxuXHQgKiBAcGFyYW0gaHR0cE9wdGlvbnMgQWRkaXRpb25hbCBodHRwIG9wdGlvbnMsIGxpa2UgaGVhZGVycyBhbmQgc28gb24gXHJcblx0ICogQHBhcmFtIGhhbmRsZUVycm9yIEhhbmRsZSBlcnJvcnNcclxuXHQgKi9cclxuXHRwdWJsaWMgY3JlYXRlPFQ+KGVudGl0eTogYW55LCBwYXRoPzogc3RyaW5nIHwgbnVsbCwgaHR0cE9wdGlvbnM/OiBPYmplY3QsIGhhbmRsZUVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8VD4ge1xyXG5cdFx0bGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBcclxuXHRcdFx0LnBvc3Q8VD4oYCR7dGhpcy5lbmRwb2ludH0ke3BhdGggPyBwYXRoIDogJyd9YCwgZW50aXR5LCBodHRwT3B0aW9ucyk7XHJcblxyXG5cdFx0LyogSGFuZGxlIGVycm9yICovXHJcblx0XHRpZiAoaGFuZGxlRXJyb3IpIHtcclxuXHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoJ2NyZWF0ZScpKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlcXVlc3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGRhdGVzIGFuIGVudGl0eVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBlbnRpdHkgVGhlIGVudGl0eSB0byB1cGRhdGVcclxuXHQgKiBAcGFyYW0gcGF0aCBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIGFjdGlvblxyXG5cdCAqIEBwYXJhbSBodHRwT3B0aW9ucyBBZGRpdGlvbmFsIGh0dHAgb3B0aW9ucywgbGlrZSBoZWFkZXJzIGFuZCBzbyBvbiBcclxuXHQgKiBAcGFyYW0gaGFuZGxlRXJyb3IgSGFuZGxlIGVycm9yc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyB1cGRhdGUoaWQ6IHN0cmluZyB8IG51bWJlciwgZW50aXR5OiBhbnksIHBhdGg/OiBzdHJpbmcgfCBudWxsLCBodHRwT3B0aW9ucz86IE9iamVjdCwgaGFuZGxlRXJyb3I6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCByZXF1ZXN0ID0gdGhpcy5odHRwXHJcblx0XHRcdC5wdXQ8VD4oYCR7dGhpcy5lbmRwb2ludH0ke3BhdGggPyBwYXRoIDogJyd9LyR7aWR9YCwgZW50aXR5LCBodHRwT3B0aW9ucyk7XHJcblxyXG5cdFx0LyogSGFuZGxlIGVycm9yICovXHJcblx0XHRpZiAoaGFuZGxlRXJyb3IpIHtcclxuXHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoJ3VwZGF0ZScpKSk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHJlcXVlc3Q7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQYXRjaGVzIGFuIGVudGl0eVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpZCBpZCBUaGUgaWQgb2YgdGhlIGl0ZW0gdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gYm9keSBUaGUgYm9keVxyXG5cdCAqIEBwYXJhbSBwYXRoIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uXHJcblx0ICogQHBhcmFtIGh0dHBPcHRpb25zIEFkZGl0aW9uYWwgaHR0cCBvcHRpb25zLCBsaWtlIGhlYWRlcnMgYW5kIHNvIG9uIFxyXG5cdCAqIEBwYXJhbSBoYW5kbGVFcnJvciBIYW5kbGUgZXJyb3JzXHJcblx0ICovXHJcblx0cHVibGljIHBhdGNoKGlkOiBzdHJpbmcgfCBudW1iZXIsIGJvZHk6IGFueSwgcGF0aD86IHN0cmluZyB8IG51bGwsIGh0dHBPcHRpb25zPzogT2JqZWN0LCBoYW5kbGVFcnJvcjogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0bGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBcclxuXHRcdFx0LnBhdGNoPFQ+KGAke3RoaXMuZW5kcG9pbnR9JHtwYXRoID8gcGF0aCA6ICcnfS8ke2lkfWAsIGJvZHksIGh0dHBPcHRpb25zKTtcclxuXHJcblx0XHQvKiBIYW5kbGUgZXJyb3IgKi9cclxuXHRcdGlmIChoYW5kbGVFcnJvcikge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcigncGF0Y2gnKSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXF1ZXN0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGF0Y2hlcyBtdWx0aXBsZSBlbnRpdGllc1xyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpZHMgVGhlIGlkcyBvZiB0aGUgaXRlbXMgdG8gcGF0Y2hcclxuXHQgKiBAcGFyYW0gYm9keSBUaGUgYm9keVxyXG5cdCAqIEBwYXJhbSBwYXRoIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uXHJcblx0ICogQHBhcmFtIGh0dHBPcHRpb25zIEFkZGl0aW9uYWwgaHR0cCBvcHRpb25zLCBsaWtlIGhlYWRlcnMgYW5kIHNvIG9uIFxyXG5cdCAqIEBwYXJhbSBoYW5kbGVFcnJvciBIYW5kbGUgZXJyb3JzXHJcblx0ICovXHJcblx0cHVibGljIHBhdGNoTGlzdChpZHM6IHN0cmluZ1tdIHwgbnVtYmVyW10sIGJvZHk6IGFueSwgcGF0aD86IHN0cmluZyB8IG51bGwsIGh0dHBPcHRpb25zPzogT2JqZWN0LCBoYW5kbGVFcnJvcjogYm9vbGVhbiA9IHRydWUpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0bGV0IHJlcXVlc3QgPSB0aGlzLmh0dHBcclxuXHRcdFx0LnBhdGNoPFQ+KGAke3RoaXMuZW5kcG9pbnR9JHtwYXRoID8gcGF0aCA6ICcnfWAsIGJvZHksIE9iamVjdC5hc3NpZ24oaHR0cE9wdGlvbnMgfHwge30sIHsgcGFyYW1zOiBVdGlscy50b0h0dHBQYXJhbXMoeyBpZHM6IGlkcyB9KSB9KSk7XHJcblxyXG5cdFx0LyogSGFuZGxlIGVycm9yICovXHJcblx0XHRpZiAoaGFuZGxlRXJyb3IpIHtcclxuXHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QucGlwZShjYXRjaEVycm9yKHRoaXMuaGFuZGxlRXJyb3IoJ3BhdGNoJykpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVxdWVzdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgYW4gZW50aXR5LlxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBpZCBUaGUgaWQgb2YgdGhlIGl0ZW0gdG8gZGVsZXRlXHJcblx0ICogQHBhcmFtIHBhdGggQSByZWxhdGl2ZSBwYXRoIHRvIHRoZSBhY3Rpb25cclxuXHQgKiBAcGFyYW0gaHR0cE9wdGlvbnMgQWRkaXRpb25hbCBodHRwIG9wdGlvbnMsIGxpa2UgaGVhZGVycyBhbmQgc28gb24gIFxyXG5cdCAqIEBwYXJhbSBoYW5kbGVFcnJvciBIYW5kbGUgZXJyb3JzXHJcblx0ICovXHJcblx0cHVibGljIGRlbGV0ZShpZDogc3RyaW5nIHwgbnVtYmVyLCBwYXRoPzogc3RyaW5nIHwgbnVsbCwgaHR0cE9wdGlvbnM/OiBPYmplY3QsIGhhbmRsZUVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG5cdFx0XHQuZGVsZXRlKGAke3RoaXMuZW5kcG9pbnR9JHtwYXRoID8gcGF0aCA6ICcnfS8ke2lkfWAsIGh0dHBPcHRpb25zKTtcclxuXHJcblx0XHQvKiBIYW5kbGUgZXJyb3IgKi9cclxuXHRcdGlmIChoYW5kbGVFcnJvcikge1xyXG5cdFx0XHRyZXF1ZXN0ID0gcmVxdWVzdC5waXBlKGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcignZGVsZXRlJykpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVxdWVzdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERlbGV0ZXMgbXVsdGlwbGUgZW50aXRpZXMuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIGlkcyBUaGUgaWRzIG9mIHRoZSBpdGVtcyB0byBkZWxldGVcclxuXHQgKiBAcGFyYW0gcGF0aCBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIGFjdGlvblxyXG5cdCAqIEBwYXJhbSBodHRwT3B0aW9ucyBBZGRpdGlvbmFsIGh0dHAgb3B0aW9ucywgbGlrZSBoZWFkZXJzIGFuZCBzbyBvbiAgXHJcblx0ICogQHBhcmFtIGhhbmRsZUVycm9yIEhhbmRsZSBlcnJvcnNcclxuXHQgKi9cclxuXHRwdWJsaWMgZGVsZXRlTGlzdChpZHM6IHN0cmluZ1tdIHwgbnVtYmVyW10sIHBhdGg/OiBzdHJpbmcgfCBudWxsLCBodHRwT3B0aW9ucz86IE9iamVjdCwgaGFuZGxlRXJyb3I6IGJvb2xlYW4gPSB0cnVlKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdGxldCByZXF1ZXN0ID0gdGhpcy5odHRwLmRlbGV0ZShgJHt0aGlzLmVuZHBvaW50fSR7cGF0aCA/IHBhdGggOiAnJ31gLCBPYmplY3QuYXNzaWduKGh0dHBPcHRpb25zIHx8IHt9LCB7IHBhcmFtczogVXRpbHMudG9IdHRwUGFyYW1zKHsgaWRzOiBpZHMgfSkgfSkpO1xyXG5cclxuXHRcdC8qIEhhbmRsZSBlcnJvciAqL1xyXG5cdFx0aWYgKGhhbmRsZUVycm9yKSB7XHJcblx0XHRcdHJlcXVlc3QgPSByZXF1ZXN0LnBpcGUoY2F0Y2hFcnJvcih0aGlzLmhhbmRsZUVycm9yKCdkZWxldGVMaXN0JykpKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gcmVxdWVzdDtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIERvd25sb2FkcyBhIGZpbGVcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gcGF0aCBBIHJlbGF0aXZlIHBhdGggdG8gdGhlIGFjdGlvblxyXG5cdCAqIEBwYXJhbSBwYXJhbXMgU29tZSBxdWVyeSBwYXJhbXNcclxuXHQgKi9cclxuXHRwdWJsaWMgZG93bmxvYWQocGF0aDogc3RyaW5nLCBwYXJhbXM/OiBPYmplY3QsIGhhbmRsZUVycm9yOiBib29sZWFuID0gdHJ1ZSk6IE9ic2VydmFibGU8YW55PiB7XHJcblx0XHRsZXQgcmVxdWVzdCA9IHRoaXMuaHR0cFxyXG5cdFx0XHQuZ2V0KGAke3RoaXMuZW5kcG9pbnR9LyR7cGF0aCA/IHBhdGggOiAnZG93bmxvYWQnfWAsIHsgcGFyYW1zOiBVdGlscy50b0h0dHBQYXJhbXMocGFyYW1zKSwgcmVzcG9uc2VUeXBlOiAnYXJyYXlidWZmZXInLCBvYnNlcnZlOiAncmVzcG9uc2UnIH0pXHJcblx0XHRcdC5waXBlKG1hcCh4ID0+IHsgcmV0dXJuIHsgZGF0YTogeC5ib2R5LCBmaWxlbmFtZTogdGhpcy5nZXRGaWxlTmFtZUZyb21IZWFkZXJzKHguaGVhZGVycykgfSB9KSk7XHJcblxyXG5cdFx0LyogSGFuZGxlIGVycm9yICovXHJcblx0XHRpZiAoaGFuZGxlRXJyb3IpIHtcclxuXHRcdFx0cmVxdWVzdCA9IHJlcXVlc3QucGlwZTxhbnk+KGNhdGNoRXJyb3IodGhpcy5oYW5kbGVFcnJvcignZG93bmxvYWQnKSkpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiByZXF1ZXN0O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogRHVwbGljYXRlcyBhIHJlY29yZFxyXG5cdCAqIEBwYXJhbSBpZCBcclxuXHQgKi9cclxuXHRwdWJsaWMgZHVwbGljYXRlKGlkOiBudW1iZXIpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG5cdFx0cmV0dXJuIHRoaXMuY3JlYXRlKG51bGwsIGAvZHVwbGljYXRlLyR7aWR9YCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBVcGxvYWRzIGEgZmlsZVxyXG5cdCAqIFxyXG5cdCAqIEBwYXJhbSBmaWxlIFRoZSBmaWxlIHRvIHVwbG9hZFxyXG5cdCAqIEBwYXJhbSBwYXRoIEEgcmVsYXRpdmUgcGF0aCB0byB0aGUgYWN0aW9uXHJcblx0ICovXHJcblx0cHVibGljIHVwbG9hZChmaWxlOiBGaWxlLCBwYXRoOiBzdHJpbmcgPSAndXBsb2FkJywgZXh0cmFEYXRhPzogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuXHRcdC8qIENyZWF0ZXMgZm9ybSBkYXRhIG9iamVjdCAqL1xyXG5cdFx0Y29uc3QgZm9ybURhdGE6IEZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcblxyXG5cdFx0LyogQWRkIHRoZSBmaWxlIHRvIHRoZSBmb3JtIGRhdGEgKi9cclxuXHRcdGZvcm1EYXRhLmFwcGVuZCgnZmlsZScsIGZpbGUsIGZpbGUubmFtZSk7XHJcblxyXG5cdFx0LyogSXRlcmF0ZSBhbmQgc2V0IG90aGVyIGZvcm0gZGF0YSAqL1xyXG5cdFx0aWYgKGV4dHJhRGF0YSkge1xyXG5cdFx0XHRmb3IgKGxldCBrZXkgaW4gZXh0cmFEYXRhKSB7XHJcblx0XHRcdFx0Zm9ybURhdGEuYXBwZW5kKGtleSwgZXh0cmFEYXRhW2tleV0pXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHQvKiBTZXQgdHJ1ZSB0byByZXBvcnRQcm9ncmVzcyB0byBlbmFibGUgdHJhY2tpbmcgb2YgcHJvZ3Jlc3MgZXZlbnRzICovXHJcblx0XHRjb25zdCByZXEgPSBuZXcgSHR0cFJlcXVlc3QoJ1BPU1QnLCBgJHt0aGlzLmVuZHBvaW50fS8ke3BhdGggPyBwYXRoIDogJ3VwbG9hZCd9YCwgZm9ybURhdGEsIHtcclxuXHRcdFx0cmVwb3J0UHJvZ3Jlc3M6IHRydWVcclxuXHRcdH0pO1xyXG5cclxuXHRcdC8qXHJcblx0XHRUaGUgYEh0dHBDbGllbnQucmVxdWVzdGAgQVBJIHByb2R1Y2VzIGEgcmF3IGV2ZW50IHN0cmVhbVxyXG5cdFx0d2hpY2ggaW5jbHVkZXMgc3RhcnQgKHNlbnQpLCBwcm9ncmVzcywgYW5kIHJlc3BvbnNlIGV2ZW50cy5cclxuXHRcdCovXHJcblx0XHRyZXR1cm4gdGhpcy5odHRwLnJlcXVlc3QocmVxKTtcclxuXHR9O1xyXG5cclxuXHQvLy8jcmVnaW9uIEhlbHBlcnNcclxuXHJcblx0LyoqXHJcblx0ICogQ29udmVydCBPYmplY3QgdG8gRnJvbURhdGFcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gYm9keVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0b0Zvcm1EYXRhKGJvZHk6IGFueSk6IEZvcm1EYXRhIHtcclxuXHRcdGlmICghYm9keSkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IEZvcm1EYXRhKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGJvZHkpXHJcblx0XHRcdC5maWx0ZXIoa2V5ID0+IGJvZHlba2V5XSAhPSBudWxsICYmIGJvZHlba2V5XSAhPSAnJylcclxuXHRcdFx0LnJlZHVjZSgocCwga2V5KSA9PiB7IHAuYXBwZW5kKGtleSwgYm9keVtrZXldKTsgcmV0dXJuIHAgfSwgbmV3IEZvcm1EYXRhKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29udmVydCBPYmplY3QgdG8gSHR0cEhlYWRlcnNcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gYm9keVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCB0b0h0dHBIZWFkZXJzKGJvZHk/OiBPYmplY3QgfCBudWxsKTogSHR0cEhlYWRlcnMge1xyXG5cdFx0aWYgKCFib2R5KSB7XHJcblx0XHRcdHJldHVybiBuZXcgSHR0cEhlYWRlcnMoKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoYm9keSlcclxuXHRcdFx0LmZpbHRlcihrZXkgPT4gKGJvZHkgYXMgYW55KVtrZXldICE9IG51bGwgJiYgKGJvZHkgYXMgYW55KVtrZXldICE9ICcnKVxyXG5cdFx0XHQucmVkdWNlKChwLCBrZXkpID0+IHAuc2V0KGtleSwgKGJvZHkgYXMgYW55KVtrZXldKSwgbmV3IEh0dHBIZWFkZXJzKCkpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogR2V0cyBmaWxlIG5hbWUgZnJvbSBIdHRwaGVhZGVyczogQ29udGVudC1EaXNwb3NpdGlvblxyXG5cdCAqIEBwYXJhbSBkaXNwb3NpdGlvbiBcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgZ2V0RmlsZU5hbWVGcm9tSGVhZGVycyhoZWFkZXJzOiBIdHRwSGVhZGVycyk6IHN0cmluZyB7XHJcblx0XHR2YXIgZGlzcG9zaXRpb24gPSBoZWFkZXJzLmdldCgnY29udGVudC1kaXNwb3NpdGlvbicpO1xyXG5cdFx0aWYgKGRpc3Bvc2l0aW9uICYmIGRpc3Bvc2l0aW9uLmluZGV4T2YoJ2F0dGFjaG1lbnQnKSAhPT0gLTEpIHtcclxuXHRcdFx0dmFyIG1hdGNoZXMgPSAvZmlsZW5hbWVbXjs9XFxuXSo9KChbJ1wiXSkuKj9cXDJ8W147XFxuXSopLy5leGVjKGRpc3Bvc2l0aW9uKTtcclxuXHRcdFx0aWYgKG1hdGNoZXMgIT0gbnVsbCAmJiBtYXRjaGVzWzFdKSB7XHJcblx0XHRcdFx0cmV0dXJuIG1hdGNoZXNbMV0ucmVwbGFjZSgvWydcIl0vZywgJycpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIFwiXCI7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZXR1cm5zIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIEh0dHAgb3BlcmF0aW9uIGZhaWx1cmVzLlxyXG5cdCAqIFRoaXMgZXJyb3IgaGFuZGxlciBsZXRzIHRoZSBhcHAgY29udGludWUgdG8gcnVuIGFzIGlmIG5vIGVycm9yIG9jY3VycmVkLlxyXG5cdCAqIEBwYXJhbSBvcGVyYXRpb24gLSBuYW1lIG9mIHRoZSBvcGVyYXRpb24gdGhhdCBmYWlsZWRcclxuXHQgKi9cclxuXHRwcm90ZWN0ZWQgaGFuZGxlRXJyb3Iob3BlcmF0aW9uID0gJ29wZXJhdGlvbicpIHtcclxuXHRcdHJldHVybiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKTogT2JzZXJ2YWJsZTxhbnk+ID0+IHtcclxuXHRcdFx0Y29uc29sZS5sb2coZXJyb3IpO1xyXG5cdFx0XHRjb25zdCBtZXNzYWdlID0gKGVycm9yLmVycm9yIGluc3RhbmNlb2YgRXJyb3JFdmVudCkgPyBlcnJvci5lcnJvci5tZXNzYWdlIDogYHNlcnZlciByZXR1cm5lZCBjb2RlICR7ZXJyb3Iuc3RhdHVzfSB3aXRoIGJvZHkgXCIke2Vycm9yLmVycm9yfVwiYDtcclxuXHRcdFx0dGhyb3cgbmV3IEVycm9yKGAke29wZXJhdGlvbn0gZmFpbGVkOiAke21lc3NhZ2V9YCk7XHJcblx0XHR9O1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmV0dXJuIGRpc3RpbmN0IG1lc3NhZ2UgZm9yIHNlbnQsIHVwbG9hZCBwcm9ncmVzcywgJiByZXNwb25zZSBldmVudHNcclxuXHQgKiBcclxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIHJlc3BvbnNlIGV2ZW50XHJcblx0ICogQHBhcmFtIGZpbGUgVGhlIGZpbGUgYmVlaW5nIHVwbG9hZGVkXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGdldEV2ZW50TWVzc2FnZShldmVudDogSHR0cEV2ZW50PGFueT4sIGZpbGU6IEZpbGUpIHtcclxuXHRcdHN3aXRjaCAoZXZlbnQudHlwZSkge1xyXG5cdFx0XHQvKiBVcGxvYWQgc3RhcnRlZCAqL1xyXG5cdFx0XHRjYXNlIEh0dHBFdmVudFR5cGUuU2VudDpcclxuXHRcdFx0XHRyZXR1cm4gYFVwbG9hZGluZyBmaWxlIFwiJHtmaWxlLm5hbWV9XCIgb2Ygc2l6ZSAke2ZpbGUuc2l6ZX0uYDtcclxuXHJcblx0XHRcdC8qIENvbXB1dGUgYW5kIHNob3cgdGhlICUgZG9uZTogKi9cclxuXHRcdFx0Y2FzZSBIdHRwRXZlbnRUeXBlLlVwbG9hZFByb2dyZXNzOlxyXG5cdFx0XHRcdGNvbnN0IHBlcmNlbnREb25lID0gTWF0aC5yb3VuZCgxMDAgKiBldmVudC5sb2FkZWQgLyAoZXZlbnQ/LnRvdGFsID8/IDEpKTtcclxuXHRcdFx0XHRyZXR1cm4gYEZpbGUgXCIke2ZpbGUubmFtZX1cIiBpcyAke3BlcmNlbnREb25lfSUgdXBsb2FkZWQuYDtcclxuXHJcblx0XHRcdC8qIFVwbG9hZCBjb21wbGV0ZWQgKi9cclxuXHRcdFx0Y2FzZSBIdHRwRXZlbnRUeXBlLlJlc3BvbnNlOlxyXG5cdFx0XHRcdHJldHVybiBgRmlsZSBcIiR7ZmlsZS5uYW1lfVwiIHdhcyBjb21wbGV0ZWx5IHVwbG9hZGVkIWA7XHJcblxyXG5cdFx0XHRkZWZhdWx0OlxyXG5cdFx0XHRcdHJldHVybiBgRmlsZSBcIiR7ZmlsZS5uYW1lfVwiIHN1cnByaXNpbmcgdXBsb2FkIGV2ZW50OiAke2V2ZW50LnR5cGV9LmA7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTaG93cyB1cGxvYWQgcHJvZ3Jlc3MuXHJcblx0ICogXHJcblx0ICogQHBhcmFtIG1lc3NhZ2UgXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIHNob3dQcm9ncmVzcyhtZXNzYWdlOiBzdHJpbmcpIHtcclxuXHRcdGNvbnNvbGUuZGVidWcobWVzc2FnZSk7XHJcblx0fVxyXG5cclxuXHQvLyNlbmRyZWdpb25cclxufSJdfQ==
|