@elderbyte/ngx-starter 18.15.2 → 19.0.1
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/fesm2022/elderbyte-ngx-starter.mjs +1097 -1125
- package/fesm2022/elderbyte-ngx-starter.mjs.map +1 -1
- package/lib/common/forms/elder-form-field-control-base.directive.d.ts +1 -1
- package/lib/common/forms/elder-from-field-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-customizable-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-entity-base.d.ts +1 -1
- package/lib/common/forms/elder-from-field-multi-entity-base.d.ts +1 -1
- package/lib/common/forms/form-field-base.component.d.ts +1 -1
- package/lib/common/forms/multi-model-base.component.d.ts +1 -1
- package/lib/common/forms/template-composite-control.d.ts +1 -1
- package/lib/common/forms/value-accessor-base.d.ts +1 -1
- package/lib/common/reactive-map.d.ts +1 -1
- package/lib/components/data-view/base/elder-data-view-base.d.ts +1 -1
- package/lib/components/forms/directives/base/elder-class-hostbinding-base.d.ts +1 -1
- package/lib/components/iframes/typed-event-message.d.ts +1 -1
- package/lib/components/panels/elder-panel.module.d.ts +5 -7
- package/lib/components/select/elder-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-base.d.ts +1 -1
- package/lib/components/select/multi/elder-multi-select-form-field.d.ts +1 -1
- package/lib/components/select/single/elder-select-form-field.d.ts +1 -1
- package/package.json +6 -8
- package/src/lib/components/errors/exception-detail/elder-exception-detail.component.scss +2 -3
- package/src/lib/components/panels/flat/_elder-panel-theme.scss +5 -1
- package/esm2022/elderbyte-ngx-starter.mjs +0 -5
- package/esm2022/lib/common/arrays.mjs +0 -29
- package/esm2022/lib/common/async/public_api.mjs +0 -2
- package/esm2022/lib/common/async/refreshing-entity.mjs +0 -88
- package/esm2022/lib/common/csv/csv-serializer.mjs +0 -55
- package/esm2022/lib/common/csv/csv-spec.mjs +0 -99
- package/esm2022/lib/common/csv/public_api.mjs +0 -3
- package/esm2022/lib/common/data/continuable-listing.mjs +0 -10
- package/esm2022/lib/common/data/data-context/data-context-active-page.mjs +0 -131
- package/esm2022/lib/common/data/data-context/data-context-auto-starter.mjs +0 -78
- package/esm2022/lib/common/data/data-context/data-context-base.mjs +0 -339
- package/esm2022/lib/common/data/data-context/data-context-builder.mjs +0 -245
- package/esm2022/lib/common/data/data-context/data-context-continuable-base.mjs +0 -67
- package/esm2022/lib/common/data/data-context/data-context-continuable-paged.mjs +0 -142
- package/esm2022/lib/common/data/data-context/data-context-continuable-token.mjs +0 -146
- package/esm2022/lib/common/data/data-context/data-context-life-cycle-binding.mjs +0 -32
- package/esm2022/lib/common/data/data-context/data-context-simple.mjs +0 -61
- package/esm2022/lib/common/data/data-context/data-context-source-event-binding.mjs +0 -63
- package/esm2022/lib/common/data/data-context/data-context-status.mjs +0 -46
- package/esm2022/lib/common/data/data-context/data-context.mjs +0 -30
- package/esm2022/lib/common/data/data-context/indexed-entities.mjs +0 -153
- package/esm2022/lib/common/data/data-context/mat-table-data-context-binding.mjs +0 -145
- package/esm2022/lib/common/data/data-context/public_api.mjs +0 -15
- package/esm2022/lib/common/data/datasource/data-source-adapter.mjs +0 -59
- package/esm2022/lib/common/data/datasource/data-source-base.mjs +0 -38
- package/esm2022/lib/common/data/datasource/data-source-change-event.mjs +0 -34
- package/esm2022/lib/common/data/datasource/data-source-processor.mjs +0 -198
- package/esm2022/lib/common/data/datasource/data-source.mjs +0 -23
- package/esm2022/lib/common/data/datasource/entity-id-util.mjs +0 -11
- package/esm2022/lib/common/data/datasource/fetcher/delegate-data-source.mjs +0 -127
- package/esm2022/lib/common/data/datasource/local/local-list-data-source.mjs +0 -153
- package/esm2022/lib/common/data/datasource/local/local-paged-data-source.mjs +0 -75
- package/esm2022/lib/common/data/datasource/patch/deep-partial-patcher.mjs +0 -58
- package/esm2022/lib/common/data/datasource/public_api.mjs +0 -10
- package/esm2022/lib/common/data/datasource/rest/public_api.mjs +0 -2
- package/esm2022/lib/common/data/datasource/rest/rest-client.mjs +0 -290
- package/esm2022/lib/common/data/entity-set-patch.mjs +0 -161
- package/esm2022/lib/common/data/field-comparator.mjs +0 -108
- package/esm2022/lib/common/data/filters/filter-commons.mjs +0 -12
- package/esm2022/lib/common/data/filters/filter-context.mjs +0 -135
- package/esm2022/lib/common/data/filters/filter-value.mjs +0 -2
- package/esm2022/lib/common/data/filters/filter.mjs +0 -104
- package/esm2022/lib/common/data/http-params-builder.mjs +0 -116
- package/esm2022/lib/common/data/page.mjs +0 -58
- package/esm2022/lib/common/data/public_api.mjs +0 -12
- package/esm2022/lib/common/data/required-filter-evaluator.mjs +0 -71
- package/esm2022/lib/common/data/sort-context.mjs +0 -73
- package/esm2022/lib/common/data/sort.mjs +0 -11
- package/esm2022/lib/common/data/token-chunk-request.mjs +0 -8
- package/esm2022/lib/common/enums/elder-enum-translation.service.mjs +0 -84
- package/esm2022/lib/common/enums/public_api.mjs +0 -2
- package/esm2022/lib/common/errors/exception-detail.mjs +0 -2
- package/esm2022/lib/common/errors/public_api.mjs +0 -3
- package/esm2022/lib/common/errors/standard-error-detail.mjs +0 -2
- package/esm2022/lib/common/exceptions/public_api.mjs +0 -2
- package/esm2022/lib/common/exceptions/unreachable-case-error.mjs +0 -8
- package/esm2022/lib/common/format/bytes-format.mjs +0 -15
- package/esm2022/lib/common/format/bytes-per-second-format.mjs +0 -41
- package/esm2022/lib/common/format/curency-format-util.mjs +0 -43
- package/esm2022/lib/common/format/duration-format-util.mjs +0 -44
- package/esm2022/lib/common/format/iso-interval-format-util.mjs +0 -111
- package/esm2022/lib/common/format/public_api.mjs +0 -6
- package/esm2022/lib/common/forms/elder-entity-value-accessor.mjs +0 -22
- package/esm2022/lib/common/forms/elder-form-field-control-base.directive.mjs +0 -188
- package/esm2022/lib/common/forms/elder-from-field-base.mjs +0 -94
- package/esm2022/lib/common/forms/elder-from-field-customizable-base.mjs +0 -52
- package/esm2022/lib/common/forms/elder-from-field-entity-base.mjs +0 -39
- package/esm2022/lib/common/forms/elder-from-field-multi-entity-base.mjs +0 -47
- package/esm2022/lib/common/forms/elder-multi-entity-value-accessor.mjs +0 -22
- package/esm2022/lib/common/forms/form-field-base.component.mjs +0 -111
- package/esm2022/lib/common/forms/multi-model-base.component.mjs +0 -32
- package/esm2022/lib/common/forms/public_api.mjs +0 -12
- package/esm2022/lib/common/forms/template-composite-control.mjs +0 -136
- package/esm2022/lib/common/forms/value-accessor-base.mjs +0 -146
- package/esm2022/lib/common/forms/view-providers.mjs +0 -30
- package/esm2022/lib/common/http/http-client-builder.service.mjs +0 -14
- package/esm2022/lib/common/http/http-client-pristine.mjs +0 -21
- package/esm2022/lib/common/http/public_api.mjs +0 -5
- package/esm2022/lib/common/http/transfer/data-transfer-base.mjs +0 -77
- package/esm2022/lib/common/http/transfer/data-transfer-factory.mjs +0 -106
- package/esm2022/lib/common/http/transfer/data-transfer-progress-aggregate.mjs +0 -60
- package/esm2022/lib/common/http/transfer/data-transfer-progress.mjs +0 -17
- package/esm2022/lib/common/http/transfer/data-transfer-state.mjs +0 -82
- package/esm2022/lib/common/http/transfer/data-transfer-status.mjs +0 -24
- package/esm2022/lib/common/http/transfer/data-transfer.mjs +0 -2
- package/esm2022/lib/common/http/transfer/http-data-transfer.mjs +0 -132
- package/esm2022/lib/common/http/transfer/public_api.mjs +0 -7
- package/esm2022/lib/common/http/upload/file-upload-client.mjs +0 -42
- package/esm2022/lib/common/i18n/entity/elder-multi-translate-loader.mjs +0 -53
- package/esm2022/lib/common/i18n/entity/impl/i18n-base.mjs +0 -6
- package/esm2022/lib/common/i18n/entity/impl/i18n-text.mjs +0 -16
- package/esm2022/lib/common/i18n/entity/impl/translated.mjs +0 -15
- package/esm2022/lib/common/i18n/entity/language-tag.mjs +0 -12
- package/esm2022/lib/common/i18n/entity/locale.mjs +0 -12
- package/esm2022/lib/common/i18n/entity/localisation-picker.mjs +0 -30
- package/esm2022/lib/common/i18n/entity/localized.mjs +0 -2
- package/esm2022/lib/common/i18n/entity/public_api.mjs +0 -10
- package/esm2022/lib/common/i18n/entity/translated-converter.mjs +0 -18
- package/esm2022/lib/common/i18n/entity/translated.mjs +0 -2
- package/esm2022/lib/common/i18n/public_api.mjs +0 -2
- package/esm2022/lib/common/json-map.mjs +0 -17
- package/esm2022/lib/common/objects.mjs +0 -43
- package/esm2022/lib/common/public_api.mjs +0 -23
- package/esm2022/lib/common/reactive-map.mjs +0 -69
- package/esm2022/lib/common/rxjs/operators/lazy-sample.mjs +0 -34
- package/esm2022/lib/common/rxjs/public_api.mjs +0 -2
- package/esm2022/lib/common/selection/public_api.mjs +0 -2
- package/esm2022/lib/common/selection/selection-model.mjs +0 -213
- package/esm2022/lib/common/sets.mjs +0 -45
- package/esm2022/lib/common/suggestion-provider.mjs +0 -12
- package/esm2022/lib/common/templates/template-slot-manager.mjs +0 -135
- package/esm2022/lib/common/theme-sizes.mjs +0 -2
- package/esm2022/lib/common/time/date-util.mjs +0 -91
- package/esm2022/lib/common/time/interval-coerce.mjs +0 -30
- package/esm2022/lib/common/time/interval.mjs +0 -442
- package/esm2022/lib/common/time/period-duration.mjs +0 -133
- package/esm2022/lib/common/time/public_api.mjs +0 -8
- package/esm2022/lib/common/time/temporal-plain-date-interval.mjs +0 -34
- package/esm2022/lib/common/time/temporal-util.mjs +0 -205
- package/esm2022/lib/common/time/time-util.mjs +0 -38
- package/esm2022/lib/common/url/elder-router.service.mjs +0 -54
- package/esm2022/lib/common/url/elder-url-fragment-params.service.mjs +0 -117
- package/esm2022/lib/common/url/public_api.mjs +0 -4
- package/esm2022/lib/common/url/url-query-params.mjs +0 -133
- package/esm2022/lib/common/utils/batcher.mjs +0 -35
- package/esm2022/lib/common/utils/collection-util.mjs +0 -111
- package/esm2022/lib/common/utils/filter-util.mjs +0 -133
- package/esm2022/lib/common/utils/focus-util.mjs +0 -23
- package/esm2022/lib/common/utils/input-utils.mjs +0 -6
- package/esm2022/lib/common/utils/next-number-util.mjs +0 -89
- package/esm2022/lib/common/utils/ng-zone-utils.mjs +0 -16
- package/esm2022/lib/common/utils/parse-util.mjs +0 -17
- package/esm2022/lib/common/utils/property-path-util.mjs +0 -28
- package/esm2022/lib/common/utils/public_api.mjs +0 -14
- package/esm2022/lib/common/utils/query-list-binding.mjs +0 -68
- package/esm2022/lib/common/utils/signal-input.mjs +0 -3
- package/esm2022/lib/common/utils/sort-util.mjs +0 -42
- package/esm2022/lib/common/utils/url-builder.mjs +0 -275
- package/esm2022/lib/common/utils/uuid-util.mjs +0 -28
- package/esm2022/lib/common/utils/value-wrapper.mjs +0 -19
- package/esm2022/lib/components/access-denied/elder-access-denied.component.mjs +0 -15
- package/esm2022/lib/components/access-denied/elder-access-denied.module.mjs +0 -20
- package/esm2022/lib/components/auditing/audited-entity/elder-audited-entity.component.mjs +0 -50
- package/esm2022/lib/components/auditing/elder-audit.module.mjs +0 -40
- package/esm2022/lib/components/auditing/i-audited-entity.mjs +0 -3
- package/esm2022/lib/components/badge/elder-badge/elder-badge.component.mjs +0 -162
- package/esm2022/lib/components/badge/elder-badge.directive.mjs +0 -124
- package/esm2022/lib/components/badge/elder-badge.module.mjs +0 -58
- package/esm2022/lib/components/button-group/elder-button-group/elder-button-group.component.mjs +0 -13
- package/esm2022/lib/components/button-group/elder-button-group.module.mjs +0 -21
- package/esm2022/lib/components/card-organizer/card-organizer/elder-card-organizer.component.mjs +0 -118
- package/esm2022/lib/components/card-organizer/card-organizer/elder-stack-card.directive.mjs +0 -18
- package/esm2022/lib/components/card-organizer/card-organizer-data.mjs +0 -93
- package/esm2022/lib/components/card-organizer/card-stack/elder-card-stack.component.mjs +0 -220
- package/esm2022/lib/components/card-organizer/card-stack.mjs +0 -176
- package/esm2022/lib/components/card-organizer/elder-card-organizer.module.mjs +0 -62
- package/esm2022/lib/components/cards/elder-card/elder-card-header/elder-card-header.component.mjs +0 -17
- package/esm2022/lib/components/cards/elder-card/elder-card.component.mjs +0 -167
- package/esm2022/lib/components/cards/elder-card/elder-card.module.mjs +0 -71
- package/esm2022/lib/components/chips/elder-chip-label.directive.mjs +0 -171
- package/esm2022/lib/components/chips/elder-chips.module.mjs +0 -45
- package/esm2022/lib/components/connectivity/elder-connectivity.module.mjs +0 -57
- package/esm2022/lib/components/connectivity/elder-connectivity.service.mjs +0 -61
- package/esm2022/lib/components/connectivity/offline-indicator/elder-offline-indicator.component.mjs +0 -46
- package/esm2022/lib/components/connectivity/public_api.mjs +0 -3
- package/esm2022/lib/components/containers/elder-containers.module.mjs +0 -18
- package/esm2022/lib/components/containers/elder-scroll-container/elder-scroll-container.component.mjs +0 -24
- package/esm2022/lib/components/containers/public_api.mjs +0 -2
- package/esm2022/lib/components/csv/elder-csv-export-btn/elder-csv-export-btn.component.mjs +0 -77
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.mjs +0 -38
- package/esm2022/lib/components/csv/elder-csv-stream-exporter-builder.service.mjs +0 -38
- package/esm2022/lib/components/csv/elder-csv-stream-exporter.mjs +0 -114
- package/esm2022/lib/components/csv/elder-csv.module.mjs +0 -24
- package/esm2022/lib/components/currency/elder-currency.module.mjs +0 -18
- package/esm2022/lib/components/currency/elder-currency.pipe.mjs +0 -37
- package/esm2022/lib/components/currency/model/currency-code.mjs +0 -38
- package/esm2022/lib/components/currency/model/currency-unit-registry.mjs +0 -30
- package/esm2022/lib/components/currency/model/currency-unit.mjs +0 -10
- package/esm2022/lib/components/currency/model/currency.mjs +0 -15
- package/esm2022/lib/components/currency/public_api.mjs +0 -7
- package/esm2022/lib/components/data-transfer/elder-data-transfer.module.mjs +0 -91
- package/esm2022/lib/components/data-transfer/elder-data-transfer.service.mjs +0 -93
- package/esm2022/lib/components/data-transfer/http-data-transfer/http-data-transfer.component.mjs +0 -102
- package/esm2022/lib/components/data-transfer/http-data-transfer-aggregate/http-data-transfer-aggregate.component.mjs +0 -34
- package/esm2022/lib/components/data-transfer/http-data-transfer-indicator/http-data-transfer-indicator.component.mjs +0 -57
- package/esm2022/lib/components/data-transfer/http-data-transfer-overview/http-data-transfer-overview.component.mjs +0 -34
- package/esm2022/lib/components/data-view/base/data-view-options-provider-binding.mjs +0 -69
- package/esm2022/lib/components/data-view/base/elder-data-view-base.mjs +0 -265
- package/esm2022/lib/components/data-view/base/elder-data-view-options-provider.mjs +0 -44
- package/esm2022/lib/components/data-view/base/elder-data-view-options.mjs +0 -45
- package/esm2022/lib/components/data-view/base/elder-data-view.mjs +0 -3
- package/esm2022/lib/components/data-view/base/public_api.mjs +0 -6
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-context.mjs +0 -30
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort-dc.directive.mjs +0 -55
- package/esm2022/lib/components/data-view/common/composite-sort/composite-sort.mjs +0 -68
- package/esm2022/lib/components/data-view/common/composite-sort/elder-composite-sort/elder-composite-sort.component.mjs +0 -101
- package/esm2022/lib/components/data-view/common/data-context-state-indicator/data-context-state-indicator.component.mjs +0 -45
- package/esm2022/lib/components/data-view/common/elder-data-common.module.mjs +0 -125
- package/esm2022/lib/components/data-view/common/elder-data-toolbar/elder-data-toolbar.component.mjs +0 -140
- package/esm2022/lib/components/data-view/common/elder-single-sort/elder-single-sort.component.mjs +0 -100
- package/esm2022/lib/components/data-view/common/selection/data-context-selection.directive.mjs +0 -103
- package/esm2022/lib/components/data-view/common/selection/elder-selection-master-checkbox/elder-selection-master-checkbox.component.mjs +0 -36
- package/esm2022/lib/components/data-view/common/selection/master-selection-state.mjs +0 -10
- package/esm2022/lib/components/data-view/elder-data-view-interaction-mode.mjs +0 -2
- package/esm2022/lib/components/data-view/grid/elder-grid/elder-grid.component.mjs +0 -345
- package/esm2022/lib/components/data-view/grid/elder-grid.module.mjs +0 -91
- package/esm2022/lib/components/data-view/master-detail/elder-detail-dialog/elder-detail-dialog.component.mjs +0 -75
- package/esm2022/lib/components/data-view/master-detail/elder-detail.directive.mjs +0 -50
- package/esm2022/lib/components/data-view/master-detail/elder-master-activation.directive.mjs +0 -79
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-mode.mjs +0 -2
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail-provider.mjs +0 -20
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.component.mjs +0 -119
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.module.mjs +0 -116
- package/esm2022/lib/components/data-view/master-detail/elder-master-detail.service.mjs +0 -89
- package/esm2022/lib/components/data-view/master-detail/elder-master.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/master-detail/master-detail-activation-event.mjs +0 -12
- package/esm2022/lib/components/data-view/public_api.mjs +0 -7
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.component.mjs +0 -18
- package/esm2022/lib/components/data-view/simple/elder-simple-selection-view/elder-simple-selection-view.module.mjs +0 -104
- package/esm2022/lib/components/data-view/table/activation/activation-event-source.mjs +0 -7
- package/esm2022/lib/components/data-view/table/activation/elder-activation-context.mjs +0 -2
- package/esm2022/lib/components/data-view/table/activation/elder-delete-active.directive.mjs +0 -114
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation-options.mjs +0 -2
- package/esm2022/lib/components/data-view/table/activation/elder-table-activation.directive.mjs +0 -315
- package/esm2022/lib/components/data-view/table/activation/item-activation-event.mjs +0 -8
- package/esm2022/lib/components/data-view/table/activation/item-activation-options.mjs +0 -7
- package/esm2022/lib/components/data-view/table/activation/public_api.mjs +0 -8
- package/esm2022/lib/components/data-view/table/elder-center-cell.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/table/elder-number-cell.directive.mjs +0 -30
- package/esm2022/lib/components/data-view/table/elder-paginator-intl.mjs +0 -73
- package/esm2022/lib/components/data-view/table/elder-table/elder-table-toolbar.directive.mjs +0 -21
- package/esm2022/lib/components/data-view/table/elder-table/elder-table.component.mjs +0 -338
- package/esm2022/lib/components/data-view/table/elder-table-column.directive.mjs +0 -18
- package/esm2022/lib/components/data-view/table/elder-table-extension.directive.mjs +0 -92
- package/esm2022/lib/components/data-view/table/elder-table-root.directive.mjs +0 -26
- package/esm2022/lib/components/data-view/table/elder-table-row.directive.mjs +0 -156
- package/esm2022/lib/components/data-view/table/elder-table-sort.directive.mjs +0 -23
- package/esm2022/lib/components/data-view/table/elder-table.module.mjs +0 -184
- package/esm2022/lib/components/data-view/table/model/elder-column-layout.mjs +0 -110
- package/esm2022/lib/components/data-view/table/model/elder-table-model-cdk-table-binding.mjs +0 -85
- package/esm2022/lib/components/data-view/table/model/elder-table-model-provider.mjs +0 -40
- package/esm2022/lib/components/data-view/table/model/elder-table-model-query-group.mjs +0 -89
- package/esm2022/lib/components/data-view/table/model/elder-table-model.mjs +0 -167
- package/esm2022/lib/components/dialogs/confirm-dialog/elder-confirm-dialog.component.mjs +0 -37
- package/esm2022/lib/components/dialogs/elder-dialog-config.mjs +0 -3
- package/esm2022/lib/components/dialogs/elder-dialog.module.mjs +0 -87
- package/esm2022/lib/components/dialogs/elder-dialog.service.mjs +0 -199
- package/esm2022/lib/components/dialogs/question-dialog/elder-question-dialog.component.mjs +0 -57
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog/elder-selection-dialog.component.mjs +0 -43
- package/esm2022/lib/components/dialogs/selection-dialog/elder-selection-dialog.directive.mjs +0 -47
- package/esm2022/lib/components/errors/elder-error.module.mjs +0 -39
- package/esm2022/lib/components/errors/error-util.mjs +0 -94
- package/esm2022/lib/components/errors/exception-detail/elder-exception-detail.component.mjs +0 -77
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.component.mjs +0 -55
- package/esm2022/lib/components/expand-toggle-button/elder-expand-toggle-button.module.mjs +0 -35
- package/esm2022/lib/components/files/blob-url.mjs +0 -10
- package/esm2022/lib/components/files/blob-viewer/elder-blob-viewer.component.mjs +0 -224
- package/esm2022/lib/components/files/drag-n-drop/elder-drop-zone/elder-drop-zone.component.mjs +0 -44
- package/esm2022/lib/components/files/drag-n-drop/global-drag-drop.service.mjs +0 -84
- package/esm2022/lib/components/files/elder-file-drop-zone.directive.mjs +0 -145
- package/esm2022/lib/components/files/elder-file-select-input.mjs +0 -119
- package/esm2022/lib/components/files/elder-file-select.directive.mjs +0 -167
- package/esm2022/lib/components/files/elder-file.module.mjs +0 -85
- package/esm2022/lib/components/files/file-select/file-select.component.mjs +0 -54
- package/esm2022/lib/components/files/file-system-api.mjs +0 -100
- package/esm2022/lib/components/files/file-upload/file-upload.component.mjs +0 -80
- package/esm2022/lib/components/files/listing/file-entry.mjs +0 -92
- package/esm2022/lib/components/files/listing/file-listing-rx.mjs +0 -64
- package/esm2022/lib/components/files/listing/file-listing-system-handle.mjs +0 -35
- package/esm2022/lib/components/files/listing/file-listing-webkit.mjs +0 -76
- package/esm2022/lib/components/forms/clipboard/elder-clipboard.service.mjs +0 -51
- package/esm2022/lib/components/forms/directives/base/elder-class-hostbinding-base.mjs +0 -34
- package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox-controller.mjs +0 -97
- package/esm2022/lib/components/forms/directives/checkbox/elder-single-state-checkbox.directive.mjs +0 -50
- package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox-controller.mjs +0 -102
- package/esm2022/lib/components/forms/directives/checkbox/elder-triple-state-checkbox.directive.mjs +0 -50
- package/esm2022/lib/components/forms/directives/elder-clipboard-put.directive.mjs +0 -38
- package/esm2022/lib/components/forms/directives/elder-delayed-focus.directive.mjs +0 -43
- package/esm2022/lib/components/forms/directives/elder-form-field-dense.directive.mjs +0 -83
- package/esm2022/lib/components/forms/directives/elder-form-field-label.directive.mjs +0 -84
- package/esm2022/lib/components/forms/directives/elder-form-field-no-hint.directive.mjs +0 -42
- package/esm2022/lib/components/forms/directives/elder-form-field-no-spinner.directive.mjs +0 -35
- package/esm2022/lib/components/forms/directives/elder-forms-directives.module.mjs +0 -142
- package/esm2022/lib/components/forms/directives/elder-initial-value.directive.mjs +0 -67
- package/esm2022/lib/components/forms/directives/elder-input-pattern.directive.mjs +0 -78
- package/esm2022/lib/components/forms/directives/elder-key-event.directive.mjs +0 -112
- package/esm2022/lib/components/forms/directives/elder-next-focusable.directive.mjs +0 -102
- package/esm2022/lib/components/forms/directives/elder-plug-parent-form.directive.mjs +0 -37
- package/esm2022/lib/components/forms/directives/elder-stop-event-propagation.directive.mjs +0 -30
- package/esm2022/lib/components/forms/directives/elder-tab-focus-trap.directive.mjs +0 -161
- package/esm2022/lib/components/forms/directives/elder-touched.directive.mjs +0 -28
- package/esm2022/lib/components/forms/directives/validation/elder-validation-error.directive.mjs +0 -88
- package/esm2022/lib/components/forms/directives/validation/strategies/common-validation-message-strategy.mjs +0 -47
- package/esm2022/lib/components/forms/directives/validation/strategies/dynamic-validation-message-strategy.mjs +0 -48
- package/esm2022/lib/components/forms/directives/validation/strategies/fallback-validation-message-strategy.mjs +0 -6
- package/esm2022/lib/components/forms/directives/validation/validation-message-renderer.service.mjs +0 -53
- package/esm2022/lib/components/forms/directives/validation/validation-message-strategy.mjs +0 -2
- package/esm2022/lib/components/forms/directives/validation/validators/elder-max.validator.mjs +0 -36
- package/esm2022/lib/components/forms/directives/validation/validators/elder-min.validator.mjs +0 -36
- package/esm2022/lib/components/forms/directives/validation/validators/elder-multiple-of.validator.mjs +0 -112
- package/esm2022/lib/components/forms/directives/validation/validators/elder-required-ignore-zero.validator.mjs +0 -69
- package/esm2022/lib/components/forms/elder-forms.module.mjs +0 -22
- package/esm2022/lib/components/forms/public_api.mjs +0 -6
- package/esm2022/lib/components/forms/search/domain/context/search-context.mjs +0 -73
- package/esm2022/lib/components/forms/search/domain/context/search-context.service.mjs +0 -42
- package/esm2022/lib/components/forms/search/domain/input/input-value.mjs +0 -2
- package/esm2022/lib/components/forms/search/domain/input/search-input-state.mjs +0 -88
- package/esm2022/lib/components/forms/search/domain/input/search-input.mjs +0 -2
- package/esm2022/lib/components/forms/search/domain/input/simple-search-input.mjs +0 -50
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.directive.mjs +0 -92
- package/esm2022/lib/components/forms/search/domain/url/elder-search-url.service.mjs +0 -166
- package/esm2022/lib/components/forms/search/domain/url/search-query-params-parser.mjs +0 -81
- package/esm2022/lib/components/forms/search/elder-search-context.directive.mjs +0 -256
- package/esm2022/lib/components/forms/search/elder-search-input.directive.mjs +0 -258
- package/esm2022/lib/components/forms/search/elder-search.module.mjs +0 -115
- package/esm2022/lib/components/forms/search/filter/default-input-filter-converter.mjs +0 -45
- package/esm2022/lib/components/forms/search/filter/input-filter-converter.mjs +0 -2
- package/esm2022/lib/components/forms/search/search-box/elder-search-box.component.mjs +0 -131
- package/esm2022/lib/components/forms/search/search-box/elder-search-panel.component.mjs +0 -24
- package/esm2022/lib/components/global-search/elder-global-search.component.mjs +0 -136
- package/esm2022/lib/components/global-search/elder-global-search.module.mjs +0 -47
- package/esm2022/lib/components/global-search/elder-global-search.service.mjs +0 -95
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.component.mjs +0 -90
- package/esm2022/lib/components/graph/elder-progress-bar/elder-progress-bar.module.mjs +0 -19
- package/esm2022/lib/components/graph/elder-progress-bar/sub-bar.mjs +0 -7
- package/esm2022/lib/components/graph/public_api.mjs +0 -2
- package/esm2022/lib/components/headers/elder-header/elder-header.component.mjs +0 -29
- package/esm2022/lib/components/headers/elder-header.module.mjs +0 -42
- package/esm2022/lib/components/http-support/elder-http-client.service.mjs +0 -63
- package/esm2022/lib/components/http-support/public_api.mjs +0 -2
- package/esm2022/lib/components/i18n/entities/elder-i18n-entities.module.mjs +0 -125
- package/esm2022/lib/components/i18n/entities/elder-localized-input/elder-localized-input.component.mjs +0 -157
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog/elder-localized-input-dialog.component.mjs +0 -39
- package/esm2022/lib/components/i18n/entities/elder-localized-input-dialog.service.mjs +0 -30
- package/esm2022/lib/components/i18n/entities/elder-localized-input-table/elder-localized-input-table.component.mjs +0 -177
- package/esm2022/lib/components/i18n/entities/elder-localized-text-column.directive.mjs +0 -31
- package/esm2022/lib/components/i18n/entities/elder-localized-texts.directive.mjs +0 -56
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick-async.pipe.mjs +0 -40
- package/esm2022/lib/components/i18n/entities/picker/i18n-pick.pipe.mjs +0 -31
- package/esm2022/lib/components/i18n/entities/picker/localisation-picker.service.mjs +0 -74
- package/esm2022/lib/components/i18n/language/elder-language-config.mjs +0 -3
- package/esm2022/lib/components/i18n/language/elder-language-interceptor.mjs +0 -70
- package/esm2022/lib/components/i18n/language/elder-language.module.mjs +0 -73
- package/esm2022/lib/components/i18n/language/elder-language.service.mjs +0 -120
- package/esm2022/lib/components/i18n/language/language-switcher/elder-language-switcher.component.mjs +0 -79
- package/esm2022/lib/components/i18n/locales/elder-locales-de-ch.module.mjs +0 -53
- package/esm2022/lib/components/i18n/public_api.mjs +0 -4
- package/esm2022/lib/components/iframes/data-view/data-view-iframe/data-view-iframe.component.mjs +0 -129
- package/esm2022/lib/components/iframes/data-view/data-view-iframe-adapter.directive.mjs +0 -141
- package/esm2022/lib/components/iframes/elder-iframe.module.mjs +0 -106
- package/esm2022/lib/components/iframes/iframe-close.directive.mjs +0 -41
- package/esm2022/lib/components/iframes/iframe-dialog/iframe-dialog.component.mjs +0 -51
- package/esm2022/lib/components/iframes/iframe-host/iframe-host.component.mjs +0 -144
- package/esm2022/lib/components/iframes/iframe-messages.mjs +0 -5
- package/esm2022/lib/components/iframes/iframe-side-content/iframe-side-content.component.mjs +0 -80
- package/esm2022/lib/components/iframes/iframe.service.mjs +0 -54
- package/esm2022/lib/components/iframes/typed-event-message.mjs +0 -42
- package/esm2022/lib/components/infinitescroll/elder-infinite-autocomplete.directive.mjs +0 -65
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.directive.mjs +0 -166
- package/esm2022/lib/components/infinitescroll/elder-infinite-scroll.module.mjs +0 -20
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-autocomplete-option-selected.mjs +0 -9
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete/elder-suggestion-panel.component.mjs +0 -233
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete-many.directive.mjs +0 -202
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.directive.mjs +0 -120
- package/esm2022/lib/components/input/autocomplete/elder-autocomplete.module.mjs +0 -61
- package/esm2022/lib/components/input/autocomplete/many/word-position-finder.mjs +0 -58
- package/esm2022/lib/components/input/public_api.mjs +0 -2
- package/esm2022/lib/components/labels/elder-labels.module.mjs +0 -50
- package/esm2022/lib/components/labels/labels-input/labels-input.component.mjs +0 -239
- package/esm2022/lib/components/measures/dimensions/dimensions-input/elder-dimensions-input.component.mjs +0 -268
- package/esm2022/lib/components/measures/dimensions/validation/elder-required-dimensions.validator.mjs +0 -92
- package/esm2022/lib/components/measures/directives/elder-unit-select.directive.mjs +0 -65
- package/esm2022/lib/components/measures/elder-measures.module.mjs +0 -130
- package/esm2022/lib/components/measures/elder-quantity-transform.pipe.mjs +0 -31
- package/esm2022/lib/components/measures/elder-quantity.pipe.mjs +0 -43
- package/esm2022/lib/components/measures/elder-unit.service.mjs +0 -113
- package/esm2022/lib/components/measures/model/dimensions.mjs +0 -17
- package/esm2022/lib/components/measures/model/quantity.mjs +0 -12
- package/esm2022/lib/components/measures/model/unit-dimension.mjs +0 -14
- package/esm2022/lib/components/measures/model/unit-registry.mjs +0 -81
- package/esm2022/lib/components/measures/model/unit.mjs +0 -143
- package/esm2022/lib/components/measures/public_api.mjs +0 -8
- package/esm2022/lib/components/measures/quantity-input/quantity-form-field/elder-quantity-form-field.component.mjs +0 -44
- package/esm2022/lib/components/measures/quantity-input/quantity-input-control/elder-quantity-input-control.component.mjs +0 -173
- package/esm2022/lib/components/measures/quantity-input/validation/elder-quantity-range.validator.mjs +0 -84
- package/esm2022/lib/components/measures/quantity-input/validation/elder-required-quantity.validator.mjs +0 -73
- package/esm2022/lib/components/measures/util/elder-quantity.service.mjs +0 -341
- package/esm2022/lib/components/navigation/bread-crumbs/bread-crumbs/elder-bread-crumbs.component.mjs +0 -184
- package/esm2022/lib/components/navigation/bread-crumbs/elder-bread-crumbs.module.mjs +0 -59
- package/esm2022/lib/components/navigation/bread-crumbs/path/path.mjs +0 -37
- package/esm2022/lib/components/navigation/nav/elder-nav.module.mjs +0 -60
- package/esm2022/lib/components/navigation/nav/nav-group/elder-nav-group.component.mjs +0 -121
- package/esm2022/lib/components/navigation/nav/nav-link/elder-nav-link.component.mjs +0 -174
- package/esm2022/lib/components/navigation/nav/nav-list/elder-nav-list.component.mjs +0 -68
- package/esm2022/lib/components/navigation/public_api.mjs +0 -4
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar-column.directive.mjs +0 -48
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.module.mjs +0 -83
- package/esm2022/lib/components/navigation/toolbar/elder-toolbar.service.mjs +0 -68
- package/esm2022/lib/components/navigation/toolbar/toolbar/elder-toolbar.component.mjs +0 -71
- package/esm2022/lib/components/navigation/toolbar/toolbar-column-position.mjs +0 -2
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.component.mjs +0 -39
- package/esm2022/lib/components/navigation/toolbar/toolbar-title/elder-toolbar-title.service.mjs +0 -86
- package/esm2022/lib/components/overlays/elder-overlay-origin.directive.mjs +0 -44
- package/esm2022/lib/components/overlays/elder-overlay-ref.mjs +0 -41
- package/esm2022/lib/components/overlays/elder-overlay-trigger.directive.mjs +0 -73
- package/esm2022/lib/components/overlays/elder-overlay.component.mjs +0 -232
- package/esm2022/lib/components/overlays/elder-overlay.module.mjs +0 -35
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.module.mjs +0 -20
- package/esm2022/lib/components/page/exit-guard/page-exit-guard.service.mjs +0 -129
- package/esm2022/lib/components/page/exit-guard/page-exit-lock/page-exit-lock.component.mjs +0 -25
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-indicator/page-exit-lock-indicator.component.mjs +0 -29
- package/esm2022/lib/components/page/exit-guard/page-exit-lock-overview/page-exit-lock-overview.component.mjs +0 -26
- package/esm2022/lib/components/page/public_api.mjs +0 -2
- package/esm2022/lib/components/panels/card-panel/elder-card-panel.component.mjs +0 -12
- package/esm2022/lib/components/panels/elder-dialog-panel/elder-dialog-panel.component.mjs +0 -12
- package/esm2022/lib/components/panels/elder-panel.module.mjs +0 -60
- package/esm2022/lib/components/panels/flat/elder-panel.component.mjs +0 -26
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel-trigger.directive.mjs +0 -70
- package/esm2022/lib/components/panels/toggle-panel/elder-toggle-panel.component.mjs +0 -74
- package/esm2022/lib/components/public_api.mjs +0 -43
- package/esm2022/lib/components/scrollbar/elder-scrollbar.directive.mjs +0 -63
- package/esm2022/lib/components/scrollbar/elder-scrollbar.module.mjs +0 -17
- package/esm2022/lib/components/select/auto/elder-auto-select-first.directive.mjs +0 -95
- package/esm2022/lib/components/select/auto/elder-auto-select-first.service.mjs +0 -38
- package/esm2022/lib/components/select/auto/elder-auto-select-suggest-first.directive.mjs +0 -64
- package/esm2022/lib/components/select/auto/elder-select-first-util.mjs +0 -55
- package/esm2022/lib/components/select/elder-select-base.mjs +0 -333
- package/esm2022/lib/components/select/elder-select-chip.directive.mjs +0 -48
- package/esm2022/lib/components/select/elder-select-on-tab.directive.mjs +0 -139
- package/esm2022/lib/components/select/elder-select-value.directive.mjs +0 -18
- package/esm2022/lib/components/select/elder-select.module.mjs +0 -229
- package/esm2022/lib/components/select/filter/elder-chip-filter-style-resolver.mjs +0 -74
- package/esm2022/lib/components/select/filter/elder-chips-include-exclude.directive.mjs +0 -148
- package/esm2022/lib/components/select/filter/elder-filter-chip-template/elder-filter-chip-template.component.mjs +0 -51
- package/esm2022/lib/components/select/filter/include-exclude-model-filter-adapter.mjs +0 -61
- package/esm2022/lib/components/select/filter/include-exclude-selection-model.mjs +0 -160
- package/esm2022/lib/components/select/multi/elder-chip-select-option/elder-select-option.component.mjs +0 -16
- package/esm2022/lib/components/select/multi/elder-multi-select-base.mjs +0 -386
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/chip-options-provider.mjs +0 -87
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/elder-multi-select-chip-options.component.mjs +0 -263
- package/esm2022/lib/components/select/multi/elder-multi-select-chip-options/select-option-chip-spec.mjs +0 -15
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/elder-multi-select-chips.component.mjs +0 -274
- package/esm2022/lib/components/select/multi/elder-multi-select-chips/select-chip-spec.mjs +0 -15
- package/esm2022/lib/components/select/multi/elder-multi-select-form-field.mjs +0 -86
- package/esm2022/lib/components/select/multi/elder-mutli-select-all-directive.mjs +0 -34
- package/esm2022/lib/components/select/multi/elder-search-include-exclude.directive.mjs +0 -146
- package/esm2022/lib/components/select/multi/public_api.mjs +0 -5
- package/esm2022/lib/components/select/popup/selection-model-popup-trigger-adapter.directive.mjs +0 -89
- package/esm2022/lib/components/select/popup/selection-model-popup.directive.mjs +0 -126
- package/esm2022/lib/components/select/popup/templated-selection-dialog/templated-selection-dialog.component.mjs +0 -58
- package/esm2022/lib/components/select/public_api.mjs +0 -5
- package/esm2022/lib/components/select/single/elder-clear-select.directive.mjs +0 -60
- package/esm2022/lib/components/select/single/elder-select/elder-select.component.mjs +0 -444
- package/esm2022/lib/components/select/single/elder-select-form-field.mjs +0 -45
- package/esm2022/lib/components/select-chip-list/chip-list-select/elder-chip-list-select.component.mjs +0 -148
- package/esm2022/lib/components/select-chip-list/elder-chip-list-select.module.mjs +0 -46
- package/esm2022/lib/components/shell/drawers/drawer-outlet-binding.mjs +0 -64
- package/esm2022/lib/components/shell/drawers/elder-route-outlet-drawer.service.mjs +0 -119
- package/esm2022/lib/components/shell/drawers/elder-router-outlet.service.mjs +0 -128
- package/esm2022/lib/components/shell/elder-shell-slot.directive.mjs +0 -47
- package/esm2022/lib/components/shell/elder-shell.module.mjs +0 -101
- package/esm2022/lib/components/shell/elder-shell.service.mjs +0 -142
- package/esm2022/lib/components/shell/header/elder-app-header/elder-app-header.component.mjs +0 -75
- package/esm2022/lib/components/shell/shell/elder-shell.component.mjs +0 -238
- package/esm2022/lib/components/shell/shell-content-slot.mjs +0 -2
- package/esm2022/lib/components/shell/shell-navigation-toggle/elder-shell-navigation-toggle.component.mjs +0 -137
- package/esm2022/lib/components/tabs/elder-tab/elder-tab.directive.mjs +0 -26
- package/esm2022/lib/components/tabs/elder-tab-group-routing/elder-tab-group-routing.directive.mjs +0 -257
- package/esm2022/lib/components/tabs/elder-tab.module.mjs +0 -21
- package/esm2022/lib/components/theme/elder-theme-applier.directive.mjs +0 -62
- package/esm2022/lib/components/theme/elder-theme-preference.service.mjs +0 -73
- package/esm2022/lib/components/theme/elder-theme-toggle/elder-theme-toggle.component.mjs +0 -74
- package/esm2022/lib/components/theme/elder-theme.directive.mjs +0 -64
- package/esm2022/lib/components/theme/elder-theme.module.mjs +0 -68
- package/esm2022/lib/components/theme/elder-theme.service.mjs +0 -121
- package/esm2022/lib/components/theme/known-elder-themes.mjs +0 -6
- package/esm2022/lib/components/theme/public_api.mjs +0 -2
- package/esm2022/lib/components/theme/theme-spec.mjs +0 -11
- package/esm2022/lib/components/time/date-adapters/custom-date-adapter.mjs +0 -43
- package/esm2022/lib/components/time/date-formats/locale-date-formats.mjs +0 -28
- package/esm2022/lib/components/time/duration/duration-bucket.mjs +0 -68
- package/esm2022/lib/components/time/duration/duration-format.mjs +0 -271
- package/esm2022/lib/components/time/duration/elder-duration-input/elder-duration-input.component.mjs +0 -110
- package/esm2022/lib/components/time/duration/iso-duration-str.mjs +0 -2
- package/esm2022/lib/components/time/elder-date-switcher/elder-date-switcher.component.mjs +0 -96
- package/esm2022/lib/components/time/elder-date-time-input/elder-date-time-input.component.mjs +0 -98
- package/esm2022/lib/components/time/elder-interval-input/elder-interval-input.component.mjs +0 -217
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-anchor-controller.mjs +0 -21
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-calendar-controller.mjs +0 -24
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-controller.mjs +0 -43
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-form-controller.mjs +0 -69
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-select-controller.mjs +0 -117
- package/esm2022/lib/components/time/elder-interval-picker/controller/interval-shift-controller.mjs +0 -44
- package/esm2022/lib/components/time/elder-interval-picker/elder-interval-picker.component.mjs +0 -198
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-binding/elder-interval-picker-binding.directive.mjs +0 -41
- package/esm2022/lib/components/time/elder-interval-picker/interval-picker-toggle/elder-interval-picker-toggle.component.mjs +0 -144
- package/esm2022/lib/components/time/elder-interval-picker/manager/interval-picker-state-manager.mjs +0 -93
- package/esm2022/lib/components/time/elder-interval-picker/model/anchor-state.mjs +0 -54
- package/esm2022/lib/components/time/elder-interval-picker/model/interval-state.mjs +0 -37
- package/esm2022/lib/components/time/elder-interval-picker/model/smart-shift-state.mjs +0 -10
- package/esm2022/lib/components/time/elder-interval-picker/presenter/interval-picker-presenter.mjs +0 -96
- package/esm2022/lib/components/time/elder-interval-picker/util/interval-picker-util.mjs +0 -194
- package/esm2022/lib/components/time/elder-local-date-input/elder-local-date-input.component.mjs +0 -268
- package/esm2022/lib/components/time/elder-local-time-input/elder-local-time-input.component.mjs +0 -85
- package/esm2022/lib/components/time/elder-time.module.mjs +0 -154
- package/esm2022/lib/components/time/period/elder-period-input/elder-period-input.component.mjs +0 -118
- package/esm2022/lib/components/time/period/period-bucket.mjs +0 -31
- package/esm2022/lib/components/time/period/period-format.mjs +0 -89
- package/esm2022/lib/components/time/pipes/to-iso-date-string.pipe.mjs +0 -39
- package/esm2022/lib/components/time/public_api.mjs +0 -8
- package/esm2022/lib/components/toasts/elder-toast.module.mjs +0 -36
- package/esm2022/lib/components/toasts/elder-toast.service.mjs +0 -170
- package/esm2022/lib/components/toasts/standard-toast/standard-toast.component.mjs +0 -80
- package/esm2022/lib/components/toasts/toast-type.mjs +0 -7
- package/esm2022/lib/components/toasts/toast.mjs +0 -2
- package/esm2022/lib/components/url-fragment/elder-url-fragment.mjs +0 -9
- package/esm2022/lib/components/url-fragment/elder-url-fragment.module.mjs +0 -52
- package/esm2022/lib/components/url-fragment/url-fragment-switcher/elder-url-fragment-switcher.component.mjs +0 -95
- package/esm2022/lib/components/viewers/elder-svg-viewer/elder-svg-viewer.component.mjs +0 -64
- package/esm2022/lib/components/viewers/elder-viewers.module.mjs +0 -18
- package/esm2022/lib/features/event-source/fetch/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.mjs +0 -219
- package/esm2022/lib/features/event-source/fetch/reactive-fetch-event-source.service.mjs +0 -53
- package/esm2022/lib/features/event-source/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/standard/elder-event-source.service.mjs +0 -56
- package/esm2022/lib/features/event-source/standard/public_api.mjs +0 -3
- package/esm2022/lib/features/event-source/standard/reactive-event-source.mjs +0 -199
- package/esm2022/lib/features/kafent/access-token-provider.mjs +0 -20
- package/esm2022/lib/features/kafent/kafent-config.mjs +0 -24
- package/esm2022/lib/features/kafent/kafent-event-stream.mjs +0 -25
- package/esm2022/lib/features/kafent/kafent-event.mjs +0 -3
- package/esm2022/lib/features/kafent/kafent-event.service.mjs +0 -115
- package/esm2022/lib/features/kafent/kafent-live-event-request.mjs +0 -2
- package/esm2022/lib/features/kafent/kafent.module.mjs +0 -58
- package/esm2022/lib/features/kafent/sse/kafent-event-stream-sse.service.mjs +0 -131
- package/esm2022/lib/features/kafent/sse/kafent-topic-sse.mjs +0 -97
- package/esm2022/lib/features/public_api.mjs +0 -3
- package/esm2022/lib/pipes/bytes.pipe.mjs +0 -27
- package/esm2022/lib/pipes/elder-pipes.module.mjs +0 -114
- package/esm2022/lib/pipes/elder-repeat.pipe.mjs +0 -24
- package/esm2022/lib/pipes/elder-round.pipe.mjs +0 -36
- package/esm2022/lib/pipes/elder-safe-url.pipe.mjs +0 -21
- package/esm2022/lib/pipes/elder-truncate.pipe.mjs +0 -41
- package/esm2022/lib/pipes/iso-duration.pipe.mjs +0 -41
- package/esm2022/lib/pipes/iso-interval-parse.pipe.mjs +0 -49
- package/esm2022/lib/pipes/iso-interval.pipe.mjs +0 -62
- package/esm2022/lib/pipes/public_api.mjs +0 -2
- package/esm2022/lib/pipes/time-ago.pipe.mjs +0 -110
- package/esm2022/lib/pipes/time-duration.pipe.mjs +0 -101
- package/esm2022/lib/pipes/weight.pipe.mjs +0 -60
- package/esm2022/public_api.mjs +0 -8
- package/lib/components/panels/flat/elder-panel.component.d.ts +0 -15
- package/src/lib/components/panels/flat/elder-panel.component.scss +0 -3
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
import { ChangeDetectionStrategy, Component, forwardRef, HostBinding, Input, Output, ViewChild, ViewEncapsulation, signal, untracked, computed, } from '@angular/core';
|
|
2
|
-
import { LoggerFactory } from '@elderbyte/ts-logger';
|
|
3
|
-
import { EMPTY } from 'rxjs';
|
|
4
|
-
import { map, skip, filter, switchMap, take, timeout, catchError, } from 'rxjs/operators';
|
|
5
|
-
import { coerceBooleanProperty } from '@angular/cdk/coercion';
|
|
6
|
-
import { MatAutocompleteTrigger } from '@angular/material/autocomplete';
|
|
7
|
-
import { ELDER_SELECT_BASE, ElderSelectBase, ElderSelectComponentState, } from '../../elder-select-base';
|
|
8
|
-
import { MatFormFieldControl } from '@angular/material/form-field';
|
|
9
|
-
import { FormsModule } from '@angular/forms';
|
|
10
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
11
|
-
import { ElderStopEventPropagationDirective } from '../../../forms/directives/elder-stop-event-propagation.directive';
|
|
12
|
-
import { MatIconButton } from '@angular/material/button';
|
|
13
|
-
import { ElderAutocompleteDirective } from '../../../input/autocomplete/elder-autocomplete.directive';
|
|
14
|
-
import { ElderSelectOnTabDirective } from '../../elder-select-on-tab.directive';
|
|
15
|
-
import { MatInput } from '@angular/material/input';
|
|
16
|
-
import { MatTooltip } from '@angular/material/tooltip';
|
|
17
|
-
import { MatIcon } from '@angular/material/icon';
|
|
18
|
-
import { ElderSuggestionPanelComponent } from '../../../input/autocomplete/elder-autocomplete/elder-suggestion-panel.component';
|
|
19
|
-
import { ElderAutoSelectSuggestFirstDirective } from '../../auto/elder-auto-select-suggest-first.directive';
|
|
20
|
-
import { toObservable } from '@angular/core/rxjs-interop';
|
|
21
|
-
import * as i0 from "@angular/core";
|
|
22
|
-
import * as i1 from "@angular/forms";
|
|
23
|
-
import * as i2 from "@ngx-translate/core";
|
|
24
|
-
class EntityContext {
|
|
25
|
-
constructor(value, displayText, displayRemove) {
|
|
26
|
-
this.value = value;
|
|
27
|
-
this.displayText = displayText;
|
|
28
|
-
this.displayRemove = displayRemove;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
/**
|
|
32
|
-
* The elder-select control allows to select a single
|
|
33
|
-
* entity.
|
|
34
|
-
*
|
|
35
|
-
* Primary focus is on easy usage for common scenarios:
|
|
36
|
-
*
|
|
37
|
-
* - Integrated into angular forms and validation
|
|
38
|
-
* - Support entity id handling, input / output is the entity id vs full value.
|
|
39
|
-
*
|
|
40
|
-
*/
|
|
41
|
-
export class ElderSelectComponent extends ElderSelectBase {
|
|
42
|
-
/***************************************************************************
|
|
43
|
-
* *
|
|
44
|
-
* Constructor *
|
|
45
|
-
* *
|
|
46
|
-
**************************************************************************/
|
|
47
|
-
constructor() {
|
|
48
|
-
super('single-select');
|
|
49
|
-
/***************************************************************************
|
|
50
|
-
* *
|
|
51
|
-
* Fields *
|
|
52
|
-
* *
|
|
53
|
-
**************************************************************************/
|
|
54
|
-
this.logger = LoggerFactory.getLogger(this.constructor.name);
|
|
55
|
-
this._allowNull = false;
|
|
56
|
-
/**
|
|
57
|
-
* String to display for the 'nothing' / null value.
|
|
58
|
-
*/
|
|
59
|
-
this.nullDisplay = '-';
|
|
60
|
-
this.entityS = signal(undefined);
|
|
61
|
-
this.entity$ = toObservable(this.entityS);
|
|
62
|
-
this._autocomplete = false;
|
|
63
|
-
this.entityWrapped = computed(() => this.buildEntityContext(this.entityS(), this.displayPropertyResolverS()));
|
|
64
|
-
this.inputText = computed(() => {
|
|
65
|
-
const ctx = this.entityWrapped();
|
|
66
|
-
return ctx.value ? ctx.displayText : null;
|
|
67
|
-
});
|
|
68
|
-
this.entityIdChange = this.valueChange.pipe(map((v) => this.entityIdFromValue(v)));
|
|
69
|
-
this.entityChange = this.entity$.pipe(skip(1) // Skip the initial or current value
|
|
70
|
-
);
|
|
71
|
-
this.entityIdUpdated = this.valueUpdated.pipe(map((value) => this.entityIdFromValue(value)));
|
|
72
|
-
this.entityUpdated = this.entityIdUpdated.pipe(switchMap((entityId) => this.awaitEntityWithId(entityId, this.timeoutAfterMs)), catchError((err) => {
|
|
73
|
-
this.logger.warn(`awaitEntityWithId -> timed out after: ${this.timeoutAfterMs}`, err);
|
|
74
|
-
return EMPTY;
|
|
75
|
-
}));
|
|
76
|
-
}
|
|
77
|
-
buildEntityContext(entity, displayPropertyFn) {
|
|
78
|
-
return new EntityContext(entity, displayPropertyFn(entity), entity && this.allowNull);
|
|
79
|
-
}
|
|
80
|
-
/***************************************************************************
|
|
81
|
-
* *
|
|
82
|
-
* Life Cycle *
|
|
83
|
-
* *
|
|
84
|
-
**************************************************************************/
|
|
85
|
-
ngOnDestroy() {
|
|
86
|
-
this.autoCleanUp();
|
|
87
|
-
}
|
|
88
|
-
/***************************************************************************
|
|
89
|
-
* *
|
|
90
|
-
* Host Bindings *
|
|
91
|
-
* *
|
|
92
|
-
**************************************************************************/
|
|
93
|
-
get hostClass() {
|
|
94
|
-
return 'elder-select-base elder-select';
|
|
95
|
-
}
|
|
96
|
-
get disabledClass() {
|
|
97
|
-
return this.disabled;
|
|
98
|
-
}
|
|
99
|
-
get errorStateClass() {
|
|
100
|
-
return this.errorState;
|
|
101
|
-
}
|
|
102
|
-
get requiredClass() {
|
|
103
|
-
return this.required;
|
|
104
|
-
}
|
|
105
|
-
get emptyClass() {
|
|
106
|
-
return this.empty;
|
|
107
|
-
}
|
|
108
|
-
/***************************************************************************
|
|
109
|
-
* *
|
|
110
|
-
* Behaviour Properties *
|
|
111
|
-
* *
|
|
112
|
-
**************************************************************************/
|
|
113
|
-
set autocomplete(value) {
|
|
114
|
-
this._autocomplete = coerceBooleanProperty(value);
|
|
115
|
-
}
|
|
116
|
-
get autocomplete() {
|
|
117
|
-
return this._autocomplete;
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Allows the user to select 'nothing' / null.
|
|
121
|
-
*/
|
|
122
|
-
set allowNull(val) {
|
|
123
|
-
this._allowNull = coerceBooleanProperty(val);
|
|
124
|
-
}
|
|
125
|
-
get allowNull() {
|
|
126
|
-
return this._allowNull;
|
|
127
|
-
}
|
|
128
|
-
/***************************************************************************
|
|
129
|
-
* *
|
|
130
|
-
* Properties *
|
|
131
|
-
* *
|
|
132
|
-
**************************************************************************/
|
|
133
|
-
set entity(entity) {
|
|
134
|
-
this.entityS.set(entity);
|
|
135
|
-
this.writeValueInternal(this.entityToValue(entity));
|
|
136
|
-
this.onEntityValueReady();
|
|
137
|
-
}
|
|
138
|
-
get entity() {
|
|
139
|
-
return untracked(this.entityS);
|
|
140
|
-
}
|
|
141
|
-
set entityId(id) {
|
|
142
|
-
if (this.valueAsId) {
|
|
143
|
-
this.writeValueInternal(id);
|
|
144
|
-
}
|
|
145
|
-
else {
|
|
146
|
-
this.selectEntityById(id);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
get entityId() {
|
|
150
|
-
return this.entityIdFromValue(this.value);
|
|
151
|
-
}
|
|
152
|
-
/***************************************************************************
|
|
153
|
-
* *
|
|
154
|
-
* Public API *
|
|
155
|
-
* *
|
|
156
|
-
**************************************************************************/
|
|
157
|
-
onInputBlur(event) {
|
|
158
|
-
const input = event.target;
|
|
159
|
-
input.value = untracked(this.inputText);
|
|
160
|
-
}
|
|
161
|
-
onInputFocus(autoTrigger) {
|
|
162
|
-
if (!this._autocomplete) {
|
|
163
|
-
this.openPanel(autoTrigger);
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
get isOptionDisabledInternalFn() {
|
|
167
|
-
return (option) => {
|
|
168
|
-
if (!this.isEntitySelected(option)) {
|
|
169
|
-
if (this.isOptionDisabledFn) {
|
|
170
|
-
return this.isOptionDisabledFn(option);
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
return false;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
return true;
|
|
177
|
-
};
|
|
178
|
-
}
|
|
179
|
-
get isOptionHiddenInternalFn() {
|
|
180
|
-
return (option) => {
|
|
181
|
-
if (this.isOptionHiddenFn) {
|
|
182
|
-
return this.isOptionHiddenFn(option);
|
|
183
|
-
}
|
|
184
|
-
else {
|
|
185
|
-
return false;
|
|
186
|
-
}
|
|
187
|
-
};
|
|
188
|
-
}
|
|
189
|
-
togglePanel(autoTrigger) {
|
|
190
|
-
if (autoTrigger.autocomplete.isOpen) {
|
|
191
|
-
autoTrigger.closePanel();
|
|
192
|
-
}
|
|
193
|
-
else {
|
|
194
|
-
this.openPanel(autoTrigger);
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
openPanel(autoTrigger) {
|
|
198
|
-
if (this.isLocked) {
|
|
199
|
-
this.logger.debug('Prevented opening autocomplete since select is locked!', autoTrigger);
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
this.logger.debug('Requesting to open auto-complete panel...', autoTrigger);
|
|
203
|
-
if (this.dataContext) {
|
|
204
|
-
try {
|
|
205
|
-
this.dataContext.start(this.sorts, this.filters);
|
|
206
|
-
}
|
|
207
|
-
catch (err) {
|
|
208
|
-
this.logger.error('Failed to start DC!', err);
|
|
209
|
-
this.updateState(ElderSelectComponentState.error(err));
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
autoTrigger.openPanel();
|
|
213
|
-
}
|
|
214
|
-
onInputClicked(autoTrigger) {
|
|
215
|
-
// this.logger.debug('onInputClicked, locked: ' + this.isLocked + ', autocomplete: ' + this.autocomplete, autoTrigger);
|
|
216
|
-
if (this.isLocked || this.autocomplete) {
|
|
217
|
-
return;
|
|
218
|
-
}
|
|
219
|
-
this.openPanel(autoTrigger);
|
|
220
|
-
// this.togglePanel(autoTrigger);
|
|
221
|
-
}
|
|
222
|
-
onOptionSelected(optionSelected) {
|
|
223
|
-
if (this.isLocked) {
|
|
224
|
-
this.logger.warn('Prevented selection option since this select is locked!');
|
|
225
|
-
return;
|
|
226
|
-
}
|
|
227
|
-
const selectedEntity = optionSelected.entity;
|
|
228
|
-
if (this.isEntitySelected(selectedEntity)) {
|
|
229
|
-
this.writeValueInternal(null); // HACK: Ensure we trigger view redraw
|
|
230
|
-
}
|
|
231
|
-
this.updateValueByEntity(selectedEntity);
|
|
232
|
-
}
|
|
233
|
-
openSelectionPopup(event) {
|
|
234
|
-
if (this.selectionPopup) {
|
|
235
|
-
this.selectionPopup
|
|
236
|
-
.choose((e) => this.getEntityId(e), [], // TODO Or use current entity?
|
|
237
|
-
this.filters, this.sorts, false)
|
|
238
|
-
.subscribe((selection) => {
|
|
239
|
-
this.updateValueByEntity(selection[0]);
|
|
240
|
-
});
|
|
241
|
-
}
|
|
242
|
-
else {
|
|
243
|
-
this.logger.warn('Cant open selection browser popup, since [SelectionModelPopupDirective] was not found!');
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
clear(event) {
|
|
247
|
-
this.updateValue(null);
|
|
248
|
-
}
|
|
249
|
-
updateValueByEntity(entity) {
|
|
250
|
-
this.entityS.set(entity);
|
|
251
|
-
this.updateValue(this.entityToValue(entity));
|
|
252
|
-
}
|
|
253
|
-
focus(options) {
|
|
254
|
-
this.inputRef?.nativeElement?.focus(options);
|
|
255
|
-
}
|
|
256
|
-
blur() {
|
|
257
|
-
this.inputRef?.nativeElement?.blur();
|
|
258
|
-
}
|
|
259
|
-
/***************************************************************************
|
|
260
|
-
* *
|
|
261
|
-
* Abstract Implementation *
|
|
262
|
-
* *
|
|
263
|
-
**************************************************************************/
|
|
264
|
-
/**
|
|
265
|
-
* Occurs when the suggestions data-context has changed
|
|
266
|
-
*/
|
|
267
|
-
onDataContextChanged(data) {
|
|
268
|
-
if (this.valueAsId) {
|
|
269
|
-
this.selectEntityById(this.entityId);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
/***************************************************************************
|
|
273
|
-
* *
|
|
274
|
-
* Private Methods *
|
|
275
|
-
* *
|
|
276
|
-
**************************************************************************/
|
|
277
|
-
valuesEquals(a, b) {
|
|
278
|
-
return this.entityIdFromValue(a) === this.entityIdFromValue(b);
|
|
279
|
-
}
|
|
280
|
-
awaitEntityWithId(entityId, timeoutMs) {
|
|
281
|
-
return this.entity$.pipe(filter((entity) => this.getEntityId(entity) === entityId), take(1), timeout(timeoutMs));
|
|
282
|
-
}
|
|
283
|
-
isEntitySelected(entity) {
|
|
284
|
-
return this.getEntityId(entity) === this.entityId;
|
|
285
|
-
}
|
|
286
|
-
entityIdFromValue(value) {
|
|
287
|
-
if (this.valueAsId) {
|
|
288
|
-
return value;
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
-
const entity = value;
|
|
292
|
-
return this.getEntityId(entity);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
selectEntityById(id) {
|
|
296
|
-
const currentEntity = this.entity;
|
|
297
|
-
if (currentEntity && this.getEntityId(currentEntity) === id) {
|
|
298
|
-
this.onEntityValueReady();
|
|
299
|
-
return; // Entity already loaded
|
|
300
|
-
}
|
|
301
|
-
if (id === null || id === undefined || id === '') {
|
|
302
|
-
if (currentEntity !== null && currentEntity !== undefined) {
|
|
303
|
-
this.entity = null;
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
if (this.dataContext) {
|
|
308
|
-
const existing = this.findInDataContext(id);
|
|
309
|
-
if (existing) {
|
|
310
|
-
this.entity = existing;
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
this.loadEntityById(id);
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
else {
|
|
317
|
-
this.updateState(ElderSelectComponentState.error('Failed to select value by Id: ' + id + ' - DataContext not available.'));
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
loadEntityById(id) {
|
|
322
|
-
this.updateState(ElderSelectComponentState.loading());
|
|
323
|
-
this.dataSourceOrThrow()
|
|
324
|
-
.findById(id)
|
|
325
|
-
.subscribe({
|
|
326
|
-
next: (entity) => {
|
|
327
|
-
this.logger.debug('Loaded missing entity by id ' + id + ':', entity);
|
|
328
|
-
this.entity = entity;
|
|
329
|
-
},
|
|
330
|
-
error: (err) => {
|
|
331
|
-
this.logger.error('Failed to load entity by id ' + id, err);
|
|
332
|
-
this.updateState(ElderSelectComponentState.error(err));
|
|
333
|
-
},
|
|
334
|
-
});
|
|
335
|
-
}
|
|
336
|
-
onEntityValueReady() {
|
|
337
|
-
this.updateState(ElderSelectComponentState.idle());
|
|
338
|
-
}
|
|
339
|
-
findInDataContext(id) {
|
|
340
|
-
return this.dataContext.snapshot.data.find((v) => this.getEntityId(v) === id);
|
|
341
|
-
}
|
|
342
|
-
entityToValue(entity) {
|
|
343
|
-
if (this.valueAsId) {
|
|
344
|
-
const id = this.getEntityId(entity);
|
|
345
|
-
return id;
|
|
346
|
-
}
|
|
347
|
-
else {
|
|
348
|
-
return entity;
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
/**
|
|
352
|
-
* This method is invoked after a value has been written to this control.
|
|
353
|
-
*
|
|
354
|
-
*/
|
|
355
|
-
writeToControl(value) {
|
|
356
|
-
if (this.valueAsId) {
|
|
357
|
-
const entityId = value;
|
|
358
|
-
// Value was written as entity id, ensure we select entity by id
|
|
359
|
-
this.logger.debug('writeToControl: value was written as id: ' + entityId, value);
|
|
360
|
-
this.selectEntityById(entityId);
|
|
361
|
-
}
|
|
362
|
-
else {
|
|
363
|
-
// Value was written as entity, ensure entity is updated
|
|
364
|
-
const currentEntity = this.entity;
|
|
365
|
-
const newEntity = value;
|
|
366
|
-
this.logger.debug('writeToControl: value was written as entity: ' + JSON.stringify(newEntity), value);
|
|
367
|
-
if (!this.isEqual(currentEntity, newEntity)) {
|
|
368
|
-
this.entityS.set(newEntity);
|
|
369
|
-
}
|
|
370
|
-
else {
|
|
371
|
-
this.logger.warn('Ignored written entity as it is already set to entity$!');
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
super.writeToControl(value);
|
|
375
|
-
}
|
|
376
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderSelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
377
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ElderSelectComponent, isStandalone: true, selector: "elder-select", inputs: { nullDisplay: "nullDisplay", autocomplete: "autocomplete", allowNull: "allowNull", entity: "entity", entityId: "entityId" }, outputs: { entityIdChange: "entityIdChange", entityIdUpdated: "entityIdUpdated", entityChange: "entityChange", entityUpdated: "entityUpdated" }, host: { properties: { "class": "this.hostClass", "class.mat-select-disabled": "this.disabledClass", "class.mat-select-invalid": "this.errorStateClass", "class.mat-select-required": "this.requiredClass", "class.mat-select-empty": "this.emptyClass" } }, providers: [
|
|
378
|
-
{ provide: MatFormFieldControl, useExisting: ElderSelectComponent },
|
|
379
|
-
{
|
|
380
|
-
provide: ELDER_SELECT_BASE,
|
|
381
|
-
useExisting: forwardRef(() => ElderSelectComponent),
|
|
382
|
-
},
|
|
383
|
-
], viewQueries: [{ propertyName: "inputRef", first: true, predicate: ["input"], descendants: true }], usesInheritance: true, ngImport: i0, template: "@if (entityWrapped(); as entityWrapper) {\n <div class=\"layout-row place-start-center elder-flex-control\">\n @if (state(); as state) {\n @if (state?.error || icon) {\n <div class=\"elder-input-prefix-icon-container flex-none\">\n @if (icon) {\n <mat-icon\n disabled\n class=\"elder-mdc-control-icon elder-icon-small noselect clickable-icon\"\n [class.loading]=\"state.loading\"\n [color]=\"state?.error ? 'warn' : focused ? 'primary' : undefined\"\n (click)=\"onCurrentClicked(entity)\"\n >\n {{ icon }}\n </mat-icon>\n } @else if (state?.error) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n }\n </div>\n }\n }\n\n <!-- A dynamic input -->\n <input\n #input\n matInput\n type=\"text\"\n class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [matAutocomplete]\n #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\"\n [queryFilter]=\"queryFilter\"\n [filters]=\"filters\"\n [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText()\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'submit' }\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n />\n\n <elder-suggestion-panel\n #elderAuto=\"elderSuggestionPanel\"\n [dataSource]=\"dataContextS()?.dataSource\"\n [valueTemplate]=\"valueTemplate\"\n enabled\n [displayPropertyResolver]=\"displayPropertyResolverS()\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n elderAutoSelectSuggestFirst\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-suggestion-panel>\n\n <div class=\"layout-row place-start-center flex-none\">\n @if (!selectionPopup && !autocomplete && !entityWrapper.displayRemove) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n arrow_drop_down\n </mat-icon>\n }\n\n @if (selectionPopup && !entityWrapper.displayRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\"\n aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n }\n\n @if (entityWrapper.displayRemove && !this.readonlyS()) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLockedS()\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n }\n </div>\n </div>\n}\n", styles: ["@keyframes shrink{0%{transform:scale(1)}to{transform:scale(.75)}}.loading{animation:shrink .3s ease-in-out infinite alternate;-webkit-animation:shrink .3s ease-in-out infinite alternate}.clickable-icon{cursor:pointer}.full-width{width:100%}.elder-select-dropdown-input{cursor:pointer}\n"], dependencies: [{ kind: "component", type: MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "directive", type: MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: ElderSelectOnTabDirective, selector: "[elderSelectOnTab]" }, { kind: "directive", type: ElderAutocompleteDirective, selector: "[elderAutocomplete]", inputs: ["queryFilter", "filters", "sorts", "elderAutocomplete"] }, { kind: "component", type: ElderSuggestionPanelComponent, selector: "elder-suggestion-panel", inputs: ["isOptionDisabledFn", "isOptionHiddenFn", "optionValueConverterFn", "enabled", "valueTemplate", "dataSource", "displayPropertyResolver"], outputs: ["optionSelected"], exportAs: ["elderSuggestionPanel"] }, { kind: "component", type: MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "directive", type: ElderStopEventPropagationDirective, selector: "[elderStopEventPropagation]" }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }, { kind: "directive", type: ElderAutoSelectSuggestFirstDirective, selector: "[elderAutoSelectSuggestFirst]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
384
|
-
}
|
|
385
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderSelectComponent, decorators: [{
|
|
386
|
-
type: Component,
|
|
387
|
-
args: [{ selector: 'elder-select', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
388
|
-
{ provide: MatFormFieldControl, useExisting: ElderSelectComponent },
|
|
389
|
-
{
|
|
390
|
-
provide: ELDER_SELECT_BASE,
|
|
391
|
-
useExisting: forwardRef(() => ElderSelectComponent),
|
|
392
|
-
},
|
|
393
|
-
], standalone: true, imports: [
|
|
394
|
-
MatIcon,
|
|
395
|
-
MatTooltip,
|
|
396
|
-
MatInput,
|
|
397
|
-
MatAutocompleteTrigger,
|
|
398
|
-
FormsModule,
|
|
399
|
-
ElderSelectOnTabDirective,
|
|
400
|
-
ElderAutocompleteDirective,
|
|
401
|
-
ElderSuggestionPanelComponent,
|
|
402
|
-
MatIconButton,
|
|
403
|
-
ElderStopEventPropagationDirective,
|
|
404
|
-
TranslateModule,
|
|
405
|
-
ElderAutoSelectSuggestFirstDirective,
|
|
406
|
-
], template: "@if (entityWrapped(); as entityWrapper) {\n <div class=\"layout-row place-start-center elder-flex-control\">\n @if (state(); as state) {\n @if (state?.error || icon) {\n <div class=\"elder-input-prefix-icon-container flex-none\">\n @if (icon) {\n <mat-icon\n disabled\n class=\"elder-mdc-control-icon elder-icon-small noselect clickable-icon\"\n [class.loading]=\"state.loading\"\n [color]=\"state?.error ? 'warn' : focused ? 'primary' : undefined\"\n (click)=\"onCurrentClicked(entity)\"\n >\n {{ icon }}\n </mat-icon>\n } @else if (state?.error) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-icon-small noselect\"\n color=\"warn\"\n [matTooltip]=\"state?.error\"\n >\n warning\n </mat-icon>\n }\n </div>\n }\n }\n\n <!-- A dynamic input -->\n <input\n #input\n matInput\n type=\"text\"\n class=\"flex-grow elder-select-input mdc-text-field__input\"\n [disabled]=\"!!disabled\"\n [required]=\"!!required\"\n [readonly]=\"readonly || !autocomplete\"\n [name]=\"ngControl?.name + '-inner-input'\"\n [placeholder]=\"placeholderS() | translate\"\n [matAutocomplete]\n #autoTrigger=\"matAutocompleteTrigger\"\n [elderAutocomplete]=\"elderAuto\"\n [queryFilter]=\"queryFilter\"\n [filters]=\"filters\"\n [sorts]=\"sorts\"\n elderSelectOnTab\n [class.elder-select-dropdown-input]=\"!autocomplete\"\n [ngModel]=\"inputText()\"\n [ngModelOptions]=\"{ standalone: true, updateOn: 'submit' }\"\n (blur)=\"onInputBlur($event)\"\n (focus)=\"onInputFocus(autoTrigger)\"\n (click)=\"onInputClicked(autoTrigger)\"\n />\n\n <elder-suggestion-panel\n #elderAuto=\"elderSuggestionPanel\"\n [dataSource]=\"dataContextS()?.dataSource\"\n [valueTemplate]=\"valueTemplate\"\n enabled\n [displayPropertyResolver]=\"displayPropertyResolverS()\"\n [isOptionDisabledFn]=\"isOptionDisabledInternalFn\"\n [isOptionHiddenFn]=\"isOptionHiddenInternalFn\"\n elderAutoSelectSuggestFirst\n (optionSelected)=\"onOptionSelected($any($event))\"\n ></elder-suggestion-panel>\n\n <div class=\"layout-row place-start-center flex-none\">\n @if (!selectionPopup && !autocomplete && !entityWrapper.displayRemove) {\n <mat-icon\n class=\"elder-mdc-control-icon elder-select-arrow noselect\"\n (click)=\"onInputClicked(autoTrigger)\"\n >\n arrow_drop_down\n </mat-icon>\n }\n\n @if (selectionPopup && !entityWrapper.displayRemove) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLocked\"\n (click)=\"openSelectionPopup($event)\"\n aria-label=\"Search\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">search</mat-icon>\n </button>\n }\n\n @if (entityWrapper.displayRemove && !this.readonlyS()) {\n <button\n mat-icon-button\n type=\"button\"\n class=\"elder-control-icon-button\"\n [disabled]=\"isLockedS()\"\n (click)=\"clear($event)\"\n aria-label=\"Clear\"\n elderStopEventPropagation\n tabIndex=\"-1\"\n >\n <mat-icon class=\"elder-mdc-control-icon\">close</mat-icon>\n </button>\n }\n </div>\n </div>\n}\n", styles: ["@keyframes shrink{0%{transform:scale(1)}to{transform:scale(.75)}}.loading{animation:shrink .3s ease-in-out infinite alternate;-webkit-animation:shrink .3s ease-in-out infinite alternate}.clickable-icon{cursor:pointer}.full-width{width:100%}.elder-select-dropdown-input{cursor:pointer}\n"] }]
|
|
407
|
-
}], ctorParameters: () => [], propDecorators: { inputRef: [{
|
|
408
|
-
type: ViewChild,
|
|
409
|
-
args: ['input']
|
|
410
|
-
}], nullDisplay: [{
|
|
411
|
-
type: Input
|
|
412
|
-
}], entityIdChange: [{
|
|
413
|
-
type: Output
|
|
414
|
-
}], entityIdUpdated: [{
|
|
415
|
-
type: Output
|
|
416
|
-
}], entityChange: [{
|
|
417
|
-
type: Output
|
|
418
|
-
}], entityUpdated: [{
|
|
419
|
-
type: Output
|
|
420
|
-
}], hostClass: [{
|
|
421
|
-
type: HostBinding,
|
|
422
|
-
args: ['class']
|
|
423
|
-
}], disabledClass: [{
|
|
424
|
-
type: HostBinding,
|
|
425
|
-
args: ['class.mat-select-disabled']
|
|
426
|
-
}], errorStateClass: [{
|
|
427
|
-
type: HostBinding,
|
|
428
|
-
args: ['class.mat-select-invalid']
|
|
429
|
-
}], requiredClass: [{
|
|
430
|
-
type: HostBinding,
|
|
431
|
-
args: ['class.mat-select-required']
|
|
432
|
-
}], emptyClass: [{
|
|
433
|
-
type: HostBinding,
|
|
434
|
-
args: ['class.mat-select-empty']
|
|
435
|
-
}], autocomplete: [{
|
|
436
|
-
type: Input
|
|
437
|
-
}], allowNull: [{
|
|
438
|
-
type: Input
|
|
439
|
-
}], entity: [{
|
|
440
|
-
type: Input
|
|
441
|
-
}], entityId: [{
|
|
442
|
-
type: Input
|
|
443
|
-
}] } });
|
|
444
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NpbmdsZS9lbGRlci1zZWxlY3QvZWxkZXItc2VsZWN0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2VsZGVyYnl0ZS9uZ3gtc3RhcnRlci9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0L3NpbmdsZS9lbGRlci1zZWxlY3QvZWxkZXItc2VsZWN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUVULFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUdMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBRWpCLE1BQU0sRUFDTixTQUFTLEVBQ1QsUUFBUSxHQUNULE1BQU0sZUFBZSxDQUFBO0FBQ3RCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTtBQUVwRCxPQUFPLEVBQWtDLEtBQUssRUFBYyxNQUFNLE1BQU0sQ0FBQTtBQUN4RSxPQUFPLEVBQ0wsR0FBRyxFQUdILElBQUksRUFDSixNQUFNLEVBQ04sU0FBUyxFQUNULElBQUksRUFDSixPQUFPLEVBQ1AsVUFBVSxHQUNYLE1BQU0sZ0JBQWdCLENBQUE7QUFDdkIsT0FBTyxFQUFnQixxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFBO0FBQzNFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFBO0FBQ3ZFLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUNmLHlCQUF5QixHQUUxQixNQUFNLHlCQUF5QixDQUFBO0FBRWhDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQ2xFLE9BQU8sRUFBYSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUV2RCxPQUFPLEVBQW9CLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXZFLE9BQU8sRUFBRSxrQ0FBa0MsRUFBRSxNQUFNLGtFQUFrRSxDQUFBO0FBQ3JILE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQTtBQUNyRyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUMvRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDbEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQTtBQUVoRCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxpRkFBaUYsQ0FBQTtBQUMvSCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxzREFBc0QsQ0FBQTtBQUMzRyxPQUFPLEVBQXNCLFlBQVksRUFBRSxNQUFNLDRCQUE0QixDQUFBOzs7O0FBRTdFLE1BQU0sYUFBYTtJQUNqQixZQUNrQixLQUFRLEVBQ1IsV0FBbUIsRUFDbkIsYUFBc0I7UUFGdEIsVUFBSyxHQUFMLEtBQUssQ0FBRztRQUNSLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGtCQUFhLEdBQWIsYUFBYSxDQUFTO0lBQ3JDLENBQUM7Q0FDTDtBQUVEOzs7Ozs7Ozs7R0FTRztBQThCSCxNQUFNLE9BQU8sb0JBQ1gsU0FBUSxlQUFxQztJQXdEN0M7Ozs7Z0ZBSTRFO0lBRTVFO1FBQ0UsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBNUR4Qjs7OztvRkFJNEU7UUFFM0QsV0FBTSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUVoRSxlQUFVLEdBQUcsS0FBSyxDQUFBO1FBSzFCOztXQUVHO1FBRUksZ0JBQVcsR0FBRyxHQUFHLENBQUE7UUFzQlIsWUFBTyxHQUFHLE1BQU0sQ0FBVSxTQUFTLENBQUMsQ0FBQTtRQUNwQyxZQUFPLEdBQUcsWUFBWSxDQUFVLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQTtRQUVyRCxrQkFBYSxHQUFHLEtBQUssQ0FBQTtRQUViLGtCQUFhLEdBQUcsUUFBUSxDQUF5QixHQUFHLEVBQUUsQ0FDcEUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxDQUN6RSxDQUFBO1FBRWUsY0FBUyxHQUFHLFFBQVEsQ0FBUyxHQUFHLEVBQUU7WUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1lBQ2hDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFBO1FBQzNDLENBQUMsQ0FBQyxDQUFBO1FBV0EsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFbEYsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FDbkMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLG9DQUFvQztTQUM3QyxDQUFBO1FBRUQsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFNUYsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FDNUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQyxFQUM5RSxVQUFVLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtZQUNqQixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyx5Q0FBeUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFBO1lBQ3JGLE9BQU8sS0FBSyxDQUFBO1FBQ2QsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFTyxrQkFBa0IsQ0FDeEIsTUFBZSxFQUNmLGlCQUFpQztRQUVqQyxPQUFPLElBQUksYUFBYSxDQUFVLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2hHLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFckUsV0FBVztRQUNoQixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDcEIsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RSxJQUEwQixTQUFTO1FBQ2pDLE9BQU8sZ0NBQWdDLENBQUE7SUFDekMsQ0FBQztJQUVELElBQThDLGFBQWE7UUFDekQsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ3RCLENBQUM7SUFFRCxJQUE2QyxlQUFlO1FBQzFELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQTtJQUN4QixDQUFDO0lBRUQsSUFBOEMsYUFBYTtRQUN6RCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUE7SUFDdEIsQ0FBQztJQUVELElBQTJDLFVBQVU7UUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFBO0lBQ25CLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFDVyxZQUFZLENBQUMsS0FBbUI7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQTtJQUMzQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUNXLFNBQVMsQ0FBQyxHQUFpQjtRQUNwQyxJQUFJLENBQUMsVUFBVSxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFRCxJQUFXLFNBQVM7UUFDbEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFBO0lBQ3hCLENBQUM7SUFFRDs7OztnRkFJNEU7SUFFNUUsSUFDVyxNQUFNLENBQUMsTUFBZTtRQUMvQixJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN4QixJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQ25ELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO0lBQzNCLENBQUM7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDaEMsQ0FBQztJQUVELElBQ1csUUFBUSxDQUFDLEVBQU87UUFDekIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsSUFBSSxDQUFDLGtCQUFrQixDQUFPLEVBQWEsQ0FBQyxDQUFBO1FBQzlDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFBO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUMzQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLFdBQVcsQ0FBQyxLQUFpQjtRQUNsQyxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsTUFBMEIsQ0FBQTtRQUM5QyxLQUFLLENBQUMsS0FBSyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDekMsQ0FBQztJQUVNLFlBQVksQ0FBQyxXQUFtQztRQUNyRCxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFXLDBCQUEwQjtRQUNuQyxPQUFPLENBQUMsTUFBZSxFQUFFLEVBQUU7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUNuQyxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO29CQUM1QixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQTtnQkFDeEMsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sS0FBSyxDQUFBO2dCQUNkLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUE7UUFDYixDQUFDLENBQUE7SUFDSCxDQUFDO0lBRUQsSUFBVyx3QkFBd0I7UUFDakMsT0FBTyxDQUFDLE1BQWUsRUFBRSxFQUFFO1lBQ3pCLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7Z0JBQzFCLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFBO1lBQ3RDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixPQUFPLEtBQUssQ0FBQTtZQUNkLENBQUM7UUFDSCxDQUFDLENBQUE7SUFDSCxDQUFDO0lBRU0sV0FBVyxDQUFDLFdBQW1DO1FBQ3BELElBQUksV0FBVyxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQyxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDMUIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU0sU0FBUyxDQUFDLFdBQW1DO1FBQ2xELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHdEQUF3RCxFQUFFLFdBQVcsQ0FBQyxDQUFBO1lBQ3hGLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFDM0UsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDckIsSUFBSSxDQUFDO2dCQUNILElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQ2xELENBQUM7WUFBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUM3QyxJQUFJLENBQUMsV0FBVyxDQUFDLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBQ3hELENBQUM7UUFDSCxDQUFDO1FBQ0QsV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQ3pCLENBQUM7SUFFTSxjQUFjLENBQUMsV0FBbUM7UUFDdkQsdUhBQXVIO1FBQ3ZILElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdkMsT0FBTTtRQUNSLENBQUM7UUFDRCxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQzNCLGlDQUFpQztJQUNuQyxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsY0FBNkQ7UUFDbkYsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMseURBQXlELENBQUMsQ0FBQTtZQUMzRSxPQUFNO1FBQ1IsQ0FBQztRQUNELE1BQU0sY0FBYyxHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUE7UUFDNUMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUMxQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUEsQ0FBQyxzQ0FBc0M7UUFDdEUsQ0FBQztRQUNELElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsQ0FBQTtJQUMxQyxDQUFDO0lBRU0sa0JBQWtCLENBQUMsS0FBWTtRQUNwQyxJQUFJLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN4QixJQUFJLENBQUMsY0FBYztpQkFDaEIsTUFBTSxDQUNMLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUNuQyxFQUFFLEVBQUUsOEJBQThCO1lBQ2xDLElBQUksQ0FBQyxPQUFPLEVBQ1osSUFBSSxDQUFDLEtBQUssRUFDVixLQUFLLENBQ047aUJBQ0EsU0FBUyxDQUFDLENBQUMsU0FBb0IsRUFBRSxFQUFFO2dCQUNsQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDeEMsQ0FBQyxDQUFDLENBQUE7UUFDTixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUNkLHdGQUF3RixDQUN6RixDQUFBO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsS0FBYTtRQUN4QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ3hCLENBQUM7SUFFTSxtQkFBbUIsQ0FBQyxNQUFlO1FBQ3hDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBc0I7UUFDakMsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzlDLENBQUM7SUFFTSxJQUFJO1FBQ1QsSUFBSSxDQUFDLFFBQVEsRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLENBQUE7SUFDdEMsQ0FBQztJQUVEOzs7O2dGQUk0RTtJQUU1RTs7T0FFRztJQUNPLG9CQUFvQixDQUFDLElBQTJCO1FBQ3hELElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFFRDs7OztnRkFJNEU7SUFFbEUsWUFBWSxDQUFDLENBQVMsRUFBRSxDQUFTO1FBQ3pDLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNoRSxDQUFDO0lBRU8saUJBQWlCLENBQUMsUUFBYSxFQUFFLFNBQWlCO1FBQ3hELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQ3RCLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxRQUFRLENBQUMsRUFDekQsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUNQLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FDbkIsQ0FBQTtJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxNQUFlO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFBO0lBQ25ELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxLQUFhO1FBQ3JDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE9BQWEsS0FBYSxDQUFBO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxNQUFNLEdBQVMsS0FBaUIsQ0FBQTtZQUN0QyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDakMsQ0FBQztJQUNILENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxFQUFPO1FBQzlCLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDakMsSUFBSSxhQUFhLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUM1RCxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQTtZQUN6QixPQUFNLENBQUMsd0JBQXdCO1FBQ2pDLENBQUM7UUFFRCxJQUFJLEVBQUUsS0FBSyxJQUFJLElBQUksRUFBRSxLQUFLLFNBQVMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDakQsSUFBSSxhQUFhLEtBQUssSUFBSSxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUUsQ0FBQztnQkFDMUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUE7WUFDcEIsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3JCLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDM0MsSUFBSSxRQUFRLEVBQUUsQ0FBQztvQkFDYixJQUFJLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQTtnQkFDeEIsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLFdBQVcsQ0FDZCx5QkFBeUIsQ0FBQyxLQUFLLENBQzdCLGdDQUFnQyxHQUFHLEVBQUUsR0FBRywrQkFBK0IsQ0FDeEUsQ0FDRixDQUFBO1lBQ0gsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRU8sY0FBYyxDQUFDLEVBQU87UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFBO1FBQ3JELElBQUksQ0FBQyxpQkFBaUIsRUFBRTthQUNyQixRQUFRLENBQU0sRUFBRSxDQUFDO2FBQ2pCLFNBQVMsQ0FBQztZQUNULElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDhCQUE4QixHQUFHLEVBQUUsR0FBRyxHQUFHLEVBQUUsTUFBTSxDQUFDLENBQUE7Z0JBQ3BFLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1lBQ3RCLENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsR0FBRyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUE7Z0JBQzNELElBQUksQ0FBQyxXQUFXLENBQUMseUJBQXlCLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUE7WUFDeEQsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFBO0lBQ3BELENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxFQUFPO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtJQUMvRSxDQUFDO0lBRU0sYUFBYSxDQUFDLE1BQWU7UUFDbEMsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkIsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNuQyxPQUFhLEVBQWEsQ0FBQTtRQUM1QixDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQWEsTUFBaUIsQ0FBQTtRQUNoQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNPLGNBQWMsQ0FBQyxLQUFhO1FBQ3BDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ25CLE1BQU0sUUFBUSxHQUFTLEtBQWEsQ0FBQTtZQUNwQyxnRUFBZ0U7WUFDaEUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsMkNBQTJDLEdBQUcsUUFBUSxFQUFFLEtBQUssQ0FBQyxDQUFBO1lBQ2hGLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsQ0FBQTtRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLHdEQUF3RDtZQUN4RCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1lBQ2pDLE1BQU0sU0FBUyxHQUFTLEtBQWlCLENBQUE7WUFDekMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2YsK0NBQStDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFDM0UsS0FBSyxDQUNOLENBQUE7WUFDRCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7WUFDN0IsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLHlEQUF5RCxDQUFDLENBQUE7WUFDN0UsQ0FBQztRQUNILENBQUM7UUFDRCxLQUFLLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFBO0lBQzdCLENBQUM7K0dBeGJVLG9CQUFvQjttR0FBcEIsb0JBQW9CLDhrQkF2QnBCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO1lBQ25FO2dCQUNFLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLENBQUM7YUFDcEQ7U0FDRixvSkN4RkgsMG1IQTRHQSx3VkRqQkksT0FBTywySUFDUCxVQUFVLGlSQUNWLFFBQVEsaVVBQ1Isc0JBQXNCLG9RQUN0QixXQUFXLDQwQkFDWCx5QkFBeUIsK0RBQ3pCLDBCQUEwQixrSUFDMUIsNkJBQTZCLHVSQUM3QixhQUFhLDZGQUNiLGtDQUFrQyx1RUFDbEMsZUFBZSw0RkFDZixvQ0FBb0M7OzRGQUczQixvQkFBb0I7a0JBN0JoQyxTQUFTOytCQUNFLGNBQWMsaUJBR1QsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHNCQUFzQixFQUFFO3dCQUNuRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxxQkFBcUIsQ0FBQzt5QkFDcEQ7cUJBQ0YsY0FDVyxJQUFJLFdBQ1A7d0JBQ1AsT0FBTzt3QkFDUCxVQUFVO3dCQUNWLFFBQVE7d0JBQ1Isc0JBQXNCO3dCQUN0QixXQUFXO3dCQUNYLHlCQUF5Qjt3QkFDekIsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLGFBQWE7d0JBQ2Isa0NBQWtDO3dCQUNsQyxlQUFlO3dCQUNmLG9DQUFvQztxQkFDckM7d0RBaUJNLFFBQVE7c0JBRGQsU0FBUzt1QkFBQyxPQUFPO2dCQU9YLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSVUsY0FBYztzQkFEN0IsTUFBTTtnQkFRUyxlQUFlO3NCQUQ5QixNQUFNO2dCQUlTLFlBQVk7c0JBRDNCLE1BQU07Z0JBUVMsYUFBYTtzQkFENUIsTUFBTTtnQkFrRW1CLFNBQVM7c0JBQWxDLFdBQVc7dUJBQUMsT0FBTztnQkFJMEIsYUFBYTtzQkFBMUQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBSUssZUFBZTtzQkFBM0QsV0FBVzt1QkFBQywwQkFBMEI7Z0JBSU8sYUFBYTtzQkFBMUQsV0FBVzt1QkFBQywyQkFBMkI7Z0JBSUcsVUFBVTtzQkFBcEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBVzFCLFlBQVk7c0JBRHRCLEtBQUs7Z0JBYUssU0FBUztzQkFEbkIsS0FBSztnQkFnQkssTUFBTTtzQkFEaEIsS0FBSztnQkFZSyxRQUFRO3NCQURsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIE9uRGVzdHJveSxcbiAgc2lnbmFsLFxuICB1bnRyYWNrZWQsXG4gIGNvbXB1dGVkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuaW1wb3J0IHsgTG9nZ2VyRmFjdG9yeSB9IGZyb20gJ0BlbGRlcmJ5dGUvdHMtbG9nZ2VyJ1xuaW1wb3J0IHsgSURhdGFDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uL2RhdGEvZGF0YS1jb250ZXh0L2RhdGEtY29udGV4dCdcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgY29tYmluZUxhdGVzdCwgRU1QVFksIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJ1xuaW1wb3J0IHtcbiAgbWFwLFxuICB0YWtlVW50aWwsXG4gIHRhcCxcbiAgc2tpcCxcbiAgZmlsdGVyLFxuICBzd2l0Y2hNYXAsXG4gIHRha2UsXG4gIHRpbWVvdXQsXG4gIGNhdGNoRXJyb3IsXG59IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHkgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJ1xuaW1wb3J0IHtcbiAgRUxERVJfU0VMRUNUX0JBU0UsXG4gIEVsZGVyU2VsZWN0QmFzZSxcbiAgRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZSxcbiAgVGV4dFJlc29sdmVyRm4sXG59IGZyb20gJy4uLy4uL2VsZGVyLXNlbGVjdC1iYXNlJ1xuaW1wb3J0IHsgSUVsZGVyRW50aXR5VmFsdWVBY2Nlc3NvciB9IGZyb20gJy4uLy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1lbnRpdHktdmFsdWUtYWNjZXNzb3InXG5pbXBvcnQgeyBNYXRGb3JtRmllbGRDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCdcbmltcG9ydCB7IE5nQ29udHJvbCwgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcbmltcG9ydCB7IEZvY3VzTW9uaXRvciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5J1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSdcbmltcG9ydCB7IEVsZGVyQXV0b2NvbXBsZXRlT3B0aW9uU2VsZWN0ZWQgfSBmcm9tICcuLi8uLi8uLi9pbnB1dC9hdXRvY29tcGxldGUvZWxkZXItYXV0b2NvbXBsZXRlL2VsZGVyLWF1dG9jb21wbGV0ZS1vcHRpb24tc2VsZWN0ZWQnXG5pbXBvcnQgeyBFbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZm9ybXMvZGlyZWN0aXZlcy9lbGRlci1zdG9wLWV2ZW50LXByb3BhZ2F0aW9uLmRpcmVjdGl2ZSdcbmltcG9ydCB7IE1hdEljb25CdXR0b24gfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nXG5pbXBvcnQgeyBFbGRlckF1dG9jb21wbGV0ZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2lucHV0L2F1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRWxkZXJTZWxlY3RPblRhYkRpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2VsZGVyLXNlbGVjdC1vbi10YWIuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgTWF0SW5wdXQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCdcbmltcG9ydCB7IE1hdFRvb2x0aXAgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90b29sdGlwJ1xuaW1wb3J0IHsgTWF0SWNvbiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nXG5pbXBvcnQgeyBBc3luY1BpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nXG5pbXBvcnQgeyBFbGRlclN1Z2dlc3Rpb25QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uLy4uLy4uL2lucHV0L2F1dG9jb21wbGV0ZS9lbGRlci1hdXRvY29tcGxldGUvZWxkZXItc3VnZ2VzdGlvbi1wYW5lbC5jb21wb25lbnQnXG5pbXBvcnQgeyBFbGRlckF1dG9TZWxlY3RTdWdnZXN0Rmlyc3REaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hdXRvL2VsZGVyLWF1dG8tc2VsZWN0LXN1Z2dlc3QtZmlyc3QuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkLCB0b09ic2VydmFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCdcblxuY2xhc3MgRW50aXR5Q29udGV4dDxUPiB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSB2YWx1ZTogVCxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVRleHQ6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheVJlbW92ZTogYm9vbGVhblxuICApIHt9XG59XG5cbi8qKlxuICogVGhlIGVsZGVyLXNlbGVjdCBjb250cm9sIGFsbG93cyB0byBzZWxlY3QgYSBzaW5nbGVcbiAqIGVudGl0eS5cbiAqXG4gKiBQcmltYXJ5IGZvY3VzIGlzIG9uIGVhc3kgdXNhZ2UgZm9yIGNvbW1vbiBzY2VuYXJpb3M6XG4gKlxuICogLSBJbnRlZ3JhdGVkIGludG8gYW5ndWxhciBmb3JtcyBhbmQgdmFsaWRhdGlvblxuICogLSBTdXBwb3J0IGVudGl0eSBpZCBoYW5kbGluZywgaW5wdXQgLyBvdXRwdXQgaXMgdGhlIGVudGl0eSBpZCB2cyBmdWxsIHZhbHVlLlxuICpcbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZWxkZXItc2VsZWN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2VsZGVyLXNlbGVjdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2VsZGVyLXNlbGVjdC5jb21wb25lbnQuc2NzcyddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBNYXRGb3JtRmllbGRDb250cm9sLCB1c2VFeGlzdGluZzogRWxkZXJTZWxlY3RDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBFTERFUl9TRUxFQ1RfQkFTRSxcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEVsZGVyU2VsZWN0Q29tcG9uZW50KSxcbiAgICB9LFxuICBdLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgTWF0SWNvbixcbiAgICBNYXRUb29sdGlwLFxuICAgIE1hdElucHV0LFxuICAgIE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRWxkZXJTZWxlY3RPblRhYkRpcmVjdGl2ZSxcbiAgICBFbGRlckF1dG9jb21wbGV0ZURpcmVjdGl2ZSxcbiAgICBFbGRlclN1Z2dlc3Rpb25QYW5lbENvbXBvbmVudCxcbiAgICBNYXRJY29uQnV0dG9uLFxuICAgIEVsZGVyU3RvcEV2ZW50UHJvcGFnYXRpb25EaXJlY3RpdmUsXG4gICAgVHJhbnNsYXRlTW9kdWxlLFxuICAgIEVsZGVyQXV0b1NlbGVjdFN1Z2dlc3RGaXJzdERpcmVjdGl2ZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRWxkZXJTZWxlY3RDb21wb25lbnQ8VEVudGl0eSA9IGFueSwgVElkID0gYW55LCBUVmFsdWUgPSBURW50aXR5IHwgVElkPlxuICBleHRlbmRzIEVsZGVyU2VsZWN0QmFzZTxUSWQsIFRFbnRpdHksIFRWYWx1ZT5cbiAgaW1wbGVtZW50cyBJRWxkZXJFbnRpdHlWYWx1ZUFjY2Vzc29yPFRFbnRpdHksIFRJZCwgVFZhbHVlPiwgT25EZXN0cm95XG57XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIodGhpcy5jb25zdHJ1Y3Rvci5uYW1lKVxuXG4gIHByaXZhdGUgX2FsbG93TnVsbCA9IGZhbHNlXG5cbiAgQFZpZXdDaGlsZCgnaW5wdXQnKVxuICBwdWJsaWMgaW5wdXRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD5cblxuICAvKipcbiAgICogU3RyaW5nIHRvIGRpc3BsYXkgZm9yIHRoZSAnbm90aGluZycgLyBudWxsIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIG51bGxEaXNwbGF5ID0gJy0nXG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBlbnRpdHlJZENoYW5nZTogT2JzZXJ2YWJsZTxUSWQ+XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8gZW50aXR5LWlkIGNoYW5nZSwgYnV0IGVtaXRzIG9ubHkgd2hlbiB0aGUgdXNlclxuICAgKiBoYXMgdXBkYXRlZCB0aGUgdmFsdWUuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIHJlYWRvbmx5IGVudGl0eUlkVXBkYXRlZDogT2JzZXJ2YWJsZTxUSWQ+XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyByZWFkb25seSBlbnRpdHlDaGFuZ2U6IE9ic2VydmFibGU8VEVudGl0eT5cblxuICAvKipcbiAgICogU2ltaWxhciB0byBlbnRpdHkgY2hhbmdlLCBidXQgZW1pdHMgb25seSB3aGVuIHRoZSB1c2VyXG4gICAqIGhhcyB1cGRhdGVkIHRoZSB2YWx1ZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgcmVhZG9ubHkgZW50aXR5VXBkYXRlZDogT2JzZXJ2YWJsZTxURW50aXR5PlxuXG4gIHB1YmxpYyByZWFkb25seSBlbnRpdHlTID0gc2lnbmFsPFRFbnRpdHk+KHVuZGVmaW5lZClcbiAgcHVibGljIHJlYWRvbmx5IGVudGl0eSQgPSB0b09ic2VydmFibGU8VEVudGl0eT4odGhpcy5lbnRpdHlTKVxuXG4gIHByaXZhdGUgX2F1dG9jb21wbGV0ZSA9IGZhbHNlXG5cbiAgcHVibGljIHJlYWRvbmx5IGVudGl0eVdyYXBwZWQgPSBjb21wdXRlZDxFbnRpdHlDb250ZXh0PFRFbnRpdHk+PigoKSA9PlxuICAgIHRoaXMuYnVpbGRFbnRpdHlDb250ZXh0KHRoaXMuZW50aXR5UygpLCB0aGlzLmRpc3BsYXlQcm9wZXJ0eVJlc29sdmVyUygpKVxuICApXG5cbiAgcHVibGljIHJlYWRvbmx5IGlucHV0VGV4dCA9IGNvbXB1dGVkPHN0cmluZz4oKCkgPT4ge1xuICAgIGNvbnN0IGN0eCA9IHRoaXMuZW50aXR5V3JhcHBlZCgpXG4gICAgcmV0dXJuIGN0eC52YWx1ZSA/IGN0eC5kaXNwbGF5VGV4dCA6IG51bGxcbiAgfSlcblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogQ29uc3RydWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcignc2luZ2xlLXNlbGVjdCcpXG5cbiAgICB0aGlzLmVudGl0eUlkQ2hhbmdlID0gdGhpcy52YWx1ZUNoYW5nZS5waXBlKG1hcCgodikgPT4gdGhpcy5lbnRpdHlJZEZyb21WYWx1ZSh2KSkpXG5cbiAgICB0aGlzLmVudGl0eUNoYW5nZSA9IHRoaXMuZW50aXR5JC5waXBlKFxuICAgICAgc2tpcCgxKSAvLyBTa2lwIHRoZSBpbml0aWFsIG9yIGN1cnJlbnQgdmFsdWVcbiAgICApXG5cbiAgICB0aGlzLmVudGl0eUlkVXBkYXRlZCA9IHRoaXMudmFsdWVVcGRhdGVkLnBpcGUobWFwKCh2YWx1ZSkgPT4gdGhpcy5lbnRpdHlJZEZyb21WYWx1ZSh2YWx1ZSkpKVxuXG4gICAgdGhpcy5lbnRpdHlVcGRhdGVkID0gdGhpcy5lbnRpdHlJZFVwZGF0ZWQucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoZW50aXR5SWQpID0+IHRoaXMuYXdhaXRFbnRpdHlXaXRoSWQoZW50aXR5SWQsIHRoaXMudGltZW91dEFmdGVyTXMpKSxcbiAgICAgIGNhdGNoRXJyb3IoKGVycikgPT4ge1xuICAgICAgICB0aGlzLmxvZ2dlci53YXJuKGBhd2FpdEVudGl0eVdpdGhJZCAtPiB0aW1lZCBvdXQgYWZ0ZXI6ICR7dGhpcy50aW1lb3V0QWZ0ZXJNc31gLCBlcnIpXG4gICAgICAgIHJldHVybiBFTVBUWVxuICAgICAgfSlcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGJ1aWxkRW50aXR5Q29udGV4dChcbiAgICBlbnRpdHk6IFRFbnRpdHksXG4gICAgZGlzcGxheVByb3BlcnR5Rm46IFRleHRSZXNvbHZlckZuXG4gICk6IEVudGl0eUNvbnRleHQ8VEVudGl0eT4ge1xuICAgIHJldHVybiBuZXcgRW50aXR5Q29udGV4dDxURW50aXR5PihlbnRpdHksIGRpc3BsYXlQcm9wZXJ0eUZuKGVudGl0eSksIGVudGl0eSAmJiB0aGlzLmFsbG93TnVsbClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9DbGVhblVwKClcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBIb3N0IEJpbmRpbmdzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKSBnZXQgaG9zdENsYXNzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdlbGRlci1zZWxlY3QtYmFzZSBlbGRlci1zZWxlY3QnXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1zZWxlY3QtZGlzYWJsZWQnKSBnZXQgZGlzYWJsZWRDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5kaXNhYmxlZFxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtc2VsZWN0LWludmFsaWQnKSBnZXQgZXJyb3JTdGF0ZUNsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmVycm9yU3RhdGVcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LXNlbGVjdC1yZXF1aXJlZCcpIGdldCByZXF1aXJlZENsYXNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlcXVpcmVkXG4gIH1cblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1zZWxlY3QtZW1wdHknKSBnZXQgZW1wdHlDbGFzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbXB0eVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEJlaGF2aW91ciBQcm9wZXJ0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBhdXRvY29tcGxldGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2F1dG9jb21wbGV0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSlcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0b2NvbXBsZXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hdXRvY29tcGxldGVcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGxvd3MgdGhlIHVzZXIgdG8gc2VsZWN0ICdub3RoaW5nJyAvIG51bGwuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGFsbG93TnVsbCh2YWw6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2FsbG93TnVsbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWwpXG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsbG93TnVsbCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fYWxsb3dOdWxsXG4gIH1cblxuICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogUHJvcGVydGllcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGVudGl0eShlbnRpdHk6IFRFbnRpdHkpIHtcbiAgICB0aGlzLmVudGl0eVMuc2V0KGVudGl0eSlcbiAgICB0aGlzLndyaXRlVmFsdWVJbnRlcm5hbCh0aGlzLmVudGl0eVRvVmFsdWUoZW50aXR5KSlcbiAgICB0aGlzLm9uRW50aXR5VmFsdWVSZWFkeSgpXG4gIH1cblxuICBwdWJsaWMgZ2V0IGVudGl0eSgpOiBURW50aXR5IHtcbiAgICByZXR1cm4gdW50cmFja2VkKHRoaXMuZW50aXR5UylcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZW50aXR5SWQoaWQ6IFRJZCkge1xuICAgIGlmICh0aGlzLnZhbHVlQXNJZCkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlSW50ZXJuYWwoKDxhbnk+aWQpIGFzIFRWYWx1ZSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RFbnRpdHlCeUlkKGlkKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgZW50aXR5SWQoKTogVElkIHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlJZEZyb21WYWx1ZSh0aGlzLnZhbHVlKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIFB1YmxpYyBBUEkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHVibGljIG9uSW5wdXRCbHVyKGV2ZW50OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudFxuICAgIGlucHV0LnZhbHVlID0gdW50cmFja2VkKHRoaXMuaW5wdXRUZXh0KVxuICB9XG5cbiAgcHVibGljIG9uSW5wdXRGb2N1cyhhdXRvVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYXV0b2NvbXBsZXRlKSB7XG4gICAgICB0aGlzLm9wZW5QYW5lbChhdXRvVHJpZ2dlcilcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlzT3B0aW9uRGlzYWJsZWRJbnRlcm5hbEZuKCk6IChvcHRpb246IFRFbnRpdHkpID0+IGJvb2xlYW4ge1xuICAgIHJldHVybiAob3B0aW9uOiBURW50aXR5KSA9PiB7XG4gICAgICBpZiAoIXRoaXMuaXNFbnRpdHlTZWxlY3RlZChvcHRpb24pKSB7XG4gICAgICAgIGlmICh0aGlzLmlzT3B0aW9uRGlzYWJsZWRGbikge1xuICAgICAgICAgIHJldHVybiB0aGlzLmlzT3B0aW9uRGlzYWJsZWRGbihvcHRpb24pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBpc09wdGlvbkhpZGRlbkludGVybmFsRm4oKTogKG9wdGlvbjogVEVudGl0eSkgPT4gYm9vbGVhbiB7XG4gICAgcmV0dXJuIChvcHRpb246IFRFbnRpdHkpID0+IHtcbiAgICAgIGlmICh0aGlzLmlzT3B0aW9uSGlkZGVuRm4pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNPcHRpb25IaWRkZW5GbihvcHRpb24pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgdG9nZ2xlUGFuZWwoYXV0b1RyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcbiAgICBpZiAoYXV0b1RyaWdnZXIuYXV0b2NvbXBsZXRlLmlzT3Blbikge1xuICAgICAgYXV0b1RyaWdnZXIuY2xvc2VQYW5lbCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlblBhbmVsKGF1dG9UcmlnZ2VyKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvcGVuUGFuZWwoYXV0b1RyaWdnZXI6IE1hdEF1dG9jb21wbGV0ZVRyaWdnZXIpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0xvY2tlZCkge1xuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ1ByZXZlbnRlZCBvcGVuaW5nIGF1dG9jb21wbGV0ZSBzaW5jZSBzZWxlY3QgaXMgbG9ja2VkIScsIGF1dG9UcmlnZ2VyKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdGhpcy5sb2dnZXIuZGVidWcoJ1JlcXVlc3RpbmcgdG8gb3BlbiBhdXRvLWNvbXBsZXRlIHBhbmVsLi4uJywgYXV0b1RyaWdnZXIpXG4gICAgaWYgKHRoaXMuZGF0YUNvbnRleHQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMuZGF0YUNvbnRleHQuc3RhcnQodGhpcy5zb3J0cywgdGhpcy5maWx0ZXJzKVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgREMhJywgZXJyKVxuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUuZXJyb3IoZXJyKSlcbiAgICAgIH1cbiAgICB9XG4gICAgYXV0b1RyaWdnZXIub3BlblBhbmVsKClcbiAgfVxuXG4gIHB1YmxpYyBvbklucHV0Q2xpY2tlZChhdXRvVHJpZ2dlcjogTWF0QXV0b2NvbXBsZXRlVHJpZ2dlcik6IHZvaWQge1xuICAgIC8vIHRoaXMubG9nZ2VyLmRlYnVnKCdvbklucHV0Q2xpY2tlZCwgbG9ja2VkOiAnICsgdGhpcy5pc0xvY2tlZCArICcsIGF1dG9jb21wbGV0ZTogJyArIHRoaXMuYXV0b2NvbXBsZXRlLCBhdXRvVHJpZ2dlcik7XG4gICAgaWYgKHRoaXMuaXNMb2NrZWQgfHwgdGhpcy5hdXRvY29tcGxldGUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICB0aGlzLm9wZW5QYW5lbChhdXRvVHJpZ2dlcilcbiAgICAvLyB0aGlzLnRvZ2dsZVBhbmVsKGF1dG9UcmlnZ2VyKTtcbiAgfVxuXG4gIHB1YmxpYyBvbk9wdGlvblNlbGVjdGVkKG9wdGlvblNlbGVjdGVkOiBFbGRlckF1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGVkPFRFbnRpdHksIFRJZD4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc0xvY2tlZCkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybignUHJldmVudGVkIHNlbGVjdGlvbiBvcHRpb24gc2luY2UgdGhpcyBzZWxlY3QgaXMgbG9ja2VkIScpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRFbnRpdHkgPSBvcHRpb25TZWxlY3RlZC5lbnRpdHlcbiAgICBpZiAodGhpcy5pc0VudGl0eVNlbGVjdGVkKHNlbGVjdGVkRW50aXR5KSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlSW50ZXJuYWwobnVsbCkgLy8gSEFDSzogRW5zdXJlIHdlIHRyaWdnZXIgdmlldyByZWRyYXdcbiAgICB9XG4gICAgdGhpcy51cGRhdGVWYWx1ZUJ5RW50aXR5KHNlbGVjdGVkRW50aXR5KVxuICB9XG5cbiAgcHVibGljIG9wZW5TZWxlY3Rpb25Qb3B1cChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25Qb3B1cCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25Qb3B1cFxuICAgICAgICAuY2hvb3NlKFxuICAgICAgICAgIChlOiBURW50aXR5KSA9PiB0aGlzLmdldEVudGl0eUlkKGUpLFxuICAgICAgICAgIFtdLCAvLyBUT0RPIE9yIHVzZSBjdXJyZW50IGVudGl0eT9cbiAgICAgICAgICB0aGlzLmZpbHRlcnMsXG4gICAgICAgICAgdGhpcy5zb3J0cyxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKHNlbGVjdGlvbjogVEVudGl0eVtdKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZUJ5RW50aXR5KHNlbGVjdGlvblswXSlcbiAgICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihcbiAgICAgICAgJ0NhbnQgb3BlbiBzZWxlY3Rpb24gYnJvd3NlciBwb3B1cCwgc2luY2UgW1NlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmVdIHdhcyBub3QgZm91bmQhJ1xuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjbGVhcihldmVudD86IEV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShudWxsKVxuICB9XG5cbiAgcHVibGljIHVwZGF0ZVZhbHVlQnlFbnRpdHkoZW50aXR5OiBURW50aXR5KTogdm9pZCB7XG4gICAgdGhpcy5lbnRpdHlTLnNldChlbnRpdHkpXG4gICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLmVudGl0eVRvVmFsdWUoZW50aXR5KSlcbiAgfVxuXG4gIHB1YmxpYyBmb2N1cyhvcHRpb25zPzogRm9jdXNPcHRpb25zKSB7XG4gICAgdGhpcy5pbnB1dFJlZj8ubmF0aXZlRWxlbWVudD8uZm9jdXMob3B0aW9ucylcbiAgfVxuXG4gIHB1YmxpYyBibHVyKCkge1xuICAgIHRoaXMuaW5wdXRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LmJsdXIoKVxuICB9XG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIEFic3RyYWN0IEltcGxlbWVudGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgLyoqXG4gICAqIE9jY3VycyB3aGVuIHRoZSBzdWdnZXN0aW9ucyBkYXRhLWNvbnRleHQgaGFzIGNoYW5nZWRcbiAgICovXG4gIHByb3RlY3RlZCBvbkRhdGFDb250ZXh0Q2hhbmdlZChkYXRhOiBJRGF0YUNvbnRleHQ8VEVudGl0eT4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWx1ZUFzSWQpIHtcbiAgICAgIHRoaXMuc2VsZWN0RW50aXR5QnlJZCh0aGlzLmVudGl0eUlkKVxuICAgIH1cbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBQcml2YXRlIE1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHByb3RlY3RlZCB2YWx1ZXNFcXVhbHMoYTogVFZhbHVlLCBiOiBUVmFsdWUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5lbnRpdHlJZEZyb21WYWx1ZShhKSA9PT0gdGhpcy5lbnRpdHlJZEZyb21WYWx1ZShiKVxuICB9XG5cbiAgcHJpdmF0ZSBhd2FpdEVudGl0eVdpdGhJZChlbnRpdHlJZDogVElkLCB0aW1lb3V0TXM6IG51bWJlcik6IE9ic2VydmFibGU8VEVudGl0eT4ge1xuICAgIHJldHVybiB0aGlzLmVudGl0eSQucGlwZShcbiAgICAgIGZpbHRlcigoZW50aXR5KSA9PiB0aGlzLmdldEVudGl0eUlkKGVudGl0eSkgPT09IGVudGl0eUlkKSxcbiAgICAgIHRha2UoMSksXG4gICAgICB0aW1lb3V0KHRpbWVvdXRNcylcbiAgICApXG4gIH1cblxuICBwcml2YXRlIGlzRW50aXR5U2VsZWN0ZWQoZW50aXR5OiBURW50aXR5KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0RW50aXR5SWQoZW50aXR5KSA9PT0gdGhpcy5lbnRpdHlJZFxuICB9XG5cbiAgcHJpdmF0ZSBlbnRpdHlJZEZyb21WYWx1ZSh2YWx1ZTogVFZhbHVlKTogVElkIHtcbiAgICBpZiAodGhpcy52YWx1ZUFzSWQpIHtcbiAgICAgIHJldHVybiAoPGFueT52YWx1ZSkgYXMgVElkXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVudGl0eSA9ICg8YW55PnZhbHVlKSBhcyBURW50aXR5XG4gICAgICByZXR1cm4gdGhpcy5nZXRFbnRpdHlJZChlbnRpdHkpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RFbnRpdHlCeUlkKGlkOiBUSWQpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RW50aXR5ID0gdGhpcy5lbnRpdHlcbiAgICBpZiAoY3VycmVudEVudGl0eSAmJiB0aGlzLmdldEVudGl0eUlkKGN1cnJlbnRFbnRpdHkpID09PSBpZCkge1xuICAgICAgdGhpcy5vbkVudGl0eVZhbHVlUmVhZHkoKVxuICAgICAgcmV0dXJuIC8vIEVudGl0eSBhbHJlYWR5IGxvYWRlZFxuICAgIH1cblxuICAgIGlmIChpZCA9PT0gbnVsbCB8fCBpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSAnJykge1xuICAgICAgaWYgKGN1cnJlbnRFbnRpdHkgIT09IG51bGwgJiYgY3VycmVudEVudGl0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuZW50aXR5ID0gbnVsbFxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5kYXRhQ29udGV4dCkge1xuICAgICAgICBjb25zdCBleGlzdGluZyA9IHRoaXMuZmluZEluRGF0YUNvbnRleHQoaWQpXG4gICAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICAgIHRoaXMuZW50aXR5ID0gZXhpc3RpbmdcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvYWRFbnRpdHlCeUlkKGlkKVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZVN0YXRlKFxuICAgICAgICAgIEVsZGVyU2VsZWN0Q29tcG9uZW50U3RhdGUuZXJyb3IoXG4gICAgICAgICAgICAnRmFpbGVkIHRvIHNlbGVjdCB2YWx1ZSBieSBJZDogJyArIGlkICsgJyAtIERhdGFDb250ZXh0IG5vdCBhdmFpbGFibGUuJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9hZEVudGl0eUJ5SWQoaWQ6IFRJZCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlU3RhdGUoRWxkZXJTZWxlY3RDb21wb25lbnRTdGF0ZS5sb2FkaW5nKCkpXG4gICAgdGhpcy5kYXRhU291cmNlT3JUaHJvdygpXG4gICAgICAuZmluZEJ5SWQoPGFueT5pZClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoZW50aXR5KSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ0xvYWRlZCBtaXNzaW5nIGVudGl0eSBieSBpZCAnICsgaWQgKyAnOicsIGVudGl0eSlcbiAgICAgICAgICB0aGlzLmVudGl0eSA9IGVudGl0eVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMubG9nZ2VyLmVycm9yKCdGYWlsZWQgdG8gbG9hZCBlbnRpdHkgYnkgaWQgJyArIGlkLCBlcnIpXG4gICAgICAgICAgdGhpcy51cGRhdGVTdGF0ZShFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLmVycm9yKGVycikpXG4gICAgICAgIH0sXG4gICAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBvbkVudGl0eVZhbHVlUmVhZHkoKTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVTdGF0ZShFbGRlclNlbGVjdENvbXBvbmVudFN0YXRlLmlkbGUoKSlcbiAgfVxuXG4gIHByaXZhdGUgZmluZEluRGF0YUNvbnRleHQoaWQ6IFRJZCk6IFRFbnRpdHkgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5kYXRhQ29udGV4dC5zbmFwc2hvdC5kYXRhLmZpbmQoKHYpID0+IHRoaXMuZ2V0RW50aXR5SWQodikgPT09IGlkKVxuICB9XG5cbiAgcHVibGljIGVudGl0eVRvVmFsdWUoZW50aXR5OiBURW50aXR5KTogVFZhbHVlIHtcbiAgICBpZiAodGhpcy52YWx1ZUFzSWQpIHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXRFbnRpdHlJZChlbnRpdHkpXG4gICAgICByZXR1cm4gKDxhbnk+aWQpIGFzIFRWYWx1ZVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gKDxhbnk+ZW50aXR5KSBhcyBUVmFsdWVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBhZnRlciBhIHZhbHVlIGhhcyBiZWVuIHdyaXR0ZW4gdG8gdGhpcyBjb250cm9sLlxuICAgKlxuICAgKi9cbiAgcHJvdGVjdGVkIHdyaXRlVG9Db250cm9sKHZhbHVlOiBUVmFsdWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy52YWx1ZUFzSWQpIHtcbiAgICAgIGNvbnN0IGVudGl0eUlkID0gKDxhbnk+dmFsdWUpIGFzIFRJZFxuICAgICAgLy8gVmFsdWUgd2FzIHdyaXR0ZW4gYXMgZW50aXR5IGlkLCBlbnN1cmUgd2Ugc2VsZWN0IGVudGl0eSBieSBpZFxuICAgICAgdGhpcy5sb2dnZXIuZGVidWcoJ3dyaXRlVG9Db250cm9sOiB2YWx1ZSB3YXMgd3JpdHRlbiBhcyBpZDogJyArIGVudGl0eUlkLCB2YWx1ZSlcbiAgICAgIHRoaXMuc2VsZWN0RW50aXR5QnlJZChlbnRpdHlJZClcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVmFsdWUgd2FzIHdyaXR0ZW4gYXMgZW50aXR5LCBlbnN1cmUgZW50aXR5IGlzIHVwZGF0ZWRcbiAgICAgIGNvbnN0IGN1cnJlbnRFbnRpdHkgPSB0aGlzLmVudGl0eVxuICAgICAgY29uc3QgbmV3RW50aXR5ID0gKDxhbnk+dmFsdWUpIGFzIFRFbnRpdHlcbiAgICAgIHRoaXMubG9nZ2VyLmRlYnVnKFxuICAgICAgICAnd3JpdGVUb0NvbnRyb2w6IHZhbHVlIHdhcyB3cml0dGVuIGFzIGVudGl0eTogJyArIEpTT04uc3RyaW5naWZ5KG5ld0VudGl0eSksXG4gICAgICAgIHZhbHVlXG4gICAgICApXG4gICAgICBpZiAoIXRoaXMuaXNFcXVhbChjdXJyZW50RW50aXR5LCBuZXdFbnRpdHkpKSB7XG4gICAgICAgIHRoaXMuZW50aXR5Uy5zZXQobmV3RW50aXR5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5sb2dnZXIud2FybignSWdub3JlZCB3cml0dGVuIGVudGl0eSBhcyBpdCBpcyBhbHJlYWR5IHNldCB0byBlbnRpdHkkIScpXG4gICAgICB9XG4gICAgfVxuICAgIHN1cGVyLndyaXRlVG9Db250cm9sKHZhbHVlKVxuICB9XG59XG4iLCJAaWYgKGVudGl0eVdyYXBwZWQoKTsgYXMgZW50aXR5V3JhcHBlcikge1xuICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZWxkZXItZmxleC1jb250cm9sXCI+XG4gICAgQGlmIChzdGF0ZSgpOyBhcyBzdGF0ZSkge1xuICAgICAgQGlmIChzdGF0ZT8uZXJyb3IgfHwgaWNvbikge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiZWxkZXItaW5wdXQtcHJlZml4LWljb24tY29udGFpbmVyIGZsZXgtbm9uZVwiPlxuICAgICAgICAgIEBpZiAoaWNvbikge1xuICAgICAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgICAgIGRpc2FibGVkXG4gICAgICAgICAgICAgIGNsYXNzPVwiZWxkZXItbWRjLWNvbnRyb2wtaWNvbiBlbGRlci1pY29uLXNtYWxsIG5vc2VsZWN0IGNsaWNrYWJsZS1pY29uXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmxvYWRpbmddPVwic3RhdGUubG9hZGluZ1wiXG4gICAgICAgICAgICAgIFtjb2xvcl09XCJzdGF0ZT8uZXJyb3IgPyAnd2FybicgOiBmb2N1c2VkID8gJ3ByaW1hcnknIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ3VycmVudENsaWNrZWQoZW50aXR5KVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGljb24gfX1cbiAgICAgICAgICAgIDwvbWF0LWljb24+XG4gICAgICAgICAgfSBAZWxzZSBpZiAoc3RhdGU/LmVycm9yKSB7XG4gICAgICAgICAgICA8bWF0LWljb25cbiAgICAgICAgICAgICAgY2xhc3M9XCJlbGRlci1tZGMtY29udHJvbC1pY29uIGVsZGVyLWljb24tc21hbGwgbm9zZWxlY3RcIlxuICAgICAgICAgICAgICBjb2xvcj1cIndhcm5cIlxuICAgICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJzdGF0ZT8uZXJyb3JcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB3YXJuaW5nXG4gICAgICAgICAgICA8L21hdC1pY29uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgfVxuXG4gICAgPCEtLSBBIGR5bmFtaWMgaW5wdXQgLS0+XG4gICAgPGlucHV0XG4gICAgICAjaW5wdXRcbiAgICAgIG1hdElucHV0XG4gICAgICB0eXBlPVwidGV4dFwiXG4gICAgICBjbGFzcz1cImZsZXgtZ3JvdyBlbGRlci1zZWxlY3QtaW5wdXQgbWRjLXRleHQtZmllbGRfX2lucHV0XCJcbiAgICAgIFtkaXNhYmxlZF09XCIhIWRpc2FibGVkXCJcbiAgICAgIFtyZXF1aXJlZF09XCIhIXJlcXVpcmVkXCJcbiAgICAgIFtyZWFkb25seV09XCJyZWFkb25seSB8fCAhYXV0b2NvbXBsZXRlXCJcbiAgICAgIFtuYW1lXT1cIm5nQ29udHJvbD8ubmFtZSArICctaW5uZXItaW5wdXQnXCJcbiAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclMoKSB8IHRyYW5zbGF0ZVwiXG4gICAgICBbbWF0QXV0b2NvbXBsZXRlXVxuICAgICAgI2F1dG9UcmlnZ2VyPVwibWF0QXV0b2NvbXBsZXRlVHJpZ2dlclwiXG4gICAgICBbZWxkZXJBdXRvY29tcGxldGVdPVwiZWxkZXJBdXRvXCJcbiAgICAgIFtxdWVyeUZpbHRlcl09XCJxdWVyeUZpbHRlclwiXG4gICAgICBbZmlsdGVyc109XCJmaWx0ZXJzXCJcbiAgICAgIFtzb3J0c109XCJzb3J0c1wiXG4gICAgICBlbGRlclNlbGVjdE9uVGFiXG4gICAgICBbY2xhc3MuZWxkZXItc2VsZWN0LWRyb3Bkb3duLWlucHV0XT1cIiFhdXRvY29tcGxldGVcIlxuICAgICAgW25nTW9kZWxdPVwiaW5wdXRUZXh0KClcIlxuICAgICAgW25nTW9kZWxPcHRpb25zXT1cInsgc3RhbmRhbG9uZTogdHJ1ZSwgdXBkYXRlT246ICdzdWJtaXQnIH1cIlxuICAgICAgKGJsdXIpPVwib25JbnB1dEJsdXIoJGV2ZW50KVwiXG4gICAgICAoZm9jdXMpPVwib25JbnB1dEZvY3VzKGF1dG9UcmlnZ2VyKVwiXG4gICAgICAoY2xpY2spPVwib25JbnB1dENsaWNrZWQoYXV0b1RyaWdnZXIpXCJcbiAgICAvPlxuXG4gICAgPGVsZGVyLXN1Z2dlc3Rpb24tcGFuZWxcbiAgICAgICNlbGRlckF1dG89XCJlbGRlclN1Z2dlc3Rpb25QYW5lbFwiXG4gICAgICBbZGF0YVNvdXJjZV09XCJkYXRhQ29udGV4dFMoKT8uZGF0YVNvdXJjZVwiXG4gICAgICBbdmFsdWVUZW1wbGF0ZV09XCJ2YWx1ZVRlbXBsYXRlXCJcbiAgICAgIGVuYWJsZWRcbiAgICAgIFtkaXNwbGF5UHJvcGVydHlSZXNvbHZlcl09XCJkaXNwbGF5UHJvcGVydHlSZXNvbHZlclMoKVwiXG4gICAgICBbaXNPcHRpb25EaXNhYmxlZEZuXT1cImlzT3B0aW9uRGlzYWJsZWRJbnRlcm5hbEZuXCJcbiAgICAgIFtpc09wdGlvbkhpZGRlbkZuXT1cImlzT3B0aW9uSGlkZGVuSW50ZXJuYWxGblwiXG4gICAgICBlbGRlckF1dG9TZWxlY3RTdWdnZXN0Rmlyc3RcbiAgICAgIChvcHRpb25TZWxlY3RlZCk9XCJvbk9wdGlvblNlbGVjdGVkKCRhbnkoJGV2ZW50KSlcIlxuICAgID48L2VsZGVyLXN1Z2dlc3Rpb24tcGFuZWw+XG5cbiAgICA8ZGl2IGNsYXNzPVwibGF5b3V0LXJvdyBwbGFjZS1zdGFydC1jZW50ZXIgZmxleC1ub25lXCI+XG4gICAgICBAaWYgKCFzZWxlY3Rpb25Qb3B1cCAmJiAhYXV0b2NvbXBsZXRlICYmICFlbnRpdHlXcmFwcGVyLmRpc3BsYXlSZW1vdmUpIHtcbiAgICAgICAgPG1hdC1pY29uXG4gICAgICAgICAgY2xhc3M9XCJlbGRlci1tZGMtY29udHJvbC1pY29uIGVsZGVyLXNlbGVjdC1hcnJvdyBub3NlbGVjdFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uSW5wdXRDbGlja2VkKGF1dG9UcmlnZ2VyKVwiXG4gICAgICAgID5cbiAgICAgICAgICBhcnJvd19kcm9wX2Rvd25cbiAgICAgICAgPC9tYXQtaWNvbj5cbiAgICAgIH1cblxuICAgICAgQGlmIChzZWxlY3Rpb25Qb3B1cCAmJiAhZW50aXR5V3JhcHBlci5kaXNwbGF5UmVtb3ZlKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImVsZGVyLWNvbnRyb2wtaWNvbi1idXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvY2tlZFwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9wZW5TZWxlY3Rpb25Qb3B1cCgkZXZlbnQpXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoXCJcbiAgICAgICAgICBlbGRlclN0b3BFdmVudFByb3BhZ2F0aW9uXG4gICAgICAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJlbGRlci1tZGMtY29udHJvbC1pY29uXCI+c2VhcmNoPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG5cbiAgICAgIEBpZiAoZW50aXR5V3JhcHBlci5kaXNwbGF5UmVtb3ZlICYmICF0aGlzLnJlYWRvbmx5UygpKSB7XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzcz1cImVsZGVyLWNvbnRyb2wtaWNvbi1idXR0b25cIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0xvY2tlZFMoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cImNsZWFyKCRldmVudClcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJDbGVhclwiXG4gICAgICAgICAgZWxkZXJTdG9wRXZlbnRQcm9wYWdhdGlvblxuICAgICAgICAgIHRhYkluZGV4PVwiLTFcIlxuICAgICAgICA+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiZWxkZXItbWRjLWNvbnRyb2wtaWNvblwiPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxufVxuIl19
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { ElderFromFieldEntityBase } from '../../../common/forms/elder-from-field-entity-base';
|
|
2
|
-
import { Directive, ViewChild } from '@angular/core';
|
|
3
|
-
import { ElderSelectValueDirective } from '../elder-select-value.directive';
|
|
4
|
-
import { SelectionModelPopupDirective } from '../popup/selection-model-popup.directive';
|
|
5
|
-
import { ElderSelectBase } from '../elder-select-base';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
export class ElderSelectFormField extends ElderFromFieldEntityBase {
|
|
8
|
-
/***************************************************************************
|
|
9
|
-
* *
|
|
10
|
-
* Constructor *
|
|
11
|
-
* *
|
|
12
|
-
**************************************************************************/
|
|
13
|
-
constructor(initSelectFn) {
|
|
14
|
-
super();
|
|
15
|
-
this.applyToControl(initSelectFn);
|
|
16
|
-
}
|
|
17
|
-
/***************************************************************************
|
|
18
|
-
* *
|
|
19
|
-
* Life Cycle *
|
|
20
|
-
* *
|
|
21
|
-
**************************************************************************/
|
|
22
|
-
ngAfterViewInit() {
|
|
23
|
-
const control = this.formFieldControl$.getValue();
|
|
24
|
-
if (control instanceof ElderSelectBase) {
|
|
25
|
-
if (this.selectValueTemplate) {
|
|
26
|
-
control.valueTemplate = this.selectValueTemplate.templateRef;
|
|
27
|
-
}
|
|
28
|
-
if (this.selectionModelPopupDirective) {
|
|
29
|
-
control.selectionPopup = this.selectionModelPopupDirective;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderSelectFormField, deps: "invalid", target: i0.ɵɵFactoryTarget.Directive }); }
|
|
34
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.13", type: ElderSelectFormField, viewQueries: [{ propertyName: "selectValueTemplate", first: true, predicate: ElderSelectValueDirective, descendants: true }, { propertyName: "selectionModelPopupDirective", first: true, predicate: SelectionModelPopupDirective, descendants: true }], usesInheritance: true, ngImport: i0 }); }
|
|
35
|
-
}
|
|
36
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ElderSelectFormField, decorators: [{
|
|
37
|
-
type: Directive
|
|
38
|
-
}], ctorParameters: () => [{ type: undefined }], propDecorators: { selectValueTemplate: [{
|
|
39
|
-
type: ViewChild,
|
|
40
|
-
args: [ElderSelectValueDirective]
|
|
41
|
-
}], selectionModelPopupDirective: [{
|
|
42
|
-
type: ViewChild,
|
|
43
|
-
args: [SelectionModelPopupDirective]
|
|
44
|
-
}] } });
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxkZXItc2VsZWN0LWZvcm0tZmllbGQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9lbGRlcmJ5dGUvbmd4LXN0YXJ0ZXIvc3JjL2xpYi9jb21wb25lbnRzL3NlbGVjdC9zaW5nbGUvZWxkZXItc2VsZWN0LWZvcm0tZmllbGQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sb0RBQW9ELENBQUE7QUFDN0YsT0FBTyxFQUFpQixTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRW5FLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBRTNFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBQ3ZGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQTs7QUFHdEQsTUFBTSxPQUFnQixvQkFDcEIsU0FBUSx3QkFBMEU7SUFlbEY7Ozs7Z0ZBSTRFO0lBRTVFLFlBQXNCLFlBQXFFO1FBQ3pGLEtBQUssRUFBRSxDQUFBO1FBQ1AsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUMsQ0FBQTtJQUNuQyxDQUFDO0lBRUQ7Ozs7Z0ZBSTRFO0lBRXJFLGVBQWU7UUFDcEIsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFBO1FBRWpELElBQUksT0FBTyxZQUFZLGVBQWUsRUFBRSxDQUFDO1lBQ3ZDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzdCLE9BQU8sQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFdBQVcsQ0FBQTtZQUM5RCxDQUFDO1lBQ0QsSUFBSSxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztnQkFDdEMsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsNEJBQTRCLENBQUE7WUFDNUQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDOytHQTVDbUIsb0JBQW9CO21HQUFwQixvQkFBb0IsK0VBVTdCLHlCQUF5QiwrRkFHekIsNEJBQTRCOzs0RkFibkIsb0JBQW9CO2tCQUR6QyxTQUFTOzJFQVlELG1CQUFtQjtzQkFEekIsU0FBUzt1QkFBQyx5QkFBeUI7Z0JBSTdCLDRCQUE0QjtzQkFEbEMsU0FBUzt1QkFBQyw0QkFBNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbGRlckZyb21GaWVsZEVudGl0eUJhc2UgfSBmcm9tICcuLi8uLi8uLi9jb21tb24vZm9ybXMvZWxkZXItZnJvbS1maWVsZC1lbnRpdHktYmFzZSdcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIERpcmVjdGl2ZSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IEVsZGVyU2VsZWN0Q29tcG9uZW50IH0gZnJvbSAnLi9lbGRlci1zZWxlY3QvZWxkZXItc2VsZWN0LmNvbXBvbmVudCdcbmltcG9ydCB7IEVsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmUgfSBmcm9tICcuLi9lbGRlci1zZWxlY3QtdmFsdWUuZGlyZWN0aXZlJ1xuaW1wb3J0IHsgRWxkZXJBcHBseUNvbnRyb2xGbiB9IGZyb20gJy4uLy4uLy4uL2NvbW1vbi9mb3Jtcy9lbGRlci1mcm9tLWZpZWxkLWJhc2UnXG5pbXBvcnQgeyBTZWxlY3Rpb25Nb2RlbFBvcHVwRGlyZWN0aXZlIH0gZnJvbSAnLi4vcG9wdXAvc2VsZWN0aW9uLW1vZGVsLXBvcHVwLmRpcmVjdGl2ZSdcbmltcG9ydCB7IEVsZGVyU2VsZWN0QmFzZSB9IGZyb20gJy4uL2VsZGVyLXNlbGVjdC1iYXNlJ1xuXG5ARGlyZWN0aXZlKClcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBFbGRlclNlbGVjdEZvcm1GaWVsZDxURW50aXR5LCBUSWQ+XG4gIGV4dGVuZHMgRWxkZXJGcm9tRmllbGRFbnRpdHlCYXNlPFRFbnRpdHksIFRJZCwgRWxkZXJTZWxlY3RDb21wb25lbnQ8VEVudGl0eSwgVElkPj5cbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0XG57XG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBGaWVsZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIEBWaWV3Q2hpbGQoRWxkZXJTZWxlY3RWYWx1ZURpcmVjdGl2ZSlcbiAgcHVibGljIHNlbGVjdFZhbHVlVGVtcGxhdGU6IEVsZGVyU2VsZWN0VmFsdWVEaXJlY3RpdmVcblxuICBAVmlld0NoaWxkKFNlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmUpXG4gIHB1YmxpYyBzZWxlY3Rpb25Nb2RlbFBvcHVwRGlyZWN0aXZlOiBTZWxlY3Rpb25Nb2RlbFBvcHVwRGlyZWN0aXZlXG5cbiAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqIENvbnN0cnVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGluaXRTZWxlY3RGbjogRWxkZXJBcHBseUNvbnRyb2xGbjxFbGRlclNlbGVjdENvbXBvbmVudDxURW50aXR5LCBUSWQ+Pikge1xuICAgIHN1cGVyKClcbiAgICB0aGlzLmFwcGx5VG9Db250cm9sKGluaXRTZWxlY3RGbilcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlxuICAgKiBMaWZlIEN5Y2xlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpcbiAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuZm9ybUZpZWxkQ29udHJvbCQuZ2V0VmFsdWUoKVxuXG4gICAgaWYgKGNvbnRyb2wgaW5zdGFuY2VvZiBFbGRlclNlbGVjdEJhc2UpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdFZhbHVlVGVtcGxhdGUpIHtcbiAgICAgICAgY29udHJvbC52YWx1ZVRlbXBsYXRlID0gdGhpcy5zZWxlY3RWYWx1ZVRlbXBsYXRlLnRlbXBsYXRlUmVmXG4gICAgICB9XG4gICAgICBpZiAodGhpcy5zZWxlY3Rpb25Nb2RlbFBvcHVwRGlyZWN0aXZlKSB7XG4gICAgICAgIGNvbnRyb2wuc2VsZWN0aW9uUG9wdXAgPSB0aGlzLnNlbGVjdGlvbk1vZGVsUG9wdXBEaXJlY3RpdmVcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|