@sumaris-net/ngx-components 2.7.0-rc1 → 2.7.0-rc11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/public_api.mjs +2 -3
- package/esm2022/src/app/admin/services/filter/person.filter.mjs +1 -1
- package/esm2022/src/app/admin/services/person.service.mjs +2 -2
- package/esm2022/src/app/admin/services/validator/person.validator.mjs +1 -1
- package/esm2022/src/app/admin/users/users.mjs +3 -3
- package/esm2022/src/app/core/about/about.modal.mjs +1 -1
- package/esm2022/src/app/core/account/account.page.mjs +1 -1
- package/esm2022/src/app/core/account/new-token.modal.mjs +2 -2
- package/esm2022/src/app/core/account/token.table.mjs +1 -1
- package/esm2022/src/app/core/auth/auth.form.mjs +1 -1
- package/esm2022/src/app/core/auth/auth.modal.mjs +1 -1
- package/esm2022/src/app/core/form/entity/editor.class.mjs +1 -1
- package/esm2022/src/app/core/form/entity/entity-editor-modal.class.mjs +1 -1
- package/esm2022/src/app/core/form/entity/entity-editor.class.mjs +3 -3
- package/esm2022/src/app/core/form/form.class.mjs +1 -1
- package/esm2022/src/app/core/form/form.utils.mjs +1 -1
- package/esm2022/src/app/core/form/list/list.form.mjs +1 -1
- package/esm2022/src/app/core/form/properties/properties.form.mjs +1 -1
- package/esm2022/src/app/core/form/properties/properties.table.mjs +2 -2
- package/esm2022/src/app/core/form/properties/testing/properties-form.test.mjs +1 -1
- package/esm2022/src/app/core/form/text-popover/testing/text-popover.testing.mjs +1 -1
- package/esm2022/src/app/core/form/text-popover/text-popover.component.mjs +1 -1
- package/esm2022/src/app/core/graphql/graphql.service.mjs +1 -1
- package/esm2022/src/app/core/graphql/graphql.utils.mjs +1 -1
- package/esm2022/src/app/core/home/home.mjs +3 -3
- package/esm2022/src/app/core/install/install-upgrade-card.component.mjs +1 -1
- package/esm2022/src/app/core/menu/menu.component.mjs +3 -3
- package/esm2022/src/app/core/menu/menu.model.mjs +1 -1
- package/esm2022/src/app/core/menu/menu.service.mjs +1 -1
- package/esm2022/src/app/core/menu/sub-menu-tab.directive.mjs +1 -1
- package/esm2022/src/app/core/peer/select-peer.modal.mjs +1 -1
- package/esm2022/src/app/core/register/register-confirm.page.mjs +3 -3
- package/esm2022/src/app/core/register/register.form.mjs +1 -1
- package/esm2022/src/app/core/register/register.modal.mjs +1 -1
- package/esm2022/src/app/core/services/account.service.mjs +1 -1
- package/esm2022/src/app/core/services/auth-guard.service.mjs +1 -1
- package/esm2022/src/app/core/services/base-entity-service.class.mjs +1 -1
- package/esm2022/src/app/core/services/base-graphql-service.class.mjs +1 -1
- package/esm2022/src/app/core/services/base58.mjs +1 -1
- package/esm2022/src/app/core/services/config.service.mjs +1 -1
- package/esm2022/src/app/core/services/errors.mjs +3 -3
- package/esm2022/src/app/core/services/local-settings.service.mjs +1 -1
- package/esm2022/src/app/core/services/model/account.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/config.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/entity.decorators.mjs +1 -1
- package/esm2022/src/app/core/services/model/entity.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/filter.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/person.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/referential.model.mjs +3 -3
- package/esm2022/src/app/core/services/model/token.model.mjs +1 -1
- package/esm2022/src/app/core/services/model/tree-item-entity.model.mjs +1 -1
- package/esm2022/src/app/core/services/network.service.mjs +1 -1
- package/esm2022/src/app/core/services/network.types.mjs +1 -1
- package/esm2022/src/app/core/services/network.utils.mjs +1 -1
- package/esm2022/src/app/core/services/platform.service.mjs +2 -2
- package/esm2022/src/app/core/services/storage/entities-storage.service.mjs +1 -1
- package/esm2022/src/app/core/services/storage/entity-store.class.mjs +1 -1
- package/esm2022/src/app/core/services/testing/referential.validator.mjs +1 -1
- package/esm2022/src/app/core/services/validator/account.validator.mjs +1 -1
- package/esm2022/src/app/core/services/validator/local-settings.validator.mjs +1 -1
- package/esm2022/src/app/core/services/validator/user-token.validator.mjs +1 -1
- package/esm2022/src/app/core/settings/settings.page.mjs +2 -2
- package/esm2022/src/app/core/table/actions-column.component.mjs +1 -1
- package/esm2022/src/app/core/table/async-table.class.mjs +1 -1
- package/esm2022/src/app/core/table/entities-async-table-datasource.class.mjs +1 -1
- package/esm2022/src/app/core/table/entities-table-datasource.class.mjs +2 -2
- package/esm2022/src/app/core/table/memory-table.class.mjs +1 -1
- package/esm2022/src/app/core/table/table.class.mjs +1 -1
- package/esm2022/src/app/core/table/table.utils.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table.testing.mjs +2 -2
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +4 -4
- package/esm2022/src/app/shared/alerts.mjs +1 -1
- package/esm2022/src/app/shared/audio/audio.mjs +1 -1
- package/esm2022/src/app/shared/capacitor/keyboard.mjs +1 -1
- package/esm2022/src/app/shared/dates.mjs +1 -1
- package/esm2022/src/app/shared/directives/autofocus.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/autotitle.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/drag-and-drop.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/ng-var.directive.mjs +1 -1
- package/esm2022/src/app/shared/directives/resizable/resizable.component.mjs +1 -1
- package/esm2022/src/app/shared/events.mjs +1 -1
- package/esm2022/src/app/shared/file/csv.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/file.service.mjs +1 -1
- package/esm2022/src/app/shared/file/file.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/images.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/json.utils.mjs +1 -1
- package/esm2022/src/app/shared/file/uri.utils.mjs +1 -1
- package/esm2022/src/app/shared/form/field.component.mjs +3 -3
- package/esm2022/src/app/shared/forms.mjs +1 -1
- package/esm2022/src/app/shared/functions.mjs +1 -1
- package/esm2022/src/app/shared/geolocation/geolocation.utils.mjs +1 -1
- package/esm2022/src/app/shared/gesture/gesture-config.mjs +2 -2
- package/esm2022/src/app/shared/graph/colors.utils.mjs +1 -1
- package/esm2022/src/app/shared/graph/graph-colors.mjs +8 -8
- package/esm2022/src/app/shared/guard/component-dirty.guard.mjs +1 -1
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +1 -1
- package/esm2022/src/app/shared/http/http.utils.mjs +1 -1
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +1 -1
- package/esm2022/src/app/shared/image/image.service.mjs +1 -1
- package/esm2022/src/app/shared/inputs.mjs +1 -1
- package/esm2022/src/app/shared/interceptors/progess.interceptor.mjs +1 -1
- package/esm2022/src/app/shared/logging/logger.model.mjs +1 -1
- package/esm2022/src/app/shared/logging/logging-service.class.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.config.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +10 -4
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.utils.mjs +1 -1
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
- package/esm2022/src/app/shared/material/badge/badge.directive.mjs +1 -1
- package/esm2022/src/app/shared/material/boolean/boolean.module.mjs +6 -11
- package/esm2022/src/app/shared/material/boolean/material-boolean.mjs +262 -0
- package/esm2022/src/app/shared/material/boolean/testing/boolean.test.page.mjs +4 -5
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +1 -1
- package/esm2022/src/app/shared/material/chips/testing/chips.test.mjs +2 -2
- package/esm2022/src/app/shared/material/datetime/datetime.module.mjs +4 -5
- package/esm2022/src/app/shared/material/datetime/material.date.mjs +46 -18
- package/esm2022/src/app/shared/material/datetime/material.dateshort.mjs +46 -20
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +145 -82
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
- package/esm2022/src/app/shared/material/datetime/testing/mat-date.test.mjs +3 -3
- package/esm2022/src/app/shared/material/datetime/testing/mat-dateshort.test.mjs +3 -3
- package/esm2022/src/app/shared/material/duration/duration.utils.mjs +1 -1
- package/esm2022/src/app/shared/material/duration/material.duration.mjs +2 -2
- package/esm2022/src/app/shared/material/duration/testing/mat-duration.test.mjs +2 -2
- package/esm2022/src/app/shared/material/latlong/latlong.utils.mjs +1 -1
- package/esm2022/src/app/shared/material/latlong/material.latlong.mjs +2 -2
- package/esm2022/src/app/shared/material/latlong/testing/latlong.test.mjs +1 -1
- package/esm2022/src/app/shared/material/material.module.mjs +5 -5
- package/esm2022/src/app/shared/material/numpad/numpad.append-to-input.directive.mjs +1 -1
- package/esm2022/src/app/shared/material/numpad/numpad.component.mjs +1 -1
- package/esm2022/src/app/shared/material/numpad/numpad.container.mjs +1 -1
- package/esm2022/src/app/shared/material/numpad/numpad.directive.mjs +1 -1
- package/esm2022/src/app/shared/material/numpad/testing/numpad.test.mjs +1 -1
- package/esm2022/src/app/shared/material/paginator/material.paginator-i18n.mjs +1 -1
- package/esm2022/src/app/shared/material/swipe/material.swipe.mjs +1 -1
- package/esm2022/src/app/shared/material/swipe/testing/swipe.test.mjs +1 -1
- package/esm2022/src/app/shared/material/testing/common.test.mjs +3 -3
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +9 -3
- package/esm2022/src/app/shared/named-filter/named-filter.model.mjs +1 -1
- package/esm2022/src/app/shared/named-filter/named-filter.service.mjs +1 -1
- package/esm2022/src/app/shared/observables.mjs +1 -1
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/colors.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/date-diff-duration.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/file-size.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/form.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/highlight.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/maskito.pipe.mjs +2 -51
- package/esm2022/src/app/shared/pipes/math.pipes.mjs +1 -1
- package/esm2022/src/app/shared/pipes/number-format.pipe.mjs +1 -1
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +4 -8
- package/esm2022/src/app/shared/pipes/property.pipes.mjs +1 -1
- package/esm2022/src/app/shared/platforms.mjs +1 -1
- package/esm2022/src/app/shared/services/job.utils.mjs +1 -1
- package/esm2022/src/app/shared/services/memory-entity-service.class.mjs +3 -3
- package/esm2022/src/app/shared/services/progress-bar.service.mjs +1 -1
- package/esm2022/src/app/shared/services/startable-observable-service.class.mjs +1 -1
- package/esm2022/src/app/shared/services/startable-service.class.mjs +1 -1
- package/esm2022/src/app/shared/services/translate-context.service.mjs +1 -1
- package/esm2022/src/app/shared/services.mjs +2 -2
- package/esm2022/src/app/shared/shared-routing.module.mjs +1 -1
- package/esm2022/src/app/shared/storage/storage-explorer.component.mjs +1 -1
- package/esm2022/src/app/shared/storage/storage.service.mjs +1 -1
- package/esm2022/src/app/shared/testing/observable.test.mjs +1 -1
- package/esm2022/src/app/shared/toast/toast.testing.mjs +2 -2
- package/esm2022/src/app/shared/toast/toasts.mjs +1 -1
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/testing/upload-file.testing.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +1 -1
- package/esm2022/src/app/shared/upload-file/upload-file.component.mjs +1 -1
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +1 -1
- package/esm2022/src/app/shared/validator/validators.mjs +3 -3
- package/esm2022/src/app/shared/version/versions.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.icon.mjs +1 -1
- package/esm2022/src/app/social/job/progression/job-progression.list.mjs +1 -1
- package/esm2022/src/app/social/job/testing/job-progression.testing.service.mjs +1 -1
- package/esm2022/src/app/social/message/message.form.mjs +1 -1
- package/esm2022/src/app/social/message/message.modal.mjs +1 -1
- package/esm2022/src/app/social/message/message.service.mjs +1 -1
- package/esm2022/src/app/social/user-event/notification/user-event-notification.icon.mjs +1 -1
- package/esm2022/src/app/social/user-event/notification/user-event-notification.list.mjs +1 -1
- package/esm2022/src/app/social/user-event/testing/user-event.testing.mjs +1 -1
- package/esm2022/src/app/social/user-event/testing/user-event.testing.model.mjs +1 -1
- package/esm2022/src/app/social/user-event/testing/user-event.testing.service.mjs +1 -1
- package/esm2022/src/app/social/user-event/user-event.service.mjs +1 -1
- package/esm2022/src/environments/environment.loader.mjs +1 -1
- package/esm2022/src/environments/environment.mjs +3 -3
- package/fesm2022/sumaris-net.ngx-components.mjs +433 -622
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +6 -6
- package/public_api.d.ts +1 -2
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +3 -1
- package/src/app/shared/material/boolean/boolean.module.d.ts +14 -15
- package/src/app/shared/material/boolean/{material.boolean.d.ts → material-boolean.d.ts} +16 -20
- package/src/app/shared/material/datetime/datetime.module.d.ts +1 -1
- package/src/app/shared/material/datetime/material.date.d.ts +5 -3
- package/src/app/shared/material/datetime/material.dateshort.d.ts +5 -3
- package/src/app/shared/material/datetime/material.datetime.d.ts +12 -8
- package/src/app/shared/material/latlong/material.latlong.d.ts +1 -1
- package/src/app/shared/named-filter/named-filter-selector.component.d.ts +3 -1
- package/src/app/shared/pipes/maskito.pipe.d.ts +1 -8
- package/src/app/shared/pipes/pipes.module.d.ts +1 -1
- package/src/theme/_ngx-components.scss +16 -20
- package/src/theme/_ngx-components.table.scss +4 -5
- package/esm2022/src/app/shared/material/boolean/material-boolean2.mjs +0 -266
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +0 -271
- package/src/app/shared/material/boolean/material-boolean2.d.ts +0 -66
|
@@ -206,4 +206,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
|
206
206
|
}], appBadgePosition: [{
|
|
207
207
|
type: Input
|
|
208
208
|
}] } });
|
|
209
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFnQyxRQUFRLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBQyxRQUFRLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7QUFJbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFpQmxELE1BQU0sT0FBTyxjQUFlLFNBQVEsUUFBUTtJQXlCcEI7SUF2QlUsSUFBSSxDQUFDO0lBQ3JDLElBQTRDLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLElBQTBDLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBMEMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLElBQTJDLFlBQVksS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRixJQUEwQyxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLElBQTBDLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6RixJQUEyQyxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUYsSUFBMEMsV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxP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QUN4QiwwQkFBMEI7d0JBQzFCLDRCQUE0QjtxQkFDN0I7aUJBQ0Y7OzBCQTZCYyxRQUFROzswQkFBSSxNQUFNOzJCQUFDLHFCQUFxQjt5Q0ExQnJCLElBQUk7c0JBQW5DLFdBQVc7dUJBQUMsaUJBQWlCO2dCQUNjLGFBQWE7c0JBQXhELFdBQVc7dUJBQUMseUJBQXlCO2dCQUNJLFdBQVc7c0JBQXBELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUNNLFdBQVc7c0JBQXBELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUNPLFlBQVk7c0JBQXRELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUNLLFdBQVc7c0JBQXBELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUNNLFdBQVc7c0JBQXBELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUNPLFlBQVk7c0JBQXRELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUNLLFdBQVc7c0JBQXBELFdBQVc7dUJBQUMsdUJBQXVCO2dCQUNPLFlBQVk7c0JBQXRELFdBQVc7dUJBQUMsd0JBQXdCO2dCQUNRLGNBQWM7c0JBQTFELFdBQVc7dUJBQUMsMEJBQTBCO2dCQUU5QixhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIEFOSU1BVElPTl9NT0RVTEVfVFlQRSwgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5qZWN0LCBJbnB1dCwgTmdab25lLCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT3B0aW9uYWwsIFJlbmRlcmVyMiwgU2ltcGxlQ2hhbmdlc30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdEJhZGdlLCBNYXRCYWRnZVBvc2l0aW9ufSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XG5pbXBvcnQge0FwcENvbG9yc30gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHtBcmlhRGVzY3JpYmVyfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IGlzTm90TmlsT3JCbGFuayB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucyc7XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgTWF0QmFkZ2VGaWxsID0gJ2NsZWFyJyB8ICdzb2xpZCc7XG5cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ1thcHBCYWRnZV0sIFthcHBCYWRnZUljb25dLCBbYXBwQmFkZ2VNYXRJY29uXScsXG4gIGlucHV0czogW1xuICAgICdjb250ZW50OiBhcHBCYWRnZScsXG4gICAgJ2Rpc2FibGVkOiBhcHBCYWRnZURpc2FibGVkJyxcbiAgICAnY29sb3I6IGFwcEJhZGdlQ29sb3InLFxuICAgICdzaXplOiBhcHBCYWRnZVNpemUnLFxuICAgICdmaWxsOiBhcHBCYWRnZUZpbGwnLFxuICAgICdoaWRkZW46IGFwcEJhZGdlSGlkZGVuJyxcbiAgICAnb3ZlcmxhcDogYXBwQmFkZ2VPdmVybGFwJyxcbiAgICAncG9zaXRpb246IGFwcEJhZGdlUG9zaXRpb24nXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQmFkZ2VEaXJlY3RpdmUgZXh0ZW5kcyBNYXRCYWRnZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcywgT25EZXN0cm95IHtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZScpIHRydWU7XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLW92ZXJsYXAnKSBnZXQgaXNPdmVybGFwSG9zdCgpIHsgcmV0dXJuIHRoaXMub3ZlcmxhcDsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1hYm92ZScpIGdldCBpc0Fib3ZlSG9zdCgpIHsgcmV0dXJuIHRoaXMuaXNBYm92ZSgpOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLWJlbG93JykgZ2V0IGlzQmVsb3dIb3N0KCkgeyByZXR1cm4gIXRoaXMuaXNBYm92ZSgpOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLWJlZm9yZScpIGdldCBpc0JlZm9yZUhvc3QoKSB7IHJldHVybiAhdGhpcy5pc0FmdGVyKCk7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtYWZ0ZXInKSBnZXQgaXNBZnRlckhvc3QoKSB7IHJldHVybiB0aGlzLmlzQWZ0ZXIoKTsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1zbWFsbCcpIGdldCBpc1NtYWxsSG9zdCgpIHsgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ3NtYWxsJzsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1tZWRpdW0nKSBnZXQgaXNNZWRpdW1Ib3N0KCkgeyByZXR1cm4gdGhpcy5zaXplID09PSAnbWVkaXVtJzsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1sYXJnZScpIGdldCBpc0xhcmdlSG9zdCgpIHsgcmV0dXJuIHRoaXMuc2l6ZSA9PT0gJ2xhcmdlJzsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1oaWRkZW4nKSBnZXQgaXNIaWRkZW5Ib3N0KCkgeyByZXR1cm4gdGhpcy5oaWRkZW4gfHwgIXRoaXMuY29udGVudDsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1kaXNhYmxlZCcpIGdldCBpc0Rpc2FibGVkSG9zdCgpIHsgcmV0dXJuIHRoaXMuZGlzYWJsZWQ7IH1cblxuICBASW5wdXQoKSBhcHBCYWRnZUNvbG9yOiBBcHBDb2xvcnM7XG4gIEBJbnB1dCgpIGFwcEJhZGdlRmlsbDogTWF0QmFkZ2VGaWxsO1xuICBASW5wdXQoKSBhcHBCYWRnZU1hdEljb246IHN0cmluZztcbiAgQElucHV0KCkgYXBwQmFkZ2VJY29uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGFwcEJhZGdlSGlkZGVuOiBCb29sZWFuSW5wdXQ7XG4gIEBJbnB1dCgpIGFwcEJhZGdlT3ZlcmxhcDogQm9vbGVhbklucHV0O1xuICBASW5wdXQoKSBhcHBCYWRnZVBvc2l0aW9uOiBNYXRCYWRnZVBvc2l0aW9uO1xuXG4gIHByaXZhdGUgX2h0bWw6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihfbmdab25lOiBOZ1pvbmUsXG4gICAgICAgICAgICAgIHByb3RlY3RlZCBlbDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgICAgICAgIF9hcmlhRGVzY3JpYmVyOiBBcmlhRGVzY3JpYmVyLFxuICAgICAgICAgICAgICBfcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChBTklNQVRJT05fTU9EVUxFX1RZUEUpIF9hbmltYXRpb25Nb2RlPzogc3RyaW5nIHwgdW5kZWZpbmVkXG4gICkge1xuICAgIHN1cGVyKF9uZ1pvbmUsIGVsLCBfYXJpYURlc2NyaWJlciwgX3JlbmRlcmVyLCBfYW5pbWF0aW9uTW9kZSk7XG4gICAgdGhpcy5jb250ZW50ID0gMHgwMEEwOyAvLyBXaWxsIGJlIGludmlzaWJsZVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlcy5hcHBCYWRnZUNvbG9yIHx8IGNoYW5nZXMuYXBwQmFkZ2VGaWxsIHx8IGNoYW5nZXMuYXBwQmFkZ2VNYXRJY29uIHx8IGNoYW5nZXMuYXBwQmFkZ2VJY29uIHx8IGNoYW5nZXMuYXBwQmFkZ2VIaWRkZW4gfHwgY2hhbmdlcy5hcHBCYWRnZU92ZXJsYXAgfHwgY2hhbmdlcy5hcHBCYWRnZVBvc2l0aW9uKSB7XG4gICAgICB0aGlzLnVwZGF0ZVZpZXcoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICBzdXBlci5uZ09uRGVzdHJveSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVWaWV3KCkge1xuICAgIGNvbnN0IGJhZGdlID0gdGhpcy5nZXRCYWRnZUVsZW1lbnQoKTtcbiAgICBpZiAoIWJhZGdlKSByZXR1cm47XG5cbiAgICAvLyBGaXggY29sb3JcbiAgICBpZiAoIXRoaXMuYXBwQmFkZ2VDb2xvcikgdGhpcy5hcHBCYWRnZUNvbG9yID0gJ3ByaW1hcnknO1xuICAgIGlmICh0aGlzLmFwcEJhZGdlQ29sb3IgPT09ICd3YXJuJykgdGhpcy5hcHBCYWRnZUNvbG9yID0gJ3dhcm5pbmcnO1xuXG4gICAgbGV0IHNpemU6IG51bWJlcjtcbiAgICBzd2l0Y2ggKHRoaXMuc2l6ZSkge1xuICAgICAgY2FzZSAnbGFyZ2UnOlxuICAgICAgICBzaXplID0gMjQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnbWVkaXVtJzpcbiAgICAgICAgc2l6ZSA9IDIyO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgc2l6ZSA9IDE2O1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgbGV0IGhpZGRlbiA9IHRoaXMuYXBwQmFkZ2VIaWRkZW47XG4gICAgbGV0IGh0bWwgPSAnJztcbiAgICBpZiAodGhpcy5hcHBCYWRnZU1hdEljb24pIHtcbiAgICAgIGh0bWwgPSBgPGkgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiIHN0eWxlPVwiZm9udC1zaXplOiAke3NpemV9cHg7XCI+JHt0aGlzLmFwcEJhZGdlTWF0SWNvbn08L2k+YDtcbiAgICB9XG4gICAgZWxzZSBpZiAodGhpcy5hcHBCYWRnZUljb24pIHtcbiAgICAgIGh0bWwgPSBgPGlvbi1pY29uIHN0eWxlPVwiZm9udC1zaXplOiAke3NpemV9cHg7IHBvaW50ZXItZXZlbnRzOiBub25lO1wiIG5hbWU9XCIke3RoaXMuYXBwQmFkZ2VJY29ufVwiPjwvaW9uLWljb24+YDtcbiAgICB9XG4gICAgZWxzZSBpZiAoaXNOb3ROaWxPckJsYW5rKHRoaXMuY29udGVudCkpIHtcbiAgICAgIGh0bWwgPSAnJyArIHRoaXMuY29udGVudDtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBoaWRkZW4gPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWhpZGRlbiAmJiB0aGlzLl9odG1sICE9PSBodG1sKSB7XG4gICAgICB0aGlzLl9odG1sID0gaHRtbDtcbiAgICAgIGJhZGdlLmlubmVySFRNTCA9IGh0bWw7XG4gICAgfVxuXG4gICAgLy8gVXBkYXRlIHN0eWxlXG4gICAgLy8gZmlsbDogJ2NsZWFyJ1xuICAgIGlmICh0aGlzLmFwcEJhZGdlRmlsbCA9PT0gJ2NsZWFyJykge1xuICAgICAgYmFkZ2Uuc3R5bGUuY29sb3IgPSBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5hcHBCYWRnZUNvbG9yfSlgO1xuICAgICAgYmFkZ2Uuc3R5bGUuYmFja2dyb3VuZCA9ICd0cmFuc3BhcmVudCc7XG4gICAgfVxuICAgIC8vIGZpbGw6ICdzb2xpZCcgKGRlZmF1bHQgdmFsdWUpXG4gICAgZWxzZSB7XG4gICAgICBiYWRnZS5zdHlsZS5iYWNrZ3JvdW5kID0gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMuYXBwQmFkZ2VDb2xvcn0pYDtcbiAgICAgIGJhZGdlLnN0eWxlLmNvbG9yID0gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMuYXBwQmFkZ2VDb2xvcn0tY29udHJhc3QpYDtcbiAgICB9XG5cbiAgICBpZiAoaGlkZGVuKSBiYWRnZS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIGVsc2Uge1xuICAgICAgaWYgKGJhZGdlLnN0eWxlLmRpc3BsYXkgIT09ICdpbmxpbmUtYmxvY2snKSBiYWRnZS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZS1ibG9jayc7XG4gICAgICBpZiAoYmFkZ2Uuc3R5bGUucG9zaXRpb24gIT09ICdhYnNvbHV0ZScpIGJhZGdlLnN0eWxlLnBvc2l0aW9uID0gJ2Fic29sdXRlJztcblxuXG5cblxuICAgICAgLypcbiAgICAgIC8vIFdPQVJLUk9VTkQgdG8gZm9yY2UgcG9zaXRpb24gb2YgdGhlIGJhZGdlLCB3aGVuIGluc2lkZSBhIDxtYXQtYnV0dG9uPiAoZS5nLiBvbiBhIDxtYXQtbGFiZWw+KVxuICAgICAgY29uc3Qgb3ZlcmxhcCA9IHRoaXMub3ZlcmxhcDtcblxuICAgICAgLy8gUmlnaHQvbGVmdCBwb3NpdGlvblxuICAgICAgaWYgKHRoaXMuaXNBZnRlcigpICkge1xuICAgICAgICBjb25zdCBwYXJlbnRXaWR0aCA9IGJhZGdlLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGg7XG4gICAgICAgIGlmIChwYXJlbnRXaWR0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gYCR7cGFyZW50V2lkdGggLSAob3ZlcmxhcCA/IHNpemUgLyAyIDogMCl9cHhgO1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS5sZWZ0ICE9PSBsZWZ0KSBiYWRnZS5zdHlsZS5sZWZ0ID0gbGVmdDtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUucmlnaHQgIT09ICcnKSBiYWRnZS5zdHlsZS5yaWdodCA9ICcnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gYCR7LTEgKiAob3ZlcmxhcCA/IHNpemUgLyAyIDogc2l6ZSl9cHhgO1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS5yaWdodCAhPT0gcmlnaHQpIGJhZGdlLnN0eWxlLnJpZ2h0ID0gcmlnaHQ7XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLmxlZnQgIT09ICcnKSBiYWRnZS5zdHlsZS5sZWZ0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG9wL2JvdHRvbSBwb3NpdGlvblxuICAgICAgaWYgKHRoaXMuaXNBYm92ZSgpKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudEhlaWdodCA9IGJhZGdlLnBhcmVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0O1xuICAgICAgICBpZiAocGFyZW50SGVpZ2h0ID4gMCkge1xuICAgICAgICAgIGNvbnN0IGJvdHRvbSA9IGAke3BhcmVudEhlaWdodCAtIChvdmVybGFwID8gKHNpemUgLyAyKSA6IHNpemUpfXB4YDtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUuYm90dG9tICE9PSBib3R0b20pIGJhZGdlLnN0eWxlLmJvdHRvbSA9IGJvdHRvbTtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUudG9wICE9PSAnJykgYmFkZ2Uuc3R5bGUudG9wID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29uc3QgdG9wID0gYCR7LTEgKiAob3ZlcmxhcCA/IChzaXplIC8gMikgOiBzaXplKX1weGA7XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLnRvcCAhPT0gdG9wKSBiYWRnZS5zdHlsZS50b3AgPSB0b3A7XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLmJvdHRvbSAhPT0gJycpIGJhZGdlLnN0eWxlLmJvdHRvbSA9ICcnO1xuICAgICAgICB9XG4gICAgICB9Ki9cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
209
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFkZ2UuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9zaGFyZWQvbWF0ZXJpYWwvYmFkZ2UvYmFkZ2UuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBZ0IscUJBQXFCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFnQyxRQUFRLEVBQTJCLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sRUFBQyxRQUFRLEVBQW1CLE1BQU0seUJBQXlCLENBQUM7QUFJbkUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7QUFpQmxELE1BQU0sT0FBTyxjQUFlLFNBQVEsUUFBUTtJQXlCcEI7SUF2QlUsSUFBSSxDQUFDO0lBQ3JDLElBQTRDLGFBQWEsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3BGLElBQTBDLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbEYsSUFBMEMsV0FBVyxLQUFLLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25GLElBQTJDLFlBQVksS0FBSyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNyRixJQUEwQyxXQUFXLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xGLElBQTBDLFdBQVcsS0FBSyxPQUFPLElBQUksQ0FBQyxJQUFJLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQztJQUN6RixJQUEyQyxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUYsSUFBMEMsV0FBVyxLQUFLLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxP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QkFDekQsTUFBTSxFQUFFO3dCQUNOLG1CQUFtQjt3QkFDbkIsNEJBQTRCO3dCQUM1QixzQkFBc0I7d0JBQ3RCLG9CQUFvQjt3QkFDcEIsb0JBQW9CO3dCQUNwQix3QkFBd0I7d0JBQ3hCLDBCQUEwQjt3QkFDMUIsNEJBQTRCO3FCQUM3QjtpQkFDRjs7MEJBNkJjLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMscUJBQXFCO3lDQTFCckIsSUFBSTtzQkFBbkMsV0FBVzt1QkFBQyxpQkFBaUI7Z0JBQ2MsYUFBYTtzQkFBeEQsV0FBVzt1QkFBQyx5QkFBeUI7Z0JBQ0ksV0FBVztzQkFBcEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBQ00sV0FBVztzQkFBcEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBQ08sWUFBWTtzQkFBdEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBQ0ssV0FBVztzQkFBcEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBQ00sV0FBVztzQkFBcEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBQ08sWUFBWTtzQkFBdEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBQ0ssV0FBVztzQkFBcEQsV0FBVzt1QkFBQyx1QkFBdUI7Z0JBQ08sWUFBWTtzQkFBdEQsV0FBVzt1QkFBQyx3QkFBd0I7Z0JBQ1EsY0FBYztzQkFBMUQsV0FBVzt1QkFBQywwQkFBMEI7Z0JBRTlCLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7QWZ0ZXJWaWV3SW5pdCwgQU5JTUFUSU9OX01PRFVMRV9UWVBFLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbmplY3QsIElucHV0LCBOZ1pvbmUsIE9uQ2hhbmdlcywgT25EZXN0cm95LCBPcHRpb25hbCwgUmVuZGVyZXIyLCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TWF0QmFkZ2UsIE1hdEJhZGdlUG9zaXRpb259IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2JhZGdlJztcbmltcG9ydCB7QXBwQ29sb3JzfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQge0FyaWFEZXNjcmliZXJ9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7Qm9vbGVhbklucHV0fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zJztcblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBNYXRCYWRnZUZpbGwgPSAnY2xlYXInIHwgJ3NvbGlkJztcblxuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW2FwcEJhZGdlXSwgW2FwcEJhZGdlSWNvbl0sIFthcHBCYWRnZU1hdEljb25dJyxcbiAgaW5wdXRzOiBbXG4gICAgJ2NvbnRlbnQ6IGFwcEJhZGdlJyxcbiAgICAnZGlzYWJsZWQ6IGFwcEJhZGdlRGlzYWJsZWQnLFxuICAgICdjb2xvcjogYXBwQmFkZ2VDb2xvcicsXG4gICAgJ3NpemU6IGFwcEJhZGdlU2l6ZScsXG4gICAgJ2ZpbGw6IGFwcEJhZGdlRmlsbCcsXG4gICAgJ2hpZGRlbjogYXBwQmFkZ2VIaWRkZW4nLFxuICAgICdvdmVybGFwOiBhcHBCYWRnZU92ZXJsYXAnLFxuICAgICdwb3NpdGlvbjogYXBwQmFkZ2VQb3NpdGlvbidcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCYWRnZURpcmVjdGl2ZSBleHRlbmRzIE1hdEJhZGdlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3kge1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlJykgdHJ1ZTtcbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2Utb3ZlcmxhcCcpIGdldCBpc092ZXJsYXBIb3N0KCkgeyByZXR1cm4gdGhpcy5vdmVybGFwOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLWFib3ZlJykgZ2V0IGlzQWJvdmVIb3N0KCkgeyByZXR1cm4gdGhpcy5pc0Fib3ZlKCk7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtYmVsb3cnKSBnZXQgaXNCZWxvd0hvc3QoKSB7IHJldHVybiAhdGhpcy5pc0Fib3ZlKCk7IH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5tYXQtYmFkZ2UtYmVmb3JlJykgZ2V0IGlzQmVmb3JlSG9zdCgpIHsgcmV0dXJuICF0aGlzLmlzQWZ0ZXIoKTsgfVxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLm1hdC1iYWRnZS1hZnRlcicpIGdldCBpc0FmdGVySG9zdCgpIHsgcmV0dXJuIHRoaXMuaXNBZnRlcigpOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLXNtYWxsJykgZ2V0IGlzU21hbGxIb3N0KCkgeyByZXR1cm4gdGhpcy5zaXplID09PSAnc21hbGwnOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLW1lZGl1bScpIGdldCBpc01lZGl1bUhvc3QoKSB7IHJldHVybiB0aGlzLnNpemUgPT09ICdtZWRpdW0nOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLWxhcmdlJykgZ2V0IGlzTGFyZ2VIb3N0KCkgeyByZXR1cm4gdGhpcy5zaXplID09PSAnbGFyZ2UnOyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLWhpZGRlbicpIGdldCBpc0hpZGRlbkhvc3QoKSB7IHJldHVybiB0aGlzLmhpZGRlbiB8fCAhdGhpcy5jb250ZW50OyB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MubWF0LWJhZGdlLWRpc2FibGVkJykgZ2V0IGlzRGlzYWJsZWRIb3N0KCkgeyByZXR1cm4gdGhpcy5kaXNhYmxlZDsgfVxuXG4gIEBJbnB1dCgpIGFwcEJhZGdlQ29sb3I6IEFwcENvbG9ycztcbiAgQElucHV0KCkgYXBwQmFkZ2VGaWxsOiBNYXRCYWRnZUZpbGw7XG4gIEBJbnB1dCgpIGFwcEJhZGdlTWF0SWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSBhcHBCYWRnZUljb246IHN0cmluZztcbiAgQElucHV0KCkgYXBwQmFkZ2VIaWRkZW46IEJvb2xlYW5JbnB1dDtcbiAgQElucHV0KCkgYXBwQmFkZ2VPdmVybGFwOiBCb29sZWFuSW5wdXQ7XG4gIEBJbnB1dCgpIGFwcEJhZGdlUG9zaXRpb246IE1hdEJhZGdlUG9zaXRpb247XG5cbiAgcHJpdmF0ZSBfaHRtbDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKF9uZ1pvbmU6IE5nWm9uZSxcbiAgICAgICAgICAgICAgcHJvdGVjdGVkIGVsOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PixcbiAgICAgICAgICAgICAgX2FyaWFEZXNjcmliZXI6IEFyaWFEZXNjcmliZXIsXG4gICAgICAgICAgICAgIF9yZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFOSU1BVElPTl9NT0RVTEVfVFlQRSkgX2FuaW1hdGlvbk1vZGU/OiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgKSB7XG4gICAgc3VwZXIoX25nWm9uZSwgZWwsIF9hcmlhRGVzY3JpYmVyLCBfcmVuZGVyZXIsIF9hbmltYXRpb25Nb2RlKTtcbiAgICB0aGlzLmNvbnRlbnQgPSAweDAwQTA7IC8vIFdpbGwgYmUgaW52aXNpYmxlXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMudXBkYXRlVmlldygpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmFwcEJhZGdlQ29sb3IgfHwgY2hhbmdlcy5hcHBCYWRnZUZpbGwgfHwgY2hhbmdlcy5hcHBCYWRnZU1hdEljb24gfHwgY2hhbmdlcy5hcHBCYWRnZUljb24gfHwgY2hhbmdlcy5hcHBCYWRnZUhpZGRlbiB8fCBjaGFuZ2VzLmFwcEJhZGdlT3ZlcmxhcCB8fCBjaGFuZ2VzLmFwcEJhZGdlUG9zaXRpb24pIHtcbiAgICAgIHRoaXMudXBkYXRlVmlldygpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVZpZXcoKSB7XG4gICAgY29uc3QgYmFkZ2UgPSB0aGlzLmdldEJhZGdlRWxlbWVudCgpO1xuICAgIGlmICghYmFkZ2UpIHJldHVybjtcblxuICAgIC8vIEZpeCBjb2xvclxuICAgIGlmICghdGhpcy5hcHBCYWRnZUNvbG9yKSB0aGlzLmFwcEJhZGdlQ29sb3IgPSAncHJpbWFyeSc7XG4gICAgaWYgKHRoaXMuYXBwQmFkZ2VDb2xvciA9PT0gJ3dhcm4nKSB0aGlzLmFwcEJhZGdlQ29sb3IgPSAnd2FybmluZyc7XG5cbiAgICBsZXQgc2l6ZTogbnVtYmVyO1xuICAgIHN3aXRjaCAodGhpcy5zaXplKSB7XG4gICAgICBjYXNlICdsYXJnZSc6XG4gICAgICAgIHNpemUgPSAyNDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICBzaXplID0gMjI7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc21hbGwnOlxuICAgICAgICBzaXplID0gMTY7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBsZXQgaGlkZGVuID0gdGhpcy5hcHBCYWRnZUhpZGRlbjtcbiAgICBsZXQgaHRtbCA9ICcnO1xuICAgIGlmICh0aGlzLmFwcEJhZGdlTWF0SWNvbikge1xuICAgICAgaHRtbCA9IGA8aSBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCIgc3R5bGU9XCJmb250LXNpemU6ICR7c2l6ZX1weDtcIj4ke3RoaXMuYXBwQmFkZ2VNYXRJY29ufTwvaT5gO1xuICAgIH1cbiAgICBlbHNlIGlmICh0aGlzLmFwcEJhZGdlSWNvbikge1xuICAgICAgaHRtbCA9IGA8aW9uLWljb24gc3R5bGU9XCJmb250LXNpemU6ICR7c2l6ZX1weDsgcG9pbnRlci1ldmVudHM6IG5vbmU7XCIgbmFtZT1cIiR7dGhpcy5hcHBCYWRnZUljb259XCI+PC9pb24taWNvbj5gO1xuICAgIH1cbiAgICBlbHNlIGlmIChpc05vdE5pbE9yQmxhbmsodGhpcy5jb250ZW50KSkge1xuICAgICAgaHRtbCA9ICcnICsgdGhpcy5jb250ZW50O1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGhpZGRlbiA9IHRydWU7XG4gICAgfVxuICAgIGlmICghaGlkZGVuICYmIHRoaXMuX2h0bWwgIT09IGh0bWwpIHtcbiAgICAgIHRoaXMuX2h0bWwgPSBodG1sO1xuICAgICAgYmFkZ2UuaW5uZXJIVE1MID0gaHRtbDtcbiAgICB9XG5cbiAgICAvLyBVcGRhdGUgc3R5bGVcbiAgICAvLyBmaWxsOiAnY2xlYXInXG4gICAgaWYgKHRoaXMuYXBwQmFkZ2VGaWxsID09PSAnY2xlYXInKSB7XG4gICAgICBiYWRnZS5zdHlsZS5jb2xvciA9IGB2YXIoLS1pb24tY29sb3ItJHt0aGlzLmFwcEJhZGdlQ29sb3J9KWA7XG4gICAgICBiYWRnZS5zdHlsZS5iYWNrZ3JvdW5kID0gJ3RyYW5zcGFyZW50JztcbiAgICB9XG4gICAgLy8gZmlsbDogJ3NvbGlkJyAoZGVmYXVsdCB2YWx1ZSlcbiAgICBlbHNlIHtcbiAgICAgIGJhZGdlLnN0eWxlLmJhY2tncm91bmQgPSBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5hcHBCYWRnZUNvbG9yfSlgO1xuICAgICAgYmFkZ2Uuc3R5bGUuY29sb3IgPSBgdmFyKC0taW9uLWNvbG9yLSR7dGhpcy5hcHBCYWRnZUNvbG9yfS1jb250cmFzdClgO1xuICAgIH1cblxuICAgIGlmIChoaWRkZW4pIGJhZGdlLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgZWxzZSB7XG4gICAgICBpZiAoYmFkZ2Uuc3R5bGUuZGlzcGxheSAhPT0gJ2lubGluZS1ibG9jaycpIGJhZGdlLnN0eWxlLmRpc3BsYXkgPSAnaW5saW5lLWJsb2NrJztcbiAgICAgIGlmIChiYWRnZS5zdHlsZS5wb3NpdGlvbiAhPT0gJ2Fic29sdXRlJykgYmFkZ2Uuc3R5bGUucG9zaXRpb24gPSAnYWJzb2x1dGUnO1xuXG5cblxuXG4gICAgICAvKlxuICAgICAgLy8gV09BUktST1VORCB0byBmb3JjZSBwb3NpdGlvbiBvZiB0aGUgYmFkZ2UsIHdoZW4gaW5zaWRlIGEgPG1hdC1idXR0b24+IChlLmcuIG9uIGEgPG1hdC1sYWJlbD4pXG4gICAgICBjb25zdCBvdmVybGFwID0gdGhpcy5vdmVybGFwO1xuXG4gICAgICAvLyBSaWdodC9sZWZ0IHBvc2l0aW9uXG4gICAgICBpZiAodGhpcy5pc0FmdGVyKCkgKSB7XG4gICAgICAgIGNvbnN0IHBhcmVudFdpZHRoID0gYmFkZ2UucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aDtcbiAgICAgICAgaWYgKHBhcmVudFdpZHRoID4gMCkge1xuICAgICAgICAgIGNvbnN0IGxlZnQgPSBgJHtwYXJlbnRXaWR0aCAtIChvdmVybGFwID8gc2l6ZSAvIDIgOiAwKX1weGA7XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLmxlZnQgIT09IGxlZnQpIGJhZGdlLnN0eWxlLmxlZnQgPSBsZWZ0O1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS5yaWdodCAhPT0gJycpIGJhZGdlLnN0eWxlLnJpZ2h0ID0gJyc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29uc3QgcmlnaHQgPSBgJHstMSAqIChvdmVybGFwID8gc2l6ZSAvIDIgOiBzaXplKX1weGA7XG4gICAgICAgICAgaWYgKGJhZGdlLnN0eWxlLnJpZ2h0ICE9PSByaWdodCkgYmFkZ2Uuc3R5bGUucmlnaHQgPSByaWdodDtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUubGVmdCAhPT0gJycpIGJhZGdlLnN0eWxlLmxlZnQgPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBUb3AvYm90dG9tIHBvc2l0aW9uXG4gICAgICBpZiAodGhpcy5pc0Fib3ZlKCkpIHtcbiAgICAgICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gYmFkZ2UucGFyZW50RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XG4gICAgICAgIGlmIChwYXJlbnRIZWlnaHQgPiAwKSB7XG4gICAgICAgICAgY29uc3QgYm90dG9tID0gYCR7cGFyZW50SGVpZ2h0IC0gKG92ZXJsYXAgPyAoc2l6ZSAvIDIpIDogc2l6ZSl9cHhgO1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS5ib3R0b20gIT09IGJvdHRvbSkgYmFkZ2Uuc3R5bGUuYm90dG9tID0gYm90dG9tO1xuICAgICAgICAgIGlmIChiYWRnZS5zdHlsZS50b3AgIT09ICcnKSBiYWRnZS5zdHlsZS50b3AgPSAnJztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0b3AgPSBgJHstMSAqIChvdmVybGFwID8gKHNpemUgLyAyKSA6IHNpemUpfXB4YDtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUudG9wICE9PSB0b3ApIGJhZGdlLnN0eWxlLnRvcCA9IHRvcDtcbiAgICAgICAgICBpZiAoYmFkZ2Uuc3R5bGUuYm90dG9tICE9PSAnJykgYmFkZ2Uuc3R5bGUuYm90dG9tID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0qL1xuICAgIH1cbiAgfVxufVxuIl19
|
|
@@ -6,19 +6,17 @@ import { IonicModule } from '@ionic/angular';
|
|
|
6
6
|
import { SharedPipesModule } from '../../pipes/pipes.module';
|
|
7
7
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
8
8
|
import { NgxMaterialTimepickerModule } from 'ngx-material-timepicker';
|
|
9
|
-
import { MatBooleanField } from './material.boolean';
|
|
10
9
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
11
10
|
import { MatInputModule } from '@angular/material/input';
|
|
12
11
|
import { MatRadioModule } from '@angular/material/radio';
|
|
13
12
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
14
13
|
import { SharedDirectivesModule } from '../../directives/directives.module';
|
|
15
|
-
import {
|
|
14
|
+
import { MatBooleanField } from './material-boolean';
|
|
16
15
|
import * as i0 from "@angular/core";
|
|
17
16
|
import * as i1 from "@ngx-translate/core";
|
|
18
17
|
export class SharedMatBooleanModule {
|
|
19
18
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SharedMatBooleanModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
20
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: SharedMatBooleanModule, declarations: [MatBooleanField,
|
|
21
|
-
MatBooleanField2], imports: [CommonModule,
|
|
19
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.1.1", ngImport: i0, type: SharedMatBooleanModule, declarations: [MatBooleanField], imports: [CommonModule,
|
|
22
20
|
IonicModule,
|
|
23
21
|
ReactiveFormsModule,
|
|
24
22
|
SharedPipesModule,
|
|
@@ -27,8 +25,7 @@ export class SharedMatBooleanModule {
|
|
|
27
25
|
MatInputModule,
|
|
28
26
|
MatRadioModule,
|
|
29
27
|
MatCheckboxModule,
|
|
30
|
-
NgxMaterialTimepickerModule, i1.TranslateModule, SharedDirectivesModule], exports: [MatBooleanField
|
|
31
|
-
MatBooleanField2] });
|
|
28
|
+
NgxMaterialTimepickerModule, i1.TranslateModule, SharedDirectivesModule], exports: [MatBooleanField] });
|
|
32
29
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: SharedMatBooleanModule, imports: [CommonModule,
|
|
33
30
|
IonicModule,
|
|
34
31
|
ReactiveFormsModule,
|
|
@@ -60,13 +57,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImpor
|
|
|
60
57
|
SharedDirectivesModule
|
|
61
58
|
],
|
|
62
59
|
exports: [
|
|
63
|
-
MatBooleanField
|
|
64
|
-
MatBooleanField2
|
|
60
|
+
MatBooleanField
|
|
65
61
|
],
|
|
66
62
|
declarations: [
|
|
67
|
-
MatBooleanField
|
|
68
|
-
MatBooleanField2
|
|
63
|
+
MatBooleanField
|
|
69
64
|
]
|
|
70
65
|
}]
|
|
71
66
|
}] });
|
|
72
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYm9vbGVhbi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC9tYXRlcmlhbC9ib29sZWFuL2Jvb2xlYW4ubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBQywyQkFBMkIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3BFLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2hFLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUN2RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdkQsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFDLHNCQUFzQixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9CQUFvQixDQUFDOzs7QUF3Qm5ELE1BQU0sT0FBTyxzQkFBc0I7dUdBQXRCLHNCQUFzQjt3R0FBdEIsc0JBQXNCLGlCQUgvQixlQUFlLGFBakJYLFlBQVk7WUFDWixXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGlCQUFpQjtZQUNqQixlQUFlO1lBQ2Ysa0JBQWtCO1lBQ2xCLGNBQWM7WUFDZCxjQUFjO1lBQ2QsaUJBQWlCO1lBQ2pCLDJCQUEyQixzQkFFM0Isc0JBQXNCLGFBRzFCLGVBQWU7d0dBTU4sc0JBQXNCLFlBcEIzQixZQUFZO1lBQ1osV0FBVztZQUNYLG1CQUFtQjtZQUNuQixpQkFBaUI7WUFDakIsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQixjQUFjO1lBQ2QsY0FBYztZQUNkLGlCQUFpQjtZQUNqQiwyQkFBMkI7WUFDM0IsZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixzQkFBc0I7OzJGQVNqQixzQkFBc0I7a0JBdEJsQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixpQkFBaUI7d0JBQ2pCLGVBQWU7d0JBQ2Ysa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsaUJBQWlCO3dCQUNqQiwyQkFBMkI7d0JBQzNCLGVBQWUsQ0FBQyxRQUFRLEVBQUU7d0JBQzFCLHNCQUFzQjtxQkFDekI7b0JBQ0gsT0FBTyxFQUFFO3dCQUNQLGVBQWU7cUJBQ2hCO29CQUNELFlBQVksRUFBRTt3QkFDWixlQUFlO3FCQUNoQjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7TmdNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtNYXRDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NvcmUnO1xuaW1wb3J0IHtUcmFuc2xhdGVNb2R1bGV9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0lvbmljTW9kdWxlfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQge1NoYXJlZFBpcGVzTW9kdWxlfSBmcm9tICcuLi8uLi9waXBlcy9waXBlcy5tb2R1bGUnO1xuaW1wb3J0IHtSZWFjdGl2ZUZvcm1zTW9kdWxlfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge05neE1hdGVyaWFsVGltZXBpY2tlck1vZHVsZX0gZnJvbSAnbmd4LW1hdGVyaWFsLXRpbWVwaWNrZXInO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRNb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtNYXRJbnB1dE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaW5wdXQnO1xuaW1wb3J0IHtNYXRSYWRpb01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHtNYXRDaGVja2JveE1vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuaW1wb3J0IHtTaGFyZWREaXJlY3RpdmVzTW9kdWxlfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RpcmVjdGl2ZXMubW9kdWxlJztcbmltcG9ydCB7TWF0Qm9vbGVhbkZpZWxkfSBmcm9tICcuL21hdGVyaWFsLWJvb2xlYW4nO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBJb25pY01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgU2hhcmVkUGlwZXNNb2R1bGUsXG4gICAgICAgIE1hdENvbW1vbk1vZHVsZSxcbiAgICAgICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxuICAgICAgICBNYXRJbnB1dE1vZHVsZSxcbiAgICAgICAgTWF0UmFkaW9Nb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlLFxuICAgICAgICBOZ3hNYXRlcmlhbFRpbWVwaWNrZXJNb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZS5mb3JDaGlsZCgpLFxuICAgICAgICBTaGFyZWREaXJlY3RpdmVzTW9kdWxlXG4gICAgXSxcbiAgZXhwb3J0czogW1xuICAgIE1hdEJvb2xlYW5GaWVsZFxuICBdLFxuICBkZWNsYXJhdGlvbnM6IFtcbiAgICBNYXRCb29sZWFuRmllbGRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBTaGFyZWRNYXRCb29sZWFuTW9kdWxlIHtcbn1cblxuIl19
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, EventEmitter, forwardRef, Input, Optional, Output, ViewChild, } from '@angular/core';
|
|
2
|
+
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
|
3
|
+
import { isNil, isNotNil, toNumber } from '../../functions';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/forms";
|
|
6
|
+
import * as i2 from "@angular/common";
|
|
7
|
+
import * as i3 from "@ionic/angular";
|
|
8
|
+
import * as i4 from "@angular/material/form-field";
|
|
9
|
+
import * as i5 from "@angular/material/input";
|
|
10
|
+
import * as i6 from "@angular/material/radio";
|
|
11
|
+
import * as i7 from "@angular/material/checkbox";
|
|
12
|
+
import * as i8 from "@ngx-translate/core";
|
|
13
|
+
import * as i9 from "../../pipes/types.pipes";
|
|
14
|
+
const DEFAULT_VALUE_ACCESSOR = {
|
|
15
|
+
provide: NG_VALUE_ACCESSOR,
|
|
16
|
+
useExisting: forwardRef(() => MatBooleanField),
|
|
17
|
+
multi: true,
|
|
18
|
+
};
|
|
19
|
+
const noop = () => { };
|
|
20
|
+
export class MatBooleanField {
|
|
21
|
+
cd;
|
|
22
|
+
formGroupDir;
|
|
23
|
+
yesButton;
|
|
24
|
+
noButton;
|
|
25
|
+
checkboxButton;
|
|
26
|
+
fakeInput;
|
|
27
|
+
disabled = false;
|
|
28
|
+
formControl;
|
|
29
|
+
formControlName;
|
|
30
|
+
placeholder;
|
|
31
|
+
floatLabel = 'auto';
|
|
32
|
+
appearance;
|
|
33
|
+
readonly = false;
|
|
34
|
+
required = false;
|
|
35
|
+
compact = false;
|
|
36
|
+
style;
|
|
37
|
+
buttonsColCount;
|
|
38
|
+
// eslint-disable-next-line @angular-eslint/no-input-rename
|
|
39
|
+
classList;
|
|
40
|
+
yesLabel = 'COMMON.YES';
|
|
41
|
+
noLabel = 'COMMON.NO';
|
|
42
|
+
showButtonIcons = true;
|
|
43
|
+
yesIcon = 'checkmark';
|
|
44
|
+
noIcon = 'close';
|
|
45
|
+
// eslint-disable-next-line @angular-eslint/no-output-on-prefix,@angular-eslint/no-output-rename
|
|
46
|
+
onPressEnter = new EventEmitter();
|
|
47
|
+
// eslint-disable-next-line @angular-eslint/no-output-on-prefix
|
|
48
|
+
onBlur = new EventEmitter();
|
|
49
|
+
showRadio = false;
|
|
50
|
+
_value;
|
|
51
|
+
_tabindex;
|
|
52
|
+
_onChangeCallback = noop;
|
|
53
|
+
_onTouchedCallback = noop;
|
|
54
|
+
_writing = false;
|
|
55
|
+
constructor(cd, formGroupDir) {
|
|
56
|
+
this.cd = cd;
|
|
57
|
+
this.formGroupDir = formGroupDir;
|
|
58
|
+
}
|
|
59
|
+
get tabindex() {
|
|
60
|
+
return this._tabindex;
|
|
61
|
+
}
|
|
62
|
+
set tabindex(value) {
|
|
63
|
+
if (this._tabindex !== value) {
|
|
64
|
+
this._tabindex = value;
|
|
65
|
+
setTimeout(() => this.updateTabIndex());
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
get value() {
|
|
69
|
+
return this._value;
|
|
70
|
+
}
|
|
71
|
+
set value(v) {
|
|
72
|
+
if (v !== this._value) {
|
|
73
|
+
this._value = v;
|
|
74
|
+
this._onChangeCallback(v);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
ngOnInit() {
|
|
78
|
+
this.formControl =
|
|
79
|
+
this.formControl || (this.formControlName && this.formGroupDir && this.formGroupDir.form.get(this.formControlName));
|
|
80
|
+
if (!this.formControl)
|
|
81
|
+
throw new Error('Missing mandatory attribute \'formControl\' or \'formControlName\' in <mat-boolean-field>.');
|
|
82
|
+
this.style = this.style || (this.compact ? 'checkbox' : 'radio');
|
|
83
|
+
if (this.style === 'button') {
|
|
84
|
+
this.buttonsColCount = toNumber(this.buttonsColCount, 2);
|
|
85
|
+
}
|
|
86
|
+
// Force show radio if label always on top
|
|
87
|
+
this.showRadio = this.showRadio || this.floatLabel === 'always' || this.style === 'checkbox';
|
|
88
|
+
this.updateTabIndex();
|
|
89
|
+
}
|
|
90
|
+
writeValue(value, event) {
|
|
91
|
+
if (this._writing)
|
|
92
|
+
return;
|
|
93
|
+
this._writing = true;
|
|
94
|
+
if (value !== this._value) {
|
|
95
|
+
this._value = value;
|
|
96
|
+
this.showRadio = this.floatLabel === 'always' || this.style === 'checkbox' || isNotNil(this._value);
|
|
97
|
+
if (isNotNil(this.tabindex)) {
|
|
98
|
+
setTimeout(() => this.updateTabIndex());
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
this._writing = false;
|
|
102
|
+
if (this.style === 'button') {
|
|
103
|
+
if (value !== this.formControl.value) {
|
|
104
|
+
this.formControl.patchValue(value, { emitEvent: false });
|
|
105
|
+
this._onChangeCallback(value);
|
|
106
|
+
}
|
|
107
|
+
if (event)
|
|
108
|
+
this.onPressEnter.emit(event);
|
|
109
|
+
}
|
|
110
|
+
this.markForCheck();
|
|
111
|
+
}
|
|
112
|
+
registerOnChange(fn) {
|
|
113
|
+
this._onChangeCallback = fn;
|
|
114
|
+
}
|
|
115
|
+
registerOnTouched(fn) {
|
|
116
|
+
this._onTouchedCallback = fn;
|
|
117
|
+
}
|
|
118
|
+
setDisabledState(isDisabled) {
|
|
119
|
+
this.disabled = isDisabled;
|
|
120
|
+
}
|
|
121
|
+
onFocusFakeInput(event) {
|
|
122
|
+
event.preventDefault();
|
|
123
|
+
// Hide the fake input
|
|
124
|
+
if (this.fakeInput) {
|
|
125
|
+
this.fakeInput.nativeElement.classList.add('hidden');
|
|
126
|
+
this.fakeInput.nativeElement.tabIndex = -1;
|
|
127
|
+
}
|
|
128
|
+
// Focus on first button
|
|
129
|
+
this.focus();
|
|
130
|
+
}
|
|
131
|
+
focus() {
|
|
132
|
+
this.showRadio = true;
|
|
133
|
+
setTimeout(() => {
|
|
134
|
+
if (this.yesButton) {
|
|
135
|
+
this.yesButton.focus();
|
|
136
|
+
}
|
|
137
|
+
else if (this.checkboxButton) {
|
|
138
|
+
this.checkboxButton.focus();
|
|
139
|
+
}
|
|
140
|
+
this.updateTabIndex();
|
|
141
|
+
});
|
|
142
|
+
this.markForCheck();
|
|
143
|
+
}
|
|
144
|
+
onRadioValueChanged(event) {
|
|
145
|
+
if (this._writing)
|
|
146
|
+
return; // Skip if call by self
|
|
147
|
+
this._writing = true;
|
|
148
|
+
this._value = event.value;
|
|
149
|
+
this.checkIfTouched();
|
|
150
|
+
this._onChangeCallback(event.value);
|
|
151
|
+
this._writing = false;
|
|
152
|
+
}
|
|
153
|
+
onCheckboxValueChanged(event) {
|
|
154
|
+
if (this._writing)
|
|
155
|
+
return; // Skip if call by self
|
|
156
|
+
this._writing = true;
|
|
157
|
+
this._value = event.checked;
|
|
158
|
+
this.checkIfTouched();
|
|
159
|
+
this._onChangeCallback(event.checked);
|
|
160
|
+
this._writing = false;
|
|
161
|
+
}
|
|
162
|
+
/* -- private method -- */
|
|
163
|
+
checkIfTouched() {
|
|
164
|
+
if (this.formControl.touched) {
|
|
165
|
+
this.markForCheck();
|
|
166
|
+
this._onTouchedCallback();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* This is a special case, because, this component has a temporary component displayed before the first focus event
|
|
171
|
+
*/
|
|
172
|
+
updateTabIndex() {
|
|
173
|
+
if (isNil(this._tabindex) || this._tabindex === -1)
|
|
174
|
+
return;
|
|
175
|
+
if (this.fakeInput) {
|
|
176
|
+
if (this.showRadio) {
|
|
177
|
+
this.fakeInput.nativeElement.classList.add('hidden');
|
|
178
|
+
this.fakeInput.nativeElement.tabIndex = -1;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
this.fakeInput.nativeElement.classList.remove('hidden');
|
|
182
|
+
this.fakeInput.nativeElement.tabIndex = this._tabindex;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (this.yesButton) {
|
|
186
|
+
this.yesButton._inputElement.nativeElement.tabIndex = this.showRadio ? this._tabindex : -1;
|
|
187
|
+
this.noButton._inputElement.nativeElement.tabIndex = this.showRadio ? this._tabindex + 1 : -1;
|
|
188
|
+
}
|
|
189
|
+
else if (this.checkboxButton) {
|
|
190
|
+
this.checkboxButton._inputElement.nativeElement.tabIndex = this.showRadio ? this._tabindex : -1;
|
|
191
|
+
}
|
|
192
|
+
this.markForCheck();
|
|
193
|
+
}
|
|
194
|
+
markForCheck() {
|
|
195
|
+
this.cd.markForCheck();
|
|
196
|
+
}
|
|
197
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: MatBooleanField, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.FormGroupDirective, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
198
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.1.1", type: MatBooleanField, selector: "mat-boolean-field", inputs: { disabled: "disabled", formControl: "formControl", formControlName: "formControlName", placeholder: "placeholder", floatLabel: "floatLabel", appearance: "appearance", readonly: "readonly", required: "required", compact: "compact", style: "style", buttonsColCount: "buttonsColCount", classList: ["class", "classList"], yesLabel: "yesLabel", noLabel: "noLabel", showButtonIcons: "showButtonIcons", yesIcon: "yesIcon", noIcon: "noIcon", tabindex: "tabindex", value: "value" }, outputs: { onPressEnter: "keyup.enter", onBlur: "onBlur" }, providers: [DEFAULT_VALUE_ACCESSOR], viewQueries: [{ propertyName: "yesButton", first: true, predicate: ["yesButton"], descendants: true }, { propertyName: "noButton", first: true, predicate: ["noButton"], descendants: true }, { propertyName: "checkboxButton", first: true, predicate: ["checkboxButton"], descendants: true }, { propertyName: "fakeInput", first: true, predicate: ["fakeInput"], descendants: true }], ngImport: i0, template: "<mat-form-field\n *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n <!-- Radio -->\n <mat-form-field\n *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field\n *ngSwitchCase=\"'checkbox'\"\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field\n *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n />\n <div\n class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\"\n >\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n </ng-container>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i2.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i3.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i3.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i3.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i3.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { 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.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i4.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i4.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i4.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i4.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "directive", type: i5.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: i6.MatRadioGroup, selector: "mat-radio-group", inputs: ["color", "name", "labelPosition", "value", "selected", "disabled", "required"], outputs: ["change"], exportAs: ["matRadioGroup"] }, { kind: "component", type: i6.MatRadioButton, selector: "mat-radio-button", inputs: ["disableRipple", "tabIndex", "id", "name", "aria-label", "aria-labelledby", "aria-describedby", "checked", "value", "labelPosition", "disabled", "required", "color"], outputs: ["change"], exportAs: ["matRadioButton"] }, { kind: "component", type: i7.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "directive", type: i8.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "pipe", type: i9.AsFloatLabelTypePipe, name: "asFloatLabelType" }, { kind: "pipe", type: i8.TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
199
|
+
}
|
|
200
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.1.1", ngImport: i0, type: MatBooleanField, decorators: [{
|
|
201
|
+
type: Component,
|
|
202
|
+
args: [{ selector: 'mat-boolean-field', providers: [DEFAULT_VALUE_ACCESSOR], changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-form-field\n *ngIf=\"readonly; else writable\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n class=\"mat-form-field-disabled {{ classList }}\"\n>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input matInput hidden type=\"text\" readonly [placeholder]=\"placeholder\" [formControl]=\"formControl\" />\n <ion-text>{{ (value === null ? 'COMMON.EMPTY_OPTION' : value === true ? yesLabel : noLabel) | translate }}</ion-text>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n</mat-form-field>\n\n<ng-template #writable>\n <ng-container [ngSwitch]=\"style\">\n <!-- Radio -->\n <mat-form-field\n *ngSwitchCase=\"'radio'\"\n [floatLabel]=\"showRadio && (!floatLabel || floatLabel === 'auto') ? 'always' : (floatLabel | asFloatLabelType)\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-radio {{ classList }}\"\n >\n <mat-label *ngIf=\"placeholder && floatLabel !== 'never'\">\n {{ placeholder }}\n <span [hidden]=\"showRadio\">({{ yesLabel | translate }}/{{ noLabel | translate }})</span>\n </mat-label>\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #fakeInput\n type=\"text\"\n readonly=\"true\"\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- radio button -->\n <mat-radio-group [hidden]=\"!showRadio\" [formControl]=\"formControl\" (change)=\"onRadioValueChanged($event)\">\n <mat-radio-button #yesButton [value]=\"true\">\n <span>{{ yesLabel | translate }}</span>\n </mat-radio-button>\n \n <mat-radio-button #noButton [value]=\"false\">\n <span>{{ noLabel | translate }}</span>\n </mat-radio-button>\n </mat-radio-group>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Checkbox -->\n <mat-form-field\n *ngSwitchCase=\"'checkbox'\"\n floatLabel=\"always\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-checkbox {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n #matInput\n [formControl]=\"formControl\"\n (focus)=\"onFocusFakeInput($event)\"\n [required]=\"required\"\n [class.cdk-visually-hidden]=\"showRadio\"\n [tabindex]=\"tabindex\"\n />\n\n <!-- checkbox, when compact -->\n <mat-checkbox\n #checkboxButton\n [formControl]=\"formControl\"\n (change)=\"onCheckboxValueChanged($event)\"\n [indeterminate]=\"value === null || value === undefined\"\n [hidden]=\"!showRadio\"\n [tabindex]=\"tabindex\"\n ></mat-checkbox>\n\n <mat-label *ngIf=\"placeholder; else noPlaceHolder\">\n {{ placeholder }}\n </mat-label>\n <ng-template #noPlaceHolder>\n <mat-label> </mat-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n\n <!-- Buttons -->\n <mat-form-field\n *ngSwitchCase=\"'button'\"\n [floatLabel]=\"floatLabel | asFloatLabelType\"\n [appearance]=\"appearance\"\n class=\"mat-boolean-field mat-boolean-field-button {{ classList }}\"\n >\n <div matPrefix>\n <ng-container *ngTemplateOutlet=\"matPrefixTemplate\"></ng-container>\n </div>\n <input\n matInput\n type=\"text\"\n hidden\n [formControl]=\"formControl\"\n [placeholder]=\"placeholder\"\n [required]=\"required\"\n />\n <div\n class=\"mat-form-field-buttons\"\n [style.--buttons-col-count]=\"buttonsColCount\"\n *ngIf=\"!formControl.disabled; else disabledLabel\"\n >\n <!-- yes -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex\"\n (click)=\"writeValue(true, $event)\"\n (keyup.enter)=\"writeValue(true, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === true ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && yesIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ yesLabel | translate }}\n </ion-button>\n\n <!-- No button -->\n <ion-button\n class=\"mat-form-field-button\"\n [tabindex]=\"_tabindex !== undefined ? _tabindex + 1 : undefined\"\n (click)=\"writeValue(false, $event)\"\n (keyup.enter)=\"writeValue(false, $event)\"\n [color]=\"_value === null ? 'tertiary' : _value === false ? 'accent' : 'light'\"\n >\n <ion-icon *ngIf=\"showButtonIcons && noIcon; let icon\" slot=\"start\" [name]=\"icon\"></ion-icon>\n {{ noLabel | translate }}\n </ion-button>\n </div>\n <ng-template #disabledLabel>\n <ion-label><i translate>COMMON.EMPTY_OPTION</i></ion-label>\n </ng-template>\n\n <mat-error *ngIf=\"formControl.hasError('required')\" translate>ERROR.FIELD_REQUIRED</mat-error>\n <div matSuffix>\n <ng-container *ngTemplateOutlet=\"matSuffixTemplate\"></ng-container>\n </div>\n </mat-form-field>\n </ng-container>\n</ng-template>\n\n<ng-template #matPrefixTemplate>\n <ng-content select=\"[matPrefix]\"></ng-content>\n</ng-template>\n<ng-template #matSuffixTemplate>\n <ng-content select=\"[matSuffix]\"></ng-content>\n</ng-template>\n", styles: [":host{width:100%}.mat-mdc-form-field .mat-form-field-buttons{width:100%;display:flex;flex-flow:row wrap;justify-content:flex-start;align-items:center}.mat-mdc-form-field .mat-form-field-buttons .mat-form-field-button{--flex-basis: calc(100% / var(--buttons-col-count, 2));flex:0 1 var(--flex-basis);max-width:min(var(--flex-basis),150px);white-space:normal;padding:0 2px;height:40px}\n"] }]
|
|
203
|
+
}], ctorParameters: () => [{ type: i0.ChangeDetectorRef }, { type: i1.FormGroupDirective, decorators: [{
|
|
204
|
+
type: Optional
|
|
205
|
+
}] }], propDecorators: { yesButton: [{
|
|
206
|
+
type: ViewChild,
|
|
207
|
+
args: ['yesButton']
|
|
208
|
+
}], noButton: [{
|
|
209
|
+
type: ViewChild,
|
|
210
|
+
args: ['noButton']
|
|
211
|
+
}], checkboxButton: [{
|
|
212
|
+
type: ViewChild,
|
|
213
|
+
args: ['checkboxButton']
|
|
214
|
+
}], fakeInput: [{
|
|
215
|
+
type: ViewChild,
|
|
216
|
+
args: ['fakeInput']
|
|
217
|
+
}], disabled: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], formControl: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], formControlName: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], placeholder: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], floatLabel: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], appearance: [{
|
|
228
|
+
type: Input
|
|
229
|
+
}], readonly: [{
|
|
230
|
+
type: Input
|
|
231
|
+
}], required: [{
|
|
232
|
+
type: Input
|
|
233
|
+
}], compact: [{
|
|
234
|
+
type: Input
|
|
235
|
+
}], style: [{
|
|
236
|
+
type: Input
|
|
237
|
+
}], buttonsColCount: [{
|
|
238
|
+
type: Input
|
|
239
|
+
}], classList: [{
|
|
240
|
+
type: Input,
|
|
241
|
+
args: ['class']
|
|
242
|
+
}], yesLabel: [{
|
|
243
|
+
type: Input
|
|
244
|
+
}], noLabel: [{
|
|
245
|
+
type: Input
|
|
246
|
+
}], showButtonIcons: [{
|
|
247
|
+
type: Input
|
|
248
|
+
}], yesIcon: [{
|
|
249
|
+
type: Input
|
|
250
|
+
}], noIcon: [{
|
|
251
|
+
type: Input
|
|
252
|
+
}], onPressEnter: [{
|
|
253
|
+
type: Output,
|
|
254
|
+
args: ['keyup.enter']
|
|
255
|
+
}], onBlur: [{
|
|
256
|
+
type: Output
|
|
257
|
+
}], tabindex: [{
|
|
258
|
+
type: Input
|
|
259
|
+
}], value: [{
|
|
260
|
+
type: Input
|
|
261
|
+
}] } });
|
|
262
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0ZXJpYWwtYm9vbGVhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwtYm9vbGVhbi50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL21hdGVyaWFsL2Jvb2xlYW4vbWF0ZXJpYWwtYm9vbGVhbi5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFjLFlBQVksRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQVksU0FBUyxHQUFFLE1BQU0sZUFBZSxDQUFDO0FBRWpMLE9BQU8sRUFBMkMsaUJBQWlCLEVBQXFCLE1BQU0sZ0JBQWdCLENBQUM7QUFJL0csT0FBTyxFQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7Ozs7Ozs7Ozs7O0FBRzFELE1BQU0sc0JBQXNCLEdBQWE7SUFDdkMsT0FBTyxFQUFFLGlCQUFpQjtJQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxLQUFLLEVBQUUsSUFBSTtDQUNaLENBQUM7QUFFRixNQUFNLElBQUksR0FBRyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7QUFTdEIsTUFBTSxPQUFPLGVBQWU7SUF1Q2hCO0lBQ1k7SUF2Q0UsU0FBUyxDQUFpQjtJQUMzQixRQUFRLENBQWlCO0lBQ25CLGNBQWMsQ0FBYztJQUNqQyxTQUFTLENBQWE7SUFFckMsUUFBUSxHQUFHLEtBQUssQ0FBQztJQUNqQixXQUFXLENBQXFCO0lBQ2hDLGVBQWUsQ0FBUztJQUN4QixXQUFXLENBQVM7SUFDcEIsVUFBVSxHQUFzQixNQUFNLENBQUM7SUFDdkMsVUFBVSxDQUF5QjtJQUNuQyxRQUFRLEdBQUcsS0FBSyxDQUFDO0lBQ2pC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U0FBUzt1QkFBQyxVQUFVO2dCQUNRLGNBQWM7c0JBQTFDLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNILFNBQVM7c0JBQWhDLFNBQVM7dUJBQUMsV0FBVztnQkFFYixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVVLFNBQVM7c0JBQXhCLEtBQUs7dUJBQUMsT0FBTztnQkFDTCxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBR2lCLFlBQVk7c0JBQWxDLE1BQU07dUJBQUMsYUFBYTtnQkFFWCxNQUFNO3NCQUFmLE1BQU07Z0JBbUJNLFFBQVE7c0JBQXBCLEtBQUs7Z0JBWUYsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBmb3J3YXJkUmVmLCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCwgT3V0cHV0LCBQcm92aWRlciwgVmlld0NoaWxkLH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge01hdEZvcm1GaWVsZEFwcGVhcmFuY2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOR19WQUxVRV9BQ0NFU1NPUiwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge01hdFJhZGlvQnV0dG9uLCBNYXRSYWRpb0NoYW5nZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcmFkaW8nO1xuaW1wb3J0IHtNYXRDaGVja2JveCwgTWF0Q2hlY2tib3hDaGFuZ2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcbmltcG9ydCB7SW5wdXRFbGVtZW50fSBmcm9tICcuLi8uLi9pbnB1dHMnO1xuaW1wb3J0IHtpc05pbCwgaXNOb3ROaWwsIHRvTnVtYmVyfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMnO1xuaW1wb3J0IHtBcHBGbG9hdExhYmVsVHlwZX0gZnJvbSAnLi4vLi4vZm9ybS9maWVsZC5tb2RlbCc7XG5cbmNvbnN0IERFRkFVTFRfVkFMVUVfQUNDRVNTT1I6IFByb3ZpZGVyID0ge1xuICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gTWF0Qm9vbGVhbkZpZWxkKSxcbiAgbXVsdGk6IHRydWUsXG59O1xuXG5jb25zdCBub29wID0gKCkgPT4ge307XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21hdC1ib29sZWFuLWZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL21hdGVyaWFsLWJvb2xlYW4uaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL21hdGVyaWFsLWJvb2xlYW4uc2NzcyddLFxuICBwcm92aWRlcnM6IFtERUZBVUxUX1ZBTFVFX0FDQ0VTU09SXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIE1hdEJvb2xlYW5GaWVsZCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIElucHV0RWxlbWVudCB7XG4gIEBWaWV3Q2hpbGQoJ3llc0J1dHRvbicpIHllc0J1dHRvbjogTWF0UmFkaW9CdXR0b247XG4gIEBWaWV3Q2hpbGQoJ25vQnV0dG9uJykgbm9CdXR0b246IE1hdFJhZGlvQnV0dG9uO1xuICBAVmlld0NoaWxkKCdjaGVja2JveEJ1dHRvbicpIGNoZWNrYm94QnV0dG9uOiBNYXRDaGVja2JveDtcbiAgQFZpZXdDaGlsZCgnZmFrZUlucHV0JykgZmFrZUlucHV0OiBFbGVtZW50UmVmO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIEBJbnB1dCgpIGZvcm1Db250cm9sTmFtZTogc3RyaW5nO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nO1xuICBASW5wdXQoKSBmbG9hdExhYmVsOiBBcHBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcbiAgQElucHV0KCkgYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgQElucHV0KCkgcmVhZG9ubHkgPSBmYWxzZTtcbiAgQElucHV0KCkgcmVxdWlyZWQgPSBmYWxzZTtcbiAgQElucHV0KCkgY29tcGFjdCA9IGZhbHNlO1xuICBASW5wdXQoKSBzdHlsZTogJ3JhZGlvJyB8ICdjaGVja2JveCcgfCAnYnV0dG9uJztcbiAgQElucHV0KCkgYnV0dG9uc0NvbENvdW50OiBudW1iZXI7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gIEBJbnB1dCgnY2xhc3MnKSBjbGFzc0xpc3Q6IHN0cmluZztcbiAgQElucHV0KCkgeWVzTGFiZWwgPSAnQ09NTU9OLllFUyc7XG4gIEBJbnB1dCgpIG5vTGFiZWwgPSAnQ09NTU9OLk5PJztcbiAgQElucHV0KCkgc2hvd0J1dHRvbkljb25zID0gdHJ1ZTtcbiAgQElucHV0KCkgeWVzSWNvbiA9ICdjaGVja21hcmsnO1xuICBASW5wdXQoKSBub0ljb24gPSAnY2xvc2UnO1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeCxAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LXJlbmFtZVxuICBAT3V0cHV0KCdrZXl1cC5lbnRlcicpIG9uUHJlc3NFbnRlciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1vbi1wcmVmaXhcbiAgQE91dHB1dCgpIG9uQmx1ciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcblxuICBzaG93UmFkaW8gPSBmYWxzZTtcbiAgX3ZhbHVlOiBib29sZWFuO1xuICBfdGFiaW5kZXg6IG51bWJlcjtcblxuICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgcHJpdmF0ZSBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICBwcml2YXRlIF93cml0aW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBmb3JtR3JvdXBEaXI6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICApIHt9XG5cbiAgZ2V0IHRhYmluZGV4KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3RhYmluZGV4O1xuICB9XG5cbiAgQElucHV0KCkgc2V0IHRhYmluZGV4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5fdGFiaW5kZXggIT09IHZhbHVlKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IHZhbHVlO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnVwZGF0ZVRhYkluZGV4KCkpO1xuICAgIH1cbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZTtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodik7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5mb3JtQ29udHJvbCA9XG4gICAgICB0aGlzLmZvcm1Db250cm9sIHx8ICh0aGlzLmZvcm1Db250cm9sTmFtZSAmJiB0aGlzLmZvcm1Hcm91cERpciAmJiAodGhpcy5mb3JtR3JvdXBEaXIuZm9ybS5nZXQodGhpcy5mb3JtQ29udHJvbE5hbWUpIGFzIFVudHlwZWRGb3JtQ29udHJvbCkpO1xuICAgIGlmICghdGhpcy5mb3JtQ29udHJvbCkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIG1hbmRhdG9yeSBhdHRyaWJ1dGUgXFwnZm9ybUNvbnRyb2xcXCcgb3IgXFwnZm9ybUNvbnRyb2xOYW1lXFwnIGluIDxtYXQtYm9vbGVhbi1maWVsZD4uJyk7XG5cbiAgICB0aGlzLnN0eWxlID0gdGhpcy5zdHlsZSB8fCAodGhpcy5jb21wYWN0ID8gJ2NoZWNrYm94JyA6ICdyYWRpbycpO1xuXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XG4gICAgICB0aGlzLmJ1dHRvbnNDb2xDb3VudCA9IHRvTnVtYmVyKHRoaXMuYnV0dG9uc0NvbENvdW50LCAyKTtcbiAgICB9XG5cbiAgICAvLyBGb3JjZSBzaG93IHJhZGlvIGlmIGxhYmVsIGFsd2F5cyBvbiB0b3BcbiAgICB0aGlzLnNob3dSYWRpbyA9IHRoaXMuc2hvd1JhZGlvIHx8IHRoaXMuZmxvYXRMYWJlbCA9PT0gJ2Fsd2F5cycgfHwgdGhpcy5zdHlsZSA9PT0gJ2NoZWNrYm94JztcblxuICAgIHRoaXMudXBkYXRlVGFiSW5kZXgoKTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSwgZXZlbnQ/OiBFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47XG5cbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5zaG93UmFkaW8gPSB0aGlzLmZsb2F0TGFiZWwgPT09ICdhbHdheXMnIHx8IHRoaXMuc3R5bGUgPT09ICdjaGVja2JveCcgfHwgaXNOb3ROaWwodGhpcy5fdmFsdWUpO1xuICAgICAgaWYgKGlzTm90TmlsKHRoaXMudGFiaW5kZXgpKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy51cGRhdGVUYWJJbmRleCgpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5fd3JpdGluZyA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuc3R5bGUgPT09ICdidXR0b24nKSB7XG4gICAgICBpZiAodmFsdWUgIT09IHRoaXMuZm9ybUNvbnRyb2wudmFsdWUpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29udHJvbC5wYXRjaFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKGV2ZW50KSB0aGlzLm9uUHJlc3NFbnRlci5lbWl0KGV2ZW50KTtcbiAgICB9XG5cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxuXG4gIG9uRm9jdXNGYWtlSW5wdXQoZXZlbnQ6IEZvY3VzRXZlbnQpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgLy8gSGlkZSB0aGUgZmFrZSBpbnB1dFxuICAgIGlmICh0aGlzLmZha2VJbnB1dCkge1xuICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgIHRoaXMuZmFrZUlucHV0Lm5hdGl2ZUVsZW1lbnQudGFiSW5kZXggPSAtMTtcbiAgICB9XG5cbiAgICAvLyBGb2N1cyBvbiBmaXJzdCBidXR0b25cbiAgICB0aGlzLmZvY3VzKCk7XG4gIH1cblxuICBmb2N1cygpIHtcbiAgICB0aGlzLnNob3dSYWRpbyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy55ZXNCdXR0b24pIHtcbiAgICAgICAgdGhpcy55ZXNCdXR0b24uZm9jdXMoKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jaGVja2JveEJ1dHRvbikge1xuICAgICAgICB0aGlzLmNoZWNrYm94QnV0dG9uLmZvY3VzKCk7XG4gICAgICB9XG4gICAgICB0aGlzLnVwZGF0ZVRhYkluZGV4KCk7XG4gICAgfSk7XG4gICAgdGhpcy5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIG9uUmFkaW9WYWx1ZUNoYW5nZWQoZXZlbnQ6IE1hdFJhZGlvQ2hhbmdlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3dyaXRpbmcpIHJldHVybjsgLy8gU2tpcCBpZiBjYWxsIGJ5IHNlbGZcbiAgICB0aGlzLl93cml0aW5nID0gdHJ1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IGV2ZW50LnZhbHVlO1xuICAgIHRoaXMuY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGV2ZW50LnZhbHVlKTtcbiAgICB0aGlzLl93cml0aW5nID0gZmFsc2U7XG4gIH1cblxuICBvbkNoZWNrYm94VmFsdWVDaGFuZ2VkKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSk6IHZvaWQge1xuICAgIGlmICh0aGlzLl93cml0aW5nKSByZXR1cm47IC8vIFNraXAgaWYgY2FsbCBieSBzZWxmXG4gICAgdGhpcy5fd3JpdGluZyA9IHRydWU7XG4gICAgdGhpcy5fdmFsdWUgPSBldmVudC5jaGVja2VkO1xuICAgIHRoaXMuY2hlY2tJZlRvdWNoZWQoKTtcbiAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKGV2ZW50LmNoZWNrZWQpO1xuICAgIHRoaXMuX3dyaXRpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qIC0tIHByaXZhdGUgbWV0aG9kIC0tICovXG5cbiAgcHJpdmF0ZSBjaGVja0lmVG91Y2hlZCgpIHtcbiAgICBpZiAodGhpcy5mb3JtQ29udHJvbC50b3VjaGVkKSB7XG4gICAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSwgYmVjYXVzZSwgdGhpcyBjb21wb25lbnQgaGFzIGEgdGVtcG9yYXJ5IGNvbXBvbmVudCBkaXNwbGF5ZWQgYmVmb3JlIHRoZSBmaXJzdCBmb2N1cyBldmVudFxuICAgKi9cbiAgcHJpdmF0ZSB1cGRhdGVUYWJJbmRleCgpIHtcbiAgICBpZiAoaXNOaWwodGhpcy5fdGFiaW5kZXgpIHx8IHRoaXMuX3RhYmluZGV4ID09PSAtMSkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuZmFrZUlucHV0KSB7XG4gICAgICBpZiAodGhpcy5zaG93UmFkaW8pIHtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKCdoaWRkZW4nKTtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IC0xO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdoaWRkZW4nKTtcbiAgICAgICAgdGhpcy5mYWtlSW5wdXQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuX3RhYmluZGV4O1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodGhpcy55ZXNCdXR0b24pIHtcbiAgICAgIHRoaXMueWVzQnV0dG9uLl9pbnB1dEVsZW1lbnQubmF0aXZlRWxlbWVudC50YWJJbmRleCA9IHRoaXMuc2hvd1JhZGlvID8gdGhpcy5fdGFiaW5kZXggOiAtMTtcbiAgICAgIHRoaXMubm9CdXR0b24uX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5zaG93UmFkaW8gPyB0aGlzLl90YWJpbmRleCArIDEgOiAtMTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuY2hlY2tib3hCdXR0b24pIHtcbiAgICAgIHRoaXMuY2hlY2tib3hCdXR0b24uX2lucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LnRhYkluZGV4ID0gdGhpcy5zaG93UmFkaW8gPyB0aGlzLl90YWJpbmRleCA6IC0xO1xuICAgIH1cbiAgICB0aGlzLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBtYXJrRm9yQ2hlY2soKSB7XG4gICAgdGhpcy5jZC5tYXJrRm9yQ2hlY2soKTtcbiAgfVxufVxuIiwiPG1hdC1mb3JtLWZpZWxkXG4gICpuZ0lmPVwicmVhZG9ubHk7IGVsc2Ugd3JpdGFibGVcIlxuICBbZmxvYXRMYWJlbF09XCJmbG9hdExhYmVsIHwgYXNGbG9hdExhYmVsVHlwZVwiXG4gIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtZGlzYWJsZWQge3sgY2xhc3NMaXN0IH19XCJcbj5cbiAgPGRpdiBtYXRQcmVmaXg+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuICA8aW5wdXQgbWF0SW5wdXQgaGlkZGVuIHR5cGU9XCJ0ZXh0XCIgcmVhZG9ubHkgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW2Zvcm1Db250cm9sXT1cImZvcm1Db250cm9sXCIgLz5cbiAgPGlvbi10ZXh0Pnt7ICh2YWx1ZSA9PT0gbnVsbCA/ICdDT01NT04uRU1QVFlfT1BUSU9OJyA6IHZhbHVlID09PSB0cnVlID8geWVzTGFiZWwgOiBub0xhYmVsKSB8IHRyYW5zbGF0ZSB9fTwvaW9uLXRleHQ+XG4gIDxkaXYgbWF0U3VmZml4PlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICA8L2Rpdj5cbjwvbWF0LWZvcm0tZmllbGQ+XG5cbjxuZy10ZW1wbGF0ZSAjd3JpdGFibGU+XG4gIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInN0eWxlXCI+XG4gICAgPCEtLSBSYWRpbyAtLT5cbiAgICA8bWF0LWZvcm0tZmllbGRcbiAgICAgICpuZ1N3aXRjaENhc2U9XCIncmFkaW8nXCJcbiAgICAgIFtmbG9hdExhYmVsXT1cInNob3dSYWRpbyAmJiAoIWZsb2F0TGFiZWwgfHwgZmxvYXRMYWJlbCA9PT0gJ2F1dG8nKSA/ICdhbHdheXMnIDogKGZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlKVwiXG4gICAgICBbYXBwZWFyYW5jZV09XCJhcHBlYXJhbmNlXCJcbiAgICAgIGNsYXNzPVwibWF0LWJvb2xlYW4tZmllbGQgbWF0LWJvb2xlYW4tZmllbGQtcmFkaW8ge3sgY2xhc3NMaXN0IH19XCJcbiAgICA+XG4gICAgICA8bWF0LWxhYmVsICpuZ0lmPVwicGxhY2Vob2xkZXIgJiYgZmxvYXRMYWJlbCAhPT0gJ25ldmVyJ1wiPlxuICAgICAgICB7eyBwbGFjZWhvbGRlciB9fVxuICAgICAgICA8c3BhbiBbaGlkZGVuXT1cInNob3dSYWRpb1wiPih7eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fS97eyBub0xhYmVsIHwgdHJhbnNsYXRlIH19KTwvc3Bhbj5cbiAgICAgIDwvbWF0LWxhYmVsPlxuICAgICAgPGRpdiBtYXRQcmVmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRQcmVmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgICA8aW5wdXRcbiAgICAgICAgbWF0SW5wdXRcbiAgICAgICAgI2Zha2VJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIHJlYWRvbmx5PVwidHJ1ZVwiXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzRmFrZUlucHV0KCRldmVudClcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbY2xhc3MuY2RrLXZpc3VhbGx5LWhpZGRlbl09XCJzaG93UmFkaW9cIlxuICAgICAgICBbdGFiaW5kZXhdPVwidGFiaW5kZXhcIlxuICAgICAgLz5cblxuICAgICAgPCEtLSByYWRpbyBidXR0b24gLS0+XG4gICAgICA8bWF0LXJhZGlvLWdyb3VwIFtoaWRkZW5dPVwiIXNob3dSYWRpb1wiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIChjaGFuZ2UpPVwib25SYWRpb1ZhbHVlQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICAgIDxtYXQtcmFkaW8tYnV0dG9uICN5ZXNCdXR0b24gW3ZhbHVlXT1cInRydWVcIj5cbiAgICAgICAgICA8c3Bhbj57eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgPC9tYXQtcmFkaW8tYnV0dG9uPlxuICAgICAgICAmbmJzcDtcbiAgICAgICAgPG1hdC1yYWRpby1idXR0b24gI25vQnV0dG9uIFt2YWx1ZV09XCJmYWxzZVwiPlxuICAgICAgICAgIDxzcGFuPnt7IG5vTGFiZWwgfCB0cmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIDwvbWF0LXJhZGlvLWJ1dHRvbj5cbiAgICAgIDwvbWF0LXJhZGlvLWdyb3VwPlxuXG4gICAgICA8bWF0LWVycm9yICpuZ0lmPVwiZm9ybUNvbnRyb2wuaGFzRXJyb3IoJ3JlcXVpcmVkJylcIiB0cmFuc2xhdGU+RVJST1IuRklFTERfUkVRVUlSRUQ8L21hdC1lcnJvcj5cblxuICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cblxuICAgIDwhLS0gQ2hlY2tib3ggLS0+XG4gICAgPG1hdC1mb3JtLWZpZWxkXG4gICAgICAqbmdTd2l0Y2hDYXNlPVwiJ2NoZWNrYm94J1wiXG4gICAgICBmbG9hdExhYmVsPVwiYWx3YXlzXCJcbiAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgY2xhc3M9XCJtYXQtYm9vbGVhbi1maWVsZCBtYXQtYm9vbGVhbi1maWVsZC1jaGVja2JveCB7eyBjbGFzc0xpc3QgfX1cIlxuICAgID5cbiAgICAgIDxkaXYgbWF0UHJlZml4PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibWF0UHJlZml4VGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlucHV0XG4gICAgICAgIG1hdElucHV0XG4gICAgICAgICNtYXRJbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICAoZm9jdXMpPVwib25Gb2N1c0Zha2VJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkXCJcbiAgICAgICAgW2NsYXNzLmNkay12aXN1YWxseS1oaWRkZW5dPVwic2hvd1JhZGlvXCJcbiAgICAgICAgW3RhYmluZGV4XT1cInRhYmluZGV4XCJcbiAgICAgIC8+XG5cbiAgICAgIDwhLS0gY2hlY2tib3gsIHdoZW4gY29tcGFjdCAtLT5cbiAgICAgIDxtYXQtY2hlY2tib3hcbiAgICAgICAgI2NoZWNrYm94QnV0dG9uXG4gICAgICAgIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiXG4gICAgICAgIChjaGFuZ2UpPVwib25DaGVja2JveFZhbHVlQ2hhbmdlZCgkZXZlbnQpXCJcbiAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwidmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZFwiXG4gICAgICAgIFtoaWRkZW5dPVwiIXNob3dSYWRpb1wiXG4gICAgICAgIFt0YWJpbmRleF09XCJ0YWJpbmRleFwiXG4gICAgICA+PC9tYXQtY2hlY2tib3g+XG5cbiAgICAgIDxtYXQtbGFiZWwgKm5nSWY9XCJwbGFjZWhvbGRlcjsgZWxzZSBub1BsYWNlSG9sZGVyXCI+XG4gICAgICAgIHt7IHBsYWNlaG9sZGVyIH19XG4gICAgICA8L21hdC1sYWJlbD5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjbm9QbGFjZUhvbGRlcj5cbiAgICAgICAgPG1hdC1sYWJlbD4mbmJzcDs8L21hdC1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuXG4gICAgICA8ZGl2IG1hdFN1ZmZpeD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFN1ZmZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuXG4gICAgPCEtLSBCdXR0b25zIC0tPlxuICAgIDxtYXQtZm9ybS1maWVsZFxuICAgICAgKm5nU3dpdGNoQ2FzZT1cIididXR0b24nXCJcbiAgICAgIFtmbG9hdExhYmVsXT1cImZsb2F0TGFiZWwgfCBhc0Zsb2F0TGFiZWxUeXBlXCJcbiAgICAgIFthcHBlYXJhbmNlXT1cImFwcGVhcmFuY2VcIlxuICAgICAgY2xhc3M9XCJtYXQtYm9vbGVhbi1maWVsZCBtYXQtYm9vbGVhbi1maWVsZC1idXR0b24ge3sgY2xhc3NMaXN0IH19XCJcbiAgICA+XG4gICAgICA8ZGl2IG1hdFByZWZpeD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdFByZWZpeFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBtYXRJbnB1dFxuICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIGhpZGRlblxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZm9ybUNvbnRyb2xcIlxuICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICBbcmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1idXR0b25zXCJcbiAgICAgICAgW3N0eWxlLi0tYnV0dG9ucy1jb2wtY291bnRdPVwiYnV0dG9uc0NvbENvdW50XCJcbiAgICAgICAgKm5nSWY9XCIhZm9ybUNvbnRyb2wuZGlzYWJsZWQ7IGVsc2UgZGlzYWJsZWRMYWJlbFwiXG4gICAgICA+XG4gICAgICAgIDwhLS0geWVzIC0tPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIGNsYXNzPVwibWF0LWZvcm0tZmllbGQtYnV0dG9uXCJcbiAgICAgICAgICBbdGFiaW5kZXhdPVwiX3RhYmluZGV4XCJcbiAgICAgICAgICAoY2xpY2spPVwid3JpdGVWYWx1ZSh0cnVlLCAkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwid3JpdGVWYWx1ZSh0cnVlLCAkZXZlbnQpXCJcbiAgICAgICAgICBbY29sb3JdPVwiX3ZhbHVlID09PSBudWxsID8gJ3RlcnRpYXJ5JyA6IF92YWx1ZSA9PT0gdHJ1ZSA/ICdhY2NlbnQnIDogJ2xpZ2h0J1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gKm5nSWY9XCJzaG93QnV0dG9uSWNvbnMgJiYgeWVzSWNvbjsgbGV0IGljb25cIiBzbG90PVwic3RhcnRcIiBbbmFtZV09XCJpY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB7eyB5ZXNMYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgPCEtLSBObyBidXR0b24gLS0+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJtYXQtZm9ybS1maWVsZC1idXR0b25cIlxuICAgICAgICAgIFt0YWJpbmRleF09XCJfdGFiaW5kZXggIT09IHVuZGVmaW5lZCA/IF90YWJpbmRleCArIDEgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIChjbGljayk9XCJ3cml0ZVZhbHVlKGZhbHNlLCAkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5dXAuZW50ZXIpPVwid3JpdGVWYWx1ZShmYWxzZSwgJGV2ZW50KVwiXG4gICAgICAgICAgW2NvbG9yXT1cIl92YWx1ZSA9PT0gbnVsbCA/ICd0ZXJ0aWFyeScgOiBfdmFsdWUgPT09IGZhbHNlID8gJ2FjY2VudCcgOiAnbGlnaHQnXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24taWNvbiAqbmdJZj1cInNob3dCdXR0b25JY29ucyAmJiBub0ljb247IGxldCBpY29uXCIgc2xvdD1cInN0YXJ0XCIgW25hbWVdPVwiaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAge3sgbm9MYWJlbCB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGlzYWJsZWRMYWJlbD5cbiAgICAgICAgPGlvbi1sYWJlbD48aSB0cmFuc2xhdGU+Q09NTU9OLkVNUFRZX09QVElPTjwvaT48L2lvbi1sYWJlbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxtYXQtZXJyb3IgKm5nSWY9XCJmb3JtQ29udHJvbC5oYXNFcnJvcigncmVxdWlyZWQnKVwiIHRyYW5zbGF0ZT5FUlJPUi5GSUVMRF9SRVFVSVJFRDwvbWF0LWVycm9yPlxuICAgICAgPGRpdiBtYXRTdWZmaXg+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRTdWZmaXhUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9uZy1jb250YWluZXI+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdFByZWZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0UHJlZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI21hdFN1ZmZpeFRlbXBsYXRlPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJbbWF0U3VmZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
|