1 line
1.6 MiB
1 line
1.6 MiB
{"version":3,"file":"clr-angular.mjs","sources":["../../../projects/angular/src/icon/icon.ts","../../../projects/angular/src/icon/icon.module.ts","../../../projects/angular/src/utils/loading/loading-listener.ts","../../../projects/angular/src/utils/loading/loading.ts","../../../projects/angular/src/utils/conditional/if-expanded.service.ts","../../../projects/angular/src/utils/id-generator/id-generator.service.ts","../../../projects/angular/src/accordion/accordion-description.ts","../../../projects/angular/src/accordion/enums/accordion-status.enum.ts","../../../projects/angular/src/utils/animations/constants.ts","../../../projects/angular/src/accordion/utils/animation.ts","../../../projects/angular/src/utils/i18n/common-strings.default.ts","../../../projects/angular/src/utils/i18n/common-strings.service.ts","../../../projects/angular/src/accordion/enums/accordion-strategy.enum.ts","../../../projects/angular/src/accordion/models/accordion.model.ts","../../../projects/angular/src/accordion/providers/accordion.service.ts","../../../projects/angular/src/accordion/accordion-panel.ts","../../../projects/angular/src/accordion/accordion-panel.html","../../../projects/angular/src/accordion/accordion.ts","../../../projects/angular/src/accordion/accordion-content.ts","../../../projects/angular/src/accordion/accordion-title.ts","../../../projects/angular/src/utils/chocolate/willy-wonka.ts","../../../projects/angular/src/utils/chocolate/oompa-loompa.ts","../../../projects/angular/src/accordion/chocolate/accordion-willy-wonka.ts","../../../projects/angular/src/accordion/chocolate/accordion-oompa-loompa.ts","../../../projects/angular/src/accordion/accordion.module.ts","../../../projects/angular/src/utils/forms/validation.ts","../../../projects/angular/src/accordion/stepper/models/stepper.model.ts","../../../projects/angular/src/accordion/stepper/providers/stepper.service.ts","../../../projects/angular/src/accordion/stepper/stepper-panel.ts","../../../projects/angular/src/accordion/stepper/step-button.ts","../../../projects/angular/src/accordion/stepper/stepper.ts","../../../projects/angular/src/accordion/stepper/chocolate/stepper-willy-wonka.ts","../../../projects/angular/src/accordion/stepper/chocolate/stepper-oompa-loompa.ts","../../../projects/angular/src/accordion/stepper/stepper.module.ts","../../../projects/angular/src/utils/enums/keys.enum.ts","../../../projects/angular/src/utils/focus/key-focus/util.ts","../../../projects/angular/src/utils/popover/providers/popover-toggle.service.ts","../../../projects/angular/src/utils/popover/providers/popover-events.service.ts","../../../projects/angular/src/utils/popover/popover-anchor.ts","../../../projects/angular/src/utils/popover/popover-close-button.ts","../../../projects/angular/src/utils/popover/enums/axis.enum.ts","../../../projects/angular/src/utils/popover/enums/alignment.enum.ts","../../../projects/angular/src/utils/popover/enums/viewport-violation.enum.ts","../../../projects/angular/src/utils/popover/position-operators.ts","../../../projects/angular/src/utils/popover/providers/popover-position.service.ts","../../../projects/angular/src/utils/popover/popover-content.ts","../../../projects/angular/src/utils/popover/popover-open-close-button.ts","../../../projects/angular/src/utils/popover/popover.module.ts","../../../projects/angular/src/button/providers/button-in-group.service.ts","../../../projects/angular/src/button/button-group/button.ts","../../../projects/angular/src/utils/destroy/destroy.service.ts","../../../projects/angular/src/utils/focus/arrow-key-direction.enum.ts","../../../projects/angular/src/utils/focus/focus.service.ts","../../../projects/angular/src/utils/popover/enums/side.enum.ts","../../../projects/angular/src/utils/popover/enums/positions.enum.ts","../../../projects/angular/src/popover/common/popover-host-anchor.token.ts","../../../projects/angular/src/utils/popover/stop-escape-propagation.directive.ts","../../../projects/angular/src/utils/popover/popover-host.directive.ts","../../../projects/angular/src/utils/focus/focusable-item/linkers.ts","../../../projects/angular/src/button/providers/button-group-focus.enum.ts","../../../projects/angular/src/utils/animations/collapse/collapse.ts","../../../projects/angular/src/utils/animations/collapse/index.ts","../../../projects/angular/src/utils/dom-adapter/dom-adapter.ts","../../../projects/angular/src/utils/animations/expandable-animation/expandable-animation.ts","../../../projects/angular/src/utils/animations/expandable-animation/index.ts","../../../projects/angular/src/utils/animations/fade/fade.ts","../../../projects/angular/src/utils/animations/fade/index.ts","../../../projects/angular/src/utils/animations/fade-slide/fade-slide.ts","../../../projects/angular/src/utils/animations/fade-slide/index.ts","../../../projects/angular/src/utils/animations/slide/slide.ts","../../../projects/angular/src/utils/animations/slide/index.ts","../../../projects/angular/src/utils/animations/index.ts","../../../projects/angular/src/utils/loading/loading.module.ts","../../../projects/angular/src/utils/loading/index.ts","../../../projects/angular/src/utils/conditional/if-active.service.ts","../../../projects/angular/src/utils/conditional/if-active.directive.ts","../../../projects/angular/src/utils/conditional/if-open.directive.ts","../../../projects/angular/src/utils/conditional/if-expanded.directive.ts","../../../projects/angular/src/utils/conditional/conditional.module.ts","../../../projects/angular/src/utils/conditional/index.ts","../../../projects/angular/src/utils/i18n/common-strings.interface.ts","../../../projects/angular/src/utils/i18n/index.ts","../../../projects/angular/src/utils/popover/interfaces/popover-position.interface.ts","../../../projects/angular/src/utils/popover/index.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/focus-on-view-init.provider.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/focus-on-view-init.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/focus-on-view-init.module.ts","../../../projects/angular/src/utils/focus/focus-on-view-init/index.ts","../../../projects/angular/src/utils/focus/focus-trap/standalone-cdk-trap-focus.directive.ts","../../../projects/angular/src/utils/focus/focus-trap/index.ts","../../../projects/angular/src/utils/destroy/index.ts","../../../projects/angular/src/utils/index.ts","../../../projects/angular/src/button/providers/button-group-focus-handler.service.ts","../../../projects/angular/src/button/button-group/button-group.ts","../../../projects/angular/src/button/button-group/button-group.html","../../../projects/angular/src/button/button-group/button-group.module.ts","../../../projects/angular/src/button/button-loading/loading-button.ts","../../../projects/angular/src/button/button-loading/loading-button.module.ts","../../../projects/angular/src/button/button.module.ts","../../../projects/angular/src/utils/host-wrapping/empty-anchor.ts","../../../projects/angular/src/utils/host-wrapping/host-wrapping.module.ts","../../../projects/angular/src/forms/common/providers/control-id.service.ts","../../../projects/angular/src/forms/common/providers/container-id.service.ts","../../../projects/angular/src/forms/common/abstract-control.ts","../../../projects/angular/src/forms/common/error.ts","../../../projects/angular/src/forms/common/helper.ts","../../../projects/angular/src/forms/common/providers/ng-control.service.ts","../../../projects/angular/src/forms/common/if-control-state/if-control-state.service.ts","../../../projects/angular/src/forms/common/providers/layout.service.ts","../../../projects/angular/src/forms/common/label.ts","../../../projects/angular/src/forms/common/success.ts","../../../projects/angular/src/forms/common/providers/control-class.service.ts","../../../projects/angular/src/forms/common/abstract-container.ts","../../../projects/angular/src/forms/common/control-container.ts","../../../projects/angular/src/utils/host-wrapping/host-wrapper.ts","../../../projects/angular/src/forms/common/providers/mark-control.service.ts","../../../projects/angular/src/forms/common/wrapped-control.ts","../../../projects/angular/src/forms/common/control.ts","../../../projects/angular/src/forms/common/form.ts","../../../projects/angular/src/forms/common/if-control-state/abstract-if-state.ts","../../../projects/angular/src/forms/common/if-control-state/if-error.ts","../../../projects/angular/src/forms/common/if-control-state/if-success.ts","../../../projects/angular/src/forms/common/layout.ts","../../../projects/angular/src/forms/common/common.module.ts","../../../projects/angular/src/forms/checkbox/checkbox-wrapper.ts","../../../projects/angular/src/forms/checkbox/checkbox.ts","../../../projects/angular/src/forms/checkbox/checkbox-container.ts","../../../projects/angular/src/forms/checkbox/checkbox.module.ts","../../../projects/angular/src/utils/component/is-boolean-attribute-set.ts","../../../projects/angular/src/progress/spinner/spinner.ts","../../../projects/angular/src/progress/spinner/spinner.module.ts","../../../projects/angular/src/utils/focus/key-focus/enums/focus-direction.enum.ts","../../../projects/angular/src/utils/focus/key-focus/key-focus-item.ts","../../../projects/angular/src/utils/focus/key-focus/key-focus.ts","../../../projects/angular/src/utils/focus/key-focus/roving-tabindex.ts","../../../projects/angular/src/utils/focus/key-focus/key-focus.module.ts","../../../projects/angular/src/forms/combobox/providers/combobox-container.service.ts","../../../projects/angular/src/forms/combobox/combobox-container.ts","../../../projects/angular/src/forms/combobox/model/multi-select-combobox.model.ts","../../../projects/angular/src/forms/combobox/model/single-select-combobox.model.ts","../../../projects/angular/src/forms/combobox/option-selected.directive.ts","../../../projects/angular/src/utils/focus/focusable-item/focusable-item.ts","../../../projects/angular/src/utils/focus/focusable-item/custom-focusable-item-provider.ts","../../../projects/angular/src/forms/combobox/model/pseudo-focus.model.ts","../../../projects/angular/src/forms/combobox/providers/option-selection.service.ts","../../../projects/angular/src/forms/combobox/providers/combobox-focus-handler.service.ts","../../../projects/angular/src/forms/combobox/option.ts","../../../projects/angular/src/forms/combobox/options.ts","../../../projects/angular/src/forms/combobox/combobox.ts","../../../projects/angular/src/forms/combobox/combobox.html","../../../projects/angular/src/forms/combobox/option-items.directive.ts","../../../projects/angular/src/forms/combobox/combobox.module.ts","../../../projects/angular/src/forms/input/input-container.ts","../../../projects/angular/src/forms/input/input.ts","../../../projects/angular/src/forms/input/input.module.ts","../../../projects/angular/src/forms/datalist/providers/datalist-id.service.ts","../../../projects/angular/src/forms/datalist/datalist.ts","../../../projects/angular/src/forms/common/providers/focus.service.ts","../../../projects/angular/src/forms/datalist/datalist-container.ts","../../../projects/angular/src/forms/datalist/datalist-input.ts","../../../projects/angular/src/forms/datalist/datalist.module.ts","../../../projects/angular/src/utils/cdk/cdk-trap-focus.module.ts","../../../projects/angular/src/forms/datepicker/utils/constants.ts","../../../projects/angular/src/forms/datepicker/utils/date-utils.ts","../../../projects/angular/src/forms/datepicker/model/day-view.model.ts","../../../projects/angular/src/forms/datepicker/model/day.model.ts","../../../projects/angular/src/forms/datepicker/model/calendar-view.model.ts","../../../projects/angular/src/forms/datepicker/providers/locale-helper.service.ts","../../../projects/angular/src/forms/datepicker/model/calendar.model.ts","../../../projects/angular/src/forms/datepicker/providers/date-navigation.service.ts","../../../projects/angular/src/forms/datepicker/providers/datepicker-focus.service.ts","../../../projects/angular/src/forms/datepicker/providers/date-io.service.ts","../../../projects/angular/src/forms/datepicker/providers/date-form-control.service.ts","../../../projects/angular/src/forms/datepicker/day.ts","../../../projects/angular/src/forms/datepicker/calendar.ts","../../../projects/angular/src/forms/datepicker/calendar.html","../../../projects/angular/src/utils/breakpoints/breakpoints.ts","../../../projects/angular/src/forms/datepicker/providers/datepicker-enabled.service.ts","../../../projects/angular/src/forms/datepicker/providers/view-manager.service.ts","../../../projects/angular/src/forms/datepicker/monthpicker.ts","../../../projects/angular/src/forms/datepicker/model/year-range.model.ts","../../../projects/angular/src/forms/datepicker/yearpicker.ts","../../../projects/angular/src/forms/datepicker/daypicker.ts","../../../projects/angular/src/forms/datepicker/daypicker.html","../../../projects/angular/src/forms/datepicker/datepicker-view-manager.ts","../../../projects/angular/src/forms/datepicker/datepicker-view-manager.html","../../../projects/angular/src/forms/datepicker/date-container.ts","../../../projects/angular/src/forms/datepicker/date-input.ts","../../../projects/angular/src/forms/datepicker/date-input.validator.ts","../../../projects/angular/src/forms/datepicker/datepicker.module.ts","../../../projects/angular/src/forms/password/password-container.ts","../../../projects/angular/src/forms/password/password.ts","../../../projects/angular/src/forms/password/password.module.ts","../../../projects/angular/src/forms/radio/radio-wrapper.ts","../../../projects/angular/src/forms/radio/radio.ts","../../../projects/angular/src/forms/radio/radio-container.ts","../../../projects/angular/src/forms/radio/radio.module.ts","../../../projects/angular/src/forms/range/range-container.ts","../../../projects/angular/src/forms/range/range.ts","../../../projects/angular/src/forms/range/range.module.ts","../../../projects/angular/src/forms/select/select-container.ts","../../../projects/angular/src/forms/select/select.ts","../../../projects/angular/src/forms/select/select.module.ts","../../../projects/angular/src/forms/textarea/textarea-container.ts","../../../projects/angular/src/forms/textarea/textarea.ts","../../../projects/angular/src/forms/textarea/textarea.module.ts","../../../projects/angular/src/forms/forms.module.ts","../../../projects/angular/src/utils/animations/expandable-animation/expandable-animation.module.ts","../../../projects/angular/src/utils/cdk/cdk-drag.module.ts","../../../projects/angular/src/utils/outside-click/outside-click.ts","../../../projects/angular/src/utils/outside-click/index.ts","../../../projects/angular/src/utils/outside-click/outside-click.module.ts","../../../projects/angular/src/data/datagrid/providers/custom-filter.ts","../../../projects/angular/src/data/datagrid/providers/state-debouncer.provider.ts","../../../projects/angular/src/data/datagrid/providers/page.ts","../../../projects/angular/src/data/datagrid/providers/filters.ts","../../../projects/angular/src/data/datagrid/utils/datagrid-filter-registrar.ts","../../../projects/angular/src/data/datagrid/datagrid-filter.ts","../../../projects/angular/src/data/datagrid/built-in/nested-property.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-property-numeric-filter.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-numeric-filter-impl.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-numeric-filter.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-property-string-filter.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-string-filter-impl.ts","../../../projects/angular/src/data/datagrid/built-in/filters/datagrid-string-filter.ts","../../../projects/angular/src/data/datagrid/chocolate/datagrid-willy-wonka.ts","../../../projects/angular/src/data/datagrid/providers/row-action-service.ts","../../../projects/angular/src/data/datagrid/chocolate/actionable-oompa-loompa.ts","../../../projects/angular/src/modal/modal-stack.service.ts","../../../projects/angular/src/data/datagrid/providers/detail.service.ts","../../../projects/angular/src/data/datagrid/providers/global-expandable-rows.ts","../../../projects/angular/src/data/datagrid/chocolate/expandable-oompa-loompa.ts","../../../projects/angular/src/data/datagrid/built-in/comparators/datagrid-property-comparator.ts","../../../projects/angular/src/data/datagrid/enums/sort-order.enum.ts","../../../projects/angular/src/data/datagrid/wrapped-column.ts","../../../projects/angular/src/data/datagrid/providers/sort.ts","../../../projects/angular/src/data/datagrid/enums/render-step.enum.ts","../../../projects/angular/src/data/datagrid/render/render-organizer.ts","../../../projects/angular/src/data/datagrid/providers/column-resizer.service.ts","../../../projects/angular/src/data/datagrid/providers/table-size.service.ts","../../../projects/angular/src/data/datagrid/datagrid-column-separator.ts","../../../projects/angular/src/data/datagrid/datagrid-column.ts","../../../projects/angular/src/data/datagrid/providers/items.ts","../../../projects/angular/src/data/datagrid/datagrid-items.ts","../../../projects/angular/src/data/datagrid/datagrid-placeholder.ts","../../../projects/angular/src/popover/signpost/providers/signpost-focus-manager.service.ts","../../../projects/angular/src/popover/signpost/providers/signpost-id.service.ts","../../../projects/angular/src/popover/signpost/signpost-trigger.ts","../../../projects/angular/src/popover/signpost/signpost.ts","../../../projects/angular/src/data/datagrid/wrapped-cell.ts","../../../projects/angular/src/data/datagrid/datagrid-cell.ts","../../../projects/angular/src/data/datagrid/datagrid-if-expanded.service.ts","../../../projects/angular/src/data/datagrid/enums/display-mode.enum.ts","../../../projects/angular/src/data/datagrid/enums/selection-type.ts","../../../projects/angular/src/data/datagrid/wrapped-row.ts","../../../projects/angular/src/data/datagrid/providers/selection.ts","../../../projects/angular/src/data/datagrid/providers/display-mode.service.ts","../../../projects/angular/src/data/datagrid/datagrid-selection-cell.directive.ts","../../../projects/angular/src/data/datagrid/datagrid-row.ts","../../../projects/angular/src/data/datagrid/datagrid-row.html","../../../projects/angular/src/data/datagrid/enums/column-changes.enum.ts","../../../projects/angular/src/data/datagrid/providers/columns.service.ts","../../../projects/angular/src/data/datagrid/providers/state.provider.ts","../../../projects/angular/src/data/datagrid/utils/key-navigation-grid.controller.ts","../../../projects/angular/src/data/datagrid/datagrid.ts","../../../projects/angular/src/data/datagrid/datagrid.html","../../../projects/angular/src/data/datagrid/datagrid-action-bar.ts","../../../projects/angular/src/utils/focus/key-focus/index.ts","../../../projects/angular/src/data/datagrid/datagrid-action-overflow.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle-trackby.ts","../../../projects/angular/src/data/datagrid/datagrid-items-trackby.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle-button.ts","../../../projects/angular/src/data/datagrid/datagrid-column-toggle.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-header.ts","../../../projects/angular/src/data/datagrid/datagrid-detail.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-body.ts","../../../projects/angular/src/data/datagrid/datagrid-detail-registerer.ts","../../../projects/angular/src/data/datagrid/datagrid-footer.ts","../../../projects/angular/src/data/datagrid/providers/column-state.provider.ts","../../../projects/angular/src/data/datagrid/datagrid-hideable-column.ts","../../../projects/angular/src/data/datagrid/datagrid-if-detail.ts","../../../projects/angular/src/data/datagrid/datagrid-page-size.ts","../../../projects/angular/src/data/datagrid/datagrid-pagination.ts","../../../projects/angular/src/data/datagrid/datagrid-row-detail.ts","../../../projects/angular/src/data/datagrid/render/constants.ts","../../../projects/angular/src/data/datagrid/render/cell-renderer.ts","../../../projects/angular/src/data/datagrid/render/header-renderer.ts","../../../projects/angular/src/data/datagrid/render/noop-dom-adapter.ts","../../../projects/angular/src/data/datagrid/render/row-renderer.ts","../../../projects/angular/src/data/datagrid/render/main-renderer.ts","../../../projects/angular/src/data/datagrid/datagrid.module.ts","../../../projects/angular/src/data/stack-view/stack-view-custom-tags.ts","../../../projects/angular/src/data/stack-view/stack-block.ts","../../../projects/angular/src/data/stack-view/stack-content-input.ts","../../../projects/angular/src/data/stack-view/stack-view.ts","../../../projects/angular/src/data/stack-view/stack-header.ts","../../../projects/angular/src/data/stack-view/stack-view.module.ts","../../../projects/angular/src/data/tree-view/tree-features.service.ts","../../../projects/angular/src/data/tree-view/recursive-children.ts","../../../projects/angular/src/data/tree-view/models/async-array.ts","../../../projects/angular/src/data/tree-view/models/selected-state.enum.ts","../../../projects/angular/src/data/tree-view/models/tree-node.model.ts","../../../projects/angular/src/data/tree-view/models/recursive-tree-node.model.ts","../../../projects/angular/src/data/tree-view/recursive-for-of.ts","../../../projects/angular/src/data/tree-view/tree-focus-manager.service.ts","../../../projects/angular/src/data/tree-view/models/declarative-tree-node.model.ts","../../../projects/angular/src/data/tree-view/tree-node-link.ts","../../../projects/angular/src/data/tree-view/tree-node.ts","../../../projects/angular/src/data/tree-view/tree-node.html","../../../projects/angular/src/data/tree-view/tree.ts","../../../projects/angular/src/data/tree-view/tree-view.module.ts","../../../projects/angular/src/data/data.module.ts","../../../projects/angular/src/utils/focus/wrap-observable.ts","../../../projects/angular/src/popover/dropdown/providers/dropdown-focus-handler.service.ts","../../../projects/angular/src/popover/dropdown/providers/dropdown.service.ts","../../../projects/angular/src/popover/dropdown/dropdown.ts","../../../projects/angular/src/utils/focus/focusable-item/basic-focusable-item.service.ts","../../../projects/angular/src/popover/dropdown/dropdown-item.ts","../../../projects/angular/src/popover/common/popover.ts","../../../projects/angular/src/popover/common/abstract-popover.ts","../../../projects/angular/src/popover/dropdown/dropdown-menu.ts","../../../projects/angular/src/popover/dropdown/dropdown-trigger.ts","../../../projects/angular/src/popover/dropdown/dropdown.module.ts","../../../projects/angular/src/emphasis/alert/utils/alert-types.ts","../../../projects/angular/src/emphasis/alert/providers/icon-and-types.service.ts","../../../projects/angular/src/emphasis/alert/providers/multi-alert.service.ts","../../../projects/angular/src/emphasis/alert/alert.ts","../../../projects/angular/src/emphasis/alert/alert.html","../../../projects/angular/src/emphasis/alert/alert-item.ts","../../../projects/angular/src/emphasis/alert/alert-text.ts","../../../projects/angular/src/emphasis/alert/alerts-pager.ts","../../../projects/angular/src/emphasis/alert/alerts-pager.html","../../../projects/angular/src/emphasis/alert/alerts.ts","../../../projects/angular/src/emphasis/alert/alerts.html","../../../projects/angular/src/emphasis/alert/alert.module.ts","../../../projects/angular/src/emphasis/emphasis.module.ts","../../../projects/angular/src/layout/nav/responsive-nav-codes.ts","../../../projects/angular/src/layout/nav/responsive-nav-control-message.ts","../../../projects/angular/src/layout/nav/providers/responsive-navigation.service.ts","../../../projects/angular/src/layout/main-container/main-container.ts","../../../projects/angular/src/layout/main-container/main-container.module.ts","../../../projects/angular/src/layout/nav/aria-current-link.ts","../../../projects/angular/src/layout/nav/chocolate/main-container-willy-wonka.ts","../../../projects/angular/src/layout/nav/chocolate/nav-detection-oompa-loompa.ts","../../../projects/angular/src/layout/nav/header.ts","../../../projects/angular/src/layout/nav/nav-level.ts","../../../projects/angular/src/layout/nav/navigation.module.ts","../../../projects/angular/src/utils/template-ref/template-ref-container.ts","../../../projects/angular/src/utils/template-ref/index.ts","../../../projects/angular/src/utils/template-ref/template-ref.module.ts","../../../projects/angular/src/layout/tabs/chocolate/tabs-willy-wonka.ts","../../../projects/angular/src/layout/tabs/chocolate/active-oompa-loompa.ts","../../../projects/angular/src/layout/tabs/enums/tabs-layout.enum.ts","../../../projects/angular/src/layout/tabs/providers/tabs.service.ts","../../../projects/angular/src/layout/tabs/tab-content.ts","../../../projects/angular/src/layout/tabs/tabs-id.provider.ts","../../../projects/angular/src/layout/tabs/tab-link.directive.ts","../../../projects/angular/src/layout/tabs/tab.ts","../../../projects/angular/src/layout/tabs/tab-overflow-content.ts","../../../projects/angular/src/layout/tabs/tabs.ts","../../../projects/angular/src/layout/tabs/tabs.module.ts","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav-group-registration.service.ts","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav-icon.service.ts","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav.service.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav.html","../../../projects/angular/src/layout/vertical-nav/providers/vertical-nav-group.service.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-group.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-group.html","../../../projects/angular/src/layout/vertical-nav/vertical-nav-group-children.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-icon.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav-link.ts","../../../projects/angular/src/layout/vertical-nav/vertical-nav.module.ts","../../../projects/angular/src/layout/layout.module.ts","../../../projects/angular/src/utils/scrolling/scrolling-service.ts","../../../projects/angular/src/modal/modal.ts","../../../projects/angular/src/modal/modal.html","../../../projects/angular/src/modal/modal-body.ts","../../../projects/angular/src/modal/modal.module.ts","../../../projects/angular/src/popover/signpost/signpost-positions.ts","../../../projects/angular/src/popover/signpost/signpost-content.ts","../../../projects/angular/src/popover/signpost/signpost.module.ts","../../../projects/angular/src/popover/tooltip/providers/tooltip-id.service.ts","../../../projects/angular/src/popover/tooltip/providers/tooltip-mouse.service.ts","../../../projects/angular/src/popover/tooltip/tooltip.ts","../../../projects/angular/src/utils/assert/assert.helpers.ts","../../../projects/angular/src/popover/tooltip/tooltip-content.ts","../../../projects/angular/src/popover/tooltip/tooltip-trigger.ts","../../../projects/angular/src/popover/tooltip/tooltip.module.ts","../../../projects/angular/src/popover/popover.module.ts","../../../projects/angular/src/progress/progress-bars/progress-bar.ts","../../../projects/angular/src/progress/progress-bars/progress-bar.module.ts","../../../projects/angular/src/timeline/enums/timeline-layout.enum.ts","../../../projects/angular/src/timeline/enums/timeline-step-state.enum.ts","../../../projects/angular/src/timeline/providers/timeline-icon-attribute.service.ts","../../../projects/angular/src/timeline/timeline.ts","../../../projects/angular/src/timeline/timeline-step-title.ts","../../../projects/angular/src/timeline/timeline-step.ts","../../../projects/angular/src/timeline/timeline-step-description.ts","../../../projects/angular/src/timeline/timeline-step-header.ts","../../../projects/angular/src/timeline/timeline.module.ts","../../../projects/angular/src/wizard/providers/button-hub.service.ts","../../../projects/angular/src/wizard/providers/page-collection.service.ts","../../../projects/angular/src/wizard/providers/wizard-navigation.service.ts","../../../projects/angular/src/wizard/providers/header-actions.service.ts","../../../projects/angular/src/wizard/wizard-header-action.ts","../../../projects/angular/src/wizard/wizard-page-buttons.ts","../../../projects/angular/src/wizard/wizard-page-header-actions.ts","../../../projects/angular/src/wizard/wizard-page-navtitle.ts","../../../projects/angular/src/wizard/wizard-page-title.ts","../../../projects/angular/src/wizard/wizard-page.ts","../../../projects/angular/src/wizard/wizard-title.ts","../../../projects/angular/src/wizard/wizard-stepnav-item.ts","../../../projects/angular/src/wizard/wizard-stepnav.ts","../../../projects/angular/src/wizard/wizard.ts","../../../projects/angular/src/wizard/wizard.html","../../../projects/angular/src/wizard/wizard-button.ts","../../../projects/angular/src/wizard/wizard.module.ts","../../../projects/angular/src/clr-angular.module.ts","../../../projects/angular/src/button/button-group/index.ts","../../../projects/angular/src/button/button-loading/index.ts","../../../projects/angular/src/button/index.ts","../../../projects/angular/src/data/datagrid/interfaces/state.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/filter.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/string-filter.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/numeric-filter.interface.ts","../../../projects/angular/src/data/datagrid/interfaces/comparator.interface.ts","../../../projects/angular/src/data/datagrid/index.ts","../../../projects/angular/src/data/tree-view/index.ts","../../../projects/angular/src/data/stack-view/index.ts","../../../projects/angular/src/data/index.ts","../../../projects/angular/src/emphasis/alert/index.ts","../../../projects/angular/src/emphasis/index.ts","../../../projects/angular/src/forms/common/index.ts","../../../projects/angular/src/forms/checkbox/index.ts","../../../projects/angular/src/forms/combobox/index.ts","../../../projects/angular/src/forms/datalist/index.ts","../../../projects/angular/src/forms/datepicker/index.ts","../../../projects/angular/src/forms/input/index.ts","../../../projects/angular/src/forms/password/index.ts","../../../projects/angular/src/forms/radio/index.ts","../../../projects/angular/src/forms/select/index.ts","../../../projects/angular/src/forms/textarea/index.ts","../../../projects/angular/src/forms/range/index.ts","../../../projects/angular/src/forms/index.ts","../../../projects/angular/src/icon/index.ts","../../../projects/angular/src/layout/main-container/index.ts","../../../projects/angular/src/layout/nav/chocolate/index.ts","../../../projects/angular/src/layout/nav/index.ts","../../../projects/angular/src/layout/tabs/index.ts","../../../projects/angular/src/layout/vertical-nav/index.ts","../../../projects/angular/src/layout/index.ts","../../../projects/angular/src/modal/index.ts","../../../projects/angular/src/popover/dropdown/menu-positions.ts","../../../projects/angular/src/popover/dropdown/index.ts","../../../projects/angular/src/popover/signpost/index.ts","../../../projects/angular/src/popover/tooltip/index.ts","../../../projects/angular/src/popover/index.ts","../../../projects/angular/src/wizard/heading-level.ts","../../../projects/angular/src/wizard/index.ts","../../../projects/angular/src/accordion/index.ts","../../../projects/angular/src/accordion/stepper/index.ts","../../../projects/angular/src/progress/spinner/index.ts","../../../projects/angular/src/progress/progress-bars/index.ts","../../../projects/angular/src/timeline/index.ts","../../../projects/angular/src/index.ts","../../../projects/angular/src/clr-angular.ts"],"sourcesContent":["/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\n@Directive({\n selector: 'clr-icon',\n})\nexport class ClrIconCustomTag {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n\n@Directive({\n selector: 'cds-icon',\n})\nexport class CdsIconCustomTag {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { CdsIconCustomTag, ClrIconCustomTag } from './icon';\n\nexport const CLR_ICON_DIRECTIVES: Type<any>[] = [ClrIconCustomTag, CdsIconCustomTag];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_ICON_DIRECTIVES],\n exports: [CLR_ICON_DIRECTIVES],\n})\nexport class ClrIconModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrLoadingState } from './loading';\n\n/**\n * This is an abstract class because we need it to still be a valid token for dependency injection after transpiling.\n * This does not mean you should extend it, simply implementing it is fine.\n */\nexport abstract class LoadingListener {\n abstract loadingStateChange(state: ClrLoadingState | string): void;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Input, OnDestroy, Optional } from '@angular/core';\n\nimport { LoadingListener } from './loading-listener';\n\nexport enum ClrLoadingState {\n DEFAULT,\n LOADING,\n SUCCESS,\n ERROR,\n}\n\n@Directive({\n selector: '[clrLoading]',\n})\nexport class ClrLoading implements OnDestroy {\n static ngAcceptInputType_loadingState: boolean | ClrLoadingState | null | string;\n\n private _loadingState: ClrLoadingState | string = ClrLoadingState.DEFAULT;\n\n // We find the first parent that handles something loading\n constructor(@Optional() private listener: LoadingListener) {}\n\n @Input('clrLoading')\n get loadingState() {\n return this._loadingState;\n }\n set loadingState(value: boolean | string | ClrLoadingState) {\n if (value === true) {\n value = ClrLoadingState.LOADING;\n } else if (!value) {\n value = ClrLoadingState.DEFAULT;\n }\n\n if (value === this._loadingState) {\n return;\n }\n\n this._loadingState = value;\n if (this.listener) {\n this.listener.loadingStateChange(value);\n }\n }\n\n ngOnDestroy() {\n this.loadingState = ClrLoadingState.DEFAULT;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrLoadingState } from '../loading/loading';\nimport { LoadingListener } from '../loading/loading-listener';\n\n@Injectable()\nexport class IfExpandService implements LoadingListener {\n expandable = 0;\n\n protected _loading = false;\n protected _expanded = false;\n protected _expandChange = new Subject<boolean>();\n\n get loading(): boolean {\n return this._loading;\n }\n set loading(value: boolean) {\n value = !!value;\n if (value !== this._loading) {\n this._loading = value;\n }\n }\n\n get expanded(): boolean {\n return this._expanded;\n }\n set expanded(value: boolean) {\n value = !!value;\n if (value !== this._expanded) {\n this._expanded = value;\n this._expandChange.next(value);\n }\n }\n\n get expandChange(): Observable<boolean> {\n return this._expandChange.asObservable();\n }\n\n toggle() {\n this.expanded = !this._expanded;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n switch (state) {\n case ClrLoadingState.LOADING:\n this.loading = true;\n break;\n default:\n this.loading = false;\n break;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nlet NB_INSTANCES = 0;\n\nexport function uniqueIdFactory() {\n return 'clr-id-' + NB_INSTANCES++;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'clr-accordion-description, clr-step-description',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-accordion-description]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordionDescription {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum AccordionStatus {\n Inactive = 'inactive',\n Error = 'error',\n Complete = 'complete',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport const defaultAnimationTiming = '0.2s ease-in-out';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, style, transition, trigger } from '@angular/animations';\n\nimport { defaultAnimationTiming } from '../../utils/animations/constants';\n\nexport const panelAnimation = [\n trigger('skipInitialRender', [transition(':enter', [])]),\n trigger('toggle', [\n transition('void => *', [\n style({ display: 'block', height: 0 }),\n animate(defaultAnimationTiming, style({ height: '*' })),\n ]),\n ]),\n];\n\nexport const stepAnimation = [\n trigger('skipInitialRender', [transition(':enter', [])]),\n trigger('toggle', [\n transition('void => *', [\n style({ display: 'block', height: 0 }),\n animate(defaultAnimationTiming, style({ height: '*' })),\n ]),\n transition('* => void', [\n style({ display: 'block' }),\n animate(defaultAnimationTiming, style({ height: 0, display: 'none' })),\n ]),\n ]),\n];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrCommonStrings } from './common-strings.interface';\n\nexport const commonStringsDefault: ClrCommonStrings = {\n open: 'Open',\n close: 'Close',\n show: 'Show',\n hide: 'Hide',\n expand: 'Expand',\n collapse: 'Collapse',\n more: 'More',\n select: 'Select',\n selectAll: 'Select All',\n previous: 'Previous',\n next: 'Next',\n current: 'Jump to current',\n info: 'Info',\n success: 'Success',\n warning: 'Warning',\n danger: 'Error',\n rowActions: 'Available actions',\n pickColumns: 'Manage Columns',\n showColumns: 'Show Columns',\n sortColumn: 'Sort Column',\n firstPage: 'First Page',\n lastPage: 'Last Page',\n nextPage: 'Next Page',\n previousPage: 'Previous Page',\n currentPage: 'Current Page',\n totalPages: 'Total Pages',\n filterItems: 'Filter items',\n minValue: 'Min value',\n maxValue: 'Max value',\n modalContentStart: 'Beginning of Modal Content',\n modalContentEnd: 'End of Modal Content',\n showColumnsMenuDescription: 'Show or hide columns menu',\n allColumnsSelected: 'All columns selected',\n signpostToggle: 'Signpost Toggle',\n signpostClose: 'Signpost Close',\n loading: 'Loading',\n // Datagrid\n detailPaneStart: 'Start of row details',\n detailPaneEnd: 'End of row details',\n singleSelectionAriaLabel: 'Single selection header',\n singleActionableAriaLabel: 'Single actionable header',\n detailExpandableAriaLabel: 'Toggle more row content',\n datagridFilterAriaLabel: 'Toggle {COLUMN} filter',\n datagridFilterDialogAriaLabel: 'Filter dialog',\n columnSeparatorAriaLabel: 'Column resize handle',\n columnSeparatorDescription: 'Use left or right key to resize the column',\n // Alert\n alertCloseButtonAriaLabel: 'Close alert',\n alertNextAlertAriaLabel: 'Next alert message, {CURRENT} of {COUNT}',\n alertPreviousAlertAriaLabel: 'Previous alert message, {CURRENT} of {COUNT}',\n // Date Picker\n datepickerDialogLabel: 'Choose date',\n datepickerToggleChooseDateLabel: 'Choose date',\n datepickerToggleChangeDateLabel: 'Change date, {SELECTED_DATE}',\n datepickerPreviousMonth: 'Previous month',\n datepickerCurrentMonth: 'Current month',\n datepickerNextMonth: 'Next month',\n datepickerPreviousDecade: 'Previous decade',\n datepickerNextDecade: 'Next decade',\n datepickerCurrentDecade: 'Current decade',\n datepickerSelectMonthText: 'Select month, the current month is {CALENDAR_MONTH}',\n datepickerSelectYearText: 'Select year, the current year is {CALENDAR_YEAR}',\n datepickerSelectedLabel: '{FULL_DATE} - Selected',\n // Stack View\n stackViewChanged: 'Value changed.',\n // Responsive Nav\n responsiveNavToggleOpen: 'Open navigation menu',\n responsiveNavToggleClose: 'Close navigation menu',\n responsiveNavOverflowOpen: 'Open navigation overflow menu',\n responsiveNavOverflowClose: 'Close navigation overflow menu',\n //Vertical Nav\n verticalNavToggle: 'Toggle vertical navigation',\n // Timeline steps\n timelineStepNotStarted: 'Not started',\n timelineStepCurrent: 'Current',\n timelineStepSuccess: 'Completed',\n timelineStepError: 'Error',\n timelineStepProcessing: 'In progress',\n // Combobox\n comboboxDelete: 'Delete selected option',\n comboboxSearching: 'Searching for matches for \"{INPUT}\"',\n comboboxSelection: 'Selection',\n comboboxSelected: 'Selected',\n comboboxNoResults: 'No results',\n comboboxOpen: 'Show options',\n // Datagrid expandable rows\n datagridExpandableBeginningOf: 'Beginning of',\n datagridExpandableEndOf: 'End of',\n datagridExpandableRowContent: 'Expandable row content',\n datagridExpandableRowsHelperText: `Screen reader table commands may not work for viewing expanded content, please use your screen reader's browse mode to read the content exposed by this button`,\n // Wizard\n wizardStepSuccess: 'Completed',\n wizardStepError: 'Error',\n wizardStepnavAriaLabel: 'Step navigation',\n\n /**\n * Password Input\n * Screen-reader text for the hide/show password field button\n */\n passwordHide: 'Hide password for {LABEL}',\n passwordShow: 'Show password for {LABEL}',\n\n /**\n * Datagrid footer; sr-only text after the number of selected rows.\n */\n selectedRows: 'Selected rows',\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { commonStringsDefault } from '../../utils/i18n/common-strings.default';\nimport { ClrCommonStrings } from '../../utils/i18n/common-strings.interface';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class ClrCommonStringsService {\n private _strings = commonStringsDefault;\n\n /**\n * Access to all of the keys as strings\n */\n get keys(): Readonly<ClrCommonStrings> {\n return this._strings;\n }\n\n /**\n * Allows you to pass in new overrides for localization\n */\n localize(overrides: Partial<ClrCommonStrings>) {\n this._strings = { ...this._strings, ...overrides };\n }\n\n /**\n * Parse a string with a set of tokens to replace\n */\n parse(source: string, tokens: { [key: string]: string } = {}) {\n const names = Object.keys(tokens);\n let output = source;\n if (names.length) {\n names.forEach(name => {\n output = output.replace(`{${name}}`, tokens[name]);\n });\n }\n return output;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum AccordionStrategy {\n Default = 'default', // only one panel at a time\n Multi = 'multi', // can have multiple panels open at a time\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AccordionStatus } from '../enums/accordion-status.enum';\nimport { AccordionStrategy } from '../enums/accordion-strategy.enum';\n\nlet accordionCount = 0;\n\nexport class AccordionPanelModel {\n status = AccordionStatus.Inactive;\n index: number = null;\n disabled = false;\n open = false;\n templateId = `${this.id}-${this.accordionId}`;\n constructor(public id: string, public accordionId: number | string) {}\n}\n\nexport class AccordionModel {\n protected strategy = AccordionStrategy.Default;\n protected accordionCount = accordionCount++;\n protected _panels: { [id: string]: AccordionPanelModel } = {};\n\n get panels(): AccordionPanelModel[] {\n return Object.keys(this._panels).map(id => this._panels[id]);\n }\n\n setStrategy(strategy: AccordionStrategy) {\n this.strategy = strategy;\n }\n\n updatePanelOrder(ids: string[]) {\n ids.forEach((id, index) => (this._panels[id].index = index));\n this.removeOldPanels(ids);\n }\n\n addPanel(id: string, open = false) {\n this._panels[id] = new AccordionPanelModel(id, this.accordionCount);\n this._panels[id].open = open;\n }\n\n togglePanel(panelId: string, open?: boolean) {\n const panelIsOpen = this._panels[panelId].open;\n const newOpenState = open !== undefined ? open : !panelIsOpen;\n if (newOpenState && this.strategy === AccordionStrategy.Default) {\n this.closeAllPanels();\n }\n\n this._panels[panelId].open = newOpenState;\n }\n\n disablePanel(panelId: string, disabled: boolean) {\n this._panels[panelId].disabled = disabled;\n }\n\n private closeAllPanels() {\n this.panels.forEach(panel => (this._panels[panel.id].open = false));\n }\n\n private removeOldPanels(ids: string[]) {\n this.panels\n .filter(panel => ids.find(id => id === panel.id) === undefined)\n .forEach(panel => delete this._panels[panel.id]);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { AccordionStrategy } from '../enums/accordion-strategy.enum';\nimport { AccordionModel, AccordionPanelModel } from '../models/accordion.model';\n\n@Injectable()\nexport class AccordionService {\n protected accordion = new AccordionModel();\n protected readonly _panelsChanges = new BehaviorSubject(this.accordion.panels);\n\n getPanelChanges(panelId: string): Observable<AccordionPanelModel> {\n return this._panelsChanges.pipe(map(panels => panels.find(s => s.id === panelId)));\n }\n\n setStrategy(strategy: AccordionStrategy) {\n this.accordion.setStrategy(strategy);\n }\n\n addPanel(panelId: string, open = false) {\n this.accordion.addPanel(panelId, open);\n this.emitUpdatedPanels();\n }\n\n togglePanel(panelId: string, open?: boolean) {\n this.accordion.togglePanel(panelId, open);\n this.emitUpdatedPanels();\n }\n\n disablePanel(panelId: string, disabled?: boolean) {\n this.accordion.disablePanel(panelId, disabled);\n this.emitUpdatedPanels();\n }\n\n updatePanelOrder(ids: string[]) {\n this.accordion.updatePanelOrder(ids);\n this.emitUpdatedPanels();\n }\n\n protected emitUpdatedPanels() {\n this._panelsChanges.next(this.accordion.panels);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n HostBinding,\n Input,\n OnChanges,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { IfExpandService } from '../utils/conditional/if-expanded.service';\nimport { ClrCommonStringsService } from '../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../utils/id-generator/id-generator.service';\nimport { ClrAccordionDescription } from './accordion-description';\nimport { AccordionStatus } from './enums/accordion-status.enum';\nimport { AccordionPanelModel } from './models/accordion.model';\nimport { AccordionService } from './providers/accordion.service';\nimport { panelAnimation } from './utils/animation';\n\n@Component({\n selector: 'clr-accordion-panel',\n templateUrl: './accordion-panel.html',\n host: { '[class.clr-accordion-panel]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: panelAnimation,\n providers: [IfExpandService],\n})\nexport class ClrAccordionPanel implements OnInit, OnChanges {\n @Input('clrAccordionPanelDisabled') @HostBinding('class.clr-accordion-panel-disabled') disabled = false;\n @Input('clrAccordionPanelOpen') panelOpen = false;\n\n @Output('clrAccordionPanelOpenChange') panelOpenChange = new EventEmitter<boolean>();\n\n @ContentChildren(ClrAccordionDescription) accordionDescription: QueryList<ClrAccordionDescription>;\n\n readonly AccordionStatus = AccordionStatus;\n\n isAccordion = true;\n panel: Observable<AccordionPanelModel>;\n\n private _id = uniqueIdFactory();\n private _panelIndex: number;\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private accordionService: AccordionService,\n private ifExpandService: IfExpandService,\n private cdr: ChangeDetectorRef\n ) {}\n\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n }\n\n get panelNumber() {\n return this._panelIndex + 1;\n }\n\n ngOnInit() {\n this.panel = this.accordionService.getPanelChanges(this.id).pipe(tap(panel => this.emitPanelChange(panel)));\n this.accordionService.addPanel(this.id, this.panelOpen);\n this.accordionService.togglePanel(this.id, this.panelOpen);\n this.accordionService.disablePanel(this.id, this.disabled);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (this.panel && changes.panelOpen && changes.panelOpen.currentValue !== changes.panelOpen.previousValue) {\n this.accordionService.togglePanel(this.id, changes.panelOpen.currentValue);\n }\n\n if (this.panel && changes.disabled && changes.disabled.currentValue !== changes.disabled.previousValue) {\n this.accordionService.disablePanel(this.id, changes.disabled.currentValue);\n }\n }\n\n togglePanel() {\n this.accordionService.togglePanel(this.id);\n }\n\n collapsePanelOnAnimationDone(panel: AccordionPanelModel) {\n if (!panel.open) {\n this.ifExpandService.expanded = false;\n }\n }\n\n getPanelStateClasses(panel: AccordionPanelModel) {\n return `clr-accordion-panel-${panel.status} ${panel.open ? 'clr-accordion-panel-open' : ''}`;\n }\n\n getAccordionContentId(id: string) {\n return `clr-accordion-content-${id}'`;\n }\n\n getAccordionHeaderId(id: string) {\n return `clr-accordion-header-${id}`;\n }\n\n private emitPanelChange(panel: AccordionPanelModel) {\n if (panel.index !== this._panelIndex) {\n this._panelIndex = panel.index;\n // The whole chain of updates leading to this line starts in a ngAfterViewInit subscription in accordion.ts,\n // listening for DOM changes. It seems to only fails in tests, but as this is not a frequently called code,\n // I prefer to stay on the safe side and initiate a detection cycle here.\n this.cdr.detectChanges();\n }\n\n if (panel.open !== this.panelOpen) {\n this.panelOpenChange.emit(panel.open);\n /**\n * @Note: this line below is needed because we don't want to use another value to track\n * for changes of the panel. Because we use BehaviorSubject this emit event is trigger on\n * init (that is not needed - there is no change of the original value) - in some cases this\n * lead to duplicate events.\n *\n * To prevent this we try to emit only when the value is changed and keep the value in sync\n * even that is used only into the Initial Lifecycle (ngOnInit).\n */\n this.panelOpen = panel.open;\n }\n\n if (panel.open) {\n this.ifExpandService.expanded = true;\n }\n }\n}\n","<ng-container *ngIf=\"panel | async; let panel\">\n <div [ngClass]=\"getPanelStateClasses(panel)\">\n <div class=\"clr-accordion-header\">\n <button\n type=\"button\"\n class=\"clr-accordion-header-button\"\n (click)=\"togglePanel()\"\n [id]=\"getAccordionHeaderId(panel.templateId)\"\n [disabled]=\"isAccordion && panel.disabled\"\n [attr.aria-disabled]=\"!isAccordion && panel.disabled\"\n [attr.aria-controls]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-expanded]=\"panel.open\"\n [class.clr-accordion-header-has-description]=\"(accordionDescription.changes | async)?.length || accordionDescription.length\"\n #headerButton\n >\n <span class=\"clr-sr-only\">\n <ng-container *ngIf=\"panel.status === AccordionStatus.Error\">{{commonStrings.keys.danger}}</ng-container>\n <ng-container *ngIf=\"panel.status === AccordionStatus.Complete\">{{commonStrings.keys.success}}</ng-container>\n </span>\n <span class=\"clr-accordion-status\">\n <cds-icon shape=\"angle\" direction=\"right\" class=\"clr-accordion-angle\"></cds-icon>\n <span class=\"clr-accordion-number\">{{panelNumber}}.</span>\n <cds-icon status=\"danger\" shape=\"exclamation-circle\" class=\"clr-accordion-error-icon\"></cds-icon>\n <cds-icon status=\"success\" shape=\"check-circle\" class=\"clr-accordion-complete-icon\"></cds-icon>\n </span>\n <ng-content select=\"clr-accordion-title, clr-step-title\"></ng-content>\n <ng-content select=\"clr-accordion-description, clr-step-description\"></ng-content>\n </button>\n </div>\n <div\n @skipInitialRender\n role=\"region\"\n class=\"clr-accordion-content-region\"\n [id]=\"getAccordionContentId(panel.templateId)\"\n [attr.aria-hidden]=\"!panel.open\"\n [attr.aria-labelledby]=\"getAccordionHeaderId(panel.templateId)\"\n >\n <div\n *ngIf=\"panel.open\"\n @toggle\n (@toggle.done)=\"collapsePanelOnAnimationDone(panel)\"\n class=\"clr-accordion-content\"\n >\n <div class=\"clr-accordion-inner-content\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</ng-container>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nimport { ClrAccordionPanel } from './accordion-panel';\nimport { AccordionStrategy } from './enums/accordion-strategy.enum';\nimport { AccordionService } from './providers/accordion.service';\n\n@Component({\n selector: 'clr-accordion',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-accordion]': 'true' },\n providers: [AccordionService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordion implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n @Input('clrAccordionMultiPanel') multiPanel: boolean | string = false;\n @ContentChildren(ClrAccordionPanel) panels: QueryList<ClrAccordionPanel>;\n subscriptions: Subscription[] = [];\n\n constructor(private accordionService: AccordionService) {}\n\n ngOnInit() {\n this.setAccordionStrategy();\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.multiPanel.currentValue !== changes.multiPanel.previousValue) {\n this.setAccordionStrategy();\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(this.listenForDOMChanges());\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private setAccordionStrategy() {\n const strategy = this.multiPanel ? AccordionStrategy.Multi : AccordionStrategy.Default;\n this.accordionService.setStrategy(strategy);\n }\n\n private listenForDOMChanges() {\n return this.panels.changes\n .pipe(startWith(this.panels))\n .subscribe((panels: QueryList<ClrAccordionPanel>) =>\n this.accordionService.updatePanelOrder(panels.toArray().map(p => p.id))\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'clr-accordion-content, clr-step-content',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordionContent {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n selector: 'clr-accordion-title, clr-step-title',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-accordion-title]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrAccordionTitle {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewChecked, Directive } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n/*\n * After a conversation with the Angular core team, it turns out we don't have much of a choice for our\n * declarative API, we need to fight against change detection and its one-way flow. This is\n * currently the least dirty solution to do what we want.\n *\n * Do not modify or even use this class unless you know exactly what you're doing.\n * It has the potential to trigger change detection loops or kill app performances.\n */\n@Directive()\nexport class WillyWonka implements AfterViewChecked {\n disableChocolateCheck = false;\n\n private _chocolate = new Subject<string>();\n\n get chocolate(): Observable<string> {\n return this._chocolate.asObservable();\n }\n\n ngAfterViewChecked() {\n if (!this.disableChocolateCheck) {\n this._chocolate.next();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentChecked, ChangeDetectorRef, Directive, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { WillyWonka } from './willy-wonka';\n\n@Directive()\nexport abstract class OompaLoompa implements AfterContentChecked, OnDestroy {\n private latestFlavor: any;\n private subscription: Subscription;\n\n // FIXME: Request Injector once we move to Angular 4.2+, it'll allow easier refactors\n constructor(cdr: ChangeDetectorRef, willyWonka: WillyWonka) {\n this.subscription = willyWonka.chocolate.subscribe(() => {\n if (this.latestFlavor !== this.flavor) {\n willyWonka.disableChocolateCheck = true;\n cdr.detectChanges();\n willyWonka.disableChocolateCheck = false;\n }\n });\n }\n\n abstract get flavor(): any;\n\n ngAfterContentChecked() {\n this.latestFlavor = this.flavor;\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { WillyWonka } from '../../utils/chocolate/willy-wonka';\n\n@Directive({\n selector: 'clr-accordion',\n})\nexport class AccordionWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../utils/chocolate/oompa-loompa';\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { AccordionWillyWonka } from './accordion-willy-wonka';\n\n@Directive({\n selector: 'clr-accordion-panel',\n})\nexport class AccordionOompaLoompa extends OompaLoompa {\n private expand: IfExpandService;\n\n constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: AccordionWillyWonka, ifExpandService: IfExpandService) {\n if (!willyWonka) {\n throw new Error('clr-accordion-panel should only be used inside of clr-accordion');\n }\n super(cdr, willyWonka);\n this.expand = ifExpandService;\n }\n\n get flavor() {\n return this.expand.expanded;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { angleIcon, checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { ClrAccordion } from './accordion';\nimport { ClrAccordionContent } from './accordion-content';\nimport { ClrAccordionDescription } from './accordion-description';\nimport { ClrAccordionPanel } from './accordion-panel';\nimport { ClrAccordionTitle } from './accordion-title';\nimport { AccordionOompaLoompa } from './chocolate/accordion-oompa-loompa';\nimport { AccordionWillyWonka } from './chocolate/accordion-willy-wonka';\n\nconst declarations = [\n ClrAccordion,\n ClrAccordionPanel,\n ClrAccordionTitle,\n ClrAccordionDescription,\n ClrAccordionContent,\n AccordionOompaLoompa,\n AccordionWillyWonka,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule],\n declarations: [...declarations],\n exports: [...declarations],\n})\nexport class ClrAccordionModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon, exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { FormControl, FormGroup } from '@angular/forms';\n\nexport function triggerAllFormControlValidation(formGroup: FormGroup) {\n Object.keys(formGroup.controls).forEach(field => {\n const control = formGroup.get(field);\n if (control instanceof FormControl) {\n control.markAsTouched();\n control.markAsDirty();\n control.updateValueAndValidity();\n } else if (control instanceof FormGroup) {\n triggerAllFormControlValidation(control);\n }\n });\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AccordionStatus } from '../../enums/accordion-status.enum';\nimport { AccordionModel } from '../../models/accordion.model';\n\nexport class StepperModel extends AccordionModel {\n private stepperModelInitialize = false;\n\n get allPanelsCompleted(): boolean {\n return this.panels.length && this.getNumberOfIncompletePanels() === 0 && this.getNumberOfOpenPanels() === 0;\n }\n\n override addPanel(id: string, open = false) {\n super.addPanel(id, open);\n this._panels[id].disabled = true;\n }\n\n override updatePanelOrder(ids: string[]) {\n super.updatePanelOrder(ids);\n if (this.stepperModelInitialize === false) {\n this.openFirstPanel();\n }\n }\n\n override togglePanel(panelId: string) {\n if (this._panels[panelId].status === AccordionStatus.Complete) {\n this._panels[panelId].open = !this._panels[panelId].open;\n }\n }\n\n navigateToNextPanel(currentPanelId: string, currentPanelValid = true) {\n if (currentPanelValid) {\n this.completePanel(currentPanelId);\n this.openNextPanel(this._panels[currentPanelId].id);\n } else {\n this.setPanelError(currentPanelId);\n }\n }\n\n overrideInitialPanel(panelId: string) {\n this.panels\n .filter(() => this._panels[panelId] !== undefined)\n .forEach(panel => {\n if (panel.index < this._panels[panelId].index) {\n this.completePanel(panel.id);\n } else if (panel.id === panelId) {\n this._panels[panel.id].open = true;\n } else {\n this._panels[panel.id].open = false;\n }\n });\n }\n\n setPanelValid(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Complete;\n }\n\n setPanelInvalid(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Error;\n }\n\n setPanelsWithErrors(ids: string[]) {\n ids.forEach(id => this.setPanelError(id));\n }\n\n resetPanels() {\n /* return stepper to initialize state */\n this.stepperModelInitialize = false;\n this.panels.forEach(p => this.resetPanel(p.id));\n this.openFirstPanel();\n }\n\n getNextPanel(currentPanelId: string) {\n return this.panels.find(s => s.index === this._panels[currentPanelId].index + 1);\n }\n\n private resetAllFuturePanels(panelId: string) {\n this.panels.filter(panel => panel.index >= this._panels[panelId].index).forEach(panel => this.resetPanel(panel.id));\n }\n\n private resetPanel(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Inactive;\n this._panels[panelId].open = false;\n this._panels[panelId].disabled = true;\n }\n\n private openFirstPanel() {\n const firstPanel = this.getFirstPanel();\n /**\n * You need to call updatePanelOrder first to get the correct order,\n * else the list of panels will not have `index` set and we won't know\n * how to find the first panel.\n */\n if (!firstPanel) {\n return;\n }\n\n this._panels[firstPanel.id].open = true;\n this._panels[firstPanel.id].disabled = true;\n this.stepperModelInitialize = true;\n }\n\n private completePanel(panelId: string) {\n this._panels[panelId].status = AccordionStatus.Complete;\n this._panels[panelId].disabled = false;\n this._panels[panelId].open = false;\n }\n\n private openNextPanel(currentPanelId: string) {\n const nextPanel = this.getNextPanel(currentPanelId);\n\n if (nextPanel) {\n this.resetAllFuturePanels(nextPanel.id);\n this._panels[nextPanel.id].open = true;\n this._panels[nextPanel.id].disabled = true;\n }\n }\n\n private setPanelError(panelId: string) {\n this.resetAllFuturePanels(panelId);\n this._panels[panelId].open = true;\n this._panels[panelId].status = AccordionStatus.Error;\n }\n\n private getFirstPanel() {\n return this.panels.find(panel => panel.index === 0);\n }\n\n private getNumberOfIncompletePanels() {\n return this.panels.reduce((prev, next) => (next.status !== AccordionStatus.Complete ? prev + 1 : prev), 0);\n }\n\n private getNumberOfOpenPanels() {\n return this.panels.reduce((prev, next) => (next.open !== false ? prev + 1 : prev), 0);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { distinctUntilChanged, map } from 'rxjs/operators';\n\nimport { AccordionService } from '../../providers/accordion.service';\nimport { StepperModel } from '../models/stepper.model';\n\n@Injectable()\nexport class StepperService extends AccordionService {\n readonly activeStep: Observable<string>;\n readonly panelsCompleted = this.getAllCompletedPanelChanges();\n\n protected override accordion = new StepperModel();\n\n private _activeStepChanges = new Subject<string>();\n\n constructor() {\n super();\n\n this.activeStep = this._activeStepChanges.asObservable();\n }\n\n resetPanels() {\n this.accordion.resetPanels();\n this.emitUpdatedPanels();\n }\n\n setPanelValid(panelId: string) {\n this.accordion.setPanelValid(panelId);\n this.emitUpdatedPanels();\n }\n\n setPanelInvalid(panelId: string) {\n this.accordion.setPanelInvalid(panelId);\n this.emitUpdatedPanels();\n }\n\n setPanelsWithErrors(ids: string[]) {\n this.accordion.setPanelsWithErrors(ids);\n this.emitUpdatedPanels();\n }\n\n navigateToNextPanel(currentPanelId: string, currentPanelValid = true) {\n this.accordion.navigateToNextPanel(currentPanelId, currentPanelValid);\n this.updateNextStep(currentPanelId, currentPanelValid);\n this.emitUpdatedPanels();\n }\n\n overrideInitialPanel(panelId: string) {\n this.accordion.overrideInitialPanel(panelId);\n this.emitUpdatedPanels();\n }\n\n private updateNextStep(currentPanelId: string, currentPanelValid: boolean) {\n const nextPanel = this.accordion.getNextPanel(currentPanelId);\n\n if (currentPanelValid && nextPanel) {\n this._activeStepChanges.next(nextPanel.id);\n } else if (currentPanelValid) {\n this._activeStepChanges.next(currentPanelId);\n }\n }\n\n private getAllCompletedPanelChanges(): Observable<boolean> {\n return this._panelsChanges.pipe(\n map(() => this.accordion.allPanelsCompleted),\n distinctUntilChanged()\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n Inject,\n OnInit,\n Optional,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { FormGroupName, NgModelGroup } from '@angular/forms';\nimport { Subscription } from 'rxjs';\nimport { distinctUntilChanged, filter, skipUntil, tap } from 'rxjs/operators';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { triggerAllFormControlValidation } from '../../utils/forms/validation';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrAccordionPanel } from '../accordion-panel';\nimport { AccordionStatus } from '../enums/accordion-status.enum';\nimport { AccordionPanelModel } from '../models/accordion.model';\nimport { stepAnimation } from '../utils/animation';\nimport { StepperService } from './providers/stepper.service';\n\n@Component({\n selector: 'clr-stepper-panel',\n templateUrl: '../accordion-panel.html',\n host: { '[class.clr-accordion-panel]': 'true' },\n changeDetection: ChangeDetectionStrategy.OnPush,\n animations: stepAnimation,\n providers: [IfExpandService],\n})\nexport class ClrStepperPanel extends ClrAccordionPanel implements OnInit {\n override isAccordion = false;\n\n @ViewChild('headerButton') headerButton: ElementRef;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n public override commonStrings: ClrCommonStringsService,\n @Optional() private formGroupName: FormGroupName,\n @Optional() private ngModelGroup: NgModelGroup,\n private stepperService: StepperService,\n ifExpandService: IfExpandService,\n cdr: ChangeDetectorRef\n ) {\n super(commonStrings, stepperService, ifExpandService, cdr);\n }\n\n override get id(): string {\n return this.formGroupName ? this.formGroupName.name.toString() : this.ngModelGroup.name;\n }\n override set id(_value: string) {\n // overriding parent id required empty setter\n }\n\n get formGroup() {\n return this.formGroupName ? this.formGroupName.control : this.ngModelGroup.control;\n }\n\n override ngOnInit(): void {\n super.ngOnInit();\n this.panel = this.panel.pipe(tap(panel => this.triggerAllFormControlValidationIfError(panel)));\n this.stepperService.disablePanel(this.id, true);\n this.listenToFocusChanges();\n\n // not all stepper panels are guaranteed to have a form (i.e. empty template-driven)\n if (this.formGroup) {\n // set panel status on form status change only after the form becomes invalid\n const invalidStatusTrigger = this.formGroup.statusChanges.pipe(filter(status => status === 'INVALID'));\n\n this.subscriptions.push(\n this.formGroup.statusChanges.pipe(skipUntil(invalidStatusTrigger), distinctUntilChanged()).subscribe(status => {\n if (status === 'VALID') {\n this.stepperService.setPanelValid(this.id);\n } else if (status === 'INVALID') {\n this.stepperService.setPanelInvalid(this.id);\n }\n })\n );\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private listenToFocusChanges() {\n this.subscriptions.push(\n this.stepperService.activeStep\n .pipe(filter(panelId => isPlatformBrowser(this.platformId) && panelId === this.id))\n .subscribe(() => this.headerButton.nativeElement.focus())\n );\n }\n\n private triggerAllFormControlValidationIfError(panel: AccordionPanelModel) {\n if (panel.status === AccordionStatus.Error) {\n triggerAllFormControlValidation(this.formGroup);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostBinding, HostListener, Input, OnInit } from '@angular/core';\n\nimport { StepperService } from './providers/stepper.service';\nimport { ClrStepperPanel } from './stepper-panel';\n\nexport enum ClrStepButtonType {\n Next = 'next',\n Submit = 'submit',\n}\n\n@Directive({\n selector: '[clrStepButton]',\n host: {\n '[class.clr-step-button]': 'true',\n '[class.btn]': 'true',\n '[type]': \"'button'\",\n },\n})\nexport class ClrStepButton implements OnInit {\n @Input('clrStepButton') type: ClrStepButtonType | string = ClrStepButtonType.Next;\n @HostBinding('class.btn-primary') submitButton = false;\n\n constructor(private clrStep: ClrStepperPanel, private stepperService: StepperService) {}\n\n ngOnInit() {\n this.submitButton = this.type === ClrStepButtonType.Submit;\n }\n\n @HostListener('click')\n navigateToNextPanel() {\n this.stepperService.navigateToNextPanel(this.clrStep.id, this.clrStep.formGroup.valid);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ContentChildren,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Optional,\n QueryList,\n SimpleChanges,\n} from '@angular/core';\nimport { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';\nimport { Observable, Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nimport { AccordionService } from '../providers/accordion.service';\nimport { StepperService } from './providers/stepper.service';\nimport { ClrStepperPanel } from './stepper-panel';\n\n@Component({\n selector: 'form[clrStepper]',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.clr-accordion]': 'true',\n '[class.clr-stepper-forms]': 'true',\n },\n providers: [StepperService, { provide: AccordionService, useExisting: StepperService }],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrStepper implements OnInit, OnChanges, AfterViewInit, OnDestroy {\n @Input('clrInitialStep') initialPanel: string;\n @ContentChildren(ClrStepperPanel, { descendants: true }) panels: QueryList<ClrStepperPanel>;\n subscriptions: Subscription[] = [];\n form: FormGroupDirective | NgForm;\n\n constructor(\n @Optional() private formGroup: FormGroupDirective,\n @Optional() private ngForm: NgForm,\n private stepperService: StepperService\n ) {}\n\n ngOnInit() {\n if (!this.formGroup && !this.ngForm) {\n throw new Error('To use stepper a Reactive or Template Form is required.');\n }\n\n this.form = this.formGroup ? this.formGroup : this.ngForm;\n this.subscriptions.push(this.listenForPanelsCompleted());\n this.subscriptions.push(this.listenForFormResetChanges());\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (changes.initialPanel.currentValue !== changes.initialPanel.previousValue) {\n this.stepperService.overrideInitialPanel(this.initialPanel);\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(this.listenForDOMChanges());\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n private listenForFormResetChanges() {\n return fromControlReset(this.form.form).subscribe(() => this.stepperService.resetPanels());\n }\n\n private listenForPanelsCompleted() {\n return this.stepperService.panelsCompleted.subscribe(panelsCompleted => {\n if (panelsCompleted && this.form.valid) {\n this.form.ngSubmit.emit();\n } else if (!this.form.valid && this.form.touched) {\n this.setPanelsWithFormErrors();\n }\n });\n }\n\n private setPanelsWithFormErrors() {\n const panelsWithErrors = this.panels.reduce((panels, p) => (p.formGroup.invalid ? [...panels, p.id] : panels), []);\n this.stepperService.setPanelsWithErrors(panelsWithErrors);\n }\n\n private listenForDOMChanges() {\n return this.panels.changes.pipe(startWith(this.panels)).subscribe((panels: QueryList<ClrStepperPanel>) => {\n this.stepperService.updatePanelOrder(panels.toArray().map(p => p.id));\n\n if (this.initialPanel) {\n this.stepperService.overrideInitialPanel(this.initialPanel);\n }\n });\n }\n}\n\nfunction fromControlReset(control: AbstractControl) {\n return new Observable<void>(observer => {\n const unpatchedControlReset = control.reset;\n\n control.reset = () => {\n observer.next();\n unpatchedControlReset.apply(control);\n };\n\n return () => {\n control.reset = unpatchedControlReset;\n };\n });\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({\n selector: 'form[clrStepper]',\n})\nexport class StepperWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { IfExpandService } from '../../../utils/conditional/if-expanded.service';\nimport { StepperWillyWonka } from './stepper-willy-wonka';\n\n@Directive({\n selector: 'clr-stepper-panel, [clrStepButton]',\n})\nexport class StepperOompaLoompa extends OompaLoompa {\n private expand: IfExpandService;\n\n constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: StepperWillyWonka, ifExpandService: IfExpandService) {\n if (!willyWonka) {\n throw new Error('clr-stepper-panel should only be used inside of clrStepper');\n }\n super(cdr, willyWonka);\n this.expand = ifExpandService;\n }\n\n get flavor() {\n return this.expand.expanded;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrAccordionModule } from '../accordion.module';\nimport { ClrStepButton } from '../stepper/step-button';\nimport { ClrStepper } from '../stepper/stepper';\nimport { StepperOompaLoompa } from './chocolate/stepper-oompa-loompa';\nimport { StepperWillyWonka } from './chocolate/stepper-willy-wonka';\nimport { ClrStepperPanel } from './stepper-panel';\n\nconst declarations = [ClrStepper, ClrStepButton, ClrStepperPanel, StepperOompaLoompa, StepperWillyWonka];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrAccordionModule],\n declarations: [...declarations],\n exports: [...declarations, ClrAccordionModule],\n})\nexport class ClrStepperModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum Keys {\n ArrowLeft = 'ArrowLeft',\n ArrowUp = 'ArrowUp',\n ArrowRight = 'ArrowRight',\n ArrowDown = 'ArrowDown',\n Backspace = 'Backspace',\n Tab = 'Tab',\n Enter = 'Enter',\n Escape = 'Escape',\n Space = 'Space',\n Spacebar = ' ',\n Home = 'Home',\n End = 'End',\n}\n\nexport enum IEKeys {\n ArrowUp = 'Up',\n ArrowDown = 'Down',\n ArrowRight = 'Right',\n ArrowLeft = 'Left',\n Space = 'Spacebar',\n Escape = 'Esc',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { IEKeys, Keys } from '../../enums/keys.enum';\n\nexport function normalizeKey(key: string) {\n if (key === Keys.ArrowUp || key === IEKeys.ArrowUp) {\n return Keys.ArrowUp;\n } else if (key === Keys.ArrowDown || key === IEKeys.ArrowDown) {\n return Keys.ArrowDown;\n } else if (key === Keys.ArrowRight || key === IEKeys.ArrowRight) {\n return Keys.ArrowRight;\n } else if (key === Keys.ArrowLeft || key === IEKeys.ArrowLeft) {\n return Keys.ArrowLeft;\n } else if (key === Keys.Space || key === IEKeys.Space) {\n return Keys.Space;\n } else if (key === Keys.Escape || key === IEKeys.Escape) {\n return Keys.Escape;\n } else {\n return key;\n }\n}\n\nexport function preventArrowKeyScroll(event: KeyboardEvent) {\n const key = normalizeKey(event.key);\n\n if (key === Keys.ArrowUp || key === Keys.ArrowDown || key === Keys.ArrowLeft || key === Keys.ArrowRight) {\n // prevent element container scroll\n // MDN references this is really the only way to prevent native browser interactions\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Keyboard-navigable_JavaScript_widgets\n event.preventDefault();\n }\n}\n\nexport function isKeyEitherLetterOrNumber(event: KeyboardEvent) {\n const char = event.key;\n // Only letter characters differ when they switch between lowercase and uppercase, whether it's an English or non-English letter.\n return char.toLowerCase() !== char.toUpperCase() || (char >= '0' && char <= '9');\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { preventArrowKeyScroll } from '../../focus/key-focus/util';\n\n// Popovers might need to ignore click events on an element\n// (eg: popover opens on focus on an input field. Clicks should be ignored in this case)\n\n@Injectable()\nexport class ClrPopoverToggleService {\n private _open = false;\n private _openChange = new Subject<boolean>();\n private _openEvent: Event;\n private _openEventChange = new Subject<Event>();\n private _popoverAligned = new Subject<HTMLElement>();\n private _popoverVisible = new Subject<boolean>();\n\n get openChange(): Observable<boolean> {\n return this._openChange.asObservable();\n }\n\n get popoverVisible(): Observable<boolean> {\n return this._popoverVisible.asObservable();\n }\n\n get openEvent(): Event {\n return this._openEvent;\n }\n set openEvent(event: Event) {\n this._openEvent = event;\n this._openEventChange.next(event);\n }\n\n get open(): boolean {\n return this._open;\n }\n set open(value: boolean) {\n value = !!value;\n if (this._open !== value) {\n this._open = value;\n this._openChange.next(value);\n }\n }\n\n // For compatibility with legacy IfOpenService based implementations\n get originalEvent(): Event {\n return this._openEvent;\n }\n\n get popoverAligned(): Observable<HTMLElement> {\n return this._popoverAligned.asObservable();\n }\n\n getEventChange(): Observable<Event> {\n return this._openEventChange.asObservable();\n }\n\n /**\n * Sometimes, we need to remember the event that triggered the toggling to avoid loops.\n * This is for instance the case of components that open on a click, but close on a click outside.\n */\n toggleWithEvent(event: any) {\n preventArrowKeyScroll(event);\n\n this.openEvent = event;\n this.open = !this.open;\n }\n\n popoverVisibleEmit(visible: boolean) {\n this._popoverVisible.next(visible);\n }\n\n popoverAlignedEmit(popoverNode: HTMLElement) {\n this._popoverAligned.next(popoverNode);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { ElementRef, Inject, Injectable, OnDestroy, Renderer2 } from '@angular/core';\nimport { fromEvent, Observable, Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrPopoverToggleService } from './popover-toggle.service';\n\n// https://github.com/angular/angular/issues/20351#issuecomment-344009887\n/** @dynamic */\n@Injectable()\nexport class ClrPopoverEventsService implements OnDestroy {\n outsideClickClose = true;\n scrollToClose = true;\n ignoredEvent: any;\n anchorButtonRef: ElementRef;\n closeButtonRef: ElementRef;\n contentRef: ElementRef;\n\n private documentClickListener: () => void;\n private escapeListener: () => void;\n private scrollSubscription: Subscription;\n private subscriptions: Subscription[] = [];\n private documentScroller: Observable<Event>;\n\n constructor(\n private renderer: Renderer2,\n private smartOpenService: ClrPopoverToggleService,\n @Inject(DOCUMENT) private document: HTMLDocument\n ) {\n this.subscriptions.push(\n smartOpenService.openChange.subscribe(open => {\n if (open) {\n this.addEscapeListener();\n this.addClickListener();\n this.addScrollListener();\n } else {\n this.removeAllEventListeners();\n }\n }),\n smartOpenService.getEventChange().subscribe(event => {\n // Remember the event that was used to open the content\n this.ignoredEvent = event;\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.removeAllEventListeners();\n }\n\n addScrollListener() {\n if (this.scrollToClose) {\n this.documentScroller = fromEvent(this.document, 'scroll', { capture: true });\n this.scrollSubscription = this.documentScroller\n .pipe(filter(this.testForSmartPopoverContentContainer))\n .subscribe(() => {\n this.smartOpenService.open = false;\n this.setAnchorFocus();\n });\n } else {\n // I think this is where dynamic re-positioning will be added\n // Instead of testing like we do in the close pipe below\n // we need to switch positioning to use an observable and then\n // debounce the scroll events to recalculate content position in a performant way\n // For now, ignore scrolling events.\n return;\n }\n }\n\n removeScrollListener() {\n if (this.documentScroller) {\n this.scrollSubscription.unsubscribe();\n delete this.documentScroller;\n }\n }\n\n addClickListener() {\n if (this.outsideClickClose) {\n this.documentClickListener = this.renderer.listen(this.document, 'click', (event: MouseEvent) => {\n if (event === this.ignoredEvent) {\n // Here we ignore the opening click event (w/o this content opens and immediately closes.\n delete this.ignoredEvent;\n } else {\n this.smartOpenService.open = false;\n // Rather than a complex change to the focus trap I put focus on the element that was clicked\n const clickedElement = event.target as HTMLElement;\n clickedElement.focus();\n }\n });\n }\n }\n\n removeClickListener() {\n if (this.outsideClickClose) {\n delete this.ignoredEvent;\n if (this.documentClickListener) {\n this.documentClickListener();\n delete this.documentClickListener;\n }\n }\n }\n\n addEscapeListener() {\n this.escapeListener = this.renderer.listen(this.document, 'keydown.escape', () => {\n this.smartOpenService.open = false;\n this.setAnchorFocus();\n });\n }\n\n removeEscapeListener() {\n if (this.escapeListener) {\n this.escapeListener();\n delete this.escapeListener;\n }\n }\n\n setCloseFocus(): void {\n this.closeButtonRef.nativeElement.focus();\n }\n\n setAnchorFocus(): void {\n this.anchorButtonRef.nativeElement.focus();\n }\n\n private testForSmartPopoverContentContainer(event: Event): boolean {\n // Filter for the documentScroller observable event targets\n let target = event.target as HTMLElement;\n\n // Walk up the DOM tree until we get to the element that is a direct child of the body.\n while (target.classList && target.parentElement.localName !== 'body') {\n target = target.parentElement;\n }\n\n // Target is the child element of body where the scroll events originated.\n // Return false and prevent the popover content container from closing for any scroll events inside a popover\n // content container.\n if (target.classList) {\n // check scroll events to see if they are happening in popover content or elsewhere\n return target.classList.contains('clr-popover-content') ? false : true;\n } else {\n // prevents it from closing right after first opening\n return false;\n }\n }\n\n private removeAllEventListeners() {\n this.removeScrollListener();\n this.removeClickListener();\n this.removeEscapeListener();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef } from '@angular/core';\n\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\n\n@Directive({\n selector: '[clrPopoverAnchor]',\n host: {\n '[class.clr-anchor]': 'true',\n },\n})\nexport class ClrPopoverAnchor {\n constructor(smartEventService: ClrPopoverEventsService, element: ElementRef) {\n smartEventService.anchorButtonRef = element;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Directive, ElementRef, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n@Directive({\n selector: '[clrPopoverCloseButton]',\n host: {\n '[class.clr-smart-close-button]': 'true',\n },\n})\nexport class ClrPopoverCloseButton implements OnDestroy, AfterViewInit {\n @Output('clrPopoverOnCloseChange') closeChange = new EventEmitter<void>();\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private elementRef: ElementRef,\n private smartEventsService: ClrPopoverEventsService,\n private smartOpenService: ClrPopoverToggleService\n ) {\n this.subscriptions.push(\n smartOpenService.openChange.pipe(filter(value => !value)).subscribe(() => {\n this.closeChange.next();\n })\n );\n }\n\n @HostListener('click', ['$event'])\n handleClick(event: MouseEvent) {\n this.smartOpenService.toggleWithEvent(event);\n this.smartEventsService.setAnchorFocus();\n }\n\n ngAfterViewInit() {\n this.smartEventsService.closeButtonRef = this.elementRef;\n this.smartEventsService.setCloseFocus();\n }\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrAxis {\n VERTICAL,\n HORIZONTAL,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrAlignment {\n START = 0,\n CENTER = 0.5,\n END = 1,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrViewportViolation {\n BOTTOM = 0,\n LEFT = 1,\n RIGHT = 2,\n TOP = 3,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrAlignment } from './enums/alignment.enum';\nimport { ClrViewportViolation } from './enums/viewport-violation.enum';\nimport { ClrPopoverContentOffset } from './interfaces/popover-content-offset.interface';\nimport { ClrPopoverPosition } from './interfaces/popover-position.interface';\nimport { ClrVisibilityCoords } from './interfaces/visibility-coords.interface';\n\n// Put the forward arg here but it is only needed when nudging content or anchors.\nexport type ClrTransform = (position: ClrPopoverPosition, back?: boolean) => ClrPopoverPosition;\n\nexport const flipSides: ClrTransform = position => {\n return {\n ...position,\n side: -1 * position.side,\n };\n};\n\n// This could be used in more advanced positioning algorithms.\n// flipAxisFlipSideAndNudgeContent(flipAxis, flipSide, nudge, nudgeForward?): ClrTransform {...}\n// I would like to keep it for now.\nexport const flipAxis: ClrTransform = position => {\n return {\n ...position,\n axis: position.axis === 0 ? 1 : 0,\n };\n};\n\nexport const nudgeContent: ClrTransform = (position, forward) => {\n const nextAlignment = position.content + (forward ? 0.5 : -0.5);\n if (nextAlignment < 0 || nextAlignment > 1) {\n return position;\n } else {\n return {\n ...position,\n content: nextAlignment,\n };\n }\n};\n\nexport function flipSidesAndNudgeContent(flip: ClrTransform, nudge: ClrTransform, nudgeBack?: boolean): ClrTransform {\n return (position: ClrPopoverPosition): ClrPopoverPosition => nudge(flip(position), nudgeBack);\n}\n\nexport function align(position: ClrPopoverPosition, anchor: ClientRect, content: ClientRect): ClrPopoverContentOffset {\n let xDiff = anchor.left;\n let yDiff = anchor.top;\n\n // When ClrAxis is VERTICAL BEFORE = left, AFTER = right\n // When ClrAxis is HORIZONTAL BEFORE is top, AFTER is bottom\n switch (position.axis + position.side) {\n case -1: {\n // ClrAxis.VERTICAL + ClrSide.BEFORE\n xDiff += alignHorizontal(position, anchor, content);\n yDiff -= content.height; // pull content up to the top of the anchor\n break;\n }\n case 1: {\n // ClrAxis.VERTICAL + ClrSide.AFTER\n xDiff += alignHorizontal(position, anchor, content);\n yDiff += anchor.height; // push the content down to below the anchor\n break;\n }\n case 0: {\n // ClrAxis.HORIZONTAL + ClrSide.BEFORE\n xDiff -= content.width; // pull the content left of the anchor\n yDiff += alignVertical(position, anchor, content);\n break;\n }\n case 2: {\n // ClrAxis.HORIZONTAL + ClrSide.AFTER\n xDiff += anchor.width; // push the content right of of the anchor\n yDiff += alignVertical(position, anchor, content);\n break;\n }\n default: {\n break;\n }\n }\n return { xOffset: xDiff, yOffset: yDiff };\n}\n\nfunction alignHorizontal(position: ClrPopoverPosition, anchor: ClientRect, content: ClientRect): number {\n let horizontalOffset = 0;\n // horizontal offset for the anchor position\n switch (position.anchor /*calculate for the anchor alignment*/) {\n case ClrAlignment.START: {\n // nothing to calculate here\n break;\n }\n case ClrAlignment.CENTER: {\n horizontalOffset += anchor.width / 2; // push content over 1/2 anchor width\n break;\n }\n case ClrAlignment.END: {\n horizontalOffset += anchor.width; // push content over width of the anchor\n break;\n }\n default: {\n break;\n }\n }\n\n // horizontal offsets for anchor alignment\n switch (\n position.content // calculate for the content alignment\n ) {\n case ClrAlignment.START: {\n // Nothing to calculate here\n break;\n }\n case ClrAlignment.CENTER: {\n horizontalOffset -= content.width / 2; // pull content left by a value of 1/2 content width\n break;\n }\n case ClrAlignment.END: {\n // subtract the width of currentContent from horizontalOffset to pull it back\n horizontalOffset -= content.width;\n break;\n }\n default: {\n break;\n }\n }\n\n return horizontalOffset;\n}\n\nfunction alignVertical(position: ClrPopoverPosition, anchor: ClientRect, content: ClientRect): number {\n // y axis offsets for anchor alignment\n let verticalOffset = 0;\n\n // Calculate y offset for anchor position\n switch (position.anchor) {\n case ClrAlignment.START: {\n // nothing to calculate here\n break;\n }\n case ClrAlignment.CENTER: {\n verticalOffset += anchor.height / 2; // push content down to the middle of the anchor rect\n break;\n }\n case ClrAlignment.END: {\n verticalOffset += anchor.height; // push content down to the bottom of the anchor\n break;\n }\n default: {\n break;\n }\n }\n\n // Calculate y offsets for content alignment\n switch (position.content) {\n case ClrAlignment.START: {\n // aligned to the top of the content rect\n break;\n }\n case ClrAlignment.CENTER: {\n verticalOffset -= content.height / 2; // pull content back up to the middle of the content rect\n break;\n }\n case ClrAlignment.END: {\n verticalOffset -= content.height; // pull content back up to the bottom of the content rect\n break;\n }\n default: {\n break;\n }\n }\n return verticalOffset;\n}\n\nexport function testVisibility(offset: ClrPopoverContentOffset, content: ClientRect): ClrViewportViolation[] {\n const violations: ClrViewportViolation[] = [];\n const mockCoords: ClrVisibilityCoords = {\n bottom: offset.yOffset + content.height,\n left: offset.xOffset,\n right: offset.xOffset + content.width,\n top: offset.yOffset,\n };\n\n if (!(mockCoords.top >= 0)) {\n violations.push(ClrViewportViolation.TOP);\n }\n if (!(mockCoords.left >= 0)) {\n violations.push(ClrViewportViolation.LEFT);\n }\n if (!(mockCoords.bottom <= (window.innerHeight || document.documentElement.clientHeight))) {\n violations.push(ClrViewportViolation.BOTTOM);\n }\n if (!(mockCoords.right <= (window.innerWidth || document.documentElement.clientWidth))) {\n violations.push(ClrViewportViolation.RIGHT);\n }\n\n return violations;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrAxis } from '../enums/axis.enum';\nimport { ClrViewportViolation } from '../enums/viewport-violation.enum';\nimport { ClrPopoverContentOffset } from '../interfaces/popover-content-offset.interface';\nimport { ClrPopoverPosition } from '../interfaces/popover-position.interface';\nimport { align, flipSides, flipSidesAndNudgeContent, nudgeContent, testVisibility } from '../position-operators';\nimport { ClrPopoverEventsService } from './popover-events.service';\n\n@Injectable()\nexport class ClrPopoverPositionService {\n position: ClrPopoverPosition;\n shouldRealign: Observable<void>;\n\n private currentAnchorCoords: ClientRect;\n private currentContentCoords: ClientRect;\n private contentOffsets: ClrPopoverContentOffset;\n private _shouldRealign = new Subject<void>();\n\n constructor(private eventService: ClrPopoverEventsService, @Inject(PLATFORM_ID) public platformId: any) {\n this.shouldRealign = this._shouldRealign.asObservable();\n }\n\n realign() {\n this._shouldRealign.next();\n }\n\n alignContent(content: HTMLElement): ClrPopoverContentOffset {\n if (!isPlatformBrowser(this.platformId)) {\n // Only position when in a browser.\n // Default to the browser origin and prevent getBoundingClientRect from running.\n return {\n xOffset: 0,\n yOffset: 0,\n };\n }\n\n this.currentAnchorCoords = this.eventService.anchorButtonRef.nativeElement.getBoundingClientRect();\n this.currentContentCoords = content.getBoundingClientRect();\n this.contentOffsets = align(this.position, this.currentAnchorCoords, this.currentContentCoords);\n\n const visibilityViolations: ClrViewportViolation[] = testVisibility(this.contentOffsets, this.currentContentCoords);\n /**\n * Calculate the sum of viewport errors. This calculation is used below with the provided Axis in the given\n * ClrPopoverPosition. Its worth putting the ClrViewportViolation enum values here:\n *\n * BOTTOM = 0,\n * LEFT = 1,\n * RIGHT = 2,\n * TOP = 3,\n *\n * So, this.visibilityViolations.length tells us how many sides of the viewport that the popover content was\n * clipped on. We can only help when the content has an issue on one or two sides.\n * errorSum is calculated to determine _how_ to change the position. Looking at both the axis and the number\n * of violations I can use the errorSum to determine how to transform the position (on the fly) and adjust\n * where it can be improved.\n *\n * Note, more than 3 viewport violations and there isn't anything we can do to help. Also when there are two\n * violations, we can't help if the violations are TOP+BOTTOM || LEFT+RIGHT => There is no transformation we\n * can make to the position that will help.\n *\n * Some examples:\n * There is only one error and Primary axis is VERTICAL\n * - this.handleVerticalAxisOneViolation has a switch that will use the error sum to apply the correct\n * transform to the position based on the reduction of visibilityViolations.\n *\n * There are two errors and Primary axis is HORIZONTAL\n * - handleHorizontalAxisTwoViolations has a switch that uses the error sum to apply both transforms needed to\n * improve the content position based on the reduction of visibilityViolations.\n */\n\n const errorSum = visibilityViolations.reduce((count, current) => {\n return count + current;\n }, 0);\n\n if (visibilityViolations.length === 1 && this.position.axis === ClrAxis.VERTICAL) {\n // When primary axis is VERTICAL and there is one viewport violation\n this.handleVerticalAxisOneViolation(errorSum);\n } else if (visibilityViolations.length === 1 && this.position.axis === ClrAxis.HORIZONTAL) {\n // When primary axis is HORIZONTAL and there is one viewport violation\n this.handleHorizontalAxisOneViolation(errorSum);\n } else if (visibilityViolations.length === 2 && this.position.axis === ClrAxis.VERTICAL) {\n // When primary axis is VERTICAL and there are two viewport violations\n this.handleVerticalAxisTwoViolations(errorSum);\n } else if (visibilityViolations.length === 2 && this.position.axis === ClrAxis.HORIZONTAL) {\n // When primary axis is HORIZONTAL and there are two viewport violations\n this.handleHorizontalAxisTwoViolations(errorSum);\n }\n\n /**\n * Adjusts popover position based on scroll value by adding the negative 'top' value of currentContentCoords to yOffset for proper alignment.\n * - The negative value means that the 'top' of the content is scrolled out of view at the top of the viewport.\n */\n if (this.currentContentCoords.top < 0) {\n this.contentOffsets.yOffset += Math.abs(this.currentContentCoords.top);\n }\n\n /**\n * This detects the condition where the popover is flipped because it would violate the bottom of the viewport, but flipping it results in the\n * popover rendering above the top of the body (y coordinate outside the body). In that event, it should be rendered within the body\n * as much as possible, so this logic sets the top of popover to render touching the top of the body.\n */\n if (this.contentOffsets.yOffset + this.currentAnchorCoords.y < 0) {\n this.contentOffsets.yOffset = 0 - this.currentContentCoords.top;\n }\n\n return this.contentOffsets;\n }\n\n private handleVerticalAxisOneViolation(errorSum: number): void {\n switch (errorSum) {\n case 0:\n case 3: {\n // BOTTOM(0) or TOP(3) are primary violations and we can just flip sides\n this.contentOffsets = align(flipSides(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n case 1: {\n // LEFT(1) is secondary and needs to nudge content right\n this.contentOffsets = align(this.position, this.currentAnchorCoords, this.currentContentCoords);\n\n /**\n * Even with the nudge we still have a problem. We need to check if the content is going to be clipped\n */\n if (this.contentOffsets.xOffset < 0) {\n this.contentOffsets.xOffset = 10;\n }\n\n break;\n }\n case 2: {\n // RIGHT(2) is secondary and needs to nudge content left\n this.contentOffsets = align(\n nudgeContent(this.position, true),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private handleVerticalAxisTwoViolations(errorSum: number): void {\n switch (errorSum) {\n // We know there are two violations. We can use the errorSum to determine which combination of sides were\n // violated and handle appropriately.\n case 5: {\n // TOP(3)+RIGHT(2) is case 5. We need to flip sides and nudge the content to the left\n const flipAndNudgeLeft = flipSidesAndNudgeContent(flipSides, nudgeContent, true);\n this.contentOffsets = align(\n flipAndNudgeLeft(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 4: {\n //TOP(3)+LEFT(1) is case 4, we need to flip sides and nudge content to the right\n const flipAndNudgeRight = flipSidesAndNudgeContent(flipSides, nudgeContent, false);\n this.contentOffsets = align(\n flipAndNudgeRight(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 3: {\n // TOP(3)+BOTTOM(0) || left(1)+RIGHT(2) is case 3. There is nothing we can do position wise to improve the\n // placement for this content.\n break;\n }\n case 2: {\n // BOTTOM(0)+RIGHT(2) is case 2. We need to flip sides and nudge the content to the left\n const flipAndNudgeLeft = flipSidesAndNudgeContent(flipSides, nudgeContent, true);\n this.contentOffsets = align(\n flipAndNudgeLeft(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 1: {\n // BOTTOM(0)+LEFT(1) is case 1. We need to flip sides and nudge to the right\n const flipAndNudgeRight = flipSidesAndNudgeContent(flipSides, nudgeContent, false);\n this.contentOffsets = align(\n flipAndNudgeRight(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private handleHorizontalAxisOneViolation(errorSum: number): void {\n switch (errorSum) {\n case 1:\n case 2: {\n // LEFT(1) and RIGHT(2) are primary violations so we can flip sides\n this.contentOffsets = align(flipSides(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n case 0: {\n // BOTTOM(0) is a secondary violation and we need to nudge content up\n this.contentOffsets = align(\n nudgeContent(this.position, true),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 3: {\n // TOP(3) is a secondary violation and we need to nudge content down\n this.contentOffsets = align(nudgeContent(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n default: {\n break;\n }\n }\n }\n\n private handleHorizontalAxisTwoViolations(errorSum: number): void {\n switch (errorSum) {\n case 5:\n case 4: {\n // TOP(3)+LEFT(1) is case 4.\n // TOP(3)+RIGHT(2) is case 5.\n // In both of these cases we need to flip sides and nudge content down\n const flipAndNudgeDown = flipSidesAndNudgeContent(flipSides, nudgeContent, false);\n this.contentOffsets = align(\n flipAndNudgeDown(this.position),\n this.currentAnchorCoords,\n this.currentContentCoords\n );\n break;\n }\n case 3: {\n // TOP(3)+BOTTOM(0) || left(1)+RIGHT(2) is case 3. There is nothing we can do position wise to improve the\n // placement for this content.\n break;\n }\n case 2:\n case 1: {\n // BOTTOM(0)+RIGHT(2) is case 2.\n // BOTTOM(0)+LEFT(1) is case 1.\n // In both cases we need to flip sides and nudge content up\n const flipAndNudgeUp = flipSidesAndNudgeContent(flipSides, nudgeContent, true);\n this.contentOffsets = align(flipAndNudgeUp(this.position), this.currentAnchorCoords, this.currentContentCoords);\n break;\n }\n default: {\n break;\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentChecked,\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { ClrPopoverPosition } from './interfaces/popover-position.interface';\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverPositionService } from './providers/popover-position.service';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n// https://github.com/angular/angular/issues/20351#issuecomment-344009887\n/** @dynamic */\n@Directive({\n selector: '[clrPopoverContent]',\n})\nexport class ClrPopoverContent implements AfterContentChecked, OnDestroy {\n private view: EmbeddedViewRef<void>;\n private subscriptions: Subscription[] = [];\n private removeClickListenerFn: VoidFunction | null = null;\n\n private shouldRealign = false;\n\n // Check-collector pattern:\n // In order to get accurate content height/width values, we cannot calculate alignment offsets until\n // after the projected content has stabilized.\n // As multiple check events may happen in the same rendering cycle, we need to collect all events\n // and only act after the content is really stable. Or we may get wrong intermediate positioning values.\n // We will channel subsequent content check events through this observable.\n private checkCollector = new EventEmitter<void>();\n\n constructor(\n @Inject(DOCUMENT) private document: Document,\n private container: ViewContainerRef,\n private template: TemplateRef<any>,\n private renderer: Renderer2,\n private smartPositionService: ClrPopoverPositionService,\n private smartEventsService: ClrPopoverEventsService,\n private smartOpenService: ClrPopoverToggleService\n ) {}\n\n @Input('clrPopoverContent')\n set open(value: boolean) {\n this.smartOpenService.open = !!value;\n }\n\n @Input('clrPopoverContentAt')\n set contentAt(position: ClrPopoverPosition) {\n this.smartPositionService.position = position;\n }\n\n @Input('clrPopoverContentOutsideClickToClose')\n set outsideClickClose(clickToClose: boolean) {\n this.smartEventsService.outsideClickClose = !!clickToClose;\n }\n\n @Input('clrPopoverContentScrollToClose')\n set scrollToClose(scrollToClose: boolean) {\n this.smartEventsService.scrollToClose = !!scrollToClose;\n }\n\n ngAfterContentChecked(): void {\n if (this.smartOpenService.open && this.view && this.shouldRealign) {\n // Channel content-check event through the check-collector\n this.checkCollector.emit();\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.smartOpenService.openChange.subscribe(change => {\n if (change) {\n this.addContent();\n } else {\n this.removeContent();\n }\n }),\n this.smartPositionService.shouldRealign.subscribe(() => {\n this.shouldRealign = true;\n }),\n // Here we collect subsequent synchronously received content-check events and only take action\n // at the end of the cycle. See below for details on the check-collector pattern.\n this.checkCollector.pipe(debounceTime(0)).subscribe(() => {\n this.alignContent();\n this.shouldRealign = false;\n if (this.view) {\n this.renderer.setStyle(this.view.rootNodes[0], 'opacity', '1');\n this.smartOpenService.popoverVisibleEmit(true);\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.removeContent();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n /**\n * TODO(matt): investigate why DebugElement retains a reference to the nodes and causes a memory leak.\n * A note about the use of appendChild/removeChild\n * The DebugElement is keeping a reference to the detached node and its unclear why.\n * This does warrant further investigation. But, since it doesn't happen in production mode\n * it is a low priority issue for now.\n */\n private addContent() {\n // Create the view container\n this.view = this.container.createEmbeddedView(this.template);\n const [rootNode] = this.view.rootNodes;\n this.smartEventsService.contentRef = rootNode; // So we know where/what to set close focus on\n this.renderer.addClass(rootNode, 'clr-popover-content');\n // Reset to the begining of the document to be available for sizing/positioning calculations.\n // If we add new content to the bottom it triggers changes in the layout that may lead to false anchor\n // coordinates values.\n this.renderer.setStyle(rootNode, 'top', '0px');\n this.renderer.setStyle(rootNode, 'left', '0px');\n // We need to hide it during the calculation phase, while it's not yet finally positioned.\n this.renderer.setStyle(rootNode, 'opacity', '0');\n this.removeClickListenerFn = this.renderer.listen(rootNode, 'click', event => {\n this.smartOpenService.openEvent = event;\n });\n this.view.rootNodes.forEach(node => {\n this.renderer.appendChild(this.document.body, node);\n });\n // Mark for realingment on the next content-check cycle.\n this.shouldRealign = true;\n }\n\n private removeContent(): void {\n if (!this.view) {\n return;\n }\n if (this.removeClickListenerFn) {\n this.removeClickListenerFn();\n this.removeClickListenerFn = null;\n }\n this.view.rootNodes.forEach(node => this.renderer.removeChild(this.document.body, node));\n this.container.clear();\n delete this.view;\n this.smartOpenService.popoverVisibleEmit(false);\n }\n\n private alignContent() {\n if (!this.view) {\n return;\n }\n\n const positionCoords = this.smartPositionService.alignContent(this.view.rootNodes[0]);\n this.renderer.setStyle(this.view.rootNodes[0], 'top', `${positionCoords.yOffset}px`);\n this.renderer.setStyle(this.view.rootNodes[0], 'left', `${positionCoords.xOffset}px`);\n this.smartOpenService.popoverAlignedEmit(this.view.rootNodes[0]);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, HostListener, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n@Directive({\n selector: '[clrPopoverOpenCloseButton]',\n host: {\n '[class.clr-smart-open-close]': 'true',\n },\n})\nexport class ClrPopoverOpenCloseButton implements OnDestroy {\n @Output('clrPopoverOpenCloseChange') openCloseChange = new EventEmitter<boolean>();\n\n private subscriptions: Subscription[] = [];\n\n constructor(private smartOpenService: ClrPopoverToggleService) {\n this.subscriptions.push(\n this.smartOpenService.openChange.subscribe(change => {\n this.openCloseChange.next(change);\n })\n );\n }\n\n @HostListener('click', ['$event'])\n handleClick(event: MouseEvent) {\n this.smartOpenService.toggleWithEvent(event);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { ClrPopoverAnchor } from './popover-anchor';\nimport { ClrPopoverCloseButton } from './popover-close-button';\nimport { ClrPopoverContent } from './popover-content';\nimport { ClrPopoverOpenCloseButton } from './popover-open-close-button';\n\n@NgModule({\n imports: [],\n declarations: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent],\n exports: [ClrPopoverAnchor, ClrPopoverCloseButton, ClrPopoverOpenCloseButton, ClrPopoverContent],\n})\nexport class ClrPopoverModuleNext {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrButton } from '../button-group/button';\n\n@Injectable()\nexport class ButtonInGroupService {\n private _changes = new Subject<ClrButton>();\n\n get changes(): Observable<ClrButton> {\n return this._changes.asObservable();\n }\n\n updateButtonGroup(button: ClrButton): void {\n this._changes.next(button);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Optional, Output, SkipSelf, TemplateRef, ViewChild } from '@angular/core';\n\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\n\n@Component({\n selector: 'clr-button',\n template: `\n <ng-template #buttonProjectedRef>\n <button\n [class]=\"classNames\"\n (click)=\"emitClick()\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.disabled]=\"disabled\"\n [attr.role]=\"role\"\n [attr.id]=\"id\"\n >\n <span class=\"spinner spinner-inline\" *ngIf=\"loading\"></span>\n <ng-content></ng-content>\n </button>\n </ng-template>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrButton }],\n})\nexport class ClrButton implements LoadingListener {\n @Output('click') _click = new EventEmitter<boolean>(false);\n\n @ViewChild('buttonProjectedRef', { static: true }) templateRef: TemplateRef<ClrButton>;\n\n loading: boolean;\n\n private _inMenu = false;\n private _enableService = false;\n private _classNames = 'btn';\n private _name: string = null;\n private _type: string = null;\n private _disabled: any = null;\n private _id: string = uniqueIdFactory();\n\n constructor(\n @SkipSelf()\n @Optional()\n public buttonInGroupService: ButtonInGroupService\n ) {}\n\n @Input('clrInMenu')\n get inMenu(): boolean {\n return this._inMenu;\n }\n set inMenu(value: boolean) {\n value = !!value;\n if (this._inMenu !== value) {\n this._inMenu = value;\n // We check if the service flag is enabled\n // and if the service exists because the service is optional\n if (this._enableService && this.buttonInGroupService) {\n this.buttonInGroupService.updateButtonGroup(this);\n }\n }\n }\n\n @Input('class')\n get classNames(): string {\n return this._classNames;\n }\n set classNames(value: string) {\n if (typeof value === 'string') {\n const classNames: string[] = value.split(' ');\n if (classNames.indexOf('btn') === -1) {\n classNames.push('btn');\n }\n this._classNames = classNames.join(' ');\n }\n }\n\n @Input('name')\n get name(): string {\n return this._name;\n }\n set name(value: string) {\n if (typeof value === 'string') {\n this._name = value;\n }\n }\n\n @Input('type')\n get type(): string {\n return this._type;\n }\n set type(value: string) {\n if (typeof value === 'string') {\n this._type = value;\n }\n }\n\n @Input('id')\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n if (typeof value === 'string') {\n this._id = value;\n }\n }\n\n @Input('disabled')\n get disabled(): any {\n return this._disabled;\n }\n set disabled(value: any) {\n if (value !== null && value !== false) {\n this._disabled = '';\n } else {\n this._disabled = null;\n }\n }\n\n get role(): string {\n return this.inMenu ? 'menuitem' : null;\n }\n\n ngAfterViewInit() {\n this._enableService = true;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n\n emitClick(): void {\n this._click.emit(true);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n/**\n * @description\n *\n * Developers should explicitly add this service to providers; it then can be injected\n * into a constructor and used as a notifier for the `takeUntil` operator. This eliminates\n * the need for boilerplates with subscriptions, and we don't need to implement the `OnDestroy`\n * interface and teardown subscriptions there.\n *\n * This can be used as follows:\n * ```ts\n * @Component({\n * selector: 'clr-button-group',\n * templateUrl: 'button-group.html',\n * providers: [ClrDestroyService],\n * })\n * export class ClrButtonGroup {\n * constructor(public buttonGroupNewService: ButtonInGroupService, private destroy$: ClrDestroyService) {}\n *\n * ngAfterContentInit() {\n * this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));\n * }\n * }\n * ```\n */\n@Injectable()\nexport class ClrDestroyService extends Subject<void> implements OnDestroy {\n ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ArrowKeyDirection {\n UP = 'up',\n DOWN = 'down',\n LEFT = 'left',\n RIGHT = 'right',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Optional, Renderer2, SkipSelf } from '@angular/core';\nimport { isObservable, of } from 'rxjs';\n\nimport { ArrowKeyDirection } from './arrow-key-direction.enum';\nimport { FocusableItem } from './focusable-item/focusable-item';\n\n@Injectable()\nexport class FocusService {\n private _current: FocusableItem;\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(private renderer: Renderer2) {}\n\n get current() {\n return this._current;\n }\n\n reset(first: FocusableItem) {\n this._current = first;\n }\n\n listenToArrowKeys(el: HTMLElement) {\n // The following listeners return false when there was an action to take for the key pressed,\n // in order to prevent the default behavior of that key.\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowup', () => !this.move(ArrowKeyDirection.UP)));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowdown', () => !this.move(ArrowKeyDirection.DOWN)));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowleft', () => !this.move(ArrowKeyDirection.LEFT)));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.arrowright', () => !this.move(ArrowKeyDirection.RIGHT)));\n }\n\n registerContainer(el: HTMLElement, tabIndex = '0') {\n this.renderer.setAttribute(el, 'tabindex', tabIndex);\n this.listenToArrowKeys(el);\n // The following listeners return false when there was an action to take for the key pressed,\n // in order to prevent the default behavior of that key.\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.space', () => !this.activateCurrent()));\n this._unlistenFuncs.push(this.renderer.listen(el, 'keydown.enter', () => !this.activateCurrent()));\n }\n\n moveTo(item: FocusableItem) {\n /**\n * Make sure that item is not undefined,\n * This is safety net in the case that someone sometime decide to\n * call this method without having FocusableItem.\n */\n if (item === undefined) {\n return;\n }\n\n if (this.current) {\n this.current.blur();\n }\n item.focus();\n this._current = item;\n }\n\n move(direction: ArrowKeyDirection): boolean {\n let moved = false;\n if (this.current) {\n const next = this.current[direction];\n if (next) {\n // Turning the value into an Observable isn't great, but it's the fastest way to avoid code duplication.\n // If performance ever matters for this, we can refactor using additional private methods.\n const nextObs = isObservable(next) ? next : of(next);\n nextObs.subscribe(item => {\n if (item) {\n this.moveTo(item);\n moved = true;\n }\n });\n }\n }\n return moved;\n }\n\n activateCurrent() {\n if (this.current && this.current.activate) {\n this.current.activate();\n return true;\n }\n return false;\n }\n\n detachListeners() {\n this._unlistenFuncs.forEach(unlisten => unlisten());\n }\n}\n\nexport function clrFocusServiceFactory(existing: FocusService, renderer: Renderer2) {\n return existing || new FocusService(renderer);\n}\n\nexport const FOCUS_SERVICE_PROVIDER = {\n provide: FocusService,\n useFactory: clrFocusServiceFactory,\n deps: [[new Optional(), new SkipSelf(), FocusService], Renderer2],\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrSide {\n BEFORE = -1,\n AFTER = 1,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrAlignment } from './alignment.enum';\nimport { ClrAxis } from './axis.enum';\nimport { ClrSide } from './side.enum';\n\ninterface ClrPopoverPositionsInterface {\n axis: ClrAxis;\n side: ClrSide;\n anchor: ClrAlignment;\n content: ClrAlignment;\n}\n\nexport interface ClrPopoverPositions {\n [key: string]: any;\n}\n\nexport class ClrPopoverPositions {\n static 'top-right': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.END,\n content: ClrAlignment.END,\n };\n\n static 'top-left': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n static 'bottom-right': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.END,\n content: ClrAlignment.END,\n };\n\n static 'bottom-left': ClrPopoverPositionsInterface = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n static 'right-top': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.CENTER,\n content: ClrAlignment.END,\n };\n\n static 'right-bottom': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n static 'left-top': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.CENTER,\n content: ClrAlignment.END,\n };\n\n static 'left-bottom': ClrPopoverPositionsInterface = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ElementRef, InjectionToken } from '@angular/core';\n\nexport const POPOVER_HOST_ANCHOR = new InjectionToken<ElementRef>('POPOVER_HOST_ANCHOR');\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostListener, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\n\n@Directive({\n standalone: true,\n})\nexport class ClrStopEscapePropagationDirective implements OnInit, OnDestroy {\n private subscription: Subscription;\n private lastOpenChange: boolean | null = null;\n\n constructor(private toggleService: ClrPopoverToggleService) {}\n\n ngOnInit() {\n this.subscription = this.toggleService.openChange.subscribe(open => {\n this.lastOpenChange = open;\n });\n }\n\n ngOnDestroy() {\n this.subscription?.unsubscribe();\n }\n\n @HostListener('keyup.escape', ['$event'])\n onEscapeKey(event: KeyboardEvent) {\n if (this.lastOpenChange !== null) {\n if (this.lastOpenChange === false) {\n event.stopPropagation();\n }\n\n this.lastOpenChange = null;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef } from '@angular/core';\n\nimport { POPOVER_HOST_ANCHOR } from '../../popover/common/popover-host-anchor.token';\nimport { ClrPopoverEventsService } from './providers/popover-events.service';\nimport { ClrPopoverPositionService } from './providers/popover-position.service';\nimport { ClrPopoverToggleService } from './providers/popover-toggle.service';\nimport { ClrStopEscapePropagationDirective } from './stop-escape-propagation.directive';\n\n@Directive({\n standalone: true,\n providers: [\n ClrPopoverToggleService,\n ClrPopoverEventsService,\n ClrPopoverPositionService,\n { provide: POPOVER_HOST_ANCHOR, useExisting: ElementRef },\n ],\n hostDirectives: [ClrStopEscapePropagationDirective],\n})\nexport class ClrPopoverHostDirective {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable } from 'rxjs';\n\nimport { ArrowKeyDirection } from '../arrow-key-direction.enum';\nimport { FocusableItem } from './focusable-item';\n\nexport class Linkers {\n /**\n * Links a set of focusable items to a parent along one direction\n */\n static linkParent(\n items: FocusableItem[],\n parent: FocusableItem | Observable<FocusableItem>,\n direction: ArrowKeyDirection\n ) {\n items.forEach(item => (item[direction] = parent));\n }\n\n /**\n * Double-links a set of focusable items vertically, possibly looping\n */\n static linkVertical(items: FocusableItem[], loop = true) {\n items.forEach((item, index) => {\n if (index > 0) {\n item.up = items[index - 1];\n }\n if (index < items.length - 1) {\n item.down = items[index + 1];\n }\n });\n if (loop && items.length > 1) {\n items[0].up = items[items.length - 1];\n items[items.length - 1].down = items[0];\n }\n }\n}\n\n// Right now I only need the two linkers above, but we can easily add more linkers. A couple examples:\n// export function linkHorizontal(items: FocusableItem[], loop = true);\n// export function linkTable(items: FocusableItem[][]);\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum InitialFocus {\n FIRST_ITEM = 'first',\n LAST_ITEM = 'last',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, AnimationMetadata, state, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from '../constants';\n\nexport function collapse(): AnimationMetadata[] {\n 'use strict';\n return [\n state('true', style({ height: 0, 'overflow-y': 'hidden' })),\n transition('true => false', [animate(defaultAnimationTiming, style({ height: '*', 'overflow-y': 'hidden' }))]),\n transition('false => true', [style({ height: '*', 'overflow-y': 'hidden' }), animate(defaultAnimationTiming)]),\n ];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './collapse';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/*\n * If we someday want to be able to render the datagrid in a webworker,\n * this is where we would test if we're in headless mode. Right now it's not testing anything, but any access\n * to native DOM elements' methods and properties in the Datagrid happens here.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class DomAdapter {\n userDefinedWidth(element: HTMLElement): number {\n element.classList.add('datagrid-cell-width-zero');\n const userDefinedWidth = this.clientRect(element).width;\n element.classList.remove('datagrid-cell-width-zero');\n return userDefinedWidth;\n }\n\n scrollBarWidth(element: any) {\n return element.offsetWidth - element.clientWidth;\n }\n\n scrollWidth(element: any) {\n return element.scrollWidth || 0;\n }\n\n computedHeight(element: any): number {\n return parseInt(getComputedStyle(element).getPropertyValue('height'), 10);\n }\n\n clientRect(element: any): DOMRect {\n const elementClientRect = element.getBoundingClientRect();\n return {\n top: parseInt(elementClientRect.top, 10),\n bottom: parseInt(elementClientRect.bottom, 10),\n left: parseInt(elementClientRect.left, 10),\n right: parseInt(elementClientRect.right, 10),\n width: parseInt(elementClientRect.width, 10),\n height: parseInt(elementClientRect.height, 10),\n } as DOMRect;\n }\n\n minWidth(element: any): number {\n return parseInt(getComputedStyle(element).getPropertyValue('min-width'), 10);\n }\n\n focus(element: any): void {\n element.focus();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, ElementRef, HostBinding, HostListener, Input } from '@angular/core';\n\nimport { DomAdapter } from '../../dom-adapter/dom-adapter';\n\n@Component({\n selector: 'clr-expandable-animation',\n template: `<ng-content></ng-content>`,\n styles: [\n `\n :host {\n display: block;\n overflow: hidden;\n }\n `,\n ],\n animations: [\n trigger('expandAnimation', [\n transition('true <=> false', [\n style({ height: '{{startHeight}}px' }),\n animate('0.2s ease-in-out', style({ height: '*' })),\n ]),\n ]),\n ],\n providers: [DomAdapter],\n})\nexport class ClrExpandableAnimation {\n @Input() clrExpandTrigger: any;\n\n startHeight = 0;\n\n constructor(private element: ElementRef, private domAdapter: DomAdapter) {}\n\n @HostBinding('@expandAnimation')\n get expandAnimation() {\n return { value: this.clrExpandTrigger, params: { startHeight: this.startHeight } };\n }\n\n @HostListener('@expandAnimation.done')\n animationDone() {\n // A \"safe\" auto-update of the height ensuring basic OOTB user experience .\n // Prone to small jumps in initial animation height if data was changed in the meantime, window was resized, etc.\n // For optimal behavior call manually updateStartHeight() from the parent component before initiating the update.\n this.updateStartHeight();\n }\n\n updateStartHeight() {\n this.startHeight = this.domAdapter.computedHeight(this.element.nativeElement) || 0;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Type } from '@angular/core';\n\nimport { ClrExpandableAnimation } from './expandable-animation';\n\nexport * from './expandable-animation';\n\nexport const EXPANDABLE_ANIMATION_DIRECTIVES: Type<any>[] = [ClrExpandableAnimation];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, AnimationMetadata, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from '../constants';\n\nexport function fade(opacity = 1): AnimationMetadata[] {\n return [\n transition('void => *', [style({ opacity: 0 }), animate(defaultAnimationTiming, style({ opacity: opacity }))]),\n transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0 }))]),\n ];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './fade';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, AnimationMetadata, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from '../constants';\n\nexport function fadeSlide(direction: string): AnimationMetadata[] {\n let transform: string = null;\n if (direction === 'up') {\n transform = 'translate(0, 25%)';\n } else if (direction === 'down') {\n transform = 'translate(0, -25%)';\n } else if (direction === 'left') {\n transform = 'translate(25%, 0)';\n } else if (direction === 'right') {\n transform = 'translate(-25%, 0)';\n } else {\n throw new Error('Unknown direction ' + direction + ' for slide animation.');\n }\n return [\n transition('void => *', [style({ opacity: 0, transform: transform }), animate(defaultAnimationTiming)]),\n transition('* => void', [animate(defaultAnimationTiming, style({ opacity: 0, transform: transform }))]),\n ];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './fade-slide';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, AnimationMetadata, style, transition } from '@angular/animations';\n\nimport { defaultAnimationTiming } from '../constants';\n\nexport function slide(direction: string): AnimationMetadata[] {\n let transform: string = null;\n if (direction === 'up') {\n transform = 'translate(0, 25%)';\n } else if (direction === 'down') {\n transform = 'translate(0, -25%)';\n } else if (direction === 'left') {\n transform = 'translate(25%, 0)';\n } else if (direction === 'right') {\n transform = 'translate(-25%, 0)';\n } else {\n throw new Error('Unknown direction ' + direction + ' for slide animation.');\n }\n return [\n transition('void => *', [style({ transform: transform }), animate(defaultAnimationTiming)]),\n transition('* => void', [animate(defaultAnimationTiming, style({ transform: transform }))]),\n ];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './slide';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './collapse/index';\nexport * from './expandable-animation/index';\nexport * from './fade/index';\nexport * from './fade-slide/index';\nexport * from './slide/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrLoading } from './loading';\n\nexport const CLR_LOADING_DIRECTIVES: Type<any>[] = [ClrLoading];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_LOADING_DIRECTIVES],\n exports: [CLR_LOADING_DIRECTIVES],\n})\nexport class ClrLoadingModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './loading';\nexport * from './loading-listener';\nexport * from './loading.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, InjectionToken } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nlet activeCounter = 0;\n\nexport const IF_ACTIVE_ID = new InjectionToken<number>('IF_ACTIVE_ID');\n\nexport function tokenFactory() {\n return ++activeCounter;\n}\n\nexport const IF_ACTIVE_ID_PROVIDER = {\n provide: IF_ACTIVE_ID,\n useFactory: tokenFactory,\n};\n\n@Injectable()\n\n/*********\n * @class IfActiveService\n *\n * @description\n * An injectable service used by IfActive structural directives and the components that implement IfActive in their\n * templates. It holds the value of the current state and provides an Observable that both the directive and the\n * implementing component can subscribe to in order to take action on current value changes.\n *\n */\nexport class IfActiveService {\n /********\n * @property _currentChange\n *\n * @description\n * A RXJS Subject that updates and provides subscriptions to for the current current state of a component template\n * implemting the IfActive structural directive.\n *\n */\n private _currentChange = new Subject<number>();\n\n /*********\n * @property _current\n *\n * @description\n * A property holding the current value for current/closed state of an IfActive structural directive.\n */\n private _current: number;\n\n /*********\n *\n * @description\n * A getter function that provides an observable for the _current Subject.\n *\n */\n get currentChange(): Observable<number> {\n return this._currentChange.asObservable();\n }\n\n /*********\n *\n * @description\n * A property that gets/sets the current state of _current for this instance of IfActive structural directive.\n * And, broadcasts the new value to all subscribers.\n *\n */\n get current(): number {\n return this._current;\n }\n set current(value: number) {\n if (this._current !== value) {\n this._current = value;\n this._currentChange.next(value);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IF_ACTIVE_ID, IfActiveService } from './if-active.service';\n\n@Directive({\n selector: '[clrIfActive]',\n})\n\n/**********\n *\n * @class ClrIfActive\n *\n * @description\n * A structural directive that controls whether or not the associated TemplateRef is instantiated or not.\n * It makes use of a Component instance level service: IfActiveService to maintain state between itself and\n * the component using it in the component template.\n *\n */\nexport class ClrIfActive implements OnDestroy {\n /**********\n * @property activeChange\n *\n * @description\n * An event emitter that emits when the active property is set to allow for 2way binding when the directive is\n * used with de-structured / de-sugared syntax.\n *\n */\n @Output('clrIfActiveChange') activeChange = new EventEmitter<boolean>(false);\n\n private subscription: Subscription;\n private wasActive = false;\n\n constructor(\n private ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) private id: number,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n this.checkAndUpdateView(ifActiveService.current);\n\n this.subscription = this.ifActiveService.currentChange.subscribe(newCurrentId => {\n this.checkAndUpdateView(newCurrentId);\n });\n }\n\n /**\n * @description\n * A property that gets/sets IfActiveService.active with value.\n *\n */\n @Input('clrIfActive')\n get active() {\n return this.ifActiveService.current === this.id;\n }\n set active(value: boolean | string) {\n if (value) {\n this.ifActiveService.current = this.id;\n }\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * @description\n * Function that takes a any value and either created an embedded view for the associated ViewContainerRef or,\n * Clears all views from the ViewContainerRef\n */\n updateView(value: boolean) {\n if (value) {\n this.container.createEmbeddedView(this.template);\n } else {\n this.container.clear();\n }\n }\n\n private checkAndUpdateView(currentId: number) {\n const isNowActive = currentId === this.id;\n // only emit if the new active state is changed since last time.\n if (isNowActive !== this.wasActive) {\n this.updateView(isNowActive);\n this.activeChange.emit(isNowActive);\n this.wasActive = isNowActive;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EventEmitter, Input, OnDestroy, Output, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from '../popover/providers/popover-toggle.service';\n\n@Directive({\n selector: '[clrIfOpen]',\n})\n\n/**********\n *\n * @class ClrIfOpen\n *\n * @description\n * A structural directive that controls whether or not the associated TemplateRef is instantiated or not.\n * It makes use of a Component instance level service: ClrPopoverToggleService to maintain state between itself and the component\n * using it in the component template.\n *\n */\nexport class ClrIfOpen implements OnDestroy {\n static ngAcceptInputType_open: boolean | '';\n\n /**********\n * @property openChange\n *\n * @description\n * An event emitter that emits when the open property is set to allow for 2way binding when the directive is\n * used with de-structured / de-sugared syntax.\n */\n @Output('clrIfOpenChange') openChange = new EventEmitter<boolean>(false);\n\n private subscription: Subscription;\n\n constructor(\n private toggleService: ClrPopoverToggleService,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n this.subscription = this.toggleService.openChange.subscribe(change => {\n this.updateView(change);\n this.openChange.emit(change);\n });\n }\n\n /**\n * @description\n * A property that gets/sets ClrPopoverToggleService.open with value.\n */\n @Input('clrIfOpen')\n get open() {\n return this.toggleService.open;\n }\n set open(value: boolean | string) {\n this.toggleService.open = value as boolean;\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n /**\n * @description\n * Function that takes a boolean value and either created an embedded view for the associated ViewContainerRef or,\n * Clears all views from the ViewContainerRef\n *\n * @param value\n */\n updateView(value: boolean) {\n if (value) {\n this.container.createEmbeddedView(this.template);\n } else {\n this.container.clear();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n Renderer2,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IfExpandService } from './if-expanded.service';\n\n@Directive({\n selector: '[clrIfExpanded]',\n})\nexport class ClrIfExpanded implements OnInit, OnDestroy {\n @Output('clrIfExpandedChange') expandedChange = new EventEmitter<boolean>(true);\n\n private _expanded = false;\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\n\n constructor(\n @Optional() private template: TemplateRef<any>,\n private container: ViewContainerRef,\n private el: ElementRef,\n private renderer: Renderer2,\n private expand: IfExpandService\n ) {\n this._subscriptions.push(\n expand.expandChange.subscribe(() => {\n this.updateView();\n this.expandedChange.emit(this.expand.expanded);\n })\n );\n }\n\n @Input('clrIfExpanded')\n get expanded(): boolean | string {\n return this._expanded;\n }\n set expanded(value: boolean | string) {\n if (typeof value === 'boolean') {\n this.expand.expanded = value;\n this._expanded = value;\n }\n }\n\n ngOnInit() {\n this.expand.expandable++;\n this.updateView();\n }\n\n ngOnDestroy() {\n this.expand.expandable--;\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n private updateView() {\n if (this.expand.expanded && this.container.length !== 0) {\n return;\n }\n if (this.template) {\n if (this.expand.expanded) {\n // Should we pass a context? I don't see anything useful to pass right now,\n // but we can come back to it in the future as a solution for additional features.\n this.container.createEmbeddedView(this.template);\n } else {\n // TODO: Move when we move the animation logic to Datagrid Row Expand\n // We clear before the animation is over. Not ideal, but doing better would involve a much heavier\n // process for very little gain. Once Angular animations are dynamic enough, we should be able to\n // get the optimal behavior.\n this.container.clear();\n }\n } else {\n try {\n // If we don't have a template ref, we fallback to a crude display: none for now.\n if (this.expand.expanded) {\n this.renderer.setStyle(this.el.nativeElement, 'display', null);\n } else {\n this.renderer.setStyle(this.el.nativeElement, 'display', 'none');\n }\n } catch (e) {\n // We catch the case where clrIfExpanded was put on a non-DOM element, and we just do nothing\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIfActive } from './if-active.directive';\nimport { ClrIfExpanded } from './if-expanded.directive';\nimport { ClrIfOpen } from './if-open.directive';\n\nexport const CONDITIONAL_DIRECTIVES: Type<any>[] = [ClrIfActive, ClrIfOpen, ClrIfExpanded];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CONDITIONAL_DIRECTIVES],\n exports: [CONDITIONAL_DIRECTIVES],\n})\nexport class ClrConditionalModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './if-active.directive';\nexport * from './if-open.directive';\nexport * from './if-expanded.directive';\nexport * from './conditional.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrCommonStrings {\n /**\n * Open button\n */\n open: string;\n /**\n * Close button\n */\n close: string;\n /**\n * Show button\n */\n show: string;\n /**\n * Hide button\n */\n hide: string;\n /**\n * Delete button\n */\n delete?: string;\n /**\n * Expandable components: expand caret\n */\n expand: string;\n /**\n * Expandable components: collapse caret\n */\n collapse: string;\n /**\n * Overflow menus: ellipsis button\n */\n more: string;\n /**\n * Selectable components: checkbox or radio\n */\n select: string;\n /**\n * Selectable components: checkbox to select all\n */\n selectAll: string;\n /**\n * Selected item(s): combobox\n */\n selection?: string;\n /**\n * Pagination: previous button\n */\n previous: string;\n /**\n * Pagination: next button\n */\n next: string;\n /**\n * Pagination: go to current\n */\n current: string;\n /**\n * Alert levels: info\n */\n info: string;\n /**\n * Alert levels: success\n */\n success: string;\n /**\n * Alert levels: warning\n */\n warning: string;\n /**\n * Alert levels: danger\n */\n danger: string;\n /**\n * Datagrid: row actions\n */\n rowActions: string;\n /**\n * Datagrid: pick columns\n */\n pickColumns: string;\n /**\n * Datagrid: show columns\n */\n showColumns: string;\n /**\n * Datagrid: sort of columns\n */\n sortColumn: string;\n /**\n * Datagrid: first page\n */\n firstPage: string;\n /**\n * Datagrid: last page\n */\n lastPage: string;\n /**\n * Datagrid: next page\n */\n nextPage: string;\n /**\n * Datagrid: previous page\n */\n previousPage: string;\n /**\n * Datagrid: previous page\n */\n currentPage: string;\n /**\n * Datagird: total pages\n */\n totalPages: string;\n /**\n * Datagrid string filter: filter items\n */\n filterItems: string;\n /**\n * Datagrid numeric filter: min\n */\n minValue: string;\n /**\n * Datagrid numeric filter: max\n */\n maxValue: string;\n /**\n * Datagrid filter toggle button\n */\n datagridFilterAriaLabel?: string;\n /**\n * Datagrid filter dialog\n */\n datagridFilterDialogAriaLabel?: string;\n /**\n * Datagrid column handler string\n */\n columnSeparatorAriaLabel?: string;\n /**\n * Datagrid column resize handler string\n */\n columnSeparatorDescription?: string;\n /**\n * Modal start of content\n */\n modalContentStart: string;\n /**\n * Modal end of content\n */\n modalContentEnd: string;\n\n /**\n * Datagrid Show columns menu description\n */\n showColumnsMenuDescription: string;\n /**\n * Datagrid Show columns / All columns selected confirmation\n */\n allColumnsSelected: string;\n /**\n * Signpost Toggle Button\n */\n signpostToggle: string;\n /**\n * Signpost Close Button\n * (used inside signpost content components)\n */\n signpostClose: string;\n /*\n * Loaders/Spinners\n */\n loading: string;\n /**\n * Datagrid: detail pane start content for screen reader\n */\n detailPaneStart: string;\n /**\n * Datagrid: detail pane end content for screen reader\n */\n detailPaneEnd: string;\n /**\n * Datagrid: Single selection header\n */\n singleSelectionAriaLabel: string;\n\n /**\n * Datagrid: Single actionable header\n */\n singleActionableAriaLabel: string;\n\n /**\n * Datagrid: Expandable row\n */\n detailExpandableAriaLabel: string;\n\n /**\n * Alert: Close alert button\n */\n alertCloseButtonAriaLabel: string;\n\n /**\n * Alert: Next Alert button\n */\n alertNextAlertAriaLabel: string;\n\n /**\n * Alert: Previous Alert button\n */\n alertPreviousAlertAriaLabel: string;\n\n /**\n * Datepicker UI labels\n */\n datepickerDialogLabel: string;\n datepickerToggleChooseDateLabel: string;\n datepickerToggleChangeDateLabel: string;\n datepickerPreviousMonth: string;\n datepickerCurrentMonth: string;\n datepickerNextMonth: string;\n datepickerPreviousDecade: string;\n datepickerNextDecade: string;\n datepickerCurrentDecade: string;\n datepickerSelectMonthText: string;\n datepickerSelectYearText: string;\n datepickerSelectedLabel: string;\n /**\n * Stack View: Record has changed\n */\n stackViewChanged: string;\n // Responsive Nav\n responsiveNavToggleOpen: string;\n responsiveNavToggleClose: string;\n responsiveNavOverflowOpen: string;\n responsiveNavOverflowClose: string;\n // Vertical Nav\n verticalNavToggle: string;\n /**\n * Timeline Steps\n */\n timelineStepNotStarted: string;\n timelineStepCurrent: string;\n timelineStepSuccess: string;\n timelineStepError: string;\n timelineStepProcessing: string;\n\n // Datagrid Helper text for expandable rows\n datagridExpandableBeginningOf?: string;\n datagridExpandableEndOf?: string;\n datagridExpandableRowContent?: string;\n datagridExpandableRowsHelperText?: string;\n\n /**\n * Combobox Searching Text\n */\n comboboxSearching: string;\n comboboxDelete: string;\n comboboxSelection: string;\n comboboxSelected: string;\n comboboxNoResults: string;\n comboboxOpen: string;\n\n /**\n * Wizard: Screen-reader text for completed step.\n */\n wizardStepSuccess: string;\n\n /**\n * Wizard: Screen-reader text for step with error.\n */\n wizardStepError: string;\n\n /**\n * Wizard: Aria-label for the stepnav section.\n */\n wizardStepnavAriaLabel: string;\n\n /**\n * Password Input\n * Screen-reader text for the hide/show password field button.\n */\n passwordHide: string;\n passwordShow: string;\n\n /**\n * Datagrid footer; sr-only text after the number of selected rows.\n */\n selectedRows: string;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './common-strings.service';\nexport * from './common-strings.interface';\nexport * from './common-strings.default';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrAlignment } from '../enums/alignment.enum';\nimport { ClrAxis } from '../enums/axis.enum';\nimport { ClrSide } from '../enums/side.enum';\n\n/**\n * ClrPopoverPosition\n *\n * @description\n * A ClrPopover needs a way to describe the relationship between the anchor and the content (for when its\n * visible). The ClrPopoverPosition interface is that description.\n */\n\nexport interface ClrPopoverPosition {\n axis: ClrAxis; // The axis on which content and anchor push against each other\n side: ClrSide; // The side where content appears (top/bottom or left/right depending on the axis)\n anchor: ClrAlignment; // The position that the content element should align to\n content: ClrAlignment; // The position that the anchor element should align to\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './enums/alignment.enum';\nexport * from './enums/axis.enum';\nexport * from './enums/side.enum';\nexport * from './interfaces/popover-position.interface';\nexport * from './providers/popover-events.service';\nexport * from './providers/popover-position.service';\nexport * from './providers/popover-toggle.service';\nexport * from './popover-anchor';\nexport * from './popover-content';\nexport * from './popover-host.directive';\nexport * from './stop-escape-propagation.directive';\n\nexport { ClrPopoverModuleNext as ÇlrClrPopoverModuleNext } from './popover.module';\nexport { ClrPopoverCloseButton as ÇlrClrPopoverCloseButton } from './popover-close-button';\nexport { ClrPopoverOpenCloseButton as ÇlrClrPopoverOpenCloseButton } from './popover-open-close-button';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nexport const FOCUS_ON_VIEW_INIT = new InjectionToken<boolean>('FOCUS_ON_VIEW_INIT');\n\n// This provider holds the default value for clrFocusOnViewInit directive's isEnabled property.\n// So users can interject this provider and set their own value for this provider.\nexport const FOCUS_ON_VIEW_INIT_PROVIDER = {\n provide: FOCUS_ON_VIEW_INIT,\n useValue: true,\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { FOCUS_ON_VIEW_INIT } from './focus-on-view-init.provider';\n\n/* This directive is for guiding the document focus to the newly added content when its view is initialized\n so that assistive technologies can read its content. */\n@Directive({\n selector: '[clrFocusOnViewInit]',\n})\nexport class ClrFocusOnViewInit implements AfterViewInit, OnDestroy {\n private document: Document;\n private directFocus = true; // true if the element gets focused without need to set tabindex;\n private destroy$ = new Subject<void>();\n private _isEnabled: boolean;\n\n constructor(\n private el: ElementRef,\n @Inject(PLATFORM_ID) private platformId: any,\n @Inject(FOCUS_ON_VIEW_INIT) private focusOnViewInit: boolean,\n @Inject(DOCUMENT) document: any,\n private renderer: Renderer2,\n ngZone: NgZone\n ) {\n this._isEnabled = this.focusOnViewInit;\n\n // Angular compiler doesn't understand the type Document\n // when working out the metadata for injectable parameters,\n // even though it understands the injection token DOCUMENT\n // https://github.com/angular/angular/issues/20351\n this.document = document;\n\n ngZone.runOutsideAngular(() =>\n fromEvent(el.nativeElement, 'focusout')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n if (!this.directFocus) {\n // manually set attributes and styles should be removed\n this.renderer.removeAttribute(this.el.nativeElement, 'tabindex');\n this.renderer.setStyle(this.el.nativeElement, 'outline', null);\n }\n })\n );\n }\n\n @Input('clrFocusOnViewInit')\n set isEnabled(value: boolean | string) {\n if (this.focusOnViewInit && typeof value === 'boolean') {\n this._isEnabled = value;\n }\n }\n\n ngAfterViewInit() {\n this.focus();\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n\n private focus() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n if (!this._isEnabled) {\n return;\n }\n if (this.document && this.document.activeElement !== this.el.nativeElement) {\n this.el.nativeElement.focus();\n if (this.document.activeElement !== this.el.nativeElement) {\n // if it's not directly focused now, it means it was a non-interactive element\n // so we need to give it a tabindex.\n this.directFocus = false;\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');\n this.renderer.setStyle(this.el.nativeElement, 'outline', 'none');\n this.el.nativeElement.focus();\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrFocusOnViewInit } from './focus-on-view-init';\nimport { FOCUS_ON_VIEW_INIT_PROVIDER } from './focus-on-view-init.provider';\n\nexport const FOCUS_ON_VIEW_INIT_DIRECTIVES: Type<any>[] = [ClrFocusOnViewInit];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [FOCUS_ON_VIEW_INIT_DIRECTIVES],\n providers: [FOCUS_ON_VIEW_INIT_PROVIDER],\n exports: [FOCUS_ON_VIEW_INIT_DIRECTIVES],\n})\nexport class ClrFocusOnViewInitModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './focus-on-view-init';\nexport { FOCUS_ON_VIEW_INIT } from './focus-on-view-init.provider';\nexport * from './focus-on-view-init.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { Directive } from '@angular/core';\n\n@Directive({\n standalone: true,\n})\nexport class ClrStandaloneCdkTrapFocus extends CdkTrapFocus {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './standalone-cdk-trap-focus.directive';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './destroy.service';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './animations/index';\nexport * from './loading/index';\nexport * from './conditional/index';\nexport * from './i18n/index';\nexport * from './popover/index';\nexport * from './focus/focus-on-view-init/index';\nexport * from './focus/focus-trap/index';\nexport * from './destroy';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Renderer2 } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils';\nimport { FocusService } from '../../utils/focus/focus.service';\nimport { FocusableItem } from '../../utils/focus/focusable-item/focusable-item';\nimport { Linkers } from '../../utils/focus/focusable-item/linkers';\nimport { InitialFocus } from './button-group-focus.enum';\n\n@Injectable()\nexport class ButtonGroupFocusHandler {\n initialFocus: InitialFocus = InitialFocus.FIRST_ITEM;\n\n private menu: HTMLElement;\n private menuToggle: HTMLElement;\n private buttons: FocusableItem[];\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(\n private focusService: FocusService,\n private toggleService: ClrPopoverToggleService,\n private renderer: Renderer2\n ) {}\n\n ngOnDestroy() {\n this._unlistenFuncs.forEach((unlisten: () => void) => unlisten());\n this.focusService.detachListeners();\n }\n\n initialize({ menu, menuToggle }: { menu: HTMLElement; menuToggle: HTMLElement }) {\n this.menu = menu;\n this.menuToggle = menuToggle;\n\n this.focusService.registerContainer(this.menu, '-1');\n this.listenToKeys();\n this.linkButtons();\n\n switch (this.initialFocus) {\n case InitialFocus.LAST_ITEM:\n this.focusLastItem();\n break;\n default:\n this.focusFirstItem();\n break;\n }\n }\n\n private resetButtonsFocus() {\n this.buttons.forEach(button => {\n button.blur();\n });\n }\n\n private listenToKeys() {\n this._unlistenFuncs.push(\n this.renderer.listen(this.menu, 'keydown.shift.tab', event => this.closeMenu(event, false))\n );\n this._unlistenFuncs.push(this.renderer.listen(this.menu, 'keydown.tab', event => this.closeMenu(event, true)));\n }\n\n private closeMenu(event: KeyboardEvent, focusBackOnToggle: boolean) {\n this.toggleService.toggleWithEvent(event);\n if (focusBackOnToggle) {\n this.menuToggle.focus();\n }\n this.resetButtonsFocus();\n }\n\n private linkButtons() {\n const buttonElements = Array.from(this.menu.children) as HTMLElement[];\n this.buttons = buttonElements.map<FocusableItem>(buttonElement => {\n this._unlistenFuncs.push(this.renderer.listen(buttonElement, 'click', event => this.closeMenu(event, true)));\n return {\n id: buttonElement.id,\n value: buttonElement,\n focus: () => {\n buttonElement.setAttribute('tabindex', '0');\n buttonElement.focus();\n },\n blur: () => {\n buttonElement.setAttribute('tabindex', '-1');\n buttonElement.blur();\n },\n };\n });\n this.resetButtonsFocus();\n Linkers.linkVertical(this.buttons);\n }\n\n private focusFirstItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[0]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n\n private focusLastItem(): void {\n if (this.buttons.length) {\n this.focusService.moveTo(this.buttons[this.buttons.length - 1]);\n }\n this.initialFocus = InitialFocus.FIRST_ITEM;\n }\n}\n\nexport const BUTTON_GROUP_FOCUS_HANDLER_PROVIDER = {\n provide: ButtonGroupFocusHandler,\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { ClrDestroyService } from '../../utils/destroy/destroy.service';\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrPopoverPositions } from '../../utils/popover/enums/positions.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport {\n BUTTON_GROUP_FOCUS_HANDLER_PROVIDER,\n ButtonGroupFocusHandler,\n} from '../providers/button-group-focus-handler.service';\nimport { InitialFocus } from '../providers/button-group-focus.enum';\nimport { ButtonInGroupService } from '../providers/button-in-group.service';\nimport { ClrButton } from './button';\n\n@Component({\n selector: 'clr-button-group',\n templateUrl: 'button-group.html',\n providers: [ButtonInGroupService, ClrDestroyService, BUTTON_GROUP_FOCUS_HANDLER_PROVIDER, FOCUS_SERVICE_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n host: { '[class.btn-group]': 'true' },\n})\nexport class ClrButtonGroup implements AfterContentInit, AfterViewInit {\n @Input('clrToggleButtonAriaLabel') clrToggleButtonAriaLabel: string = this.commonStrings.keys.rowActions;\n\n @ViewChild('menuToggle') menuToggle: ElementRef<HTMLElement>;\n @ViewChild('menu') menu: ElementRef<HTMLElement>;\n\n @ContentChildren(ClrButton) buttons: QueryList<ClrButton>;\n\n popoverId = uniqueIdFactory();\n InitialFocus = InitialFocus;\n\n popoverPosition: ClrPopoverPosition = ClrPopoverPositions['bottom-left'];\n inlineButtons: ClrButton[] = [];\n menuButtons: ClrButton[] = [];\n\n // Indicates the position of the overflow menu\n private _menuPosition: string;\n\n constructor(\n public buttonGroupNewService: ButtonInGroupService,\n private toggleService: ClrPopoverToggleService,\n public commonStrings: ClrCommonStringsService,\n private destroy$: ClrDestroyService,\n private focusHandler: ButtonGroupFocusHandler\n ) {}\n\n @Input('clrMenuPosition')\n get menuPosition(): string {\n return this._menuPosition;\n }\n set menuPosition(pos: string) {\n if (pos && (ClrPopoverPositions as Record<string, any>)[pos]) {\n this._menuPosition = pos;\n } else {\n this._menuPosition = 'bottom-left';\n }\n\n this.popoverPosition = (ClrPopoverPositions as Record<string, any>)[this._menuPosition];\n }\n\n get open() {\n return this.toggleService.open;\n }\n\n /**\n * 1. Initializes the initial Button Group View\n * 2. Subscribes to changes on the ContentChildren\n * in case the user content projection changes\n */\n ngAfterContentInit() {\n this.initializeButtons();\n this.buttonGroupNewService.changes.pipe(takeUntil(this.destroy$)).subscribe(button => this.rearrangeButton(button));\n this.buttons.changes.subscribe(() => {\n this.initializeButtons();\n });\n }\n\n ngAfterViewInit() {\n this.handleFocusOnMenuOpen();\n }\n\n /**\n * Moves the button into the other ViewContainer\n * when an update is received.\n *\n * @param button\n */\n rearrangeButton(button: ClrButton): void {\n let fromView: ClrButton[];\n let toView: ClrButton[];\n if (button.inMenu) {\n fromView = this.inlineButtons;\n toView = this.menuButtons;\n } else {\n fromView = this.menuButtons;\n toView = this.inlineButtons;\n }\n const index: number = fromView.indexOf(button);\n if (index > -1) {\n fromView.splice(index, 1);\n const moveIndex = this.getMoveIndex(button);\n if (moveIndex <= toView.length) {\n toView.splice(moveIndex, 0, button);\n }\n }\n }\n\n openMenu(event: Event, initialFocus: InitialFocus) {\n this.focusHandler.initialFocus = initialFocus;\n if (!this.toggleService.open) {\n this.toggleService.toggleWithEvent(event);\n }\n }\n\n /**\n * Author: Eudes\n *\n * Finds the order of a button w.r.t other buttons\n *\n * @param buttonToMove\n * @returns\n */\n getMoveIndex(buttonToMove: ClrButton): number {\n const tempArr: ClrButton[] = this.buttons.filter(button => button.inMenu === buttonToMove.inMenu);\n return tempArr.indexOf(buttonToMove);\n }\n\n initializeButtons(): void {\n const tempInlineButtons: ClrButton[] = [];\n const tempInMenuButtons: ClrButton[] = [];\n this.buttons.forEach(button => {\n if (button.inMenu) {\n tempInMenuButtons.push(button);\n } else {\n tempInlineButtons.push(button);\n }\n });\n this.inlineButtons = tempInlineButtons;\n this.menuButtons = tempInMenuButtons;\n }\n\n private handleFocusOnMenuOpen() {\n this.toggleService.popoverVisible.pipe(takeUntil(this.destroy$)).subscribe(visible => {\n if (visible) {\n this.focusHandler.initialize({\n menu: this.menu.nativeElement,\n menuToggle: this.menuToggle.nativeElement,\n });\n }\n });\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-template *ngFor=\"let inlineButton of inlineButtons\" [ngTemplateOutlet]=\"inlineButton.templateRef\"></ng-template>\n\n<div *ngIf=\"menuButtons.length > 0\" class=\"btn-group-overflow open\" [ngClass]=\"menuPosition\">\n <button\n #menuToggle\n class=\"btn dropdown-toggle\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n (keydown.arrowup)=\"openMenu($event, InitialFocus.LAST_ITEM)\"\n (keydown.arrowdown)=\"openMenu($event, InitialFocus.FIRST_ITEM)\"\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"clrToggleButtonAriaLabel\"\n >\n <cds-icon shape=\"ellipsis-horizontal\" [attr.title]=\"commonStrings.keys.more\"></cds-icon>\n </button>\n <div\n #menu\n role=\"menu\"\n class=\"dropdown-menu clr-button-group-menu\"\n [id]=\"popoverId\"\n [attr.id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n *clrPopoverContent=\"open at popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-template *ngFor=\"let menuButton of menuButtons\" [ngTemplateOutlet]=\"menuButton.templateRef\"></ng-template>\n </div>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { ClrButton } from './button';\nimport { ClrButtonGroup } from './button-group';\n\nexport const CLR_BUTTON_GROUP_DIRECTIVES: Type<any>[] = [ClrButton, ClrButtonGroup];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrPopoverModuleNext],\n declarations: [CLR_BUTTON_GROUP_DIRECTIVES],\n exports: [CLR_BUTTON_GROUP_DIRECTIVES],\n})\nexport class ClrButtonGroupModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, keyframes, style, transition, trigger } from '@angular/animations';\nimport { Component, ElementRef, EventEmitter, Input, Output, Renderer2 } from '@angular/core';\n\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\n\n// minimum width to fit loading spinner\nconst MIN_BUTTON_WIDTH = 42;\n\n@Component({\n selector: 'button[clrLoading]',\n template: `\n <span @parent [ngSwitch]=\"state\">\n <span *ngSwitchCase=\"buttonState.LOADING\">\n <span @spinner class=\"spinner spinner-inline\"></span>\n </span>\n <span *ngSwitchCase=\"buttonState.SUCCESS\">\n <span\n @validated\n (@validated.done)=\"this.loadingStateChange(this.buttonState.DEFAULT)\"\n class=\"spinner spinner-inline spinner-check\"\n ></span>\n </span>\n <span *ngSwitchCase=\"buttonState.DEFAULT\" @defaultButton>\n <ng-content></ng-content>\n </span>\n </span>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrLoadingButton }],\n animations: [\n trigger('parent', [\n // Skip :enter animation on first render.\n // The button text/content should only be faded when transitioning to or from a non-default state.\n transition(':enter', []),\n ]),\n trigger('defaultButton', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n // TODO: see if we can get leave animation to work before spinner's enter animation\n transition(':leave', [style({ opacity: 0 })]),\n ]),\n trigger('spinner', [\n transition(':enter', [style({ opacity: 0 }), animate('200ms 100ms ease-in', style({ opacity: 1 }))]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n trigger('validated', [\n transition(':enter', [\n animate(\n '600ms',\n keyframes([\n style({ transform: 'scale(0,0)', offset: 0 }),\n style({ opacity: 1, offset: 0.2 }),\n style({ transform: 'scale(1.2,1.2)', offset: 0.4 }),\n style({ transform: 'scale(.9,.9)', offset: 0.6 }),\n style({ transform: 'scale(1,1)', offset: 1 }),\n ])\n ),\n ]),\n transition(':leave', [style({ opacity: 1 }), animate('100ms ease-out', style({ opacity: 0 }))]),\n ]),\n ],\n host: { '[attr.disabled]': \"disabled? '' : null\" },\n})\nexport class ClrLoadingButton implements LoadingListener {\n @Input('disabled') disabled: boolean;\n\n @Output('clrLoadingChange') clrLoadingChange = new EventEmitter<ClrLoadingState>(false);\n\n buttonState = ClrLoadingState;\n state: ClrLoadingState = ClrLoadingState.DEFAULT;\n\n constructor(public el: ElementRef, private renderer: Renderer2) {}\n\n loadingStateChange(state: ClrLoadingState): void {\n if (state === this.state) {\n return;\n }\n this.state = state;\n\n switch (state) {\n case ClrLoadingState.DEFAULT:\n this.renderer.removeStyle(this.el.nativeElement, 'width');\n this.renderer.removeStyle(this.el.nativeElement, 'transform'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n if (!this.disabled) {\n this.renderer.removeAttribute(this.el.nativeElement, 'disabled');\n }\n break;\n case ClrLoadingState.LOADING:\n this.setExplicitButtonWidth();\n this.renderer.setStyle(this.el.nativeElement, 'transform', 'translatez(0)'); // for chromium render bug see issue https://github.com/vmware/clarity/issues/2700\n this.renderer.setAttribute(this.el.nativeElement, 'disabled', '');\n break;\n case ClrLoadingState.SUCCESS:\n this.setExplicitButtonWidth();\n break;\n case ClrLoadingState.ERROR:\n this.loadingStateChange(ClrLoadingState.DEFAULT);\n break;\n default:\n break;\n }\n this.clrLoadingChange.emit(state);\n }\n\n private setExplicitButtonWidth() {\n if (this.el.nativeElement && this.el.nativeElement.getBoundingClientRect) {\n const boundingClientRect = this.el.nativeElement.getBoundingClientRect();\n const width = Math.max(MIN_BUTTON_WIDTH, boundingClientRect.width);\n this.renderer.setStyle(this.el.nativeElement, 'width', `${width}px`);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrLoadingButton } from './loading-button';\n\nexport const CLR_LOADING_BUTTON_DIRECTIVES: Type<any>[] = [ClrLoadingButton];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_LOADING_BUTTON_DIRECTIVES],\n exports: [CLR_LOADING_BUTTON_DIRECTIVES],\n})\nexport class ClrLoadingButtonModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\nimport { ClarityIcons, ellipsisHorizontalIcon } from '@cds/core/icon';\n\nimport { ClrButtonGroupModule } from './button-group/button-group.module';\nimport { ClrLoadingButtonModule } from './button-loading/loading-button.module';\n\n@NgModule({\n exports: [ClrLoadingButtonModule, ClrButtonGroupModule],\n})\nexport class ClrButtonModule {\n constructor() {\n ClarityIcons.addIcons(ellipsisHorizontalIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n template: '',\n})\nexport class EmptyAnchor {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { EmptyAnchor } from './empty-anchor';\n\n/**\n * Internal module, please do not export!\n */\n@NgModule({\n declarations: [EmptyAnchor],\n exports: [EmptyAnchor],\n})\nexport class ClrHostWrappingModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nlet counter = 0;\n\n@Injectable()\nexport class ControlIdService {\n private _id = 'clr-form-control-' + ++counter;\n private _idChange = new BehaviorSubject(this._id);\n\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n this._idChange.next(value);\n }\n\n get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nlet counter = 0;\n\n/**\n * @TODO No idea why I need to use provideIn .. without I'm getting error that\n * ContainerIdService is not defined - But this must be optional service!?\n *\n * There is something wrong - will come back to investigate it when I have more time\n *\n */\n@Injectable()\nexport class ContainerIdService {\n private _id = `clr-form-container-${++counter}`;\n private _idChange = new BehaviorSubject(this._id);\n\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n this._idChange.next(value);\n }\n\n get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\n\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-id.service';\n\nexport const CONTROL_SUFFIX: { [key: string]: string | null } = {\n HELPER: 'helper',\n ERROR: 'error',\n SUCCESS: 'success',\n NONE: null,\n};\n\n@Directive()\nexport abstract class ClrAbstractControl {\n /**\n * Hold the suffix for the ID\n */\n controlIdSuffix = 'abstract';\n\n constructor(\n @Optional() protected controlIdService: ControlIdService,\n @Optional() protected containerIdService: ContainerIdService\n ) {}\n\n get id(): string {\n /**\n * The order of witch the id will be pick is:\n * - Container ID (Wrapper arround multiple Controls like, Checkbox, Radio, ...)\n * - Control ID (Single Control wrapper like Input, Textarea, Password, ...)\n * - None\n */\n if (this.containerIdService) {\n return `${this.containerIdService.id}-${this.controlIdSuffix}`;\n }\n\n if (this.controlIdService) {\n return `${this.controlIdService.id}-${this.controlIdSuffix}`;\n }\n\n return null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\n\nimport { ClrAbstractControl, CONTROL_SUFFIX } from './abstract-control';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-id.service';\n\n@Component({\n selector: 'clr-control-error',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.clr-subtext]': 'true',\n '[attr.id]': 'id',\n },\n})\nexport class ClrControlError extends ClrAbstractControl {\n override controlIdSuffix = CONTROL_SUFFIX.ERROR;\n\n constructor(\n @Optional() protected override controlIdService: ControlIdService,\n @Optional() protected override containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\n\nimport { ClrAbstractControl, CONTROL_SUFFIX } from './abstract-control';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-id.service';\n\n@Component({\n selector: 'clr-control-helper',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.clr-subtext]': 'true',\n '[attr.id]': 'id',\n },\n})\nexport class ClrControlHelper extends ClrAbstractControl {\n override controlIdSuffix = CONTROL_SUFFIX.HELPER;\n\n constructor(\n @Optional() protected override controlIdService: ControlIdService,\n @Optional() protected override containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Observable, Subject } from 'rxjs';\n\nexport interface Helpers {\n show?: boolean;\n showInvalid?: boolean;\n showValid?: boolean;\n showHelper?: boolean;\n}\n\n@Injectable()\nexport class NgControlService {\n // Observable to subscribe to the control, since its not available immediately for projected content\n private _controlChanges = new Subject<NgControl>();\n\n private _helpers = new Subject<Helpers>();\n\n get controlChanges(): Observable<NgControl> {\n return this._controlChanges.asObservable();\n }\n\n get helpersChange(): Observable<Helpers> {\n return this._helpers.asObservable();\n }\n\n setControl(control: NgControl) {\n this._controlChanges.next(control);\n }\n\n setHelpers(state: Helpers) {\n this._helpers.next(state);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { NgControlService } from '../providers/ng-control.service';\n\nexport enum CONTROL_STATE {\n NONE = 'NONE',\n VALID = 'VALID',\n INVALID = 'INVALID',\n}\n\n@Injectable()\nexport class IfControlStateService implements OnDestroy {\n private subscriptions: Subscription[] = [];\n private control: NgControl;\n\n // Implement our own status changes observable, since Angular controls don't\n private _statusChanges = new BehaviorSubject(CONTROL_STATE.NONE);\n\n constructor(private ngControlService: NgControlService) {\n // Wait for the control to be available\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n if (control) {\n this.control = control;\n // Subscribe to the status change events, only after touched\n // and emit the control\n this.subscriptions.push(\n this.control.statusChanges.subscribe(() => {\n this.triggerStatusChange();\n })\n );\n }\n })\n );\n }\n\n get statusChanges(): Observable<CONTROL_STATE> {\n return this._statusChanges.asObservable();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n triggerStatusChange() {\n /* Check if control is defined and run the code only then */\n if (this.control) {\n // These status values are mutually exclusive, so a control\n // cannot be both valid AND invalid or invalid AND disabled.\n const status = CONTROL_STATE[this.control.status];\n this._statusChanges.next(['VALID', 'INVALID'].includes(status) ? status : CONTROL_STATE.NONE);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nexport enum ClrFormLayout {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n COMPACT = 'compact',\n}\n\n@Injectable()\nexport class LayoutService {\n readonly minLabelSize = 1;\n readonly maxLabelSize = 12;\n\n layout: ClrFormLayout | string = ClrFormLayout.HORIZONTAL;\n\n // This is basically a replacement for Object.values(), which IE11 and Node <9 don't support :(\n // String enums cannot be reverse-mapped, meaning ClrFormLayout['COMPACT'] does not return 'compact' so\n // this exists to deal with this little caveat to get the list of the values as an array.\n private layoutValues: string[] = Object.keys(ClrFormLayout).map(key => (ClrFormLayout as Record<string, any>)[key]);\n private _labelSize = 2;\n\n get labelSize(): number {\n return this._labelSize;\n }\n set labelSize(size: number) {\n if (this.labelSizeIsValid(size)) {\n this._labelSize = size;\n }\n }\n\n get layoutClass(): string {\n return `clr-form-${this.layout}`;\n }\n\n isVertical(): boolean {\n return this.layout === ClrFormLayout.VERTICAL;\n }\n\n isHorizontal(): boolean {\n return this.layout === ClrFormLayout.HORIZONTAL;\n }\n\n isCompact(): boolean {\n return this.layout === ClrFormLayout.COMPACT;\n }\n\n isValid(layout: string): boolean {\n return this.layoutValues.indexOf(layout) > -1;\n }\n\n labelSizeIsValid(labelSize: number): boolean {\n return Number.isInteger(labelSize) && labelSize >= this.minLabelSize && labelSize <= this.maxLabelSize;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, HostBinding, Input, OnDestroy, OnInit, Optional, Renderer2 } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ControlIdService } from './providers/control-id.service';\nimport { LayoutService } from './providers/layout.service';\nimport { NgControlService } from './providers/ng-control.service';\n\n@Directive({\n selector: 'label',\n})\nexport class ClrLabel implements OnInit, OnDestroy {\n @Input('for') @HostBinding('attr.for') forAttr: string;\n\n private enableGrid = true;\n private subscriptions: Subscription[] = [];\n\n constructor(\n @Optional() private controlIdService: ControlIdService,\n @Optional() private layoutService: LayoutService,\n @Optional() private ngControlService: NgControlService,\n private renderer: Renderer2,\n private el: ElementRef\n ) {}\n\n get labelText(): string {\n return this.el.nativeElement && this.el.nativeElement.textContent;\n }\n\n ngOnInit() {\n // Only add the clr-control-label if it is inside a control container\n if (this.controlIdService || this.ngControlService) {\n this.renderer.addClass(this.el.nativeElement, 'clr-control-label');\n }\n // Only set the grid column classes if we are in the right context and if they aren't already set\n if (\n this.enableGrid &&\n this.layoutService &&\n !this.layoutService.isVertical() &&\n this.el.nativeElement &&\n this.el.nativeElement.className.indexOf('clr-col') < 0\n ) {\n this.renderer.addClass(this.el.nativeElement, 'clr-col-12');\n this.renderer.addClass(this.el.nativeElement, `clr-col-md-${this.layoutService.labelSize}`);\n }\n if (this.controlIdService && !this.forAttr) {\n this.subscriptions.push(this.controlIdService.idChange.subscribe(id => (this.forAttr = id)));\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n disableGrid() {\n this.enableGrid = false;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\n\nimport { ClrAbstractControl, CONTROL_SUFFIX } from './abstract-control';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlIdService } from './providers/control-id.service';\n\n@Component({\n selector: 'clr-control-success',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.clr-subtext]': 'true',\n '[attr.id]': 'id',\n },\n})\nexport class ClrControlSuccess extends ClrAbstractControl {\n override controlIdSuffix = CONTROL_SUFFIX.SUCCESS;\n\n constructor(\n @Optional() protected override controlIdService: ControlIdService,\n @Optional() protected override containerIdService: ContainerIdService\n ) {\n super(controlIdService, containerIdService);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Optional, Renderer2 } from '@angular/core';\n\nimport { CONTROL_STATE } from '../if-control-state/if-control-state.service';\nimport { LayoutService } from './layout.service';\n\nconst CLASS_ERROR = 'clr-error';\nconst CLASS_SUCCESS = 'clr-success';\n\n@Injectable()\nexport class ControlClassService {\n className = '';\n\n constructor(@Optional() private layoutService: LayoutService) {}\n\n controlClass(state: CONTROL_STATE = CONTROL_STATE.NONE, grid = false, additional = '') {\n const controlClasses = [this.className, additional];\n\n switch (state) {\n case CONTROL_STATE.VALID:\n controlClasses.push(CLASS_SUCCESS);\n break;\n case CONTROL_STATE.INVALID:\n controlClasses.push(CLASS_ERROR);\n break;\n }\n\n if (grid && this.layoutService && this.className.indexOf('clr-col') === -1) {\n controlClasses.push(`clr-col-md-${this.layoutService.maxLabelSize - this.layoutService.labelSize} clr-col-12`);\n }\n return controlClasses.join(' ').trim();\n }\n\n // We want to remove the column classes from the input up to the container\n initControlClass(renderer: Renderer2, element: HTMLElement) {\n if (element && element.className) {\n this.className = element.className;\n const klasses = element.className.split(' ');\n klasses.forEach(klass => {\n if (klass.startsWith('clr-col')) {\n renderer.removeClass(element, klass);\n }\n });\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, ContentChild, Directive, OnDestroy, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ClrControlError } from './error';\nimport { ClrControlHelper } from './helper';\nimport { CONTROL_STATE, IfControlStateService } from './if-control-state/if-control-state.service';\nimport { ClrLabel } from './label';\nimport { ControlClassService } from './providers/control-class.service';\nimport { LayoutService } from './providers/layout.service';\nimport { NgControlService } from './providers/ng-control.service';\nimport { ClrControlSuccess } from './success';\n\n@Directive()\nexport abstract class ClrAbstractContainer implements DynamicWrapper, OnDestroy, AfterContentInit {\n @ContentChild(ClrLabel, { static: false }) label: ClrLabel;\n @ContentChild(ClrControlSuccess) controlSuccessComponent: ClrControlSuccess;\n @ContentChild(ClrControlError) controlErrorComponent: ClrControlError;\n @ContentChild(ClrControlHelper) controlHelperComponent: ClrControlHelper;\n\n control: NgControl;\n _dynamic = false;\n\n protected subscriptions: Subscription[] = [];\n\n private state: CONTROL_STATE;\n\n constructor(\n protected ifControlStateService: IfControlStateService,\n @Optional() protected layoutService: LayoutService,\n protected controlClassService: ControlClassService,\n protected ngControlService: NgControlService\n ) {\n this.subscriptions.push(\n this.ifControlStateService.statusChanges.subscribe((state: CONTROL_STATE) => {\n this.state = state;\n this.updateHelpers();\n })\n );\n\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n this.control = control;\n })\n );\n }\n\n /**\n * @NOTE\n * Helper control is a bit different than the others, it must be visible most of the time:\n * - Helper must NOT be visible when CONTROL_STATE is not NONE and Success or Error components are \\\n * defined.\n *\n * For example user implement only Error control then if CONTROL_STATE is VALID then helper\n * control must be visible.\n */\n get showHelper(): boolean {\n // without existence of helper component there is no need of additional checks.\n if (!!this.controlHelperComponent === false) {\n return false;\n }\n\n return (\n /* Helper Component exist and the state of the form is NONE (not touched) */\n (!!this.controlHelperComponent && (!this.touched || this.state === CONTROL_STATE.NONE)) ||\n /* or there is no success component but the state of the form is VALID - show helper information */\n (!!this.controlSuccessComponent === false && this.state === CONTROL_STATE.VALID) ||\n /* or there is no error component but the state of the form is INVALID - show helper information */\n (!!this.controlErrorComponent === false && this.state === CONTROL_STATE.INVALID)\n );\n }\n\n get showValid(): boolean {\n return this.touched && this.state === CONTROL_STATE.VALID && !!this.controlSuccessComponent;\n }\n\n get showInvalid(): boolean {\n return this.touched && this.state === CONTROL_STATE.INVALID && !!this.controlErrorComponent;\n }\n\n private get touched() {\n return this.control?.touched;\n }\n\n ngAfterContentInit() {\n /**\n * We gonna set the helper control state, after all or most of the components\n * are ready - also this will trigger some initial flows into wrappers and controls,\n * like locating IDs and setting attributes.\n */\n this.updateHelpers();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(subscription => subscription.unsubscribe());\n }\n\n controlClass() {\n /**\n * Decide what subtext to display:\n * - container is valid but no success component is implemented - use helper class\n * - container is valid and success component is implemented - use success class\n */\n if ((!this.controlSuccessComponent && this.state === CONTROL_STATE.VALID) || !this.touched) {\n return this.controlClassService.controlClass(CONTROL_STATE.NONE, this.addGrid());\n }\n /**\n * Pass form control state and return string of classes to be applied to the container.\n */\n return this.controlClassService.controlClass(this.state, this.addGrid());\n }\n\n addGrid() {\n return this.layoutService && !this.layoutService.isVertical();\n }\n\n private updateHelpers() {\n if (this.ngControlService) {\n this.ngControlService.setHelpers({\n show: this.showInvalid || this.showHelper || this.showValid,\n showInvalid: this.showInvalid,\n showHelper: this.showHelper,\n showValid: this.showValid,\n });\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from './if-control-state/if-control-state.service';\nimport { ControlClassService } from './providers/control-class.service';\nimport { ControlIdService } from './providers/control-id.service';\nimport { NgControlService } from './providers/ng-control.service';\n\n@Component({\n selector: 'clr-control-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <ng-content></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrControlContainer extends ClrAbstractContainer {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n ComponentFactory,\n ComponentFactoryResolver,\n ElementRef,\n InjectionToken,\n Injector,\n Type,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { DynamicWrapper } from './dynamic-wrapper';\nimport { EmptyAnchor } from './empty-anchor';\n\n/**\n * HostWrapper must be called in OnInit to ensure that the Views are ready. If its called in a constructor the view is\n * still undefined.\n * TODO - make sure these comment annotations do not break ng-packgr.\n */\nexport class HostWrapper<W extends DynamicWrapper> implements Injector {\n private injector: Injector;\n\n constructor(containerType: Type<W>, vcr: ViewContainerRef, index = 0) {\n this.injector = vcr.injector;\n // If the host is already wrapped, we don't do anything\n if (!this.injector.get(containerType, null)) {\n const cfr = this.injector.get(ComponentFactoryResolver);\n const el = this.injector.get(ElementRef);\n\n // We need a new anchor, since we're projecting the current one.\n vcr.createComponent(cfr.resolveComponentFactory(EmptyAnchor));\n const factory: ComponentFactory<W> = cfr.resolveComponentFactory(containerType);\n // Craft the element array based on what slot to use. Angular only uses the index to determine\n // which ng-content to project into, so if you have more than one ng-content you'll need to set\n // the index in the constructor appropriately\n const element = [];\n element[index] = [el.nativeElement];\n // We're assuming only one projection slot, but in more complex cases we might want to provide\n // a different array of projected elements.\n const containerRef = vcr.createComponent(factory, undefined, undefined, element);\n // We can now remove the useless anchor\n vcr.remove(0);\n\n // We note that the container was dynamically created\n containerRef.instance._dynamic = true;\n\n // We keep the wrapper's injector to access the dependencies that weren't available before.\n this.injector = containerRef.injector;\n }\n }\n\n get<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T {\n return this.injector.get(token, notFoundValue);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class MarkControlService {\n private _touched = new Subject<void>();\n\n get touchedChange(): Observable<void> {\n return this._touched.asObservable();\n }\n\n markAsTouched() {\n this._touched.next();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n DoCheck,\n ElementRef,\n HostBinding,\n HostListener,\n InjectionToken,\n Injector,\n Input,\n KeyValueDiffer,\n KeyValueDiffers,\n OnDestroy,\n OnInit,\n Renderer2,\n Type,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { CONTROL_SUFFIX } from './abstract-control';\nimport { IfControlStateService } from './if-control-state/if-control-state.service';\nimport { ContainerIdService } from './providers/container-id.service';\nimport { ControlClassService } from './providers/control-class.service';\nimport { ControlIdService } from './providers/control-id.service';\nimport { MarkControlService } from './providers/mark-control.service';\nimport { Helpers, NgControlService } from './providers/ng-control.service';\n\nexport enum CHANGE_KEYS {\n FORM = 'form',\n MODEL = 'model',\n}\n\n@Directive()\nexport class WrappedFormControl<W extends DynamicWrapper> implements OnInit, DoCheck, OnDestroy {\n _id: string;\n\n protected renderer: Renderer2;\n protected controlIdService: ControlIdService;\n protected ngControlService: NgControlService;\n protected el: ElementRef<any>;\n protected index = 0;\n protected subscriptions: Subscription[] = [];\n\n private ifControlStateService: IfControlStateService;\n private controlClassService: ControlClassService;\n private markControlService: MarkControlService;\n private containerIdService: ContainerIdService;\n private _containerInjector: Injector;\n private differs: KeyValueDiffers;\n private differ: KeyValueDiffer<any, any>;\n\n // I lost way too much time trying to make this work without injecting the ViewContainerRef and the Injector,\n // I'm giving up. So we have to inject these two manually for now.\n constructor(\n protected vcr: ViewContainerRef,\n protected wrapperType: Type<W>,\n injector: Injector,\n private ngControl: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n this.renderer = renderer;\n this.el = el;\n\n if (injector) {\n this.ngControlService = injector.get(NgControlService, null);\n this.ifControlStateService = injector.get(IfControlStateService, null);\n this.controlClassService = injector.get(ControlClassService, null);\n this.markControlService = injector.get(MarkControlService, null);\n this.differs = injector.get(KeyValueDiffers, null);\n }\n\n if (this.controlClassService) {\n this.controlClassService.initControlClass(renderer, el.nativeElement);\n }\n if (this.markControlService) {\n this.subscriptions.push(\n this.markControlService.touchedChange.subscribe(() => {\n this.markAsTouched();\n })\n );\n }\n\n if (this.ngControlService) {\n this.subscriptions.push(\n this.ngControlService.helpersChange.subscribe((state: Helpers) => {\n this.setAriaDescribedBy(state);\n })\n );\n }\n\n if (ngControl) {\n this.differ = this.differs.find(ngControl).create();\n }\n }\n\n @Input()\n @HostBinding()\n get id() {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n if (this.controlIdService) {\n this.controlIdService.id = value;\n }\n }\n\n ngOnInit() {\n this._containerInjector = new HostWrapper(this.wrapperType, this.vcr, this.index);\n this.controlIdService = this._containerInjector.get(ControlIdService);\n\n /**\n * not all containers will provide `ContainerIdService`\n */\n this.containerIdService = this._containerInjector.get(ContainerIdService, null);\n\n if (this._id) {\n this.controlIdService.id = this._id;\n } else {\n this._id = this.controlIdService.id;\n }\n\n if (this.ngControlService) {\n this.ngControlService.setControl(this.ngControl);\n }\n }\n\n ngDoCheck() {\n if (this.differ) {\n const changes = this.differ.diff(this.ngControl);\n if (changes) {\n changes.forEachChangedItem(change => {\n if (\n (change.key === CHANGE_KEYS.FORM || change.key === CHANGE_KEYS.MODEL) &&\n change.currentValue !== change.previousValue\n ) {\n this.triggerValidation();\n }\n });\n }\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n @HostListener('blur')\n triggerValidation() {\n if (this.ifControlStateService) {\n this.ifControlStateService.triggerStatusChange();\n }\n }\n\n // @TODO This method has a try/catch due to an unknown issue that came when building the clrToggle feature\n // We need to figure out why this fails for the ClrToggle scenario but works for Date picker...\n // To see the error, remove the try/catch here and run the ClrToggle suite to see issues getting the container\n // injector in time, and this ONLY HAPPENS in tests and not in dev/prod mode.\n protected getProviderFromContainer<T>(token: Type<T> | InjectionToken<T>, notFoundValue?: T): T {\n try {\n return this._containerInjector.get(token, notFoundValue);\n } catch (e) {\n return notFoundValue;\n }\n }\n\n private markAsTouched(): void {\n this.ngControl.control.markAsTouched();\n this.ngControl.control.updateValueAndValidity();\n }\n\n private setAriaDescribedBy(helpers: Helpers) {\n if (helpers.show) {\n const ariaDescribedBy = this.getAriaDescribedById(helpers);\n if (ariaDescribedBy !== null) {\n this.renderer.setAttribute(this.el.nativeElement, 'aria-describedby', ariaDescribedBy);\n return;\n }\n }\n\n this.renderer.removeAttribute(this.el.nativeElement, 'aria-describedby');\n }\n\n private getAriaDescribedById(helpers: Helpers): string | null {\n let suffix = CONTROL_SUFFIX.HELPER;\n\n if (helpers.showInvalid) {\n suffix = CONTROL_SUFFIX.ERROR;\n } else if (helpers.showValid) {\n suffix = CONTROL_SUFFIX.SUCCESS;\n }\n\n if (this.containerIdService) {\n return this.containerIdService.id.concat('-', suffix);\n }\n\n if (this.controlIdService) {\n return this.controlIdService.id.concat('-', suffix);\n }\n\n /**\n * If ContainerIdService or ControlIdService are missing don't try to guess\n * Don't set anything.\n */\n return null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { ClrControlContainer } from './control-container';\nimport { WrappedFormControl } from './wrapped-control';\n\n@Directive({\n selector: '[clrControl]',\n host: { '[class.clr-input]': 'true' },\n})\nexport class ClrControl extends WrappedFormControl<ClrControlContainer> {\n protected override index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrControlContainer, injector, control, renderer, el);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ContentChildren, Directive, HostListener, Input, QueryList } from '@angular/core';\n\nimport { ClrLabel } from './label';\nimport { LayoutService } from './providers/layout.service';\nimport { MarkControlService } from './providers/mark-control.service';\n\n@Directive({\n selector: '[clrForm]',\n providers: [LayoutService, MarkControlService],\n host: {\n '[class.clr-form]': 'true',\n '[class.clr-form-horizontal]': 'layoutService.isHorizontal()',\n '[class.clr-form-compact]': 'layoutService.isCompact()',\n },\n})\nexport class ClrForm {\n @ContentChildren(ClrLabel, { descendants: true }) labels: QueryList<ClrLabel>;\n\n constructor(public layoutService: LayoutService, private markControlService: MarkControlService) {}\n\n @Input('clrLabelSize')\n set labelSize(size: number | string) {\n const sizeNumber = parseInt(size as string, 10) || 2;\n this.layoutService.labelSize = sizeNumber;\n }\n\n @HostListener('submit')\n onFormSubmit() {\n this.markAsTouched();\n }\n\n // Trying to avoid adding an input and keep this backwards compatible at the same time\n markAsTouched() {\n this.markControlService.markAsTouched();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { Subscription } from 'rxjs';\n\nimport { NgControlService } from '../providers/ng-control.service';\nimport { CONTROL_STATE, IfControlStateService } from './if-control-state.service';\n\n@Directive()\nexport abstract class AbstractIfState {\n protected subscriptions: Subscription[] = [];\n protected displayedContent = false;\n protected control: NgControl;\n\n constructor(\n @Optional() protected ifControlStateService: IfControlStateService,\n @Optional() protected ngControlService: NgControlService\n ) {\n if (ngControlService) {\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n this.control = control;\n })\n );\n }\n\n if (ifControlStateService) {\n this.subscriptions.push(\n this.ifControlStateService.statusChanges.subscribe((state: CONTROL_STATE) => {\n this.handleState(state);\n })\n );\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n protected handleState(_state: CONTROL_STATE): void {\n /* overwrite in implementation to handle status change */\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, EmbeddedViewRef, Input, Optional, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { NgControlService } from '../providers/ng-control.service';\nimport { AbstractIfState } from './abstract-if-state';\nimport { CONTROL_STATE, IfControlStateService } from './if-control-state.service';\n\n@Directive({\n selector: '[clrIfError]',\n})\nexport class ClrIfError extends AbstractIfState {\n @Input('clrIfError') error: string;\n\n private embeddedViewRef: EmbeddedViewRef<any>;\n\n constructor(\n @Optional() ifControlStateService: IfControlStateService,\n @Optional() ngControlService: NgControlService,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n super(ifControlStateService, ngControlService);\n\n if (!this.ifControlStateService) {\n throw new Error('clrIfError can only be used within a form control container element like clr-input-container');\n }\n }\n /**\n * @param state CONTROL_STATE\n */\n protected override handleState(state: CONTROL_STATE) {\n if (this.error && this.control) {\n this.displayError(this.control.hasError(this.error));\n } else {\n this.displayError(CONTROL_STATE.INVALID === state);\n }\n }\n\n private displayError(invalid: boolean) {\n /* if no container do nothing */\n if (!this.container) {\n return;\n }\n if (invalid) {\n if (this.displayedContent === false) {\n this.embeddedViewRef = this.container.createEmbeddedView(this.template, {\n error: this.control.getError(this.error),\n });\n this.displayedContent = true;\n } else if (this.embeddedViewRef && this.embeddedViewRef.context) {\n // if view is already rendered, update the error object to keep it in sync\n this.embeddedViewRef.context.error = this.control.getError(this.error);\n }\n } else {\n this.container.clear();\n this.displayedContent = false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional, TemplateRef, ViewContainerRef } from '@angular/core';\n\nimport { NgControlService } from '../providers/ng-control.service';\nimport { AbstractIfState } from './abstract-if-state';\nimport { CONTROL_STATE, IfControlStateService } from './if-control-state.service';\n\n@Directive({\n selector: '[clrIfSuccess]',\n})\nexport class ClrIfSuccess extends AbstractIfState {\n constructor(\n @Optional() ifControlStateService: IfControlStateService,\n @Optional() ngControlService: NgControlService,\n private template: TemplateRef<any>,\n private container: ViewContainerRef\n ) {\n super(ifControlStateService, ngControlService);\n\n if (!ifControlStateService) {\n throw new Error('ClrIfSuccess can only be used within a form control container element like clr-input-container');\n }\n }\n\n /**\n * @param state CONTROL_STATE\n */\n protected override handleState(state: CONTROL_STATE) {\n const isValid = CONTROL_STATE.VALID === state;\n\n if (isValid && !this.displayedContent) {\n this.container.createEmbeddedView(this.template);\n } else if (!isValid && this.container) {\n this.container.clear();\n }\n this.displayedContent = isValid;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Input, OnInit } from '@angular/core';\n\nimport { ClrFormLayout, LayoutService } from './providers/layout.service';\n\n@Directive({\n selector: '[clrForm][clrLayout]',\n})\nexport class ClrLayout implements OnInit {\n @Input('clrLayout') layout: ClrFormLayout | string;\n\n constructor(public layoutService: LayoutService) {}\n\n ngOnInit() {\n // Only set the layout if it is a valid option\n if (this.layout && this.layoutService.isValid(this.layout)) {\n this.layoutService.layout = this.layout;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrControl } from './control';\nimport { ClrControlContainer } from './control-container';\nimport { ClrControlError } from './error';\nimport { ClrForm } from './form';\nimport { ClrControlHelper } from './helper';\nimport { ClrIfError } from './if-control-state/if-error';\nimport { ClrIfSuccess } from './if-control-state/if-success';\nimport { ClrLabel } from './label';\nimport { ClrLayout } from './layout';\nimport { ClrControlSuccess } from './success';\n\n@NgModule({\n imports: [CommonModule, ClrIconModule],\n declarations: [\n ClrLabel,\n ClrControlError,\n ClrControlSuccess,\n ClrControlHelper,\n ClrIfError,\n ClrIfSuccess,\n ClrForm,\n ClrLayout,\n ClrControlContainer,\n ClrControl,\n ],\n exports: [\n ClrLabel,\n ClrControlError,\n ClrControlSuccess,\n ClrControlHelper,\n ClrIfError,\n ClrIfSuccess,\n ClrForm,\n ClrLayout,\n ClrControlContainer,\n ClrControl,\n ],\n})\nexport class ClrCommonFormsModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, Inject, InjectionToken, OnDestroy, OnInit } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ClrLabel } from '../common/label';\nimport { ControlIdService } from '../common/providers/control-id.service';\n\nexport const IS_TOGGLE = new InjectionToken<BehaviorSubject<boolean>>('IS_TOGGLE');\nexport function isToggleFactory() {\n return new BehaviorSubject<boolean>(false);\n}\nexport const IS_TOGGLE_PROVIDER = { provide: IS_TOGGLE, useFactory: isToggleFactory };\n\n@Component({\n selector: 'clr-checkbox-wrapper,clr-toggle-wrapper',\n template: `\n <ng-content select=\"[clrCheckbox],[clrToggle]\"></ng-content>\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label\"></label>\n `,\n host: {\n '[class.clr-checkbox-wrapper]': '!toggle',\n '[class.clr-toggle-wrapper]': 'toggle',\n },\n providers: [ControlIdService, IS_TOGGLE_PROVIDER],\n})\nexport class ClrCheckboxWrapper implements DynamicWrapper, OnInit, OnDestroy {\n // We need both _dynamic for HostWrapper and ContentChild(ClrLabel) in cases where\n // the user puts a radio inside a wrapper without a label, host wrapping doesn't apply\n // but we'd still need to insert a label\n _dynamic = false;\n @ContentChild(ClrLabel, { static: true }) label: ClrLabel;\n toggle = false;\n private subscriptions: Subscription[] = [];\n\n constructor(@Inject(IS_TOGGLE) toggleService: BehaviorSubject<boolean>) {\n this.subscriptions.push(\n toggleService.subscribe(state => {\n this.toggle = state;\n })\n );\n }\n\n ngOnInit() {\n if (this.label) {\n this.label.disableGrid();\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Attribute, Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrCheckboxWrapper, IS_TOGGLE } from './checkbox-wrapper';\n\n/**\n * This implements both the clrCheckbox and clrToggle functionality, since they are both just checkboxes with different\n * visual styling. The challenge is that the container needs to know which selector was used, which the @Attribute\n * decorator gets for us to determine if the toggle is used, and emits a value to the wrapper container to tell it\n * there is a toggle switch instead.\n */\n@Directive({\n selector: '[clrCheckbox],[clrToggle]',\n})\nexport class ClrCheckbox extends WrappedFormControl<ClrCheckboxWrapper> {\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef,\n @Attribute('clrToggle') private toggle: string\n ) {\n super(vcr, ClrCheckboxWrapper, injector, control, renderer, el);\n }\n\n override ngOnInit() {\n super.ngOnInit();\n\n const toggleService = this.getProviderFromContainer<BehaviorSubject<boolean>>(IS_TOGGLE, null);\n\n if (toggleService && this.toggle !== null) {\n toggleService.next(true);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, Component, ContentChildren, Input, Optional, QueryList } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ContainerIdService } from '../common/providers/container-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ClrCheckbox } from './checkbox';\n\n@Component({\n selector: 'clr-checkbox-container,clr-toggle-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [class.clr-control-inline]=\"clrInline\" [ngClass]=\"controlClass()\">\n <ng-content select=\"clr-checkbox-wrapper,clr-toggle-wrapper\"></ng-content>\n <div class=\"clr-subtext-wrapper\">\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n '[attr.role]': 'role',\n },\n providers: [IfControlStateService, NgControlService, ControlClassService, ContainerIdService],\n})\nexport class ClrCheckboxContainer extends ClrAbstractContainer implements AfterContentInit {\n role: string;\n\n @ContentChildren(ClrCheckbox, { descendants: true }) checkboxes: QueryList<ClrCheckbox>;\n\n private inline = false;\n\n constructor(\n @Optional() protected override layoutService: LayoutService,\n protected override controlClassService: ControlClassService,\n protected override ngControlService: NgControlService,\n protected override ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n /*\n * Here we want to support the following cases\n * clrInline - true by presence\n * clrInline=\"true|false\" - unless it is explicitly false, strings are considered true\n * [clrInline]=\"true|false\" - expect a boolean\n */\n @Input()\n get clrInline() {\n return this.inline;\n }\n set clrInline(value: boolean | string) {\n if (typeof value === 'string') {\n this.inline = value === 'false' ? false : true;\n } else {\n this.inline = !!value;\n }\n }\n\n override ngAfterContentInit() {\n this.setAriaRoles();\n }\n\n private setAriaRoles() {\n this.role = this.checkboxes.length ? 'group' : null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrCheckbox } from './checkbox';\nimport { ClrCheckboxContainer } from './checkbox-container';\nimport { ClrCheckboxWrapper } from './checkbox-wrapper';\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrCommonFormsModule, ClrHostWrappingModule],\n declarations: [ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],\n exports: [ClrCommonFormsModule, ClrCheckbox, ClrCheckboxContainer, ClrCheckboxWrapper],\n})\nexport class ClrCheckboxModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport function isBooleanAttributeSet(value: string | boolean): boolean {\n // for null just return false no need to check anything\n if (value === null) {\n return false;\n }\n if (typeof value === 'string') {\n // Empty string is valid, 'true' as string is also valid\n return value.length >= 0;\n }\n // Boolean value will be read as it is, everything else is false\n return typeof value === 'boolean' ? value : false;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';\n\n@Component({\n selector: 'clr-spinner',\n template: `<ng-content></ng-content>`,\n host: {\n '[attr.aria-busy]': 'true',\n },\n})\nexport class ClrSpinner {\n private _inline: boolean;\n private _inverse: boolean;\n private _small: boolean;\n private _medium: boolean;\n\n /**\n * Default class for all spinners. This class is always true\n */\n @HostBinding('class.spinner')\n get spinnerClass() {\n return true;\n }\n\n @HostBinding('class.spinner-inline')\n get inlineClass() {\n return this._inline;\n }\n\n @Input('clrInline')\n set clrInline(value: boolean | string) {\n this._inline = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.spinner-inverse')\n get inverseClass() {\n return this._inverse;\n }\n\n @Input('clrInverse')\n set clrInverse(value: boolean | string) {\n this._inverse = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.spinner-sm')\n get smallClass() {\n return this._small;\n }\n\n @Input('clrSmall')\n set clrSmall(value: boolean | string) {\n this._small = isBooleanAttributeSet(value);\n }\n\n /**\n * When clrSmall & clrMedium are set both to true.\n * The CSS with high priority will be small - so medium size will be ignored.\n *\n * For this reason if clrSmall is set we won't add clrMedium class.\n *\n * NOTE: This is dictated by the CSS rules.\n * DON'T USE clrSmall & clrMedium to toggle classes. This could change without notice.\n *\n * Also there is no logical need to have both of them set to TRUE or FALSE.\n */\n @HostBinding('class.spinner-md')\n get mediumClass() {\n if (this._small) {\n return false;\n }\n return this._medium;\n }\n\n @Input('clrMedium')\n set clrMedium(value: boolean | string) {\n this._medium = isBooleanAttributeSet(value);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrSpinner } from './spinner';\n\nexport const CLR_SPINNER_DIRECTIVES: Type<any>[] = [ClrSpinner];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_SPINNER_DIRECTIVES],\n exports: [CLR_SPINNER_DIRECTIVES],\n})\nexport class ClrSpinnerModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrFocusDirection {\n VERTICAL = 'vertical',\n HORIZONTAL = 'horizontal',\n BOTH = 'both',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, Inject, PLATFORM_ID } from '@angular/core';\n\n@Directive({\n selector: '[clrKeyFocusItem]',\n})\nexport class ClrKeyFocusItem {\n constructor(private elementRef: ElementRef, @Inject(PLATFORM_ID) private platformId: any) {}\n\n get nativeElement() {\n return this.elementRef.nativeElement;\n }\n\n focus() {\n if (isPlatformBrowser(this.platformId)) {\n this.elementRef.nativeElement.focus();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n Output,\n QueryList,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Keys } from '../../enums/keys.enum';\nimport { ClrFocusDirection } from './enums/focus-direction.enum';\nimport { FocusableItem } from './interfaces';\nimport { ClrKeyFocusItem } from './key-focus-item';\nimport { normalizeKey, preventArrowKeyScroll } from './util';\n\n@Component({\n selector: '[clrKeyFocus]',\n template: '<ng-content></ng-content>',\n})\nexport class ClrKeyFocus {\n @Input('clrDirection') direction: ClrFocusDirection | string = ClrFocusDirection.VERTICAL;\n @Input('clrFocusOnLoad') focusOnLoad = false;\n\n @ContentChildren(ClrKeyFocusItem, { descendants: true }) protected clrKeyFocusItems: QueryList<ClrKeyFocusItem>;\n\n protected subscriptions: Subscription[] = [];\n\n @Output('clrFocusChange') private focusChange = new EventEmitter<number>();\n\n private _current = 0;\n private _focusableItems: Array<FocusableItem>;\n\n constructor(private elementRef: ElementRef) {}\n\n /**\n * Here we use `any` cause any other type require reworking all methods below and a lot of more ifs.\n * this method will only work with array with FocusableItems anyway so any other value will be ignored.\n */\n @Input('clrKeyFocus')\n get focusableItems() {\n if (this._focusableItems) {\n return this._focusableItems;\n } else if (this.clrKeyFocusItems) {\n return this.clrKeyFocusItems.toArray();\n }\n return [];\n }\n set focusableItems(elements: Array<FocusableItem> | any) {\n // We accept a list of focusable elements (HTMLElements or existing Directives) or auto query for clrKeyFocusItem\n // We accept a list reference in the cases where we cannot use ContentChildren to query\n // ContentChildren can be unavailable if content is projected outside the scope of the component (see tabs).\n if (Array.isArray(elements) && elements.length) {\n this._focusableItems = elements as Array<FocusableItem>;\n this.initializeFocus();\n }\n }\n\n get nativeElement(): HTMLElement {\n return this.elementRef.nativeElement;\n }\n\n get current() {\n return this._current;\n }\n set current(value: number) {\n if (this._current !== value) {\n this._current = value;\n }\n }\n\n get currentItem() {\n return this.focusableItems[this._current];\n }\n\n get currentItemElement(): HTMLElement {\n return this.currentItem.nativeElement ? this.currentItem.nativeElement : (this.currentItem as HTMLElement);\n }\n\n ngAfterContentInit() {\n this.subscriptions.push(this.listenForItemUpdates());\n this.initializeFocus();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n @HostListener('keydown', ['$event'])\n handleKeyboardEvent(event: KeyboardEvent) {\n // Make sure event was originated on the current item's element\n if (this.currentItemElement !== event.target) {\n const position = this.getItemPosition(event.target as HTMLElement);\n if (this.positionInRange(position)) {\n this.current = position;\n }\n }\n\n if (this.prevKeyPressed(event) && this.currentFocusIsNotFirstItem()) {\n this.moveTo(this.current - 1);\n } else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {\n this.moveTo(this.current + 1);\n } else if (event.code === Keys.Home) {\n this.moveTo(0);\n } else if (event.code === Keys.End) {\n this.moveTo(this.focusableItems.length - 1);\n }\n\n preventArrowKeyScroll(event);\n }\n\n @HostListener('click', ['$event'])\n setClickedItemCurrent(event: any) {\n const position = this.getItemPosition(event.target);\n\n if (position > -1) {\n this.moveTo(position);\n }\n }\n\n focusCurrent() {\n this.currentItem.focus();\n this.focusChange.next(this._current);\n }\n\n moveTo(position: number) {\n if (this.positionInRange(position)) {\n this.current = position;\n this.focusCurrent();\n }\n }\n\n protected positionInRange(position: number) {\n return position >= 0 && position < this.focusableItems.length;\n }\n\n protected currentFocusIsNotFirstItem() {\n return this._current - 1 >= 0;\n }\n\n protected currentFocusIsNotLastItem() {\n return this._current + 1 < this.focusableItems.length;\n }\n\n protected initializeFocus() {\n if (this.focusableItems && this.focusableItems.length) {\n // It is possible that the focus was on an element, whose index is no longer available.\n // This can happen when some of the focusable elements are being removed.\n // In such cases, the new focus is initialized on the last focusable element.\n if (this._current >= this.focusableItems.length) {\n this._current = this.focusableItems.length - 1;\n }\n\n if (this.focusOnLoad) {\n this.currentItem.focus();\n this.focusChange.next();\n }\n }\n }\n\n protected nextKeyPressed(event: KeyboardEvent) {\n const key = normalizeKey(event.key);\n\n switch (this.direction) {\n case ClrFocusDirection.VERTICAL:\n return key === Keys.ArrowDown;\n case ClrFocusDirection.HORIZONTAL:\n return key === Keys.ArrowRight;\n case ClrFocusDirection.BOTH:\n return key === Keys.ArrowDown || key === Keys.ArrowRight;\n default:\n return false;\n }\n }\n\n protected prevKeyPressed(event: KeyboardEvent) {\n const key = normalizeKey(event.key);\n\n switch (this.direction) {\n case ClrFocusDirection.VERTICAL:\n return key === Keys.ArrowUp;\n case ClrFocusDirection.HORIZONTAL:\n return key === Keys.ArrowLeft;\n case ClrFocusDirection.BOTH:\n return key === Keys.ArrowUp || key === Keys.ArrowLeft;\n default:\n return false;\n }\n }\n\n private getItemPosition(item: HTMLElement) {\n if (this._focusableItems) {\n return this.focusableItems.indexOf(item);\n } else {\n return this.focusableItems.map(_item => _item.nativeElement).indexOf(item);\n }\n }\n\n private listenForItemUpdates() {\n return this.clrKeyFocusItems.changes.subscribe(() => {\n this.initializeFocus();\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, Input, Renderer2 } from '@angular/core';\n\nimport { Keys } from '../../../utils/enums/keys.enum';\nimport { FocusableItem } from './interfaces';\nimport { ClrKeyFocus } from './key-focus';\n\n@Component({\n selector: '[clrRovingTabindex]',\n template: '<ng-content></ng-content>',\n})\nexport class ClrRovingTabindex extends ClrKeyFocus {\n private disabled = false;\n\n constructor(elementRef: ElementRef, private renderer: Renderer2) {\n super(elementRef);\n }\n\n // Proxy the input, as the selector name from parent class will still be \"clrKeyFocus\".\n @Input('clrRovingTabindex')\n get rovingIndexItems(): Array<FocusableItem> | string {\n return this.focusableItems;\n }\n set rovingIndexItems(elements: Array<FocusableItem> | string) {\n this.focusableItems = elements as Array<FocusableItem>;\n }\n\n @Input('clrRovingTabindexDisabled')\n set rovingTabindexDisabled(disabled: boolean) {\n this.disabled = disabled;\n if (this.currentItem) {\n this.setTabindex(this.currentItem, disabled ? -1 : 0);\n }\n }\n\n override handleKeyboardEvent(event: KeyboardEvent) {\n if (this.prevKeyPressed(event) && this.currentFocusIsNotFirstItem()) {\n this.updateTabindex(this.current - 1);\n } else if (this.nextKeyPressed(event) && this.currentFocusIsNotLastItem()) {\n this.updateTabindex(this.current + 1);\n } else if (event.code === Keys.Home) {\n this.updateTabindex(0);\n } else if (event.code === Keys.End) {\n this.updateTabindex(this.focusableItems.length - 1);\n }\n super.handleKeyboardEvent(event);\n }\n\n override setClickedItemCurrent(event: any) {\n let position: number;\n\n if (this.focusableItems[0].nativeElement) {\n position = this.focusableItems.map(item => item.nativeElement).indexOf(event.target);\n } else {\n position = this.focusableItems.indexOf(event.target);\n }\n\n if (position > -1) {\n this.updateTabindex(position);\n }\n super.setClickedItemCurrent(event);\n }\n\n protected override initializeFocus() {\n if (this.focusableItems && this.focusableItems.length) {\n this.focusableItems.forEach(item => {\n this.setTabindex(item, -1);\n });\n\n // It is possible that the focus was on an element, whose index is no longer available.\n // This can happen when some of the focusable elements are being removed.\n // In such cases, the new focus is initialized on the last focusable element.\n if (this.current >= this.focusableItems.length) {\n this.current = this.focusableItems.length - 1;\n }\n if (!this.disabled && this.currentItem) {\n this.setTabindex(this.currentItem, 0);\n }\n }\n super.initializeFocus();\n }\n\n private updateTabindex(newIndex: number) {\n this.setTabindex(this.currentItem, -1);\n this.setTabindex(this.focusableItems[newIndex], 0);\n }\n\n private setTabindex(item: FocusableItem, value: number) {\n if (item instanceof HTMLElement) {\n this.renderer.setAttribute(item, 'tabindex', value.toString());\n } else {\n this.renderer.setAttribute(item.nativeElement, 'tabindex', value.toString());\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrKeyFocus } from './key-focus';\nimport { ClrKeyFocusItem } from './key-focus-item';\nimport { ClrRovingTabindex } from './roving-tabindex';\n\nconst KEY_FOCUS_DIRECTIVES: Type<any>[] = [ClrKeyFocus, ClrRovingTabindex, ClrKeyFocusItem];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [KEY_FOCUS_DIRECTIVES],\n exports: [KEY_FOCUS_DIRECTIVES],\n})\nexport class ClrKeyFocusModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ComboboxContainerService {\n labelOffset = 0;\n labelText: string;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, AfterViewInit, Component, ElementRef, Optional, ViewChild } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ComboboxContainerService } from './providers/combobox-container.service';\n\n@Component({\n selector: 'clr-combobox-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\" #controlContainer>\n <ng-content select=\"clr-combobox\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-combobox-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService, ComboboxContainerService],\n})\nexport class ClrComboboxContainer extends ClrAbstractContainer implements AfterContentInit, AfterViewInit {\n @ViewChild('controlContainer') controlContainer: ElementRef;\n\n constructor(\n ifControlStateService: IfControlStateService,\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n private containerService: ComboboxContainerService,\n private el: ElementRef\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n override ngAfterContentInit() {\n if (this.label) {\n this.containerService.labelText = this.label.labelText;\n }\n }\n\n ngAfterViewInit() {\n this.containerService.labelOffset =\n this.controlContainer.nativeElement.offsetHeight - this.el.nativeElement.offsetHeight;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ComboboxModel } from './combobox.model';\n\nexport class MultiSelectComboboxModel<T> implements ComboboxModel<T> {\n model: T[];\n\n containsItem(item: T): boolean {\n return this.model ? this.model.includes(item) : false;\n }\n\n select(item: T): void {\n this.addItem(item);\n }\n\n unselect(item: T): void {\n this.removeItem(item);\n }\n\n isEmpty(): boolean {\n return !(this.model && this.model.length > 0);\n }\n\n pop(): T {\n let item;\n if (this.model && this.model.length > 0) {\n item = this.model[this.model.length - 1];\n this.removeItem(item);\n }\n return item;\n }\n\n toString(displayField?: string, index = -1): string {\n let displayString = '';\n\n if (this.model) {\n // If the model is array, we can use a specific item from it, to retrieve the display value.\n if (index > -1) {\n if (this.model[index]) {\n // If we have a defined display field, we'll use it's value as display value\n if (displayField && (this.model[index] as any)[displayField]) {\n displayString += (this.model[index] as any)[displayField];\n } else {\n // If we don't have a defined display field, we'll use the toString representation of the\n // item as display value.\n displayString += this.model[index].toString();\n }\n }\n } else {\n this.model.forEach((model: T) => {\n // If we have a defined display field, we'll use it's value as display value\n if (displayField && (model as any)[displayField]) {\n displayString += (model as any)[displayField];\n } else {\n // If we don't have a defined display field, we'll use the toString representation of the\n // model as display value.\n displayString += model.toString();\n }\n displayString += ' ';\n });\n }\n }\n\n return displayString.trim();\n }\n\n private addItem(item: T) {\n if (!this.containsItem(item)) {\n this.model = this.model || [];\n this.model.push(item);\n }\n }\n\n private removeItem(item: T) {\n if (this.model === null || this.model === undefined) {\n return;\n }\n\n const index = this.model.indexOf(item);\n\n if (index > -1) {\n this.model.splice(index, 1);\n }\n\n // we intentionally set the model to null for form validation\n if (this.model.length === 0) {\n this.model = null;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ComboboxModel } from './combobox.model';\n\nexport class SingleSelectComboboxModel<T> implements ComboboxModel<T> {\n model: T;\n\n containsItem(item: T): boolean {\n return this.model === item;\n }\n\n select(item: T): void {\n this.model = item;\n }\n\n unselect(item: T): void {\n if (this.containsItem(item)) {\n this.model = null;\n }\n }\n\n isEmpty(): boolean {\n return !this.model;\n }\n\n pop(): T {\n const item = this.model;\n this.model = null;\n return item;\n }\n\n toString(displayField?: string): string {\n if (!this.model) {\n return '';\n }\n if (displayField && (this.model as any)[displayField]) {\n return (this.model as any)[displayField];\n } else {\n return this.model.toString();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Input, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[clrOptionSelected]',\n})\nexport class ClrOptionSelected<T> {\n @Input('clrOptionSelected') selected: T;\n\n constructor(public template: TemplateRef<{ $implicit: T }>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable } from 'rxjs';\n\nexport abstract class FocusableItem {\n id: string;\n disabled?: boolean;\n\n up?: FocusableItem | Observable<FocusableItem>;\n down?: FocusableItem | Observable<FocusableItem>;\n left?: FocusableItem | Observable<FocusableItem>;\n right?: FocusableItem | Observable<FocusableItem>;\n\n abstract focus(): void;\n abstract blur(): void;\n abstract activate?(): void;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Type } from '@angular/core';\n\nimport { FocusableItem } from './focusable-item';\n\nexport function customFocusableItemProvider<T>(implementation: Type<T>) {\n return [\n implementation,\n {\n provide: FocusableItem,\n useExisting: implementation,\n },\n ];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { SingleSelectComboboxModel } from './single-select-combobox.model';\n\nexport class PseudoFocusModel<T> extends SingleSelectComboboxModel<T> {\n private _focusChanged = new BehaviorSubject<T>(null);\n get focusChanged(): Observable<T> {\n return this._focusChanged.asObservable();\n }\n\n override select(item: T): void {\n if (this.model !== item) {\n this.model = item;\n this._focusChanged.next(item);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, ReplaySubject } from 'rxjs';\n\nimport { ComboboxModel } from '../model/combobox.model';\nimport { MultiSelectComboboxModel } from '../model/multi-select-combobox.model';\n\n@Injectable()\nexport class OptionSelectionService<T> {\n loading = false;\n displayField: string;\n selectionModel: ComboboxModel<T>;\n inputChanged: Observable<string>;\n\n // Display all options on first open, even if filter text exists.\n // https://github.com/vmware-clarity/ng-clarity/issues/386\n showAllOptions = true;\n\n private _currentInput = '';\n private _inputChanged = new BehaviorSubject('');\n private _selectionChanged = new ReplaySubject<ComboboxModel<T>>(1);\n\n constructor() {\n this.inputChanged = this._inputChanged.asObservable();\n }\n\n get currentInput(): string {\n return this._currentInput;\n }\n set currentInput(input) {\n // clear value in single selection model when input is empty\n if (input === '' && !this.multiselectable) {\n this.setSelectionValue(null);\n }\n this._currentInput = input;\n this._inputChanged.next(input);\n }\n\n // This observable is for notifying the ClrOption to update its\n // selection by comparing the value\n get selectionChanged(): Observable<ComboboxModel<T>> {\n return this._selectionChanged.asObservable();\n }\n\n get multiselectable(): boolean {\n return this.selectionModel instanceof MultiSelectComboboxModel;\n }\n\n select(item: T) {\n if (item === null || item === undefined || this.selectionModel.containsItem(item)) {\n return;\n }\n this.selectionModel.select(item);\n this._selectionChanged.next(this.selectionModel);\n }\n\n toggle(item: T) {\n if (item === null || item === undefined) {\n return;\n }\n if (this.selectionModel.containsItem(item)) {\n this.selectionModel.unselect(item);\n } else {\n this.selectionModel.select(item);\n }\n this._selectionChanged.next(this.selectionModel);\n }\n\n unselect(item: T) {\n if (item === null || item === undefined || !this.selectionModel.containsItem(item)) {\n return;\n }\n this.selectionModel.unselect(item);\n this._selectionChanged.next(this.selectionModel);\n }\n\n // TODO: Add support for trackBy and compareFn\n setSelectionValue(value: T | T[]): void {\n // NOTE: Currently we assume that no 2 options will have the same value\n // but Eudes and I discussed that this is a possibility but we will handle\n // this later\n\n // if selection is undefined, or its value hasn't changed, or changing from null <-> undefined, that's not really changing so we return\n if (!this.selectionModel || this.selectionModel.model === value || (!this.selectionModel.model && !value)) {\n return;\n }\n\n this.selectionModel.model = value;\n this._selectionChanged.next(this.selectionModel);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ChangeDetectorRef, Inject, Injectable, PLATFORM_ID, Renderer2, RendererFactory2 } from '@angular/core';\nimport { take } from 'rxjs/operators';\n\nimport { Keys } from '../../../utils/enums/keys.enum';\nimport { ArrowKeyDirection } from '../../../utils/focus/arrow-key-direction.enum';\nimport { customFocusableItemProvider } from '../../../utils/focus/focusable-item/custom-focusable-item-provider';\nimport { normalizeKey } from '../../../utils/focus/key-focus/util';\nimport { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\nimport { PseudoFocusModel } from '../model/pseudo-focus.model';\nimport { OptionSelectionService } from './option-selection.service';\n\n@Injectable()\nexport class ComboboxFocusHandler<T> {\n // We need a Change Detector from the related component, so we can update it on Blur\n // (which is needed because of Edge specific lifecycle mis-behavior)\n componentCdRef: ChangeDetectorRef;\n pseudoFocus: PseudoFocusModel<OptionData<T>> = new PseudoFocusModel<OptionData<T>>();\n\n private renderer: Renderer2;\n private _trigger: HTMLElement;\n private _listbox: HTMLElement;\n private _textInput: HTMLElement;\n private optionData: OptionData<T>[] = [];\n\n constructor(\n rendererFactory: RendererFactory2,\n private toggleService: ClrPopoverToggleService,\n private selectionService: OptionSelectionService<T>,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.handleFocusSubscription();\n // Direct renderer injection can be problematic and leads to failing tests at least\n this.renderer = rendererFactory.createRenderer(null, null);\n }\n\n get trigger() {\n return this._trigger;\n }\n set trigger(el: HTMLElement) {\n this._trigger = el;\n this.addFocusOnBlurListener(el);\n }\n\n get listbox() {\n return this._listbox;\n }\n set listbox(el: HTMLElement) {\n this._listbox = el;\n this.addFocusOnBlurListener(el);\n }\n\n get textInput() {\n return this._textInput;\n }\n set textInput(el: HTMLElement) {\n this._textInput = el;\n this.renderer.listen(el, 'keydown', event => !this.handleTextInput(event));\n this.addFocusOnBlurListener(el);\n }\n\n focusInput() {\n if (this.textInput && isPlatformBrowser(this.platformId)) {\n this.textInput.focus();\n }\n }\n\n focusFirstActive() {\n if (this.optionData.length > 0) {\n if (this.selectionService.selectionModel.isEmpty()) {\n this.pseudoFocus.select(this.optionData[0]);\n } else {\n let firstActive: T;\n if (this.selectionService.multiselectable) {\n firstActive = (this.selectionService.selectionModel.model as T[])[0];\n } else {\n firstActive = this.selectionService.selectionModel.model as T;\n }\n const activeProxy = this.optionData.find(option => option.value === firstActive);\n if (activeProxy) {\n // active element is visible\n this.pseudoFocus.select(activeProxy);\n } else {\n // we have active element, but it's filtered out\n this.pseudoFocus.select(this.optionData[0]);\n }\n this.scrollIntoSelectedModel('auto');\n }\n }\n }\n\n addOptionValues(options: OptionData<T>[]) {\n this.optionData = options;\n }\n\n private handleFocusSubscription() {\n this.toggleService.openChange.subscribe(open => {\n if (!open) {\n this.pseudoFocus.model = null;\n }\n });\n }\n\n private moveFocusTo(direction: ArrowKeyDirection) {\n let index = this.optionData.findIndex(option => option.equals(this.pseudoFocus.model));\n if (direction === ArrowKeyDirection.UP) {\n if (index === -1 || index === 0) {\n index = this.optionData.length - 1;\n } else {\n index--;\n }\n } else if (direction === ArrowKeyDirection.DOWN) {\n if (index === -1 || index === this.optionData.length - 1) {\n index = 0;\n } else {\n index++;\n }\n }\n this.pseudoFocus.select(this.optionData[index]);\n this.scrollIntoSelectedModel();\n }\n\n private openAndMoveTo(direction: ArrowKeyDirection) {\n if (!this.toggleService.open) {\n this.toggleService.openChange.pipe(take(1)).subscribe(open => {\n if (open) {\n this.moveFocusTo(direction);\n }\n });\n this.toggleService.open = true;\n } else {\n this.moveFocusTo(direction);\n }\n }\n\n // this service is only interested in keys that may move the focus\n private handleTextInput(event: KeyboardEvent): boolean {\n let preventDefault = false;\n const key = normalizeKey(event.key);\n if (event) {\n switch (key) {\n case Keys.Enter:\n if (this.toggleService.open && this.pseudoFocus.model) {\n if (this.selectionService.multiselectable) {\n this.selectionService.toggle(this.pseudoFocus.model.value);\n } else {\n this.selectionService.select(this.pseudoFocus.model.value);\n }\n preventDefault = true;\n }\n break;\n case Keys.Space:\n if (!this.toggleService.open) {\n this.toggleService.open = true;\n preventDefault = true;\n }\n break;\n case Keys.ArrowUp:\n this.preventViewportScrolling(event);\n this.openAndMoveTo(ArrowKeyDirection.UP);\n preventDefault = true;\n break;\n case Keys.ArrowDown:\n this.preventViewportScrolling(event);\n this.openAndMoveTo(ArrowKeyDirection.DOWN);\n preventDefault = true;\n break;\n default:\n // Any other keypress\n if (\n event.key !== Keys.Tab &&\n !(this.selectionService.multiselectable && event.key === Keys.Backspace) &&\n !(event.key === Keys.Escape) &&\n !this.toggleService.open\n ) {\n this.toggleService.open = true;\n }\n break;\n }\n }\n return preventDefault;\n }\n\n private scrollIntoSelectedModel(behavior: ScrollBehavior = 'smooth') {\n if (this.pseudoFocus.model && this.pseudoFocus.model.el) {\n this.pseudoFocus.model.el.scrollIntoView({ behavior, block: 'center', inline: 'nearest' });\n }\n }\n\n private preventViewportScrolling(event: KeyboardEvent) {\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n private addFocusOnBlurListener(el: HTMLElement) {\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.listen(el, 'blur', event => {\n if (this.focusOutOfComponent(event)) {\n this.toggleService.open = false;\n // Workaround for popover close-on-outside-click timing issues in Edge browser\n if (this.componentCdRef) {\n this.componentCdRef.detectChanges();\n }\n }\n });\n }\n }\n\n private focusOutOfComponent(event: FocusEvent): boolean {\n // event.relatedTarget is null in IE11. In that case we use document.activeElement\n // which points to the element that becomes active as the blur event occurs on the input.\n const target = (event.relatedTarget || document.activeElement) as Node;\n return !(this.textInput.contains(target) || this.trigger.contains(target) || this.listbox.contains(target));\n }\n}\n\nexport const COMBOBOX_FOCUS_HANDLER_PROVIDER = customFocusableItemProvider(ComboboxFocusHandler);\n\nexport class OptionData<T> {\n id: string;\n el: HTMLElement;\n value: T;\n constructor(id: string, value: T) {\n this.id = id;\n this.value = value;\n }\n equals(other: OptionData<T>): boolean {\n if (!other) {\n return false;\n }\n return this.id === other.id && this.value === other.value;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, HostBinding, HostListener, Input, OnInit } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ComboboxFocusHandler, OptionData as OptionProxy } from './providers/combobox-focus-handler.service';\nimport { OptionSelectionService } from './providers/option-selection.service';\n@Component({\n selector: 'clr-option',\n template: `\n <ng-content></ng-content>\n <span *ngIf=\"selected\" class=\"clr-sr-only\">{{ commonStrings.keys.comboboxSelected }}</span>\n `,\n host: {\n '[class.clr-combobox-option]': 'true',\n '[attr.role]': '\"option\"',\n // Do not remove. Or click-selection will not work.\n '[attr.tabindex]': '-1',\n '[attr.id]': 'optionId',\n },\n})\nexport class ClrOption<T> implements OnInit {\n // A proxy with only the necessary data to be used for a11y and the focus handler service.\n optionProxy: OptionProxy<T> = new OptionProxy(null, null);\n\n private _id: string;\n private _value: T;\n\n constructor(\n public elRef: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private focusHandler: ComboboxFocusHandler<T>,\n private optionSelectionService: OptionSelectionService<T>\n ) {\n this.optionProxy.el = this.elRef.nativeElement;\n }\n\n @Input('id')\n get optionId() {\n return this._id;\n }\n set optionId(id: string) {\n this._id = id;\n this.optionProxy.id = this._id;\n }\n\n @Input('clrValue')\n get value(): T {\n return this._value;\n }\n set value(value: T) {\n this._value = value;\n this.optionProxy.value = value;\n }\n\n @HostBinding('class.active')\n get selected() {\n return (\n this.optionSelectionService.selectionModel && this.optionSelectionService.selectionModel.containsItem(this.value)\n );\n }\n\n @HostBinding('class.clr-focus')\n get focusClass() {\n return this.focusHandler.pseudoFocus.containsItem(this.optionProxy);\n }\n\n ngOnInit() {\n if (!this._id) {\n this._id = 'clr-option-' + uniqueIdFactory();\n this.optionProxy.id = this._id;\n }\n }\n\n @HostListener('click')\n onClick() {\n if (this.optionSelectionService.multiselectable) {\n this.optionSelectionService.toggle(this.value);\n } else {\n this.optionSelectionService.select(this.value);\n }\n // As the popover stays open in multi-select mode now, we have to take focus back to the input\n // This way we achieve two things:\n // - do not lose focus\n // - we're still able to use onBlur for \"outside-click\" handling\n this.focusHandler.focusInput();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n Inject,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\nimport { POPOVER_HOST_ANCHOR } from '../../popover/common/popover-host-anchor.token';\nimport { IF_ACTIVE_ID } from '../../utils/conditional/if-active.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrOption } from './option';\nimport { ComboboxFocusHandler } from './providers/combobox-focus-handler.service';\nimport { OptionSelectionService } from './providers/option-selection.service';\n\nlet nbOptionsComponents = 0;\n\n@Component({\n selector: 'clr-options',\n template: `\n <div *ngIf=\"optionSelectionService.loading\" class=\"clr-combobox-options-loading\">\n <clr-spinner clrInline>\n {{ commonStrings.keys.loading }}\n </clr-spinner>\n <span class=\"clr-combobox-options-text\">\n {{ searchText(optionSelectionService.currentInput) }}\n </span>\n </div>\n\n <!-- Rendered if data set is empty -->\n <div *ngIf=\"emptyOptions\">\n <span class=\"clr-combobox-options-empty-text\">\n {{ commonStrings.keys.comboboxNoResults }}\n </span>\n </div>\n\n <!--Option Groups and Options will be projected here-->\n <ng-content></ng-content>\n `,\n providers: [{ provide: LoadingListener, useExisting: ClrOptions }],\n host: {\n '[class.clr-combobox-options]': 'true',\n '[attr.role]': '\"listbox\"',\n '[id]': 'optionsId',\n },\n})\nexport class ClrOptions<T> implements AfterViewInit, LoadingListener, OnDestroy {\n @Input('id') optionsId: string;\n\n loading = false;\n _items: QueryList<ClrOption<T>>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n public optionSelectionService: OptionSelectionService<T>,\n @Inject(IF_ACTIVE_ID) public id: number,\n private el: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private focusHandler: ComboboxFocusHandler<T>,\n private toggleService: ClrPopoverToggleService,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n @Inject(DOCUMENT) private document: any\n ) {\n if (!parentHost) {\n throw new Error('clr-options should only be used inside of a clr-combobox');\n }\n\n if (!this.optionsId) {\n this.optionsId = 'clr-options-' + nbOptionsComponents++;\n }\n }\n\n @ContentChildren(ClrOption)\n get items(): QueryList<ClrOption<T>> {\n return this._items;\n }\n set items(items: QueryList<ClrOption<T>>) {\n this._items = items;\n this.focusHandler.addOptionValues(this._items.map(option => option.optionProxy));\n }\n\n /**\n * Tests if the list of options is empty, meaning it doesn't contain any items\n */\n get emptyOptions() {\n return !this.optionSelectionService.loading && this.items.length === 0;\n }\n\n ngAfterViewInit() {\n this.focusHandler.listbox = this.el.nativeElement;\n\n this.subscriptions.push(\n fromEvent(this.document, 'scroll', { capture: true }).subscribe(event => {\n if (\n this.toggleService.open &&\n (event as Event).target !== this.el.nativeElement &&\n (event as Event).target !== this.focusHandler.textInput\n ) {\n this.toggleService.open = false;\n }\n }),\n this.items.changes.subscribe(items => {\n if (items.length) {\n setTimeout(() => {\n this.focusHandler.focusFirstActive();\n });\n } else {\n this.focusHandler.pseudoFocus.pop();\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n searchText(input: string) {\n return this.commonStrings.parse(this.commonStrings.keys.comboboxSearching, { INPUT: input });\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.loading = state === ClrLoadingState.LOADING;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n ChangeDetectorRef,\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n HostListener,\n Inject,\n Injector,\n Input,\n Optional,\n Output,\n PLATFORM_ID,\n Renderer2,\n Self,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\n\nimport { IF_ACTIVE_ID_PROVIDER } from '../../utils/conditional/if-active.service';\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { CONTROL_STATE, IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrComboboxContainer } from './combobox-container';\nimport { ComboboxModel } from './model/combobox.model';\nimport { MultiSelectComboboxModel } from './model/multi-select-combobox.model';\nimport { SingleSelectComboboxModel } from './model/single-select-combobox.model';\nimport { ClrOptionSelected } from './option-selected.directive';\nimport { ClrOptions } from './options';\nimport { ComboboxContainerService } from './providers/combobox-container.service';\nimport { COMBOBOX_FOCUS_HANDLER_PROVIDER, ComboboxFocusHandler } from './providers/combobox-focus-handler.service';\nimport { OptionSelectionService } from './providers/option-selection.service';\n\n@Component({\n selector: 'clr-combobox',\n templateUrl: './combobox.html',\n providers: [\n OptionSelectionService,\n { provide: LoadingListener, useExisting: ClrCombobox },\n IF_ACTIVE_ID_PROVIDER,\n FOCUS_SERVICE_PROVIDER,\n COMBOBOX_FOCUS_HANDLER_PROVIDER,\n ],\n hostDirectives: [ClrPopoverHostDirective],\n host: {\n '[class.aria-required]': 'true',\n '[class.clr-combobox]': 'true',\n '[class.clr-combobox-disabled]': 'control?.disabled',\n },\n})\nexport class ClrCombobox<T>\n extends WrappedFormControl<ClrComboboxContainer>\n implements ControlValueAccessor, LoadingListener, AfterContentInit\n{\n @Input('placeholder') placeholder = '';\n\n @Output('clrInputChange') clrInputChange = new EventEmitter<string>(false);\n @Output('clrOpenChange') clrOpenChange = this.toggleService.openChange;\n\n /**\n * This output should be used to set up a live region using aria-live and populate it with updates that reflect each combobox change.\n */\n @Output('clrSelectionChange') clrSelectionChange = this.optionSelectionService.selectionChanged;\n\n @ViewChild('textboxInput') textbox: ElementRef;\n @ViewChild('trigger') trigger: ElementRef;\n @ContentChild(ClrOptionSelected) optionSelected: ClrOptionSelected<T>;\n\n invalid = false;\n focused = false;\n focusedPill: any;\n\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n protected override index = 1;\n\n @ContentChild(ClrOptions) private options: ClrOptions<T>;\n\n private _searchText = '';\n private onTouchedCallback: () => any;\n private onChangeCallback: (model: T | T[]) => any;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n public control: NgControl,\n protected override renderer: Renderer2,\n protected override el: ElementRef,\n public optionSelectionService: OptionSelectionService<T>,\n public commonStrings: ClrCommonStringsService,\n private toggleService: ClrPopoverToggleService,\n private positionService: ClrPopoverPositionService,\n @Optional() private controlStateService: IfControlStateService,\n @Optional() private containerService: ComboboxContainerService,\n @Inject(PLATFORM_ID) private platformId: any,\n private focusHandler: ComboboxFocusHandler<T>,\n private cdr: ChangeDetectorRef\n ) {\n super(vcr, ClrComboboxContainer, injector, control, renderer, el);\n if (control) {\n control.valueAccessor = this;\n }\n // default to SingleSelectComboboxModel, in case the optional input [ClrMulti] isn't used\n this.optionSelectionService.selectionModel = new SingleSelectComboboxModel<T>();\n this.updateControlValue();\n }\n\n @Input('clrMulti')\n get multiSelect() {\n return this.optionSelectionService.multiselectable;\n }\n set multiSelect(value: boolean | string) {\n if (value) {\n this.optionSelectionService.selectionModel = new MultiSelectComboboxModel<T>();\n } else {\n // in theory, setting this again should not cause errors even though we already set it in constructor,\n // since the initial call to writeValue (caused by [ngModel] input) should happen after this\n this.optionSelectionService.selectionModel = new SingleSelectComboboxModel<T>();\n }\n this.updateControlValue();\n }\n\n // Override the id of WrappedFormControl, as we want to move it to the embedded input.\n // Otherwise the label/component connection does not work and screen readers do not read the label.\n override get id() {\n return this.controlIdService.id + '-combobox';\n }\n override set id(id: string) {\n super.id = id;\n }\n\n get searchText(): string {\n return this._searchText;\n }\n set searchText(text: string) {\n // if input text has changed since last time, fire a change event so application can react to it\n if (text !== this._searchText) {\n if (this.toggleService.open) {\n this.optionSelectionService.showAllOptions = false;\n }\n this._searchText = text;\n this.clrInputChange.emit(this.searchText);\n }\n // We need to trigger this even if unchanged, so the option-items directive will update its list\n // based on the \"showAllOptions\" variable which may have changed in the openChange subscription below.\n // The option-items directive does not listen to openChange, but it listens to currentInput changes.\n this.optionSelectionService.currentInput = this.searchText;\n }\n\n get openState(): boolean {\n return this.toggleService.open;\n }\n\n get multiSelectModel(): T[] {\n if (!this.multiSelect) {\n throw Error('multiSelectModel is not available in single selection context');\n }\n return (this.optionSelectionService.selectionModel as MultiSelectComboboxModel<T>).model;\n }\n\n get ariaControls(): string {\n return this.options?.optionsId;\n }\n\n get ariaOwns(): string {\n return this.options?.optionsId;\n }\n\n get ariaDescribedBySelection(): string {\n return 'selection-' + this.id;\n }\n\n get displayField(): string {\n return this.optionSelectionService.displayField;\n }\n\n private get disabled() {\n return this.control && this.control.disabled;\n }\n\n ngAfterContentInit() {\n this.initializeSubscriptions();\n\n // Initialize with preselected value\n if (!this.optionSelectionService.selectionModel.isEmpty()) {\n this.updateInputValue(this.optionSelectionService.selectionModel);\n }\n }\n\n ngAfterViewInit() {\n this.focusHandler.componentCdRef = this.cdr;\n this.focusHandler.textInput = this.textbox.nativeElement;\n this.focusHandler.trigger = this.trigger.nativeElement;\n // The text input is the actual element we are wrapping\n // This assignment is needed by the wrapper, so it can set\n // the aria properties on the input element, not on the component.\n this.el = this.textbox;\n }\n\n @HostListener('keydown', ['$event'])\n onKeyUp(event: KeyboardEvent) {\n // if BACKSPACE in multiselect mode, delete the last pill if text is empty\n if (event.key === Keys.Backspace && this.multiSelect && this._searchText.length === 0) {\n const multiModel: T[] = this.optionSelectionService.selectionModel.model as T[];\n if (multiModel && multiModel.length > 0) {\n const lastItem: T = multiModel[multiModel.length - 1];\n this.control.control.markAsTouched();\n this.optionSelectionService.unselect(lastItem);\n }\n }\n }\n\n inputId(): string {\n return this.controlIdService.id;\n }\n\n loadingStateChange(state: ClrLoadingState): void {\n this.optionSelectionService.loading = state === ClrLoadingState.LOADING;\n this.positionService.realign();\n if (state !== ClrLoadingState.LOADING && isPlatformBrowser(this.platformId)) {\n this.focusFirstActive();\n }\n }\n\n unselect(item: T) {\n if (!this.disabled) {\n this.optionSelectionService.unselect(item);\n }\n }\n\n onBlur() {\n this.onTouchedCallback();\n if (this.control.control.updateOn === 'blur') {\n this.control.control.updateValueAndValidity();\n }\n this.focused = false;\n }\n\n onFocus() {\n this.focused = true;\n\n // fix for \"expression changed\" error when focus is returned to a combobox after a modal is closed\n // https://github.com/vmware-clarity/ng-clarity/issues/663\n this.cdr.detectChanges();\n }\n\n getSelectionAriaLabel() {\n if (this.containerService && this.containerService.labelText) {\n return `${this.containerService.labelText} ${this.commonStrings.keys.comboboxSelection}`;\n }\n return this.commonStrings.keys.comboboxSelection;\n }\n\n focusFirstActive() {\n setTimeout(() => {\n this.focusHandler.focusFirstActive();\n });\n }\n\n writeValue(value: T | T[]): void {\n this.optionSelectionService.selectionModel.model = value;\n this.updateInputValue(this.optionSelectionService.selectionModel);\n }\n\n registerOnTouched(onTouched: any): void {\n this.onTouchedCallback = onTouched;\n }\n\n registerOnChange(onChange: any): void {\n this.onChangeCallback = onChange;\n }\n\n getActiveDescendant() {\n const model = this.focusHandler.pseudoFocus.model;\n return model ? model.id : null;\n }\n\n setDisabledState(): void {\n // do nothing\n }\n\n focusInput() {\n this.focusHandler.focusInput();\n }\n\n private initializeSubscriptions(): void {\n this.subscriptions.push(\n this.optionSelectionService.selectionChanged.subscribe((newSelection: ComboboxModel<T>) => {\n this.updateInputValue(newSelection);\n if (this.multiSelect) {\n this.positionService.realign();\n }\n if (!this.multiSelect && newSelection && !newSelection.isEmpty()) {\n this.toggleService.open = false;\n }\n this.updateControlValue();\n })\n );\n\n this.subscriptions.push(\n this.toggleService.openChange.subscribe(open => {\n if (open) {\n this.focusFirstActive();\n } else {\n this.optionSelectionService.showAllOptions = true;\n }\n if (this.multiSelect) {\n this.searchText = '';\n } else {\n this.searchText = this.getDisplayNames(this.optionSelectionService.selectionModel.model)[0] || '';\n }\n })\n );\n\n this.subscriptions.push(\n this.toggleService.popoverAligned.subscribe(popoverNode => {\n // When used outside a combobox container\n if (!this.containerService) {\n return;\n }\n const popover: HTMLElement = popoverNode as HTMLElement;\n // Update position if popover hides the label\n if (popover.getBoundingClientRect().top < this.el.nativeElement.getBoundingClientRect().top) {\n this.renderer.setStyle(popoverNode, 'top', `${popover.offsetTop + this.containerService.labelOffset}px`);\n }\n })\n );\n\n if (this.controlStateService) {\n this.subscriptions.push(\n this.controlStateService.statusChanges.subscribe(invalid => {\n this.invalid = invalid === CONTROL_STATE.INVALID;\n })\n );\n }\n }\n\n private updateInputValue(model: ComboboxModel<T>) {\n if (!this.multiSelect) {\n this.searchText = model.model ? this.getDisplayNames(model.model)[0] : '';\n if (this.searchText) {\n this.optionSelectionService.currentInput = this.searchText;\n }\n }\n }\n\n private updateControlValue() {\n if (this.onChangeCallback) {\n this.onChangeCallback(this.optionSelectionService.selectionModel.model);\n }\n }\n\n private getDisplayNames(model: T | T[]) {\n if (this.displayField) {\n if (!Array.isArray(model)) {\n model = [model];\n }\n return model.map(item => (item ? (item as any)[this.displayField] : null));\n }\n return [this.optionSelectionService.selectionModel.model];\n }\n}\n","<!--\n* Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<!-- The (click) handler is needed to auto-focus on input field which can not currently occupy the whole\n width of the component, after being wrapped to a new line -->\n<div\n class=\"clr-combobox-wrapper\"\n clrPopoverAnchor\n (click)=\"focusInput()\"\n [class.multi]=\"multiSelect\"\n [class.invalid]=\"invalid\"\n [class.disabled]=\"control?.disabled? true: null\"\n>\n <span\n *ngIf=\"multiSelect && optionSelectionService.selectionModel.model\"\n role=\"grid\"\n clrRovingTabindex\n [clrRovingTabindexDisabled]=\"control?.disabled\"\n clrDirection=\"both\"\n [attr.aria-label]=\"getSelectionAriaLabel()\"\n [attr.aria-disabled]=\"control?.disabled? true: null\"\n >\n <span *ngFor=\"let item of multiSelectModel; let i = index\" class=\"label label-combobox-pill\" role=\"row\">\n <span role=\"gridcell\">\n <span class=\"clr-combobox-pill-content\" clrKeyFocusItem>\n <ng-container\n *ngIf=\"optionSelected\"\n [ngTemplateOutlet]=\"optionSelected.template\"\n [ngTemplateOutletContext]=\"{$implicit: optionSelectionService.selectionModel.model[i]}\"\n ></ng-container>\n </span>\n </span>\n <span role=\"gridcell\">\n <button\n clrKeyFocusItem\n type=\"button\"\n class=\"clr-combobox-remove-btn\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxDelete + ' ' + optionSelectionService.selectionModel.toString(displayField, i)\"\n (click)=\"unselect(item)\"\n >\n <cds-icon shape=\"window-close\" size=\"12\"></cds-icon>\n </button>\n </span>\n </span>\n </span>\n\n <span class=\"clr-combobox-input-wrapper\">\n <input\n #textboxInput\n type=\"text\"\n role=\"combobox\"\n [id]=\"inputId()\"\n class=\"clr-input clr-combobox-input\"\n [(ngModel)]=\"searchText\"\n (blur)=\"onBlur()\"\n (focus)=\"onFocus()\"\n [attr.aria-expanded]=\"openState\"\n [attr.aria-owns]=\"ariaOwns\"\n aria-haspopup=\"listbox\"\n aria-autocomplete=\"list\"\n autocomplete=\"off\"\n [attr.aria-invalid]=\"control?.invalid? true: null\"\n [disabled]=\"control?.disabled? true: null\"\n [attr.aria-activedescendant]=\"getActiveDescendant()\"\n [attr.placeholder]=\"placeholder\"\n />\n </span>\n\n <!-- No click handler, as it uses the handler on the .clr-combobox-wrapper -->\n <button\n clrPopoverOpenCloseButton\n #trigger\n type=\"button\"\n class=\"clr-combobox-trigger\"\n tabindex=\"-1\"\n [disabled]=\"control?.disabled || null\"\n [attr.aria-label]=\"commonStrings.keys.comboboxOpen\"\n >\n <cds-icon shape=\"angle\" direction=\"down\"></cds-icon>\n </button>\n\n <div class=\"clr-focus-indicator\" [class.clr-focus]=\"focused\"></div>\n</div>\n\n<!-- Both close handlers are handled manually due to issues in Edge browser.\n Additionally 'outsideClickToClose' has complex handling that's necessary\n to be manual due to the component architecture -->\n<div role=\"dialog\" *clrPopoverContent=\"openState at smartPosition; outsideClickToClose: false; scrollToClose: false\">\n <ng-content></ng-content>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverPositionService } from '../../utils/popover/providers/popover-position.service';\nimport { OptionSelectionService } from './providers/option-selection.service';\n\n@Directive({\n selector: '[clrOptionItems][clrOptionItemsOf]',\n})\nexport class ClrOptionItems<T> implements DoCheck, OnDestroy {\n private iterableProxy: NgForOf<T>;\n private _rawItems: T[];\n private filteredItems: T[];\n private subscriptions: Subscription[] = [];\n private filter = '';\n private _filterField: string;\n private differ: IterableDiffer<T> | null = null;\n\n constructor(\n public template: TemplateRef<NgForOfContext<T>>,\n private differs: IterableDiffers,\n private optionService: OptionSelectionService<T>,\n private positionService: ClrPopoverPositionService,\n private vcr: ViewContainerRef\n ) {\n this.iterableProxy = new NgForOf<T>(this.vcr, this.template, this.differs);\n this.subscriptions.push(\n optionService.inputChanged.subscribe(filter => {\n this.filter = filter;\n this.updateItems();\n })\n );\n }\n\n @Input('clrOptionItemsOf')\n set rawItems(items: T[]) {\n this._rawItems = items ? items : [];\n this.updateItems();\n }\n\n @Input('clrOptionItemsTrackBy')\n set trackBy(value: TrackByFunction<T>) {\n this.iterableProxy.ngForTrackBy = value;\n }\n\n @Input('clrOptionItemsField')\n set field(field: string) {\n this._filterField = field;\n this.optionService.displayField = field;\n }\n\n ngDoCheck() {\n if (!this.differ) {\n this.differ = this.differs.find(this.filteredItems).create(this.iterableProxy.ngForTrackBy);\n }\n if (this.differ) {\n const changes = this.differ.diff(this.filteredItems);\n if (changes) {\n this.iterableProxy.ngDoCheck();\n this.positionService.realign();\n }\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private updateItems() {\n if (!this._rawItems || this.filter === undefined || this.filter === null) {\n return;\n }\n\n const normalizedFilterValue = normalizeValue(this.filter);\n\n if (this.optionService.showAllOptions) {\n this.filteredItems = this._rawItems;\n } else if (this._filterField) {\n this.filteredItems = this._rawItems.filter(item => {\n const objValue = (item as any)[this._filterField];\n return objValue ? normalizeValue(objValue).includes(normalizedFilterValue) : false;\n });\n } else {\n // Filter by all item object values\n this.filteredItems = this._rawItems.filter(item => {\n if (typeof item !== 'object') {\n return normalizeValue(item).includes(normalizedFilterValue);\n }\n const objValues = Object.values(item).filter(value => {\n return value !== null && value !== undefined ? normalizeValue(value).includes(normalizedFilterValue) : false;\n });\n return objValues.length > 0;\n });\n }\n this.iterableProxy.ngForOf = this.filteredItems;\n }\n}\n\nfunction normalizeValue(value: any) {\n return value\n .toString()\n .normalize('NFD')\n .replace(/\\p{Diacritic}/gu, '')\n .toLowerCase();\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { angleIcon, checkCircleIcon, ClarityIcons, exclamationCircleIcon, windowCloseIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrSpinnerModule } from '../../progress/spinner/spinner.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrCombobox } from './combobox';\nimport { ClrComboboxContainer } from './combobox-container';\nimport { ClrOption } from './option';\nimport { ClrOptionItems } from './option-items.directive';\nimport { ClrOptionSelected } from './option-selected.directive';\nimport { ClrOptions } from './options';\n\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n ClrIconModule,\n ClrKeyFocusModule,\n ClrCommonFormsModule,\n ClrConditionalModule,\n ClrPopoverModuleNext,\n ClrSpinnerModule,\n ],\n declarations: [ClrCombobox, ClrComboboxContainer, ClrOptions, ClrOption, ClrOptionSelected, ClrOptionItems],\n exports: [\n ClrCommonFormsModule,\n ClrCombobox,\n ClrComboboxContainer,\n ClrOptions,\n ClrOption,\n ClrOptionSelected,\n ClrConditionalModule,\n ClrOptionItems,\n ],\n})\nexport class ClrComboboxModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, angleIcon, windowCloseIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\n\n@Component({\n selector: 'clr-input-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <ng-content select=\"[clrInput]\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrInputContainer extends ClrAbstractContainer {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrInputContainer } from './input-container';\n\n@Directive({\n selector: '[clrInput]',\n host: { '[class.clr-input]': 'true' },\n})\nexport class ClrInput extends WrappedFormControl<ClrInputContainer> {\n protected override index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrInputContainer, injector, control, renderer, el);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrInput } from './input';\nimport { ClrInputContainer } from './input-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrInput, ClrInputContainer],\n exports: [ClrCommonFormsModule, ClrInput, ClrInputContainer],\n})\nexport class ClrInputModule {\n constructor() {\n ClarityIcons.addIcons(\n exclamationCircleIcon,\n checkCircleIcon // caret\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nlet counter = 0;\n\n@Injectable()\nexport class DatalistIdService {\n private _id = 'clr-datalist-' + ++counter;\n private _idChange = new BehaviorSubject(this._id);\n\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n this._id = value;\n this._idChange.next(value);\n }\n\n get idChange(): Observable<string> {\n return this._idChange.asObservable();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, Directive, Input, Optional } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DatalistIdService } from './providers/datalist-id.service';\n\n@Directive({\n selector: 'datalist',\n host: {\n '[id]': 'datalistId',\n },\n})\nexport class ClrDatalist implements AfterContentInit {\n datalistId: string;\n\n private subscriptions: Subscription[] = [];\n\n constructor(@Optional() private datalistIdService: DatalistIdService) {}\n\n @Input()\n set id(idValue: string) {\n if (!!idValue && this.datalistIdService) {\n this.datalistId = idValue;\n this.datalistIdService.id = idValue;\n } else if (idValue) {\n this.datalistId = idValue;\n }\n }\n\n ngAfterContentInit() {\n if (!this.datalistIdService) {\n return;\n }\n this.subscriptions.push(this.datalistIdService.idChange.subscribe(id => (this.datalistId = id)));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\n@Injectable()\nexport class FocusService {\n private _focused = new BehaviorSubject(false);\n get focusChange(): Observable<boolean> {\n return this._focused.asObservable();\n }\n set focused(state: boolean) {\n this._focused.next(state);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Optional } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { FocusService } from '../common/providers/focus.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { DatalistIdService } from './providers/datalist-id.service';\n\n@Component({\n selector: 'clr-datalist-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrDatalistInput]\"></ng-content>\n <ng-content select=\"datalist\"></ng-content>\n <cds-icon shape=\"angle\" class=\"clr-datalist-caret\" direction=\"down\"></cds-icon>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [\n ControlClassService,\n LayoutService,\n ControlIdService,\n FocusService,\n NgControlService,\n DatalistIdService,\n IfControlStateService,\n ],\n})\nexport class ClrDatalistContainer extends ClrAbstractContainer {\n focus = false;\n\n constructor(\n controlClassService: ControlClassService,\n @Optional() layoutService: LayoutService,\n ngControlService: NgControlService,\n private focusService: FocusService,\n protected override ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n this.subscriptions.push(this.focusService.focusChange.subscribe(state => (this.focus = state)));\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n Directive,\n ElementRef,\n HostListener,\n Injector,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { FocusService } from '../common/providers/focus.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrDatalistContainer } from './datalist-container';\nimport { DatalistIdService } from './providers/datalist-id.service';\n\n@Directive({\n selector: '[clrDatalistInput]',\n host: {\n '[class.clr-input]': 'true',\n '[attr.list]': 'listValue',\n },\n})\nexport class ClrDatalistInput extends WrappedFormControl<ClrDatalistContainer> implements AfterContentInit {\n listValue: string;\n\n constructor(\n @Optional() private focusService: FocusService,\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef,\n private datalistIdService: DatalistIdService\n ) {\n super(vcr, ClrDatalistContainer, injector, control, renderer, el);\n\n if (!this.focusService) {\n throw new Error('clrDatalist requires being wrapped in <clr-datalist-container>');\n }\n }\n\n ngAfterContentInit() {\n // Subscriptions is inherited from WrappedFormControl, unsubscribe is handled there\n this.subscriptions.push(this.datalistIdService.idChange.subscribe(id => (this.listValue = id)));\n }\n\n @HostListener('focus')\n triggerFocus() {\n if (this.focusService) {\n this.focusService.focused = true;\n }\n }\n\n @HostListener('blur')\n override triggerValidation() {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrInputModule } from '../input/input.module';\nimport { ClrDatalist } from './datalist';\nimport { ClrDatalistContainer } from './datalist-container';\nimport { ClrDatalistInput } from './datalist-input';\n\n@NgModule({\n imports: [CommonModule, ClrInputModule, ClrIconModule],\n declarations: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer],\n exports: [ClrDatalist, ClrDatalistInput, ClrDatalistContainer],\n})\nexport class ClrDatalistModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\nimport { Directive, NgModule } from '@angular/core';\n\n/**\n * This is just a copy of CdkTrapFocus so it can be used independent of the rest of the A11yModule.\n */\n@Directive({\n selector: '[cdkTrapFocus]',\n})\nexport class CdkTrapFocusModule_CdkTrapFocus extends CdkTrapFocus {}\n\n/**\n * This module allows us to avoid importing all of A11yModule which results in a smaller application bundle.\n */\n@NgModule({\n declarations: [CdkTrapFocusModule_CdkTrapFocus],\n exports: [CdkTrapFocusModule_CdkTrapFocus],\n})\nexport class CdkTrapFocusModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * This is the en-001 short locale date format. Setting as default.\n */\nexport const DEFAULT_LOCALE_FORMAT = 'dd/MM/y';\n\n// https://en.wikipedia.org/wiki/Date_format_by_country\nexport const LITTLE_ENDIAN_REGEX = /d+.+m+.+y+/i;\nexport const MIDDLE_ENDIAN_REGEX = /m+.+d+.+y+/i;\n// No need for BIG_ENDIAN_REGEX because anything that doesn't satisfy the above 2\n// is automatically BIG_ENDIAN\n\nexport const DELIMITER_REGEX = /d+|m+|y+/i;\n\nexport const USER_INPUT_REGEX = /\\d+/g;\n\nexport const MOBILE_USERAGENT_REGEX = /Mobi/i;\n\nexport const RTL_REGEX = /\\u200f/g;\n\nexport const YEAR = 'YYYY';\nexport const MONTH = 'MM';\nexport const DATE = 'DD';\n\nexport type FormatType = 'LITTLE_ENDIAN' | 'MIDDLE_ENDIAN' | 'BIG_ENDIAN';\n\nexport type InputDateDisplayFormat = {\n readonly name: FormatType;\n readonly format: [string, string, string];\n};\n\nexport const LITTLE_ENDIAN: InputDateDisplayFormat = {\n name: 'LITTLE_ENDIAN',\n format: [DATE, MONTH, YEAR],\n};\n\nexport const MIDDLE_ENDIAN: InputDateDisplayFormat = {\n name: 'MIDDLE_ENDIAN',\n format: [MONTH, DATE, YEAR],\n};\n\nexport const BIG_ENDIAN: InputDateDisplayFormat = {\n name: 'BIG_ENDIAN',\n format: [YEAR, MONTH, DATE],\n};\n\nexport const NO_OF_DAYS_IN_A_WEEK = 7;\nexport const NO_OF_ROWS_IN_CALENDAR_VIEW = 6;\nexport const TOTAL_DAYS_IN_DAYS_VIEW: number = NO_OF_DAYS_IN_A_WEEK * NO_OF_ROWS_IN_CALENDAR_VIEW;\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { WeekDay } from '@angular/common';\n\n/**\n * Returns the number of days in a month.\n */\nexport function getNumberOfDaysInTheMonth(year: number, month: number): number {\n // If we go to the next month, but use a day of 0, it returns the last day from the previous month\n return new Date(year, month + 1, 0).getDate();\n}\n\n/**\n * Returns the day for the corresponding date where 0 represents Sunday.\n */\nexport function getDay(year: number, month: number, date: number): WeekDay {\n return new Date(year, month, date).getDay();\n}\n\n/**\n * Takes in a year and if it is a 2 digit year, returns the corresponding 4 digit year.\n * Window of 80 years before and 20 years after the present year.\n * Credit: https://github.com/globalizejs/globalize/blob/e1b31cd6a4f1cff75b185b68b7a32220aac5196f/src/date/parse.js\n */\nexport function parseToFourDigitYear(year: number): number {\n if (year > 9999 || (year > 100 && year < 999) || year < 10) {\n return -1;\n }\n if (year > 999) {\n return year;\n }\n const currYear: number = new Date().getFullYear();\n const century: number = Math.floor(currYear / 100) * 100;\n let result: number = year + century;\n if (result > currYear + 20) {\n result = result - 100;\n }\n return result;\n}\n\nexport function datesAreEqual(date1: Date, date2: Date) {\n if (date1 instanceof Date && date2 instanceof Date) {\n return (\n date1.getFullYear() === date2.getFullYear() &&\n date1.getMonth() === date2.getMonth() &&\n date1.getDate() === date2.getDate()\n );\n } else {\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DayModel } from './day.model';\n\nexport class DayViewModel {\n constructor(\n public dayModel: DayModel,\n public isTodaysDate: boolean = false,\n public isExcluded: boolean = false,\n public isDisabled: boolean = false,\n public isSelected: boolean = false,\n public isFocusable: boolean = false\n ) {}\n\n /**\n * Gets the tab index based on the isFocusable flag.\n */\n get tabIndex(): number {\n return this.isFocusable ? 0 : -1;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class DayModel {\n constructor(readonly year: number, readonly month: number, readonly date: number) {}\n\n /**\n * Checks if the passed CalendarDate is equal to itself.\n */\n isEqual(day: DayModel) {\n if (day) {\n return this.year === day.year && this.month === day.month && this.date === day.date;\n }\n return false;\n }\n\n toDate(): Date {\n return new Date(this.year, this.month, this.date);\n }\n\n /**\n * Returns a new DayModel which is incremented based on the value passed.\n */\n incrementBy(value: number): DayModel {\n // Creating new Javascript Date object to increment because\n // it will automatically take care of switching to next or previous\n // months & years without we having to worry about it.\n const date: Date = new Date(this.year, this.month, this.date + value);\n return new DayModel(date.getFullYear(), date.getMonth(), date.getDate());\n }\n\n /**\n * Clones the current day model.\n */\n clone(): DayModel {\n return new DayModel(this.year, this.month, this.date);\n }\n\n toComparisonString(): string {\n return `${this.year}${this.pad(this.month)}${this.pad(this.date)}`;\n }\n\n toDateString(): string {\n return this.toDate().toLocaleDateString();\n }\n\n private pad(num: number): string {\n return num < 10 ? `0${num}` : `${num}`;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DateRange } from '../interfaces/date-range.interface';\nimport { NO_OF_DAYS_IN_A_WEEK, NO_OF_ROWS_IN_CALENDAR_VIEW, TOTAL_DAYS_IN_DAYS_VIEW } from '../utils/constants';\nimport { getDay } from '../utils/date-utils';\nimport { CalendarModel } from './calendar.model';\nimport { DayViewModel } from './day-view.model';\nimport { DayModel } from './day.model';\n\nexport class CalendarViewModel {\n private currMonthDayViews: DayViewModel[] = [];\n private _calendarView: DayViewModel[][];\n\n constructor(\n public calendar: CalendarModel,\n private selectedDay: DayModel,\n private focusableDay: DayModel,\n private today: DayModel,\n public firstDayOfWeek: number,\n private excludedDates: DateRange\n ) {\n this.initializeCalendarView();\n }\n\n /**\n * DayViewModel matrix. Size 6x7\n */\n get calendarView(): DayViewModel[][] {\n return this._calendarView;\n }\n\n /**\n * Updates the focusable day in the calendar.\n */\n updateFocusableDay(day: DayModel): void {\n this.setFocusableFlag(this.focusableDay, false);\n this.setFocusableFlag(day, true);\n this.focusableDay = day;\n }\n\n /**\n * Generates a 6x7 matrix of DayViewModel based on the Calendar.\n * The 6x7 matrix is structured according to the first day of the week.\n * 6 rows to accommodate months which might have dates spanning over 6 weeks.\n * 7 columns because there are 7 days in a week :P :D\n */\n private initializeCalendarView(): void {\n // Generate prev and next month calendar models.\n const prevMonthCalendar: CalendarModel = this.calendar.previousMonth();\n const nextMonthCalendar: CalendarModel = this.calendar.nextMonth();\n\n // Get no of days from prev and next months.\n const daysFromPrevMonthInCalView: number = this.numDaysFromPrevMonthInCalView(\n this.calendar.year,\n this.calendar.month\n );\n const daysFromNextMonthInCalView: number =\n TOTAL_DAYS_IN_DAYS_VIEW - (this.calendar.days.length + daysFromPrevMonthInCalView);\n\n // Generate prev, curr and next day view models\n let prevMonthDayViews: DayViewModel[] = [];\n let nextMonthDayViews: DayViewModel[] = [];\n\n if (daysFromPrevMonthInCalView > 0) {\n prevMonthDayViews = this.generateDayViewModels(\n prevMonthCalendar.days.slice(-1 * daysFromPrevMonthInCalView),\n true,\n false\n );\n }\n\n this.currMonthDayViews = this.generateDayViewModels(this.calendar.days, false, true);\n\n if (daysFromNextMonthInCalView > 0) {\n nextMonthDayViews = this.generateDayViewModels(\n nextMonthCalendar.days.slice(0, daysFromNextMonthInCalView),\n true,\n false\n );\n }\n\n // Generate calendar view and initialize flags\n this._calendarView = this.generateCalendarView(prevMonthDayViews, this.currMonthDayViews, nextMonthDayViews);\n this.initializeSelectedDay();\n this.initializeFocusableDay();\n }\n\n private isDateExcluded(date: DayModel) {\n const { minDate, maxDate }: DateRange = this.excludedDates;\n const from = minDate.toComparisonString();\n const to = maxDate.toComparisonString();\n const today = date.toComparisonString();\n\n return !(today >= from && today <= to);\n }\n\n /**\n * Generates a DayViewModel array based on the DayModel passed\n */\n private generateDayViewModels(days: DayModel[], isExcluded: boolean, isCurrentCalendar: boolean): DayViewModel[] {\n const dayViews: DayViewModel[] = days.map(day => {\n return new DayViewModel(day, false, isExcluded, this.isDateExcluded(day), false, false);\n });\n if (isCurrentCalendar && this.calendar.isDayInCalendar(this.today)) {\n dayViews[this.today.date - 1].isTodaysDate = true;\n }\n return dayViews;\n }\n\n /**\n * Gets the first day of the current month to figure out how many dates of previous month\n * are needed to complete the Calendar View based on the first day of the week.\n * eg: Assuming locale en-US, the first day of the week is Sunday,\n * if first day of the current month lands on Wednesday, then\n * (this.getDay function would return 3 since\n * first day of the week is 0), we need the 3 days from the previous month.\n */\n private numDaysFromPrevMonthInCalView(currentYear: number, currentMonth: number): number {\n const firstDayOfCurrMonth: number = getDay(currentYear, currentMonth, 1);\n\n if (firstDayOfCurrMonth >= this.firstDayOfWeek) {\n return firstDayOfCurrMonth - this.firstDayOfWeek;\n } else {\n return NO_OF_DAYS_IN_A_WEEK + firstDayOfCurrMonth - this.firstDayOfWeek;\n }\n }\n\n /**\n * Checks if the Day passed is in the CalendarView.\n */\n private isDayInCalendarView(day: DayModel): boolean {\n if (!this.calendar.isDayInCalendar(day)) {\n return false;\n }\n return true;\n }\n\n /**\n * Using the DayViewModels from the previous, current and next month, this function\n * generates the CalendarView.\n */\n private generateCalendarView(prev: DayViewModel[], curr: DayViewModel[], next: DayViewModel[]): DayViewModel[][] {\n const combinationArr: DayViewModel[] = [...prev, ...curr, ...next];\n\n const calendarView: DayViewModel[][] = [];\n for (let i = 0; i < NO_OF_ROWS_IN_CALENDAR_VIEW; i++) {\n calendarView[i] = combinationArr.slice(i * NO_OF_DAYS_IN_A_WEEK, (i + 1) * NO_OF_DAYS_IN_A_WEEK);\n }\n return calendarView;\n }\n\n /**\n * Initialize the selected day if the day is in the calendar.\n */\n private initializeSelectedDay(): void {\n if (this.selectedDay && this.isDayInCalendarView(this.selectedDay)) {\n this.currMonthDayViews[this.selectedDay.date - 1].isSelected = true;\n }\n }\n\n /**\n * Initializes the focusable day if the day is in the calendar. If focusable day is not set, then\n * we check for the selected day. If selected day is not set then check if today is in the current\n * calendar. If not then just set the 15th of the current calendar month.\n */\n private initializeFocusableDay(): void {\n if (this.focusableDay && this.isDayInCalendarView(this.focusableDay)) {\n this.setFocusableFlag(this.focusableDay, true);\n } else if (this.selectedDay && this.isDayInCalendarView(this.selectedDay)) {\n this.setFocusableFlag(this.selectedDay, true);\n this.focusableDay = this.selectedDay.clone();\n } else if (this.isDayInCalendarView(this.today)) {\n this.setFocusableFlag(this.today, true);\n this.focusableDay = this.today.clone();\n } else {\n this.focusableDay = new DayModel(this.calendar.year, this.calendar.month, 15);\n this.setFocusableFlag(this.focusableDay, true);\n }\n }\n\n private setFocusableFlag(day: DayModel, flag: boolean): void {\n if (day) {\n this.currMonthDayViews[day.date - 1].isFocusable = flag;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n FormatWidth,\n FormStyle,\n getLocaleDateFormat,\n getLocaleDayNames,\n getLocaleFirstDayOfWeek,\n getLocaleMonthNames,\n TranslationWidth,\n} from '@angular/common';\nimport { Inject, Injectable, LOCALE_ID } from '@angular/core';\n\nimport { ClrDayOfWeek } from '../interfaces/day-of-week.interface';\n\n/**\n * This service extracts the Angular CLDR data needed by the datepicker.\n */\n@Injectable()\nexport class LocaleHelperService {\n private _firstDayOfWeek = 0;\n private _localeDays: ReadonlyArray<ClrDayOfWeek>;\n private _localeMonthsAbbreviated: ReadonlyArray<string>;\n private _localeMonthsWide: ReadonlyArray<string>;\n private _localeDateFormat: string;\n\n constructor(@Inject(LOCALE_ID) public locale: string) {\n this.initializeLocaleData();\n }\n\n get firstDayOfWeek(): number {\n return this._firstDayOfWeek;\n }\n\n get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n return this._localeDays;\n }\n\n // leave for backward compatibility\n get localeDaysNarrow(): ReadonlyArray<string> {\n return this._localeDays.map(day => day.narrow);\n }\n\n get localeMonthsAbbreviated(): ReadonlyArray<string> {\n return this._localeMonthsAbbreviated;\n }\n\n get localeMonthsWide(): ReadonlyArray<string> {\n return this._localeMonthsWide;\n }\n\n get localeDateFormat(): string {\n return this._localeDateFormat;\n }\n\n /**\n * Initializes the locale data.\n */\n private initializeLocaleData(): void {\n // Order in which these functions is called is very important.\n this.initializeFirstDayOfWeek();\n this.initializeLocaleDateFormat();\n this.initializeLocaleMonthsAbbreviated();\n this.initializeLocaleMonthsWide();\n this.initializeLocaleDays();\n }\n\n /**\n * Initialize day names based on the locale.\n * eg: [{day: Sunday, narrow: S}, {day: Monday, narrow: M}...] for en-US.\n */\n private initializeLocaleDays(): void {\n // Get locale day names starting with Sunday\n const tempArr = [];\n const tempWideArr: string[] = getLocaleDayNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n const tempNarrowArr: string[] = getLocaleDayNames(\n this.locale,\n FormStyle.Standalone,\n TranslationWidth.Narrow\n ).slice();\n // Get first day of the week based on the locale\n const firstDayOfWeek: number = this.firstDayOfWeek;\n for (let i = 0; i < 7; i++) {\n tempArr.push({ day: tempWideArr[i], narrow: tempNarrowArr[i] });\n }\n // Rearrange the tempArr to start with the first day of the week based on the locale.\n if (firstDayOfWeek > 0) {\n const prevDays: { day: string; narrow: string }[] = tempArr.splice(0, firstDayOfWeek);\n tempArr.push(...prevDays);\n }\n this._localeDays = tempArr;\n }\n\n /**\n * Initializes the array of month names in the TranslationWidth.Abbreviated format.\n * e.g. `[Jan, Feb, ...]` for en-US\n */\n private initializeLocaleMonthsAbbreviated(): void {\n this._localeMonthsAbbreviated = getLocaleMonthNames(\n this.locale,\n FormStyle.Standalone,\n TranslationWidth.Abbreviated\n ).slice();\n }\n\n /**\n * Initializes the array of month names in the TranslationWidth.Wide format.\n * e.g. `[January, February, ...]` for en-US\n */\n private initializeLocaleMonthsWide(): void {\n this._localeMonthsWide = getLocaleMonthNames(this.locale, FormStyle.Standalone, TranslationWidth.Wide).slice();\n }\n\n /**\n * Initializes the first day of the week based on the locale.\n */\n private initializeFirstDayOfWeek(): void {\n this._firstDayOfWeek = getLocaleFirstDayOfWeek(this.locale);\n }\n\n private initializeLocaleDateFormat(): void {\n this._localeDateFormat = getLocaleDateFormat(this.locale, FormatWidth.Short);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { getNumberOfDaysInTheMonth } from '../utils/date-utils';\nimport { DayModel } from './day.model';\n\nexport class CalendarModel {\n days: DayModel[];\n\n constructor(readonly year: number, readonly month: number) {\n this.initializeDaysInCalendar();\n }\n\n /**\n * Checks if the calendar passed is equal to the current calendar.\n */\n isEqual(calendar: CalendarModel) {\n if (calendar) {\n return this.year === calendar.year && this.month === calendar.month;\n }\n return false;\n }\n\n /**\n * Checks if a DayModel is in the Calendar\n */\n isDayInCalendar(day: DayModel): boolean {\n if (day) {\n return this.year === day.year && this.month === day.month;\n }\n return false;\n }\n\n /**\n * Returns CalendarModel of the previous month.\n */\n previousMonth(): CalendarModel {\n if (this.month === 0) {\n return new CalendarModel(this.year - 1, 11);\n } else {\n return new CalendarModel(this.year, this.month - 1);\n }\n }\n\n /**\n * Returns CalendarModel of the next month.\n */\n nextMonth(): CalendarModel {\n if (this.month === 11) {\n return new CalendarModel(this.year + 1, 0);\n } else {\n return new CalendarModel(this.year, this.month + 1);\n }\n }\n\n /**\n * Populates the days array with the DayModels in the current Calendar.\n */\n private initializeDaysInCalendar(): void {\n const noOfDaysInCalendar: number = getNumberOfDaysInTheMonth(this.year, this.month);\n this.days = Array(noOfDaysInCalendar)\n .fill(null)\n .map((_date, index) => {\n return new DayModel(this.year, this.month, index + 1);\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { CalendarModel } from '../model/calendar.model';\nimport { DayModel } from '../model/day.model';\n\n/**\n * This service is responsible for:\n * 1. Initializing the displayed calendar.\n * 2. Moving the calendar to the next, previous or current months\n * 3. Managing the focused and selected day models.\n */\n@Injectable()\nexport class DateNavigationService {\n selectedDay: DayModel;\n focusedDay: DayModel;\n\n private _displayedCalendar: CalendarModel;\n private _todaysFullDate: Date = new Date();\n private _today: DayModel;\n private _selectedDayChange = new Subject<DayModel>();\n private _displayedCalendarChange = new Subject<void>();\n private _focusOnCalendarChange = new Subject<void>();\n private _focusedDayChange = new Subject<DayModel>();\n\n get today(): DayModel {\n return this._today;\n }\n\n get displayedCalendar(): CalendarModel {\n return this._displayedCalendar;\n }\n\n get selectedDayChange(): Observable<DayModel> {\n return this._selectedDayChange.asObservable();\n }\n\n /**\n * This observable lets the subscriber know that the displayed calendar has changed.\n */\n get displayedCalendarChange(): Observable<void> {\n return this._displayedCalendarChange.asObservable();\n }\n\n /**\n * This observable lets the subscriber know that the focus should be applied on the calendar.\n */\n get focusOnCalendarChange(): Observable<void> {\n return this._focusOnCalendarChange.asObservable();\n }\n\n /**\n * This observable lets the subscriber know that the focused day in the displayed calendar has changed.\n */\n get focusedDayChange(): Observable<DayModel> {\n return this._focusedDayChange.asObservable();\n }\n\n /**\n * Notifies that the selected day has changed so that the date can be emitted to the user.\n * Note: Only to be called from day.ts\n */\n notifySelectedDayChanged(dayModel: DayModel) {\n this.selectedDay = dayModel;\n this._selectedDayChange.next(dayModel);\n }\n\n /**\n * Initializes the calendar based on the selected day.\n */\n initializeCalendar(): void {\n this.focusedDay = null; // Can be removed later on the store focus\n this.initializeTodaysDate();\n if (this.selectedDay) {\n this._displayedCalendar = new CalendarModel(this.selectedDay.year, this.selectedDay.month);\n } else {\n this._displayedCalendar = new CalendarModel(this.today.year, this.today.month);\n }\n }\n\n changeMonth(month: number): void {\n this.setDisplayedCalendar(new CalendarModel(this._displayedCalendar.year, month));\n }\n\n changeYear(year: number): void {\n this.setDisplayedCalendar(new CalendarModel(year, this._displayedCalendar.month));\n }\n\n /**\n * Moves the displayed calendar to the next month.\n */\n moveToNextMonth(): void {\n this.setDisplayedCalendar(this._displayedCalendar.nextMonth());\n }\n\n /**\n * Moves the displayed calendar to the previous month.\n */\n moveToPreviousMonth(): void {\n this.setDisplayedCalendar(this._displayedCalendar.previousMonth());\n }\n\n /**\n * Moves the displayed calendar to the current month and year.\n */\n moveToCurrentMonth(): void {\n if (!this.displayedCalendar.isDayInCalendar(this.today)) {\n this.setDisplayedCalendar(new CalendarModel(this.today.year, this.today.month));\n }\n this._focusOnCalendarChange.next();\n }\n\n incrementFocusDay(value: number): void {\n this.focusedDay = this.focusedDay.incrementBy(value);\n if (this._displayedCalendar.isDayInCalendar(this.focusedDay)) {\n this._focusedDayChange.next(this.focusedDay);\n } else {\n this.setDisplayedCalendar(new CalendarModel(this.focusedDay.year, this.focusedDay.month));\n }\n this._focusOnCalendarChange.next();\n }\n\n // not a setter because i want this to remain private\n private setDisplayedCalendar(value: CalendarModel) {\n if (!this._displayedCalendar.isEqual(value)) {\n this._displayedCalendar = value;\n this._displayedCalendarChange.next();\n }\n }\n\n private initializeTodaysDate(): void {\n this._todaysFullDate = new Date();\n this._today = new DayModel(\n this._todaysFullDate.getFullYear(),\n this._todaysFullDate.getMonth(),\n this._todaysFullDate.getDate()\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, NgZone, PLATFORM_ID } from '@angular/core';\nimport { filter, first } from 'rxjs/operators';\n\n/**\n * This service focuses the day that is focusable in the calendar.\n */\n@Injectable()\nexport class DatepickerFocusService {\n constructor(private _ngZone: NgZone, @Inject(PLATFORM_ID) private platformId: any) {}\n\n focusCell(elRef: ElementRef): void {\n this._ngZone.runOutsideAngular(() => {\n this.ngZoneIsStableInBrowser().subscribe(() => {\n const focusEl = elRef.nativeElement.querySelector('[tabindex=\"0\"]');\n if (focusEl) {\n focusEl.focus();\n }\n });\n });\n }\n\n focusInput(element: HTMLInputElement): void {\n this._ngZone.runOutsideAngular(() => this.ngZoneIsStableInBrowser().subscribe(() => element.focus()));\n }\n\n elementIsFocused(element: HTMLInputElement) {\n return isPlatformBrowser(this.platformId) && document.activeElement === element;\n }\n\n private ngZoneIsStableInBrowser() {\n // Credit: Material: https://github.com/angular/material2/blob/master/src/lib/datepicker/calendar.ts\n return this._ngZone.onStable.asObservable().pipe(\n first(),\n filter(() => isPlatformBrowser(this.platformId))\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { DateRange } from '../interfaces/date-range.interface';\nimport { DayModel } from '../model/day.model';\nimport {\n BIG_ENDIAN,\n DEFAULT_LOCALE_FORMAT,\n DELIMITER_REGEX,\n InputDateDisplayFormat,\n LITTLE_ENDIAN,\n LITTLE_ENDIAN_REGEX,\n MIDDLE_ENDIAN,\n MIDDLE_ENDIAN_REGEX,\n RTL_REGEX,\n USER_INPUT_REGEX,\n} from '../utils/constants';\nimport { getNumberOfDaysInTheMonth, parseToFourDigitYear } from '../utils/date-utils';\nimport { LocaleHelperService } from './locale-helper.service';\n\n@Injectable()\nexport class DateIOService {\n disabledDates: DateRange = {\n // This is the default range. It approximates the beginning of time to the end of time.\n // Unless a minDate or maxDate is set with the native HTML5 api the range is all dates\n // TODO: turn this into an Array of min/max ranges that allow configuration of multiple ranges.\n minDate: new DayModel(0, 0, 1),\n maxDate: new DayModel(9999, 11, 31),\n };\n\n cldrLocaleDateFormat: string = DEFAULT_LOCALE_FORMAT;\n\n private localeDisplayFormat: InputDateDisplayFormat = LITTLE_ENDIAN;\n private delimiters: [string, string] = ['/', '/'];\n\n constructor(private _localeHelperService: LocaleHelperService) {\n this.cldrLocaleDateFormat = this._localeHelperService.localeDateFormat;\n this.initializeLocaleDisplayFormat();\n }\n\n get placeholderText(): string {\n const format: [string, string, string] = this.localeDisplayFormat.format;\n return format[0] + this.delimiters[0] + format[1] + this.delimiters[1] + format[2];\n }\n\n setMinDate(date: string): void {\n // NOTE: I'm expecting consumers to pass one of four things here:\n // A proper date string(2019-11-11), null, undefined or empty string ('')\n if (!date) {\n // attribute binding was removed, reset back to the beginning of time\n this.disabledDates.minDate = new DayModel(0, 0, 1);\n } else {\n const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n this.disabledDates.minDate = new DayModel(year, month - 1, day);\n }\n }\n\n setMaxDate(date: string): void {\n // NOTE: I'm expecting consumers to pass one of four things here:\n // A proper date string(2019-11-11), null, undefined or empty string ('')\n if (!date) {\n // attribute binding was removed, reset forward to the end of time\n this.disabledDates.maxDate = new DayModel(9999, 11, 31);\n } else {\n const [year, month, day] = date.split('-').map(n => parseInt(n, 10));\n this.disabledDates.maxDate = new DayModel(year, month - 1, day);\n }\n }\n\n toLocaleDisplayFormatString(date: Date): string {\n if (date) {\n if (isNaN(date.getTime())) {\n return '';\n }\n const dateNo: number = date.getDate();\n const monthNo: number = date.getMonth() + 1;\n const dateStr: string = dateNo > 9 ? dateNo.toString() : '0' + dateNo;\n const monthStr: string = monthNo > 9 ? monthNo.toString() : '0' + monthNo;\n if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n return dateStr + this.delimiters[0] + monthStr + this.delimiters[1] + date.getFullYear();\n } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n return monthStr + this.delimiters[0] + dateStr + this.delimiters[1] + date.getFullYear();\n } else {\n return date.getFullYear() + this.delimiters[0] + monthStr + this.delimiters[1] + dateStr;\n }\n }\n return '';\n }\n\n getDateValueFromDateString(date: string): Date {\n if (!date || typeof date !== 'string') {\n return null;\n }\n const dateParts: string[] = date.match(USER_INPUT_REGEX);\n if (!dateParts || dateParts.length !== 3) {\n return null;\n }\n const [firstPart, secondPart, thirdPart] = dateParts;\n if (this.localeDisplayFormat === LITTLE_ENDIAN) {\n // secondPart is month && firstPart is date\n return this.validateAndGetDate(thirdPart, secondPart, firstPart);\n } else if (this.localeDisplayFormat === MIDDLE_ENDIAN) {\n // firstPart is month && secondPart is date\n return this.validateAndGetDate(thirdPart, firstPart, secondPart);\n } else {\n // secondPart is month && thirdPart is date\n return this.validateAndGetDate(firstPart, secondPart, thirdPart);\n }\n }\n\n private initializeLocaleDisplayFormat(): void {\n const format: string = this.cldrLocaleDateFormat.toLocaleLowerCase();\n if (LITTLE_ENDIAN_REGEX.test(format)) {\n this.localeDisplayFormat = LITTLE_ENDIAN;\n } else if (MIDDLE_ENDIAN_REGEX.test(format)) {\n this.localeDisplayFormat = MIDDLE_ENDIAN;\n } else {\n // everything else is set to BIG-ENDIAN FORMAT\n this.localeDisplayFormat = BIG_ENDIAN;\n }\n this.extractDelimiters();\n }\n\n private extractDelimiters(): void {\n if (this.cldrLocaleDateFormat) {\n // Sanitize Date Format. Remove RTL characters.\n // FIXME: When we support RTL, remove this and handle it correctly.\n const localeFormat: string = this.cldrLocaleDateFormat.replace(RTL_REGEX, '');\n const delimiters: string[] = localeFormat.split(DELIMITER_REGEX);\n\n // NOTE: The split from the CLDR date format should always result\n // in an arary with 4 elements. The 1st and the 2nd values are the delimiters\n // we will use in order.\n // Eg: \"dd/MM/y\".split(/d+|m+|y+/i) results in [\"\", \"/\", \"/\", \"\"]\n if (delimiters && delimiters.length === 4) {\n this.delimiters = [delimiters[1], delimiters[2]];\n } else {\n console.error('Unexpected date format received. Delimiters extracted: ', delimiters);\n }\n }\n }\n\n /**\n * Checks if the month entered by the user is valid or not.\n * Note: Month is 0 based.\n */\n private isValidMonth(month: number): boolean {\n return month > -1 && month < 12;\n }\n\n /**\n * Checks if the date is valid depending on the year and month provided.\n */\n private isValidDate(year: number, month: number, date: number): boolean {\n return date > 0 && date <= getNumberOfDaysInTheMonth(year, month);\n }\n\n /**\n * Validates the parameters provided and returns the date.\n * If the parameters are not\n * valid then return null.\n * NOTE: (Month here is 1 based since the user has provided that as an input)\n */\n private validateAndGetDate(year: string, month: string, date: string): Date {\n // I don't know whats wrong with the TS compiler. It throws an error if I write\n // the below if statement. The error is:\n // Operator '!==' cannot be applied to types '2' and '4'\n // More info here: https://github.com/Microsoft/TypeScript/issues/12794#issuecomment-270342936\n /*\n if (year.length !== 2 || year.length !== 4) {\n return null;\n }\n */\n\n // Instead I have to write the logic like this x-(\n const y: number = +year;\n const m: number = +month - 1; // month is 0 based\n const d: number = +date;\n if (!this.isValidMonth(m) || !this.isValidDate(y, m, d)) {\n return null;\n }\n const result: number = parseToFourDigitYear(y);\n return result !== -1 ? new Date(result, m, d) : null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class DateFormControlService {\n disabled: boolean;\n\n private _touchedChange = new Subject<void>();\n private _dirtyChange = new Subject<void>();\n\n get touchedChange(): Observable<void> {\n return this._touchedChange.asObservable();\n }\n\n get dirtyChange(): Observable<void> {\n return this._dirtyChange.asObservable();\n }\n\n markAsTouched(): void {\n this._touchedChange.next();\n }\n\n markAsDirty(): void {\n this._dirtyChange.next();\n }\n\n // friendly wrapper\n setDisabled(state: boolean) {\n this.disabled = state;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { DayViewModel } from './model/day-view.model';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\n\n@Component({\n selector: 'clr-day',\n template: `\n <button\n class=\"day-btn\"\n type=\"button\"\n [class.is-today]=\"dayView.isTodaysDate\"\n [class.is-excluded]=\"dayView.isExcluded\"\n [class.is-disabled]=\"dayView.isDisabled\"\n [class.is-selected]=\"dayView.isSelected\"\n [attr.tabindex]=\"dayView.tabIndex\"\n (click)=\"selectDay()\"\n (focus)=\"onDayViewFocus()\"\n [attr.aria-current]=\"dayView.isTodaysDate ? 'date' : 'false'\"\n [attr.aria-label]=\"dayString\"\n [attr.aria-selected]=\"dayView.isSelected\"\n >\n {{ dayView.dayModel.date }}\n </button>\n `,\n host: { '[class.day]': 'true' },\n})\nexport class ClrDay {\n private _dayView: DayViewModel;\n\n constructor(\n private _dateNavigationService: DateNavigationService,\n private _toggleService: ClrPopoverToggleService,\n private dateFormControlService: DateFormControlService,\n private commonStrings: ClrCommonStringsService\n ) {}\n\n /**\n * DayViewModel input which is used to build the Day View.\n */\n\n @Input('clrDayView')\n get dayView(): DayViewModel {\n return this._dayView;\n }\n set dayView(day: DayViewModel) {\n this._dayView = day;\n }\n\n get dayString(): string {\n return this.dayView.isSelected\n ? this.commonStrings.parse(this.commonStrings.keys.datepickerSelectedLabel, {\n FULL_DATE: this._dayView.dayModel.toDateString(),\n })\n : this._dayView.dayModel.toDateString();\n }\n\n /**\n * Updates the focusedDay in the DateNavigationService when the ClrDay is focused.\n */\n onDayViewFocus() {\n this._dateNavigationService.focusedDay = this.dayView.dayModel;\n }\n\n /**\n * Updates the selectedDay when the ClrDay is selected and closes the datepicker popover.\n */\n selectDay(): void {\n const day: DayModel = this.dayView.dayModel;\n this._dateNavigationService.notifySelectedDayChanged(day);\n this.dateFormControlService.markAsDirty();\n this._toggleService.open = false;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, HostListener, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrDayOfWeek } from './interfaces/day-of-week.interface';\nimport { CalendarViewModel } from './model/calendar-view.model';\nimport { CalendarModel } from './model/calendar.model';\nimport { DayModel } from './model/day.model';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { NO_OF_DAYS_IN_A_WEEK } from './utils/constants';\n\n@Component({\n selector: 'clr-calendar',\n templateUrl: './calendar.html',\n})\nexport class ClrCalendar implements OnDestroy {\n /**\n * Calendar View Model to generate the Calendar.\n */\n calendarViewModel: CalendarViewModel;\n\n private _subs: Subscription[] = [];\n\n constructor(\n private _localeHelperService: LocaleHelperService,\n private _dateNavigationService: DateNavigationService,\n private _datepickerFocusService: DatepickerFocusService,\n private _dateIOService: DateIOService,\n private _elRef: ElementRef\n ) {\n this.generateCalendarView();\n this.initializeSubscriptions();\n }\n\n /**\n * Gets the locale days according to the TranslationWidth.Narrow format.\n */\n get localeDays(): ReadonlyArray<ClrDayOfWeek> {\n return this._localeHelperService.localeDays;\n }\n\n get calendar(): CalendarModel {\n return this._dateNavigationService.displayedCalendar;\n }\n\n get selectedDay(): DayModel {\n return this._dateNavigationService.selectedDay;\n }\n\n get focusedDay(): DayModel {\n return this._dateNavigationService.focusedDay;\n }\n\n get today(): DayModel {\n return this._dateNavigationService.today;\n }\n\n /**\n * Focuses on the focusable day when the Calendar View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Unsubscribe from subscriptions.\n */\n ngOnDestroy(): void {\n this._subs.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n /**\n * Delegates Keyboard arrow navigation to the DateNavigationService.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n if (event && this.focusedDay) {\n switch (normalizeKey(event.key)) {\n case Keys.ArrowUp:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1 * NO_OF_DAYS_IN_A_WEEK);\n break;\n case Keys.ArrowDown:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(NO_OF_DAYS_IN_A_WEEK);\n break;\n case Keys.ArrowLeft:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(-1);\n break;\n case Keys.ArrowRight:\n event.preventDefault();\n this._dateNavigationService.incrementFocusDay(1);\n break;\n default:\n break; // No default case. ESLint x-(\n }\n }\n }\n\n /**\n * Initialize subscriptions to:\n * 1. update the calendar view model.\n * 2. update the focusable day in the calendar view model.\n * 3. focus on the focusable day in the calendar.\n */\n private initializeSubscriptions(): void {\n this._subs.push(\n this._dateNavigationService.displayedCalendarChange.subscribe(() => {\n this.generateCalendarView();\n })\n );\n\n this._subs.push(\n this._dateNavigationService.focusedDayChange.subscribe((focusedDay: DayModel) => {\n this.calendarViewModel.updateFocusableDay(focusedDay);\n })\n );\n\n this._subs.push(\n this._dateNavigationService.focusOnCalendarChange.subscribe(() => {\n this._datepickerFocusService.focusCell(this._elRef);\n })\n );\n }\n\n /**\n * Generates the Calendar View based on the calendar retrieved from the DateNavigationService.\n */\n private generateCalendarView(): void {\n this.calendarViewModel = new CalendarViewModel(\n this.calendar,\n this.selectedDay,\n this.focusedDay,\n this.today,\n this._localeHelperService.firstDayOfWeek,\n this._dateIOService.disabledDates\n );\n }\n}\n","<table class=\"calendar-table\">\n <tr class=\"calendar-row weekdays\">\n <th *ngFor=\"let day of localeDays\" class=\"calendar-cell weekday\" role=\"heading\" [attr.aria-label]=\"day.day\">\n {{day.narrow}}\n </th>\n </tr>\n <tr class=\"calendar-row\" *ngFor=\"let row of calendarViewModel.calendarView\">\n <td *ngFor=\"let dayView of row\" class=\"calendar-cell\">\n <clr-day [clrDayView]=\"dayView\"></clr-day>\n </td>\n </tr>\n</table>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * TODO:\n * Using core functions like:\n * - pluckPixelValue\n * - getCssPropertyValue\n *\n * to get the value of the design token.\n *\n * Note: Memoization/Cache usage possible.\n */\n\n// iPad mini screen width\n// http://stephen.io/mediaqueries/#iPadMini\nexport const DATEPICKER_ENABLE_BREAKPOINT = 768;\nexport const SMALL_BREAKPOINT = 576;\nexport const MEDIUM_BREAKPOINT = 768;\nexport const LARGE_BREAKPOINT = 992;\nexport const EXTRA_LARGE_BREAKPOINT = 1200;\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\nimport { DATEPICKER_ENABLE_BREAKPOINT } from '../../../utils/breakpoints/breakpoints';\nimport { MOBILE_USERAGENT_REGEX } from '../utils/constants';\n\n@Injectable()\nexport class DatepickerEnabledService {\n private _isUserAgentMobile = false;\n private _innerWidth: number;\n\n constructor(@Inject(DOCUMENT) private _document: any) {\n if (this._document) {\n this._isUserAgentMobile = MOBILE_USERAGENT_REGEX.test(_document.defaultView.navigator.userAgent);\n this._innerWidth = _document.defaultView.innerWidth;\n }\n }\n\n /**\n * Returns if the calendar should be active or not.\n * If the user agent is mobile and the screen width is less than DATEPICKER_ACTIVE_BREAKPOINT\n * then the calendar is inactive.\n */\n get isEnabled(): boolean {\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Browser_detection_using_the_user_agent\n // What they recommend is:\n //\"In summary, we recommend looking for the string 'Mobi'\n // anywhere in the User Agent to detect a mobile device.\"\n if (this._document) {\n if (this._innerWidth < DATEPICKER_ENABLE_BREAKPOINT && this._isUserAgentMobile) {\n return false;\n }\n }\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { ClrPopoverPositions } from '../../../utils/popover/enums/positions.enum';\nimport { ClrPopoverPosition } from '../../../utils/popover/interfaces/popover-position.interface';\n\nconst enum DatepickerViewEnum {\n MONTHVIEW = 'MONTHVIEW',\n YEARVIEW = 'YEARVIEW',\n DAYVIEW = 'DAYVIEW',\n}\n\n/**\n * This service manages which view is visible in the datepicker popover.\n */\n@Injectable()\nexport class ViewManagerService {\n position: ClrPopoverPosition = ClrPopoverPositions['bottom-left'];\n\n private _currentView: DatepickerViewEnum = DatepickerViewEnum.DAYVIEW;\n\n get isDayView(): boolean {\n return this._currentView === DatepickerViewEnum.DAYVIEW;\n }\n\n get isYearView(): boolean {\n return this._currentView === DatepickerViewEnum.YEARVIEW;\n }\n\n get isMonthView(): boolean {\n return this._currentView === DatepickerViewEnum.MONTHVIEW;\n }\n\n changeToMonthView(): void {\n this._currentView = DatepickerViewEnum.MONTHVIEW;\n }\n\n changeToYearView(): void {\n this._currentView = DatepickerViewEnum.YEARVIEW;\n }\n\n changeToDayView(): void {\n this._currentView = DatepickerViewEnum.DAYVIEW;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-monthpicker',\n template: `\n <button\n type=\"button\"\n class=\"calendar-btn month\"\n *ngFor=\"let month of monthNames; let monthIndex = index\"\n (click)=\"changeMonth(monthIndex)\"\n [class.is-selected]=\"monthIndex === calendarMonthIndex\"\n [attr.tabindex]=\"getTabIndex(monthIndex)\"\n >\n {{ month }}\n </button>\n `,\n host: {\n '[class.monthpicker]': 'true',\n },\n})\nexport class ClrMonthpicker implements AfterViewInit {\n /**\n * Keeps track of the current focused month.\n */\n private _focusedMonthIndex: number;\n\n constructor(\n private _viewManagerService: ViewManagerService,\n private _localeHelperService: LocaleHelperService,\n private _dateNavigationService: DateNavigationService,\n private _datepickerFocusService: DatepickerFocusService,\n private _elRef: ElementRef\n ) {\n this._focusedMonthIndex = this.calendarMonthIndex;\n }\n\n /**\n * Gets the months array which is used to rendered the monthpicker view.\n * Months are in the TranslationWidth.Wide format.\n */\n get monthNames(): ReadonlyArray<string> {\n return this._localeHelperService.localeMonthsWide;\n }\n\n /**\n * Gets the month value of the Calendar.\n */\n get calendarMonthIndex(): number {\n return this._dateNavigationService.displayedCalendar.month;\n }\n\n /**\n * Focuses on the current calendar month when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Handles the Keyboard arrow navigation for the monthpicker.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // NOTE: Didn't move this to the date navigation service because\n // the logic is fairly simple and it didn't make sense for me\n // to create extra observables just to move this logic to the service.\n if (event) {\n const key = normalizeKey(event.key);\n if (key === Keys.ArrowUp && this._focusedMonthIndex > 0) {\n event.preventDefault();\n this._focusedMonthIndex--;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowDown && this._focusedMonthIndex < 11) {\n event.preventDefault();\n this._focusedMonthIndex++;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowRight && this._focusedMonthIndex < 6) {\n event.preventDefault();\n this._focusedMonthIndex = this._focusedMonthIndex + 6;\n this._datepickerFocusService.focusCell(this._elRef);\n } else if (key === Keys.ArrowLeft && this._focusedMonthIndex > 5) {\n event.preventDefault();\n this._focusedMonthIndex = this._focusedMonthIndex - 6;\n this._datepickerFocusService.focusCell(this._elRef);\n }\n }\n }\n\n /**\n * Calls the DateNavigationService to update the month value of the calendar.\n * Also changes the view to the daypicker.\n */\n changeMonth(monthIndex: number) {\n this._dateNavigationService.changeMonth(monthIndex);\n this._viewManagerService.changeToDayView();\n }\n\n /**\n * Compares the month passed to the focused month and returns the tab index.\n */\n getTabIndex(monthIndex: number): number {\n return monthIndex === this._focusedMonthIndex ? 0 : -1;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nconst YEARS_TO_DISPLAY = 10;\n\nexport class YearRangeModel {\n yearRange: number[] = [];\n\n constructor(private readonly year: number) {\n this.generateYearRange();\n }\n\n /**\n * Gets the number in the middle of the range.\n */\n get middleYear(): number {\n return this.yearRange[Math.floor(this.yearRange.length / 2)];\n }\n\n /**\n * Generates the YearRangeModel for the next decade.\n */\n nextDecade(): YearRangeModel {\n return new YearRangeModel(this.year + 10);\n }\n\n /**\n * Generates the YearRangeModel for the previous decade.\n */\n previousDecade(): YearRangeModel {\n return new YearRangeModel(this.year - 10);\n }\n\n /**\n * Generates the YearRangeModel for the current decade.\n */\n currentDecade(): YearRangeModel {\n return new YearRangeModel(new Date().getFullYear());\n }\n\n /**\n * Checks if the value is in the YearRangeModel.\n */\n inRange(value: number): boolean {\n return this.yearRange.indexOf(value) > -1;\n }\n\n /**\n * Generates the year range based on the year parameter.\n * eg: If 2018 is passed the output will be [2010, 2011, ..., 2019]\n */\n private generateYearRange() {\n const remainder: number = this.year % YEARS_TO_DISPLAY;\n const floor: number = this.year - remainder;\n const ceil: number = floor + YEARS_TO_DISPLAY;\n this.yearRange = this.generateRange(floor, ceil);\n }\n\n /**\n * Function which generate a range of numbers from floor to ceil.\n */\n private generateRange(floor: number, ceil: number): number[] {\n return Array.from({ length: ceil - floor }, (_v, k) => k + floor);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, HostListener } from '@angular/core';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { YearRangeModel } from './model/year-range.model';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-yearpicker',\n template: `\n <div class=\"year-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousDecade\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousDecade\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentDecade\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentDecade\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextDecade()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextDecade\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextDecade\"></cds-icon>\n </button>\n </div>\n <div class=\"years\">\n <button\n *ngFor=\"let year of yearRangeModel.yearRange\"\n type=\"button\"\n class=\"calendar-btn year\"\n [attr.tabindex]=\"getTabIndex(year)\"\n [class.is-selected]=\"year === calendarYear\"\n (click)=\"changeYear(year)\"\n >\n {{ year }}\n </button>\n </div>\n `,\n host: {\n '[class.yearpicker]': 'true',\n },\n})\nexport class ClrYearpicker implements AfterViewInit {\n /**\n * YearRangeModel which is used to build the YearPicker view.\n */\n yearRangeModel: YearRangeModel;\n\n /**\n * Keeps track of the current focused year.\n */\n private _focusedYear: number;\n\n constructor(\n private _dateNavigationService: DateNavigationService,\n private _viewManagerService: ViewManagerService,\n private _datepickerFocusService: DatepickerFocusService,\n private _elRef: ElementRef,\n public commonStrings: ClrCommonStringsService\n ) {\n this.yearRangeModel = new YearRangeModel(this.calendarYear);\n this._focusedYear = this.calendarYear;\n }\n\n /**\n * Gets the year which the user is currently on.\n */\n get calendarYear(): number {\n return this._dateNavigationService.displayedCalendar.year;\n }\n\n /**\n * Focuses on the current calendar year when the View is initialized.\n */\n ngAfterViewInit() {\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Handles the Keyboard arrow navigation for the yearpicker.\n */\n @HostListener('keydown', ['$event'])\n onKeyDown(event: KeyboardEvent) {\n // NOTE: Didn't move this to the date navigation service because\n // the logic is fairly simple and it didn't make sense for me\n // to create extra observables just to move this logic to the service.\n if (event) {\n const key = normalizeKey(event.key);\n if (key === Keys.ArrowUp) {\n event.preventDefault();\n this.incrementFocusYearBy(-1);\n } else if (key === Keys.ArrowDown) {\n event.preventDefault();\n this.incrementFocusYearBy(1);\n } else if (key === Keys.ArrowRight) {\n event.preventDefault();\n this.incrementFocusYearBy(5);\n } else if (key === Keys.ArrowLeft) {\n event.preventDefault();\n this.incrementFocusYearBy(-5);\n }\n }\n }\n\n /**\n * Calls the DateNavigationService to update the year value of the calendar.\n * Also changes the view to the daypicker.\n */\n changeYear(year: number): void {\n this._dateNavigationService.changeYear(year);\n this._viewManagerService.changeToDayView();\n }\n\n /**\n * Updates the YearRangeModel to the previous decade.\n */\n previousDecade(): void {\n this.yearRangeModel = this.yearRangeModel.previousDecade();\n // Year in the yearpicker is not focused because while navigating to a different decade,\n // you want the focus to remain on the decade switcher arrows.\n }\n\n /**\n * Updates the YearRangeModel to the current decade.\n */\n currentDecade(): void {\n if (!this.yearRangeModel.inRange(this._dateNavigationService.today.year)) {\n this.yearRangeModel = this.yearRangeModel.currentDecade();\n }\n this._datepickerFocusService.focusCell(this._elRef);\n }\n\n /**\n * Updates the YearRangeModel to the next decade.\n */\n nextDecade(): void {\n this.yearRangeModel = this.yearRangeModel.nextDecade();\n // Year in the yearpicker is not focused because while navigating to a different decade,\n // you want the focus to remain on the decade switcher arrows.\n }\n\n /**\n * Compares the year passed to the focused year and returns the tab index.\n */\n getTabIndex(year: number): number {\n if (!this.yearRangeModel.inRange(this._focusedYear)) {\n if (this.yearRangeModel.inRange(this.calendarYear)) {\n this._focusedYear = this.calendarYear;\n } else {\n this._focusedYear = this.yearRangeModel.middleYear;\n }\n }\n return this._focusedYear === year ? 0 : -1;\n }\n\n /**\n * Increments the focus year by the value passed. Updates the YearRangeModel if the\n * new value is not in the current decade.\n */\n private incrementFocusYearBy(value: number): void {\n this._focusedYear = this._focusedYear + value;\n if (!this.yearRangeModel.inRange(this._focusedYear)) {\n if (value > 0) {\n this.yearRangeModel = this.yearRangeModel.nextDecade();\n } else {\n this.yearRangeModel = this.yearRangeModel.previousDecade();\n }\n }\n this._datepickerFocusService.focusCell(this._elRef);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-daypicker',\n templateUrl: './daypicker.html',\n host: { '[class.daypicker]': 'true' },\n})\nexport class ClrDaypicker {\n constructor(\n private _viewManagerService: ViewManagerService,\n private _dateNavigationService: DateNavigationService,\n private _localeHelperService: LocaleHelperService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get monthAttrString(): string {\n return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectMonthText, {\n CALENDAR_MONTH: this.calendarMonth,\n });\n }\n\n get yearAttrString(): string {\n return this.commonStrings.parse(this.commonStrings.keys.datepickerSelectYearText, {\n CALENDAR_YEAR: this.calendarYear.toString(),\n });\n }\n\n /**\n * Returns the month value of the calendar in the TranslationWidth.Abbreviated format.\n */\n get calendarMonth(): string {\n return this._localeHelperService.localeMonthsAbbreviated[this._dateNavigationService.displayedCalendar.month];\n }\n\n /**\n * Returns the year value of the calendar.\n */\n get calendarYear(): number {\n return this._dateNavigationService.displayedCalendar.year;\n }\n\n /**\n * Calls the ViewManagerService to change to the monthpicker view.\n */\n changeToMonthView(): void {\n this._viewManagerService.changeToMonthView();\n }\n\n /**\n * Calls the ViewManagerService to change to the yearpicker view.\n */\n changeToYearView(): void {\n this._viewManagerService.changeToYearView();\n }\n\n /**\n * Calls the DateNavigationService to move to the next month.\n */\n nextMonth(): void {\n this._dateNavigationService.moveToNextMonth();\n }\n\n /**\n * Calls the DateNavigationService to move to the previous month.\n */\n previousMonth(): void {\n this._dateNavigationService.moveToPreviousMonth();\n }\n\n /**\n * Calls the DateNavigationService to move to the current month.\n */\n currentMonth(): void {\n this._dateNavigationService.moveToCurrentMonth();\n }\n}\n","<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n<div class=\"calendar-header\">\n <div class=\"calendar-pickers\">\n <button\n class=\"calendar-btn monthpicker-trigger\"\n type=\"button\"\n (click)=\"changeToMonthView()\"\n [attr.aria-label]=\"monthAttrString\"\n [attr.title]=\"monthAttrString\"\n >\n {{calendarMonth}}\n </button>\n <button\n class=\"calendar-btn yearpicker-trigger\"\n type=\"button\"\n (click)=\"changeToYearView()\"\n [attr.aria-label]=\"yearAttrString\"\n [attr.title]=\"yearAttrString\"\n >\n {{calendarYear}}\n </button>\n </div>\n <div class=\"calendar-switchers\">\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"previousMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerPreviousMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"left\" [attr.title]=\"commonStrings.keys.datepickerPreviousMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"currentMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerCurrentMonth\"\n >\n <cds-icon shape=\"event\" [attr.title]=\"commonStrings.keys.datepickerCurrentMonth\"></cds-icon>\n </button>\n <button\n class=\"calendar-btn switcher\"\n type=\"button\"\n (click)=\"nextMonth()\"\n [attr.aria-label]=\"commonStrings.keys.datepickerNextMonth\"\n >\n <cds-icon shape=\"angle\" direction=\"right\" [attr.title]=\"commonStrings.keys.datepickerNextMonth\"></cds-icon>\n </button>\n </div>\n</div>\n<clr-calendar></clr-calendar>\n<div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-datepicker-view-manager',\n templateUrl: './datepicker-view-manager.html',\n providers: [DatepickerFocusService],\n host: {\n '[class.datepicker]': 'true',\n '[attr.aria-modal]': 'true',\n '[attr.aria-label]': 'commonStrings.keys.datepickerDialogLabel',\n role: 'dialog',\n },\n})\nexport class ClrDatepickerViewManager {\n constructor(public commonStrings: ClrCommonStringsService, private viewManagerService: ViewManagerService) {}\n\n /**\n * Returns if the current view is the monthpicker.\n */\n get isMonthView(): boolean {\n return this.viewManagerService.isMonthView;\n }\n\n /**\n * Returns if the current view is the yearpicker.\n */\n get isYearView(): boolean {\n return this.viewManagerService.isYearView;\n }\n\n /**\n * Returns if the current view is the daypicker.\n */\n get isDayView(): boolean {\n return this.viewManagerService.isDayView;\n }\n}\n","<!--\n* Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n* This software is released under MIT license.\n* The full license information can be found in LICENSE in the root directory of this project.\n-->\n\n<clr-monthpicker *ngIf=\"isMonthView\"></clr-monthpicker>\n<clr-yearpicker *ngIf=\"isYearView\"></clr-yearpicker>\n<clr-daypicker *ngIf=\"isDayView\"></clr-daypicker>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, Input, Optional, Renderer2, ViewChild } from '@angular/core';\nimport { startWith } from 'rxjs/operators';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverPositions } from '../../utils/popover/enums/positions.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { FocusService } from '../common/providers/focus.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { LocaleHelperService } from './providers/locale-helper.service';\nimport { ViewManagerService } from './providers/view-manager.service';\n\n@Component({\n selector: 'clr-date-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\" clrPopoverAnchor>\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrDate]\"></ng-content>\n <button\n #actionButton\n type=\"button\"\n clrPopoverOpenCloseButton\n class=\"clr-input-group-icon-action\"\n [disabled]=\"isInputDateDisabled\"\n *ngIf=\"isEnabled\"\n >\n <cds-icon status=\"info\" shape=\"calendar\"></cds-icon>\n </button>\n <clr-datepicker-view-manager\n *clrPopoverContent=\"open; at: popoverPosition; outsideClickToClose: true; scrollToClose: true\"\n cdkTrapFocus\n ></clr-datepicker-view-manager>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n providers: [\n ControlIdService,\n LocaleHelperService,\n ControlClassService,\n FocusService,\n NgControlService,\n DateIOService,\n DateNavigationService,\n DatepickerEnabledService,\n DateFormControlService,\n ViewManagerService,\n IfControlStateService,\n ],\n hostDirectives: [ClrPopoverHostDirective],\n host: {\n '[class.clr-date-container]': 'true',\n '[class.clr-form-control-disabled]': 'isInputDateDisabled',\n '[class.clr-form-control]': 'true',\n '[class.clr-row]': 'addGrid()',\n },\n})\nexport class ClrDateContainer extends ClrAbstractContainer implements AfterViewInit {\n focus = false;\n\n private toggleButton: ElementRef;\n\n constructor(\n protected renderer: Renderer2,\n private toggleService: ClrPopoverToggleService,\n private dateNavigationService: DateNavigationService,\n private datepickerEnabledService: DatepickerEnabledService,\n private dateFormControlService: DateFormControlService,\n private dateIOService: DateIOService,\n public commonStrings: ClrCommonStringsService,\n private focusService: FocusService,\n private viewManagerService: ViewManagerService,\n protected override controlClassService: ControlClassService,\n @Optional() protected override layoutService: LayoutService,\n protected override ngControlService: NgControlService,\n protected override ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n this.subscriptions.push(\n this.focusService.focusChange.subscribe(state => {\n this.focus = state;\n })\n );\n\n this.subscriptions.push(\n this.toggleService.openChange.subscribe(() => {\n this.dateFormControlService.markAsTouched();\n })\n );\n }\n\n @Input('clrPosition')\n set clrPosition(position: string) {\n if (position && (ClrPopoverPositions as Record<string, any>)[position]) {\n this.viewManagerService.position = (ClrPopoverPositions as Record<string, any>)[position];\n }\n }\n\n @ViewChild('actionButton')\n set actionButton(button: ElementRef) {\n this.toggleButton = button;\n }\n\n get popoverPosition(): ClrPopoverPosition {\n return this.viewManagerService.position;\n }\n\n get open() {\n return this.toggleService.open;\n }\n\n /**\n * Returns if the Datepicker is enabled or not. If disabled, hides the datepicker trigger.\n */\n get isEnabled(): boolean {\n return this.datepickerEnabledService.isEnabled;\n }\n\n /**\n * Return if Datepicker is diabled or not as Form Control\n */\n get isInputDateDisabled(): boolean {\n /* clrForm wrapper or without clrForm */\n return (\n (this.control && this.control.disabled) || (this.dateFormControlService && this.dateFormControlService.disabled)\n );\n }\n\n ngAfterViewInit(): void {\n this.subscriptions.push(\n this.toggleService.openChange.subscribe(open => {\n if (open) {\n this.initializeCalendar();\n } else {\n this.toggleButton.nativeElement.focus();\n }\n })\n );\n\n this.subscriptions.push(this.listenForDateChanges());\n }\n\n /**\n * Return the label for the toggle button.\n * If there's a selected date, the date is included in the label.\n */\n private getToggleButtonLabel(day: DayModel): string {\n if (day) {\n const formattedDate = this.dateIOService.toLocaleDisplayFormatString(day.toDate());\n\n return this.commonStrings.parse(this.commonStrings.keys.datepickerToggleChangeDateLabel, {\n SELECTED_DATE: formattedDate,\n });\n }\n return this.commonStrings.keys.datepickerToggleChooseDateLabel;\n }\n\n private listenForDateChanges() {\n // because date-input.ts initializes the input in ngAfterViewInit,\n // using a databound attribute to change the button labels results in ExpressionChangedAfterItHasBeenCheckedError.\n // so instead, update the attribute directly on the element\n return this.dateNavigationService.selectedDayChange\n .pipe(startWith(this.dateNavigationService.selectedDay))\n .subscribe(day => {\n if (this.isEnabled) {\n const label = this.getToggleButtonLabel(day);\n const toggleEl = this.toggleButton.nativeElement;\n this.renderer.setAttribute(toggleEl, 'aria-label', label);\n this.renderer.setAttribute(toggleEl, 'title', label);\n }\n });\n }\n\n /**\n * Processes the user input and Initializes the Calendar everytime the datepicker popover is open.\n */\n private initializeCalendar(): void {\n this.dateNavigationService.initializeCalendar();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterViewInit,\n Directive,\n ElementRef,\n EventEmitter,\n HostBinding,\n HostListener,\n Inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n PLATFORM_ID,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { of } from 'rxjs';\nimport { filter, switchMap } from 'rxjs/operators';\n\nimport { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';\nimport { FocusService } from '../common/providers/focus.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrDateContainer } from './date-container';\nimport { DayModel } from './model/day.model';\nimport { DateFormControlService } from './providers/date-form-control.service';\nimport { DateIOService } from './providers/date-io.service';\nimport { DateNavigationService } from './providers/date-navigation.service';\nimport { DatepickerEnabledService } from './providers/datepicker-enabled.service';\nimport { DatepickerFocusService } from './providers/datepicker-focus.service';\nimport { datesAreEqual } from './utils/date-utils';\n\n// There are four ways the datepicker value is set\n// 1. Value set by user typing into text input as a string ex: '01/28/2015'\n// 2. Value set explicitly by Angular Forms APIs as a string ex: '01/28/2015'\n// 3. Value set by user via datepicker UI as a Date Object\n// 4. Value set via `clrDate` input as a Date Object\n\n@Directive({\n selector: '[clrDate]',\n host: {\n '[class.clr-input]': 'true',\n },\n providers: [DatepickerFocusService],\n})\nexport class ClrDateInput extends WrappedFormControl<ClrDateContainer> implements OnInit, AfterViewInit, OnDestroy {\n static ngAcceptInputType_date: Date | null | string;\n\n @Input() placeholder: string;\n @Output('clrDateChange') dateChange = new EventEmitter<Date>(false);\n\n protected override index = 1;\n\n private initialClrDateInputValue: Date;\n private previousDateChange: Date;\n\n constructor(\n viewContainerRef: ViewContainerRef,\n injector: Injector,\n protected override el: ElementRef,\n protected override renderer: Renderer2,\n @Self()\n @Optional()\n protected control: NgControl,\n @Optional() private container: ClrDateContainer,\n @Optional() private dateIOService: DateIOService,\n @Optional() private dateNavigationService: DateNavigationService,\n @Optional() private datepickerEnabledService: DatepickerEnabledService,\n @Optional() private dateFormControlService: DateFormControlService,\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional() private focusService: FocusService,\n private datepickerFocusService: DatepickerFocusService\n ) {\n super(viewContainerRef, ClrDateContainer, injector, control, renderer, el);\n }\n\n @Input('clrDate')\n set date(date: Date | string) {\n if (this.previousDateChange !== date) {\n this.updateDate(this.getValidDateValueFromDate(date as Date));\n }\n\n if (!this.initialClrDateInputValue) {\n this.initialClrDateInputValue = date as Date;\n }\n }\n\n @Input()\n set min(dateString: string) {\n this.dateIOService.setMinDate(dateString);\n this.triggerControlValidation();\n }\n\n @Input()\n set max(dateString: string) {\n this.dateIOService.setMaxDate(dateString);\n this.triggerControlValidation();\n }\n\n get disabled() {\n if (this.dateFormControlService) {\n return this.dateFormControlService.disabled;\n }\n return null;\n }\n\n @Input('disabled')\n @HostBinding('disabled')\n set disabled(value: boolean | string) {\n if (this.dateFormControlService) {\n this.dateFormControlService.setDisabled(isBooleanAttributeSet(value));\n }\n }\n\n @HostBinding('attr.placeholder')\n get placeholderText(): string {\n return this.placeholder ? this.placeholder : this.dateIOService.placeholderText;\n }\n\n @HostBinding('attr.type')\n get inputType(): string {\n return isPlatformBrowser(this.platformId) && this.usingNativeDatepicker() ? 'date' : 'text';\n }\n\n override ngOnInit() {\n super.ngOnInit();\n this.populateServicesFromContainerComponent();\n\n this.subscriptions.push(\n this.listenForUserSelectedDayChanges(),\n this.listenForControlValueChanges(),\n this.listenForTouchChanges(),\n this.listenForDirtyChanges(),\n this.listenForInputRefocus()\n );\n }\n\n ngAfterViewInit() {\n // I don't know why I have to do this but after using the new HostWrapping Module I have to delay the processing\n // of the initial Input set by the user to here. If I do not 2 issues occur:\n // 1. The Input setter is called before ngOnInit. ngOnInit initializes the services without which the setter fails.\n // 2. The Renderer doesn't work before ngAfterViewInit (It used to before the new HostWrapping Module for some reason).\n // I need the renderer to set the value property on the input to make sure that if the user has supplied a Date\n // input object, we reflect it with the right date on the input field using the IO service. I am not sure if\n // these are major issues or not but just noting them down here.\n this.processInitialInputs();\n }\n\n @HostListener('focus')\n setFocusStates() {\n this.setFocus(true);\n }\n\n @HostListener('blur')\n override triggerValidation() {\n super.triggerValidation();\n this.setFocus(false);\n }\n\n @HostListener('change', ['$event.target'])\n onValueChange(target: HTMLInputElement) {\n const validDateValue = this.dateIOService.getDateValueFromDateString(target.value);\n if (this.usingClarityDatepicker() && validDateValue) {\n this.updateDate(validDateValue, true);\n } else if (this.usingNativeDatepicker()) {\n const [year, month, day] = target.value.split('-');\n this.updateDate(new Date(+year, +month - 1, +day), true);\n } else {\n this.emitDateOutput(null);\n }\n }\n\n private usingClarityDatepicker() {\n return this.datepickerEnabledService.isEnabled;\n }\n\n private usingNativeDatepicker() {\n return !this.datepickerEnabledService.isEnabled;\n }\n\n private setFocus(focus: boolean) {\n if (this.focusService) {\n this.focusService.focused = focus;\n }\n }\n\n private triggerControlValidation() {\n if (this.datepickerHasFormControl()) {\n // Set `emitEvent` to false to prevent unnecessary value change event. Status change event will be emitted by `setErrors` below.\n this.control.control?.updateValueAndValidity({ emitEvent: false });\n this.control.control?.setErrors(this.control.control.errors);\n }\n }\n\n private populateServicesFromContainerComponent() {\n if (!this.container) {\n this.dateIOService = this.getProviderFromContainer(DateIOService);\n this.dateNavigationService = this.getProviderFromContainer(DateNavigationService);\n this.datepickerEnabledService = this.getProviderFromContainer(DatepickerEnabledService);\n this.dateFormControlService = this.getProviderFromContainer(DateFormControlService);\n }\n }\n\n private processInitialInputs() {\n if (this.datepickerHasFormControl()) {\n this.updateDate(this.dateIOService.getDateValueFromDateString(this.control.value));\n } else {\n this.updateDate(this.initialClrDateInputValue);\n }\n }\n\n private updateDate(value: Date, setByUserInteraction = false) {\n const date = this.getValidDateValueFromDate(value);\n\n if (setByUserInteraction) {\n this.emitDateOutput(date);\n } else {\n this.previousDateChange = date;\n }\n\n if (this.dateNavigationService) {\n this.dateNavigationService.selectedDay = date\n ? new DayModel(date.getFullYear(), date.getMonth(), date.getDate())\n : null;\n }\n\n this.updateInput(date);\n }\n\n private updateInput(date: Date) {\n if (date) {\n const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n if (this.usingNativeDatepicker()) {\n // valueAsDate expects UTC, date from input is time-zoned\n date.setMinutes(date.getMinutes() - date.getTimezoneOffset());\n this.renderer.setProperty(this.el.nativeElement, 'valueAsDate', date);\n } else if (this.datepickerHasFormControl() && dateString !== this.control.value) {\n this.control.control.setValue(dateString);\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', dateString);\n }\n } else {\n this.renderer.setProperty(this.el.nativeElement, 'value', '');\n }\n }\n\n private getValidDateValueFromDate(date: Date) {\n if (this.dateIOService) {\n const dateString = this.dateIOService.toLocaleDisplayFormatString(date);\n return this.dateIOService.getDateValueFromDateString(dateString);\n } else {\n return null;\n }\n }\n\n private emitDateOutput(date: Date) {\n if (!datesAreEqual(date, this.previousDateChange)) {\n this.dateChange.emit(date);\n this.previousDateChange = date;\n } else if (!date && this.previousDateChange) {\n this.dateChange.emit(null);\n this.previousDateChange = null;\n }\n }\n\n private datepickerHasFormControl() {\n return !!this.control;\n }\n\n private listenForControlValueChanges() {\n return of(this.datepickerHasFormControl())\n .pipe(\n filter(hasControl => hasControl),\n switchMap(() => this.control.valueChanges),\n // only update date value if not being set by user\n filter(() => !this.datepickerFocusService.elementIsFocused(this.el.nativeElement))\n )\n .subscribe((value: string) => this.updateDate(this.dateIOService.getDateValueFromDateString(value)));\n }\n\n private listenForUserSelectedDayChanges() {\n return this.dateNavigationService.selectedDayChange.subscribe(dayModel => this.updateDate(dayModel.toDate(), true));\n }\n\n private listenForTouchChanges() {\n return this.dateFormControlService.touchedChange\n .pipe(filter(() => this.datepickerHasFormControl()))\n .subscribe(() => this.control.control.markAsTouched());\n }\n\n private listenForDirtyChanges() {\n return this.dateFormControlService.dirtyChange\n .pipe(filter(() => this.datepickerHasFormControl()))\n .subscribe(() => this.control.control.markAsDirty());\n }\n\n private listenForInputRefocus() {\n return this.dateNavigationService.selectedDayChange\n .pipe(filter(date => !!date))\n .subscribe(() => this.datepickerFocusService.focusInput(this.el.nativeElement));\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\n\nimport { DateIOService } from './providers/date-io.service';\n\n@Directive({\n selector: '[clrDate]',\n providers: [{ provide: NG_VALIDATORS, useExisting: ClrDateInputValidator, multi: true }],\n})\nexport class ClrDateInputValidator implements Validator {\n constructor(@Optional() private dateIOService: DateIOService) {}\n\n validate(control: AbstractControl): ValidationErrors {\n if (this.dateIOService) {\n const value = this.dateIOService.getDateValueFromDateString(control.value);\n const minDate = this.dateIOService.disabledDates.minDate.toDate();\n const maxDate = this.dateIOService.disabledDates.maxDate.toDate();\n\n if (value && value < this.dateIOService.disabledDates.minDate.toDate()) {\n return { min: { min: minDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n } else if (value && value > this.dateIOService.disabledDates.maxDate.toDate()) {\n return { max: { max: maxDate.toLocaleDateString(), actual: value.toLocaleDateString() } };\n }\n }\n\n return null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport {\n angleIcon,\n calendarIcon,\n checkCircleIcon,\n ClarityIcons,\n eventIcon,\n exclamationCircleIcon,\n} from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { CdkTrapFocusModule } from '../../utils/cdk/cdk-trap-focus.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrCalendar } from './calendar';\nimport { ClrDateContainer } from './date-container';\nimport { ClrDateInput } from './date-input';\nimport { ClrDateInputValidator } from './date-input.validator';\nimport { ClrDatepickerViewManager } from './datepicker-view-manager';\nimport { ClrDay } from './day';\nimport { ClrDaypicker } from './daypicker';\nimport { ClrMonthpicker } from './monthpicker';\nimport { ClrYearpicker } from './yearpicker';\n\nexport const CLR_DATEPICKER_DIRECTIVES: Type<any>[] = [\n ClrDay,\n ClrDateContainer,\n ClrDateInput,\n ClrDateInputValidator,\n ClrDatepickerViewManager,\n ClrMonthpicker,\n ClrYearpicker,\n ClrDaypicker,\n ClrCalendar,\n];\n\n@NgModule({\n imports: [\n CommonModule,\n CdkTrapFocusModule,\n ClrHostWrappingModule,\n ClrConditionalModule,\n ClrPopoverModuleNext,\n ClrIconModule,\n ClrCommonFormsModule,\n ],\n declarations: [CLR_DATEPICKER_DIRECTIVES],\n exports: [CLR_DATEPICKER_DIRECTIVES],\n})\nexport class ClrDatepickerModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon, angleIcon, eventIcon, calendarIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Inject, InjectionToken, Input, Optional } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { FocusService } from '../common/providers/focus.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\n\nexport const TOGGLE_SERVICE = new InjectionToken<BehaviorSubject<boolean>>(undefined);\nexport function ToggleServiceFactory() {\n return new BehaviorSubject<boolean>(false);\n}\nexport const TOGGLE_SERVICE_PROVIDER = { provide: TOGGLE_SERVICE, useFactory: ToggleServiceFactory };\n\n@Component({\n selector: 'clr-password-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-input-wrapper\">\n <div class=\"clr-input-group\" [class.clr-focus]=\"focus\">\n <ng-content select=\"[clrPassword]\"></ng-content>\n <button\n *ngIf=\"clrToggle\"\n (click)=\"toggle()\"\n [disabled]=\"control?.disabled\"\n class=\"clr-input-group-icon-action\"\n type=\"button\"\n >\n <cds-icon status=\"info\" class=\"clr-password-eye-icon\" [attr.shape]=\"show ? 'eye-hide' : 'eye'\"></cds-icon>\n <span class=\"clr-sr-only\">\n {{ show ? hidePasswordText(label?.labelText) : showPasswordText(label?.labelText) }}\n </span>\n </button>\n </div>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [\n NgControlService,\n ControlIdService,\n ControlClassService,\n FocusService,\n TOGGLE_SERVICE_PROVIDER,\n IfControlStateService,\n ],\n})\nexport class ClrPasswordContainer extends ClrAbstractContainer {\n show = false;\n focus = false;\n\n private _toggle = true;\n\n constructor(\n ifControlStateService: IfControlStateService,\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n public focusService: FocusService,\n @Inject(TOGGLE_SERVICE) private toggleService: BehaviorSubject<boolean>,\n public commonStrings: ClrCommonStringsService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n\n /* The unsubscribe is handle inside the ClrAbstractContainer */\n this.subscriptions.push(\n this.focusService.focusChange.subscribe(state => {\n this.focus = state;\n })\n );\n }\n\n @Input('clrToggle')\n get clrToggle() {\n return this._toggle;\n }\n set clrToggle(state: boolean) {\n this._toggle = state;\n if (!state) {\n this.show = false;\n }\n }\n\n toggle() {\n this.show = !this.show;\n this.toggleService.next(this.show);\n }\n\n showPasswordText(label: string) {\n return this.commonStrings.parse(this.commonStrings.keys.passwordShow, { LABEL: label });\n }\n\n hidePasswordText(label: string) {\n return this.commonStrings.parse(this.commonStrings.keys.passwordHide, { LABEL: label });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n OnDestroy,\n OnInit,\n Optional,\n Renderer2,\n Self,\n ViewContainerRef,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { FocusService } from '../common/providers/focus.service';\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrPasswordContainer, TOGGLE_SERVICE } from './password-container';\n\n@Directive({\n selector: '[clrPassword]',\n host: { '[class.clr-input]': 'true' },\n})\nexport class ClrPassword extends WrappedFormControl<ClrPasswordContainer> implements OnInit, OnDestroy {\n protected override index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef,\n @Optional() private focusService: FocusService,\n @Optional()\n @Inject(TOGGLE_SERVICE)\n private toggleService: BehaviorSubject<boolean>\n ) {\n super(vcr, ClrPasswordContainer, injector, control, renderer, el);\n\n if (!this.focusService) {\n throw new Error('clrPassword requires being wrapped in <clr-password-container>');\n }\n\n this.subscriptions.push(\n this.toggleService.subscribe(toggle => {\n renderer.setProperty(el.nativeElement, 'type', toggle ? 'text' : 'password');\n })\n );\n }\n\n @HostListener('focus')\n triggerFocus() {\n if (this.focusService) {\n this.focusService.focused = true;\n }\n }\n\n @HostListener('blur')\n override triggerValidation() {\n super.triggerValidation();\n if (this.focusService) {\n this.focusService.focused = false;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon, eyeHideIcon, eyeIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrPassword } from './password';\nimport { ClrPasswordContainer } from './password-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrPassword, ClrPasswordContainer],\n exports: [ClrCommonFormsModule, ClrPassword, ClrPasswordContainer],\n})\nexport class ClrPasswordModule {\n constructor() {\n ClarityIcons.addIcons(eyeHideIcon, eyeIcon, exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, OnInit } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\nimport { ClrLabel } from '../common/label';\nimport { ControlIdService } from '../common/providers/control-id.service';\n\n@Component({\n selector: 'clr-radio-wrapper',\n template: `\n <ng-content select=\"[clrRadio]\"></ng-content>\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label\"></label>\n `,\n host: {\n '[class.clr-radio-wrapper]': 'true',\n },\n providers: [ControlIdService],\n})\nexport class ClrRadioWrapper implements DynamicWrapper, OnInit {\n // We need both _dynamic for HostWrapper and ContentChild(ClrLabel) in cases where\n // the user puts a radio inside a wrapper without a label, host wrapping doesn't apply\n // but we'd still need to insert a label\n _dynamic = false;\n @ContentChild(ClrLabel, { static: true }) label: ClrLabel;\n\n ngOnInit() {\n if (this.label) {\n this.label.disableGrid();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrRadioWrapper } from '../radio/radio-wrapper';\n\n@Directive({\n selector: '[clrRadio]',\n})\nexport class ClrRadio extends WrappedFormControl<ClrRadioWrapper> {\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrRadioWrapper, injector, control, renderer, el);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, Component, ContentChildren, Input, Optional, QueryList } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ContainerIdService } from '../common/providers/container-id.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\nimport { ClrRadio } from './radio';\n\n@Component({\n selector: 'clr-radio-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [class.clr-control-inline]=\"clrInline\" [ngClass]=\"controlClass()\">\n <ng-content select=\"clr-radio-wrapper\"></ng-content>\n <div class=\"clr-subtext-wrapper\">\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n '[attr.role]': 'role',\n },\n providers: [NgControlService, IfControlStateService, ControlClassService, ContainerIdService],\n})\nexport class ClrRadioContainer extends ClrAbstractContainer implements AfterContentInit {\n role: string;\n\n @ContentChildren(ClrRadio, { descendants: true }) radios: QueryList<ClrRadio>;\n\n private inline = false;\n\n constructor(\n @Optional() protected override layoutService: LayoutService,\n protected override controlClassService: ControlClassService,\n protected override ngControlService: NgControlService,\n protected override ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n /*\n * Here we want to support the following cases\n * clrInline - true by presence\n * clrInline=\"true|false\" - unless it is explicitly false, strings are considered true\n * [clrInline]=\"true|false\" - expect a boolean\n */\n @Input()\n get clrInline() {\n return this.inline;\n }\n set clrInline(value: boolean | string) {\n if (typeof value === 'string') {\n this.inline = value === 'false' ? false : true;\n } else {\n this.inline = !!value;\n }\n }\n\n override ngAfterContentInit() {\n this.setAriaRoles();\n }\n\n private setAriaRoles() {\n this.role = this.radios.length ? 'group' : null;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrRadio } from './radio';\nimport { ClrRadioContainer } from './radio-container';\nimport { ClrRadioWrapper } from './radio-wrapper';\n\n@NgModule({\n imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],\n declarations: [ClrRadio, ClrRadioContainer, ClrRadioWrapper],\n exports: [ClrCommonFormsModule, ClrRadio, ClrRadioContainer, ClrRadioWrapper],\n})\nexport class ClrRadioModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input, Optional, Renderer2 } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\n\n@Component({\n selector: 'clr-range-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-range-wrapper\" [class.progress-fill]=\"hasProgress\">\n <ng-content select=\"[clrRange]\"></ng-content>\n <span *ngIf=\"hasProgress\" class=\"fill-input\" [style.width]=\"getRangeProgressFillWidth()\"></span>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrRangeContainer extends ClrAbstractContainer {\n private _hasProgress = false;\n private lastRangeProgressFillWidth: string;\n\n constructor(\n @Optional() layoutService: LayoutService,\n controlClassService: ControlClassService,\n ngControlService: NgControlService,\n private renderer: Renderer2,\n private idService: ControlIdService,\n protected override ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n @Input('clrRangeHasProgress')\n get hasProgress() {\n return this._hasProgress;\n }\n set hasProgress(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._hasProgress) {\n this._hasProgress = valBool;\n }\n }\n\n getRangeProgressFillWidth(): string {\n const input = this.selectRangeElement();\n\n if (!input) {\n return this.lastRangeProgressFillWidth;\n }\n\n const inputWidth = input.offsetWidth;\n const inputMinValue = +input.min;\n let inputMaxValue = +input.max;\n\n if (inputMinValue === 0 && inputMaxValue === 0) {\n inputMaxValue = 100;\n }\n\n const inputMiddle = (inputMinValue + inputMaxValue) / 2;\n const inputValue = !!this.control && this.control.value !== undefined ? this.control.value : inputMiddle;\n const valueAsPercent = ((inputValue - inputMinValue) * 100) / (inputMaxValue - inputMinValue);\n\n this.lastRangeProgressFillWidth = (valueAsPercent * inputWidth) / 100 + 'px';\n\n return this.lastRangeProgressFillWidth;\n }\n\n private selectRangeElement() {\n try {\n return this.renderer.selectRootElement('[clrRange]#' + this.idService.id);\n } catch {\n return undefined;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrRangeContainer } from './range-container';\n\n@Directive({\n selector: '[clrRange]',\n host: { '[class.clr-range]': 'true' },\n})\nexport class ClrRange extends WrappedFormControl<ClrRangeContainer> {\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrRangeContainer, injector, control, renderer, el);\n }\n\n // Notes: We need an output here EventEmitter for the value\n // Does this implementation also need a display for the value?\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrHostWrappingModule } from '../../utils/host-wrapping/host-wrapping.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrRange } from './range';\nimport { ClrRangeContainer } from './range-container';\n\n@NgModule({\n imports: [CommonModule, ClrCommonFormsModule, ClrHostWrappingModule, ClrIconModule],\n declarations: [ClrRange, ClrRangeContainer],\n exports: [ClrCommonFormsModule, ClrRange, ClrRangeContainer],\n})\nexport class ClrRangeModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, Optional } from '@angular/core';\nimport { SelectMultipleControlValueAccessor } from '@angular/forms';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { LayoutService } from '../common/providers/layout.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\n\n@Component({\n selector: 'clr-select-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div [ngClass]=\"wrapperClass()\">\n <ng-content select=\"[clrSelect]\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrSelectContainer extends ClrAbstractContainer {\n @ContentChild(SelectMultipleControlValueAccessor, { static: false }) multiple: SelectMultipleControlValueAccessor;\n private multi = false;\n\n constructor(\n @Optional() protected override layoutService: LayoutService,\n protected override controlClassService: ControlClassService,\n protected override ngControlService: NgControlService,\n protected override ifControlStateService: IfControlStateService\n ) {\n super(ifControlStateService, layoutService, controlClassService, ngControlService);\n }\n\n ngOnInit() {\n /* The unsubscribe is handle inside the ClrAbstractContainer */\n this.subscriptions.push(\n this.ngControlService.controlChanges.subscribe(control => {\n if (control) {\n this.multi = control.valueAccessor instanceof SelectMultipleControlValueAccessor;\n this.control = control;\n }\n })\n );\n }\n\n wrapperClass() {\n return this.multi ? 'clr-multiselect-wrapper' : 'clr-select-wrapper';\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrSelectContainer } from './select-container';\n\n@Directive({\n selector: '[clrSelect]',\n host: { '[class.clr-select]': 'true' },\n})\nexport class ClrSelect extends WrappedFormControl<ClrSelectContainer> {\n protected override index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrSelectContainer, injector, control, renderer, el);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrSelect } from './select';\nimport { ClrSelectContainer } from './select-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrSelect, ClrSelectContainer],\n exports: [ClrCommonFormsModule, ClrSelect, ClrSelectContainer],\n})\nexport class ClrSelectModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrAbstractContainer } from '../common/abstract-container';\nimport { IfControlStateService } from '../common/if-control-state/if-control-state.service';\nimport { ControlClassService } from '../common/providers/control-class.service';\nimport { ControlIdService } from '../common/providers/control-id.service';\nimport { NgControlService } from '../common/providers/ng-control.service';\n\n@Component({\n selector: 'clr-textarea-container',\n template: `\n <ng-content select=\"label\"></ng-content>\n <label *ngIf=\"!label && addGrid()\"></label>\n <div class=\"clr-control-container\" [ngClass]=\"controlClass()\">\n <div class=\"clr-textarea-wrapper\">\n <ng-content select=\"[clrTextarea]\"></ng-content>\n <cds-icon\n *ngIf=\"showInvalid\"\n class=\"clr-validate-icon\"\n shape=\"exclamation-circle\"\n status=\"danger\"\n aria-hidden=\"true\"\n ></cds-icon>\n <cds-icon\n *ngIf=\"showValid\"\n class=\"clr-validate-icon\"\n shape=\"check-circle\"\n status=\"success\"\n aria-hidden=\"true\"\n ></cds-icon>\n </div>\n <ng-content select=\"clr-control-helper\" *ngIf=\"showHelper\"></ng-content>\n <ng-content select=\"clr-control-error\" *ngIf=\"showInvalid\"></ng-content>\n <ng-content select=\"clr-control-success\" *ngIf=\"showValid\"></ng-content>\n </div>\n `,\n host: {\n '[class.clr-form-control]': 'true',\n '[class.clr-form-control-disabled]': 'control?.disabled',\n '[class.clr-row]': 'addGrid()',\n },\n providers: [IfControlStateService, NgControlService, ControlIdService, ControlClassService],\n})\nexport class ClrTextareaContainer extends ClrAbstractContainer {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, Injector, Optional, Renderer2, Self, ViewContainerRef } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { WrappedFormControl } from '../common/wrapped-control';\nimport { ClrTextareaContainer } from './textarea-container';\n\n@Directive({\n selector: '[clrTextarea]',\n host: { '[class.clr-textarea]': 'true' },\n})\nexport class ClrTextarea extends WrappedFormControl<ClrTextareaContainer> {\n protected override index = 1;\n\n constructor(\n vcr: ViewContainerRef,\n injector: Injector,\n @Self()\n @Optional()\n control: NgControl,\n renderer: Renderer2,\n el: ElementRef\n ) {\n super(vcr, ClrTextareaContainer, injector, control, renderer, el);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { checkCircleIcon, ClarityIcons, exclamationCircleIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrCommonFormsModule } from '../common/common.module';\nimport { ClrTextarea } from './textarea';\nimport { ClrTextareaContainer } from './textarea-container';\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrCommonFormsModule],\n declarations: [ClrTextarea, ClrTextareaContainer],\n exports: [ClrCommonFormsModule, ClrTextarea, ClrTextareaContainer],\n})\nexport class ClrTextareaModule {\n constructor() {\n ClarityIcons.addIcons(exclamationCircleIcon, checkCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { ClrCheckboxModule } from './checkbox/checkbox.module';\nimport { ClrComboboxModule } from './combobox/combobox.module';\nimport { ClrCommonFormsModule } from './common/common.module';\nimport { ClrDatalistModule } from './datalist/datalist.module';\nimport { ClrDatepickerModule } from './datepicker/datepicker.module';\nimport { ClrInputModule } from './input/input.module';\nimport { ClrPasswordModule } from './password/password.module';\nimport { ClrRadioModule } from './radio/radio.module';\nimport { ClrRangeModule } from './range/range.module';\nimport { ClrSelectModule } from './select/select.module';\nimport { ClrTextareaModule } from './textarea/textarea.module';\n\n@NgModule({\n imports: [CommonModule],\n exports: [\n ClrCommonFormsModule,\n ClrCheckboxModule,\n ClrComboboxModule,\n ClrDatepickerModule,\n ClrInputModule,\n ClrPasswordModule,\n ClrRadioModule,\n ClrSelectModule,\n ClrTextareaModule,\n ClrRangeModule,\n ClrDatalistModule,\n ],\n})\nexport class ClrFormsModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { EXPANDABLE_ANIMATION_DIRECTIVES } from './index';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [EXPANDABLE_ANIMATION_DIRECTIVES],\n exports: [EXPANDABLE_ANIMATION_DIRECTIVES],\n})\nexport class ClrExpandableAnimationModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CdkDrag } from '@angular/cdk/drag-drop';\nimport { Directive, NgModule } from '@angular/core';\n\n/**\n * This is just a copy of CdkDrag so it can be used independent of the rest of the CdkDragDropModule.\n */\n@Directive({\n selector: '[cdkDrag]',\n})\nexport class CdkDragModule_CdkDrag extends CdkDrag {}\n\n/**\n * This module allows us to avoid importing all of CdkDragDropModule which results in a smaller application bundle.\n */\n@NgModule({\n declarations: [CdkDragModule_CdkDrag],\n exports: [CdkDragModule_CdkDrag],\n})\nexport class CdkDragModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, EventEmitter, Input, NgZone, OnDestroy, Output, Renderer2 } from '@angular/core';\n\n@Directive({\n selector: '[clrOutsideClick]',\n})\nexport class OutsideClick implements OnDestroy {\n @Input('clrStrict') strict = false;\n\n @Output('clrOutsideClick') outsideClick = new EventEmitter<any>(false);\n\n private documentClickListener: VoidFunction;\n\n constructor(host: ElementRef<HTMLElement>, renderer: Renderer2, ngZone: NgZone) {\n ngZone.runOutsideAngular(() => {\n this.documentClickListener = renderer.listen('document', 'click', (event: MouseEvent) => {\n // Compare the element in the DOM on which the mouse was clicked\n // with the current actionMenu native HTML element.\n if (host.nativeElement === event.target) {\n return;\n }\n\n if (!this.strict && host.nativeElement.contains(event.target as HTMLElement)) {\n return;\n }\n\n // We'll run change detection only if the click event actually happened outside of\n // the host element.\n ngZone.run(() => {\n this.outsideClick.emit(event);\n });\n });\n });\n }\n\n ngOnDestroy(): void {\n this.documentClickListener();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Type } from '@angular/core';\n\nimport { OutsideClick } from './outside-click';\n\nexport * from './outside-click';\n\nexport const OUSTIDE_CLICK_DIRECTIVES: Type<any>[] = [OutsideClick];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { OUSTIDE_CLICK_DIRECTIVES } from './index';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [OUSTIDE_CLICK_DIRECTIVES],\n exports: [OUSTIDE_CLICK_DIRECTIVES],\n})\nexport class ClrOutsideClickModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport abstract class CustomFilter {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n/*\n * This provider implements some form of synchronous debouncing through a lock pattern\n * to avoid emitting multiple state changes for a single user action.\n */\n@Injectable()\nexport class StateDebouncer {\n /*\n * This is the lock, to only emit once all the changes have finished processing\n */\n private nbChanges = 0;\n\n /**\n * The Observable that lets other classes subscribe to global state changes\n */\n private _change = new Subject<void>();\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<void> {\n return this._change.asObservable();\n }\n\n changeStart() {\n this.nbChanges++;\n }\n\n changeDone() {\n if (--this.nbChanges === 0) {\n this._change.next();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Page {\n activated = false;\n\n /**\n * Page size, a value of 0 means no pagination\n */\n private _size = 0;\n\n /**\n * Total items (needed to guess the last page)\n */\n private _totalItems?: number;\n\n /**\n * Last page\n */\n private _last: number;\n\n /**\n * Current page\n */\n private _current = 1;\n\n /**\n * The Observable that lets other classes subscribe to page changes\n */\n private _change = new Subject<number>();\n\n private preventEmit = false;\n private _sizeChange = new Subject<number>();\n\n constructor(private stateDebouncer: StateDebouncer) {}\n\n get size(): number {\n return this._size;\n }\n set size(size: number) {\n const oldSize = this._size;\n if (size !== oldSize) {\n if (!this.preventEmit) {\n this.stateDebouncer.changeStart();\n }\n this._size = size;\n if (size === 0) {\n this._current = 1;\n } else {\n // Yeap. That's the formula to keep the first item from the old page still\n // displayed in the new one.\n this._current = Math.floor((oldSize / size) * (this._current - 1)) + 1;\n }\n // We always emit an event even if the current page index didn't change, because\n // the size changing means the items inside the page are different\n if (!this.preventEmit) {\n this._change.next(this._current);\n this._sizeChange.next(this._size);\n this.stateDebouncer.changeDone();\n }\n }\n this.preventEmit = false;\n }\n\n get totalItems(): number {\n return this._totalItems || 0; // remains 0 if not set to avoid breaking change\n }\n set totalItems(total: number) {\n this._totalItems = total;\n // If we have less items than before, we might need to change the current page\n if (this.current > this.last) {\n this.current = this.last;\n }\n }\n\n get last(): number {\n if (this._last) {\n return this._last;\n }\n // If the last page isn't known, we compute it from the last item's index\n if (this.size > 0 && this.totalItems) {\n return Math.ceil(this.totalItems / this.size);\n }\n return 1;\n }\n set last(page: number) {\n this._last = page;\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<number> {\n return this._change.asObservable();\n }\n\n get sizeChange(): Observable<number> {\n return this._sizeChange.asObservable();\n }\n\n get current(): number {\n return this._current;\n }\n set current(page: number) {\n if (page !== this._current) {\n this.stateDebouncer.changeStart();\n this._current = page;\n this._change.next(page);\n this.stateDebouncer.changeDone();\n }\n }\n\n /**\n * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n get firstItem(): number {\n if (this._totalItems === 0) {\n return -1;\n }\n\n if (this.size === 0) {\n return 0;\n }\n return (this.current - 1) * this.size;\n }\n\n /**\n * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n */\n get lastItem(): number {\n if (this._totalItems === 0) {\n return -1;\n }\n\n if (this.size === 0) {\n return this.totalItems - 1;\n }\n let lastInPage = this.current * this.size - 1;\n if (this.totalItems) {\n lastInPage = Math.min(lastInPage, this.totalItems - 1);\n }\n return lastInPage;\n }\n\n /**\n * Moves to the previous page if it exists\n */\n previous() {\n if (this.current > 1) {\n this.current--;\n }\n }\n\n /**\n * Moves to the next page if it exists\n */\n next() {\n if (this.current < this.last) {\n this.current++;\n }\n }\n\n /**\n * Resets the page size to 0\n */\n resetPageSize(preventEmit = false): void {\n this.preventEmit = preventEmit;\n this.size = 0;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\nimport { Page } from './page';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class FiltersProvider<T = any> {\n /**\n * This subject is the list of filters that changed last, not the whole list.\n * We emit a list rather than just one filter to allow batch changes to several at once.\n */\n private _change = new Subject<ClrDatagridFilterInterface<T>[]>();\n\n /**\n * List of all filters, whether they're active or not\n */\n private _all: RegisteredFilter<T, ClrDatagridFilterInterface<T>>[] = [];\n\n constructor(private _page: Page, private stateDebouncer: StateDebouncer) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<ClrDatagridFilterInterface<T>[]> {\n return this._change.asObservable();\n }\n\n /**\n * Tests if at least one filter is currently active\n */\n hasActiveFilters(): boolean {\n // We do not use getActiveFilters() because this function will be called much more often\n // and stopping the loop early might be relevant.\n for (const { filter } of this._all) {\n if (filter && filter.isActive()) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Returns a list of all currently active filters\n */\n getActiveFilters(): ClrDatagridFilterInterface<T>[] {\n const ret: ClrDatagridFilterInterface<T>[] = [];\n for (const { filter } of this._all) {\n if (filter && filter.isActive()) {\n ret.push(filter);\n }\n }\n return ret;\n }\n\n /**\n * Registers a filter, and returns a deregistration function\n */\n add<F extends ClrDatagridFilterInterface<T>>(filter: F): RegisteredFilter<T, F> {\n const subscription = filter.changes.subscribe(() => this.resetPageAndEmitFilterChange([filter]));\n let hasUnregistered = false;\n const registered = new RegisteredFilter(filter, () => {\n if (hasUnregistered) {\n return;\n }\n subscription.unsubscribe();\n const matchIndex = this._all.findIndex(item => item.filter === filter);\n if (matchIndex >= 0) {\n this._all.splice(matchIndex, 1);\n }\n if (filter.isActive()) {\n this.resetPageAndEmitFilterChange([]);\n }\n hasUnregistered = true;\n });\n this._all.push(registered);\n if (filter.isActive()) {\n this.resetPageAndEmitFilterChange([filter]);\n }\n return registered;\n }\n\n /**\n * Accepts an item if it is accepted by all currently active filters\n */\n accepts(item: T): boolean {\n for (const { filter } of this._all) {\n if (filter && filter.isActive() && !filter.accepts(item)) {\n return false;\n }\n }\n return true;\n }\n\n private resetPageAndEmitFilterChange(filters: ClrDatagridFilterInterface<T>[]) {\n this.stateDebouncer.changeStart();\n // filtering may change the page number such that current page number doesn't exist in the filtered dataset.\n // So here we always set the current page to 1 so that it'll fetch first page's data with the given filter.\n this._page.current = 1;\n this._change.next(filters);\n this.stateDebouncer.changeDone();\n }\n}\n\nexport class RegisteredFilter<T, F extends ClrDatagridFilterInterface<T>> {\n constructor(public filter: F, public unregister: () => void) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, OnDestroy } from '@angular/core';\n\nimport { ClrDatagridFilterInterface } from '../interfaces/filter.interface';\nimport { FiltersProvider, RegisteredFilter } from '../providers/filters';\n\n@Directive()\nexport abstract class DatagridFilterRegistrar<T, F extends ClrDatagridFilterInterface<T>> implements OnDestroy {\n /**\n * @NOTEe Type `any` is set here to be able to pass templateStrictMode\n */\n registered: any;\n\n constructor(private filters: FiltersProvider<T>) {}\n\n get filter(): F {\n return this.registered && this.registered.filter;\n }\n\n ngOnDestroy(): void {\n this.deleteFilter();\n }\n\n setFilter(filter: F | RegisteredFilter<T, F>) {\n // If we previously had another filter, we unregister it\n this.deleteFilter();\n if (filter instanceof RegisteredFilter) {\n this.registered = filter;\n } else if (filter) {\n this.registered = this.filters.add(filter);\n }\n }\n\n deleteFilter() {\n if (this.registered) {\n this.registered.unregister();\n delete this.registered;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n OnChanges,\n OnDestroy,\n Output,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from './providers/filters';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\n\n/**\n * Custom filter that can be added in any column to override the default object property string filter.\n * The reason this is not just an input on DatagridColumn is because we need the filter's template to be projected,\n * since it can be anything (not just a text input).\n */\n@Component({\n selector: 'clr-dg-filter',\n // We register this component as a CustomFilter, for the parent column to detect it.\n providers: [{ provide: CustomFilter, useExisting: ClrDatagridFilter }],\n template: `\n <button\n class=\"datagrid-filter-toggle\"\n type=\"button\"\n #anchor\n [attr.aria-label]=\"toggleButtonAriaLabel\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-controls]=\"popoverId\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [class.datagrid-filter-open]=\"open\"\n [class.datagrid-filtered]=\"active\"\n >\n <cds-icon\n [attr.status]=\"active ? 'info' : null\"\n [attr.shape]=\"active ? 'filter-grid-circle' : 'filter-grid'\"\n solid\n ></cds-icon>\n </button>\n\n <div\n class=\"datagrid-filter\"\n [id]=\"popoverId\"\n cdkTrapFocus\n *clrPopoverContent=\"open; at: smartPosition; outsideClickToClose: true; scrollToClose: true\"\n role=\"dialog\"\n [attr.aria-label]=\"commonStrings.keys.datagridFilterDialogAriaLabel\"\n >\n <div class=\"datagrid-filter-close-wrapper\">\n <button type=\"button\" class=\"close\" clrPopoverCloseButton>\n <cds-icon shape=\"window-close\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n </button>\n </div>\n\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class ClrDatagridFilter<T = any>\n extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n implements CustomFilter, OnChanges, OnDestroy\n{\n @Output('clrDgFilterOpenChange') openChange = new EventEmitter<boolean>(false);\n\n ariaExpanded = false;\n popoverId = uniqueIdFactory();\n toggleButtonAriaLabel: string;\n\n // Smart Popover\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.END,\n content: ClrAlignment.END,\n };\n\n @ViewChild('anchor', { read: ElementRef }) anchor: ElementRef;\n\n private _open = false;\n private subs: Subscription[] = [];\n\n constructor(\n _filters: FiltersProvider<T>,\n public commonStrings: ClrCommonStringsService,\n private smartToggleService: ClrPopoverToggleService,\n @Inject(PLATFORM_ID) private platformId: any,\n private elementRef: ElementRef<HTMLElement>\n ) {\n super(_filters);\n this.subs.push(\n smartToggleService.openChange.subscribe(change => {\n this.open = change;\n this.ariaExpanded = change;\n })\n );\n }\n\n @Input('clrDgFilterOpen')\n get open() {\n return this._open;\n }\n set open(open: boolean) {\n open = !!open;\n if (this.open !== open) {\n this.smartToggleService.open = open;\n this.openChange.emit(open);\n if (!open && isPlatformBrowser(this.platformId)) {\n this.anchor.nativeElement.focus();\n }\n // keep track of the state\n this._open = open;\n }\n }\n\n @Input('clrDgFilter')\n set customFilter(filter: ClrDatagridFilterInterface<T> | RegisteredFilter<T, ClrDatagridFilterInterface<T>>) {\n this.setFilter(filter);\n }\n\n /**\n * Indicates if the filter is currently active\n */\n get active() {\n return !!this.filter && this.filter.isActive();\n }\n\n ngOnChanges() {\n this.setToggleButtonAriaLabel();\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n\n /**\n * This is not in a getter to prevent \"expression has changed after it was checked\" errors.\n * And it's more performant this way since it only runs on change.\n */\n private setToggleButtonAriaLabel() {\n const columnElement = this.elementRef.nativeElement?.closest('clr-dg-column');\n const columnTitleElement = columnElement?.querySelector('.datagrid-column-title');\n\n const columnTitle = columnTitleElement?.textContent.trim().toLocaleLowerCase();\n\n this.toggleButtonAriaLabel = this.commonStrings.parse(this.commonStrings.keys.datagridFilterAriaLabel, {\n COLUMN: columnTitle || '',\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * Generic accessor for deep object properties\n * that can be specified as simple dot-separated strings.\n */\nexport class NestedProperty<T = any> {\n private splitProp: string[];\n\n constructor(private prop: string) {\n if (prop.indexOf('.') >= 0) {\n this.splitProp = prop.split('.');\n }\n }\n\n // Safe getter for a deep object property, will not throw an error but return\n // undefined if one of the intermediate properties is null or undefined.\n getPropValue(item: T): any {\n if (this.splitProp) {\n let value = item;\n for (const nestedProp of this.splitProp) {\n if (\n value === null ||\n typeof value === 'undefined' ||\n typeof (value as Record<string, any>)[nestedProp] === 'undefined'\n ) {\n return undefined;\n }\n value = (value as Record<string, any>)[nestedProp];\n }\n return value;\n } else {\n return (item as Record<string, any>)[this.prop];\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyNumericFilter<T = any> implements ClrDatagridNumericFilterInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(public prop: string, public exact = false) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n accepts(item: T, low: number, high: number): boolean {\n const propValue = this.nestedProp.getPropValue(item);\n if (propValue === undefined) {\n return false;\n }\n if (low !== null && (typeof propValue !== 'number' || propValue < low)) {\n return false;\n }\n if (high !== null && (typeof propValue !== 'number' || propValue > high)) {\n return false;\n }\n return true;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { DatagridPropertyNumericFilter } from './datagrid-property-numeric-filter';\n\nexport class DatagridNumericFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<[number, number]>();\n\n /**\n * Internal values and accessor\n */\n private _low: number | null = null;\n private _high: number | null = null;\n\n constructor(public filterFn: ClrDatagridNumericFilterInterface<T>) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get changes(): Observable<[number, number]> {\n return this._changes.asObservable();\n }\n\n get value(): [number, number] {\n return [this._low, this._high];\n }\n set value(vals: [number, number]) {\n const low = vals[0];\n const high = vals[1];\n if (low !== this._low || high !== this._high) {\n this._low = low;\n this._high = high;\n this._changes.next([this._low, this._high]);\n }\n }\n\n get low() {\n return this._low;\n }\n set low(low: number) {\n if (low !== this._low) {\n this._low = low;\n this._changes.next([this._low, this._high]);\n }\n }\n\n get high() {\n return this._high;\n }\n set high(high: number) {\n if (high !== this._high) {\n this._high = high;\n this._changes.next([this._low, this._high]);\n }\n }\n\n get state() {\n if (this.filterFn instanceof DatagridPropertyNumericFilter) {\n return {\n property: this.filterFn.prop,\n low: this._low,\n high: this._high,\n };\n }\n return this;\n }\n\n /**\n * Indicates if the filter is currently active, (at least one input is set)\n */\n isActive(): boolean {\n return this._low !== null || this.high !== null;\n }\n\n /**\n * Tests if an item matches a search text\n */\n accepts(item: T): boolean {\n // We have a filter function in case someone wants to implement a numeric\n // filter that always passes nulls or similar\n return this.filterFn.accepts(item, this._low, this._high);\n }\n\n equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n if (other instanceof DatagridNumericFilterImpl) {\n if (other.filterFn instanceof DatagridPropertyNumericFilter) {\n return (\n this.filterFn instanceof DatagridPropertyNumericFilter &&\n other.filterFn.prop === this.filterFn.prop &&\n other.low === this._low &&\n other.high === this._high\n );\n }\n return other === this;\n }\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, ElementRef, EventEmitter, Input, NgZone, Output, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../../utils/dom-adapter/dom-adapter';\nimport { ClrCommonStringsService } from '../../../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../../../utils/popover/providers/popover-toggle.service';\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridNumericFilterInterface } from '../../interfaces/numeric-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\nimport { DatagridNumericFilterImpl } from './datagrid-numeric-filter-impl';\n\n@Component({\n selector: 'clr-dg-numeric-filter',\n providers: [{ provide: CustomFilter, useExisting: DatagridNumericFilter }],\n template: `\n <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n <input\n class=\"datagrid-numeric-filter-input\"\n #input_low\n type=\"number\"\n autocomplete=\"off\"\n name=\"low\"\n [(ngModel)]=\"low\"\n [placeholder]=\"minPlaceholderValue\"\n [attr.aria-label]=\"minPlaceholderValue\"\n />\n <span class=\"datagrid-filter-input-spacer\"></span>\n <input\n class=\"datagrid-numeric-filter-input\"\n #input_high\n type=\"number\"\n autocomplete=\"off\"\n name=\"high\"\n [(ngModel)]=\"high\"\n [placeholder]=\"maxPlaceholderValue\"\n [attr.aria-label]=\"maxPlaceholderValue\"\n />\n </clr-dg-filter>\n `,\n})\nexport class DatagridNumericFilter<T = any>\n extends DatagridFilterRegistrar<T, DatagridNumericFilterImpl<T>>\n implements CustomFilter, AfterViewInit\n{\n @Input('clrFilterMinPlaceholder') minPlaceholder: string;\n @Input('clrFilterMaxPlaceholder') maxPlaceholder: string;\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n /**\n * Indicates if the filter dropdown is open\n */\n open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input_low') input: ElementRef;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n private initFilterValues: [number, number];\n private subscriptions: Subscription[] = [];\n\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private popoverToggleService: ClrPopoverToggleService,\n private ngZone: NgZone\n ) {\n super(filters);\n }\n\n /**\n * Common setter for the input values\n */\n @Input('clrFilterValue')\n get value() {\n return [this.filter.low, this.filter.high];\n }\n set value(values: [number, number]) {\n if (this.filter && Array.isArray(values)) {\n if (values && (values[0] !== this.filter.low || values[1] !== this.filter.high)) {\n if (typeof values[0] === 'number') {\n this.filter.low = values[0];\n } else {\n this.filter.low = null;\n }\n if (typeof values[1] === 'number') {\n this.filter.high = values[1];\n } else {\n this.filter.high = null;\n }\n this.filterValueChange.emit(values);\n }\n } else {\n this.initFilterValues = values;\n }\n }\n\n /**\n * Customizable filter logic based on high and low values\n */\n @Input('clrDgNumericFilter')\n set customNumericFilter(\n value: ClrDatagridNumericFilterInterface<T> | RegisteredFilter<T, DatagridNumericFilterImpl<T>>\n ) {\n if (value instanceof RegisteredFilter) {\n this.setFilter(value);\n } else {\n this.setFilter(new DatagridNumericFilterImpl(value));\n }\n if (this.initFilterValues) {\n this.value = this.initFilterValues;\n // This initFilterValues should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this customStringFilter property is set again\n delete this.initFilterValues;\n }\n }\n\n get maxPlaceholderValue() {\n return this.maxPlaceholder || this.commonStrings.keys.maxValue;\n }\n\n get minPlaceholderValue() {\n return this.minPlaceholder || this.commonStrings.keys.minValue;\n }\n\n get low() {\n if (typeof this.filter.low === 'number' && isFinite(this.filter.low)) {\n return this.filter.low;\n } else {\n // There's not a low limit\n return null;\n }\n }\n set low(low: number | string) {\n if (typeof low === 'number' && low !== this.filter.low) {\n this.filter.low = low;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n } else if (typeof low !== 'number') {\n this.filter.low = null;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n }\n }\n\n get high() {\n if (typeof this.filter.high === 'number' && isFinite(this.filter.high)) {\n return this.filter.high;\n } else {\n // There's not a high limit\n return null;\n }\n }\n set high(high: number | string) {\n if (typeof high === 'number' && high !== this.filter.high) {\n this.filter.high = high;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n } else if (typeof high !== 'number') {\n this.filter.high = null;\n this.filterValueChange.emit([this.filter.low, this.filter.high]);\n }\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.popoverToggleService.openChange.subscribe(openChange => {\n this.open = openChange;\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() => {\n // The animation frame in used because when this executes, the input isn't displayed.\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n requestAnimationFrame(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n });\n })\n );\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.subscriptions.forEach(sub => {\n sub.unsubscribe();\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyStringFilter<T = any> implements ClrDatagridStringFilterInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(public prop: string, public exact = false) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n accepts(item: T, search: string): boolean {\n const propValue = this.nestedProp.getPropValue(item);\n if (typeof propValue === 'undefined') {\n return false;\n } else if (this.exact) {\n return ('' + propValue).toLowerCase() === search;\n } else {\n return ('' + propValue).toLowerCase().indexOf(search) >= 0;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable, Subject } from 'rxjs';\n\nimport { ClrDatagridFilterInterface } from '../../interfaces/filter.interface';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { DatagridPropertyStringFilter } from './datagrid-property-string-filter';\n\nexport class DatagridStringFilterImpl<T = any> implements ClrDatagridFilterInterface<T> {\n /**\n * The Observable required as part of the Filter interface\n */\n private _changes = new Subject<string>();\n\n /**\n * Input value converted to lowercase\n */\n private _lowerCaseValue = '';\n\n /**\n * Raw input value\n */\n private _rawValue = '';\n\n constructor(public filterFn: ClrDatagridStringFilterInterface<T>) {}\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get changes(): Observable<string> {\n return this._changes.asObservable();\n }\n\n get lowerCaseValue() {\n return this._lowerCaseValue;\n }\n\n get state() {\n if (this.filterFn instanceof DatagridPropertyStringFilter) {\n return {\n property: this.filterFn.prop,\n value: this.value,\n };\n }\n return this;\n }\n\n get value(): string {\n return this._rawValue;\n }\n /**\n * Common setter for the input value\n */\n set value(value: string) {\n if (!value) {\n value = '';\n }\n if (value !== this._rawValue) {\n this._rawValue = value;\n this._lowerCaseValue = value.toLowerCase().trim();\n this._changes.next(value);\n }\n }\n\n /**\n * Indicates if the filter is currently active, meaning the input is not empty\n */\n isActive(): boolean {\n return !!this.value;\n }\n\n /**\n * Tests if an item matches a search text\n */\n accepts(item: T): boolean {\n // We always test with the lowercase value of the input, to stay case insensitive\n return this.filterFn.accepts(item, this.lowerCaseValue);\n }\n\n equals(other: ClrDatagridFilterInterface<T, any>): boolean {\n if (other instanceof DatagridStringFilterImpl) {\n if (other.filterFn instanceof DatagridPropertyStringFilter) {\n return (\n this.filterFn instanceof DatagridPropertyStringFilter &&\n other.filterFn.prop === this.filterFn.prop &&\n other.value === this.value\n );\n }\n return other === this;\n }\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n Input,\n NgZone,\n OnDestroy,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../../utils/dom-adapter/dom-adapter';\nimport { ClrCommonStringsService } from '../../../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../../../utils/popover/providers/popover-toggle.service';\nimport { ClrDatagridFilter } from '../../datagrid-filter';\nimport { ClrDatagridStringFilterInterface } from '../../interfaces/string-filter.interface';\nimport { CustomFilter } from '../../providers/custom-filter';\nimport { FiltersProvider, RegisteredFilter } from '../../providers/filters';\nimport { DatagridFilterRegistrar } from '../../utils/datagrid-filter-registrar';\nimport { DatagridStringFilterImpl } from './datagrid-string-filter-impl';\n\n@Component({\n selector: 'clr-dg-string-filter',\n providers: [{ provide: CustomFilter, useExisting: DatagridStringFilter }],\n template: `\n <clr-dg-filter [clrDgFilter]=\"registered\" [(clrDgFilterOpen)]=\"open\">\n <input\n #input\n type=\"text\"\n autocomplete=\"off\"\n name=\"search\"\n [(ngModel)]=\"value\"\n class=\"clr-input\"\n [attr.aria-label]=\"placeholderValue\"\n [placeholder]=\"placeholderValue\"\n />\n </clr-dg-filter>\n `,\n})\nexport class DatagridStringFilter<T = any>\n extends DatagridFilterRegistrar<T, DatagridStringFilterImpl<T>>\n implements CustomFilter, AfterViewInit, OnDestroy\n{\n /**\n * Provide a way to pass external placeholder and aria-label to the filter input\n */\n @Input('clrFilterPlaceholder') placeholder: string;\n\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n /**\n * Indicates if the filter dropdown is open\n */\n open = false;\n\n /**\n * We need the actual input element to automatically focus on it\n */\n @ViewChild('input') input: ElementRef;\n\n /**\n * We grab the ClrDatagridFilter we wrap to register this StringFilter to it.\n */\n @ViewChild(ClrDatagridFilter) filterContainer: ClrDatagridFilter<T>;\n\n private initFilterValue: string;\n private subs: Subscription[] = [];\n\n constructor(\n filters: FiltersProvider<T>,\n private domAdapter: DomAdapter,\n public commonStrings: ClrCommonStringsService,\n private smartToggleService: ClrPopoverToggleService,\n private ngZone: NgZone\n ) {\n super(filters);\n }\n\n /**\n * Customizable filter logic based on a search text\n */\n @Input('clrDgStringFilter')\n set customStringFilter(\n value: ClrDatagridStringFilterInterface<T> | RegisteredFilter<T, DatagridStringFilterImpl<T>>\n ) {\n if (value instanceof RegisteredFilter) {\n this.setFilter(value);\n } else {\n this.setFilter(new DatagridStringFilterImpl(value));\n }\n if (this.initFilterValue) {\n this.value = this.initFilterValue;\n // This initFilterValue should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this customStringFilter property is set again\n delete this.initFilterValue;\n }\n }\n\n /**\n * Common setter for the input value\n */\n @Input('clrFilterValue')\n get value() {\n return this.filter.value;\n }\n set value(value: string) {\n if (this.filter && typeof value === 'string') {\n if (!value) {\n value = '';\n }\n if (value !== this.filter.value) {\n this.filter.value = value;\n this.filterValueChange.emit(value);\n }\n } else {\n this.initFilterValue = value;\n }\n }\n\n get placeholderValue() {\n return this.placeholder || this.commonStrings.keys.filterItems;\n }\n\n ngAfterViewInit() {\n this.subs.push(\n this.smartToggleService.openChange.subscribe(openChange => {\n this.open = openChange;\n // Note: this is being run outside of the Angular zone because `element.focus()` doesn't require\n // running change detection.\n this.ngZone.runOutsideAngular(() => {\n // The animation frame in used because when this executes, the input isn't displayed.\n // Note: `element.focus()` causes re-layout and this may lead to frame drop on slower devices.\n // `setTimeout` is a macrotask and macrotasks are executed within the current rendering frame.\n // Animation tasks are executed within the next rendering frame.\n requestAnimationFrame(() => {\n this.domAdapter.focus(this.input.nativeElement);\n });\n });\n })\n );\n }\n\n override ngOnDestroy(): void {\n super.ngOnDestroy();\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({\n selector: 'clr-datagrid',\n})\nexport class DatagridWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class RowActionService {\n private actionableCount = 0;\n\n /**\n * false means no rows with action\n */\n get hasActionableRow(): boolean {\n return this.actionableCount > 0;\n }\n\n register() {\n this.actionableCount++;\n }\n\n unregister() {\n this.actionableCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { RowActionService } from '../providers/row-action-service';\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\n\n@Directive({\n selector: 'clr-datagrid, clr-dg-row',\n})\nexport class ActionableOompaLoompa extends OompaLoompa {\n private rowActions: RowActionService;\n\n constructor(cdr: ChangeDetectorRef, @Optional() willyWonka: DatagridWillyWonka, rowActions: RowActionService) {\n if (!willyWonka) {\n throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n }\n super(cdr, willyWonka);\n this.rowActions = rowActions;\n }\n\n get flavor() {\n return this.rowActions.hasActionableRow;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\nimport { Keys } from '../utils/enums/keys.enum';\nimport { normalizeKey } from '../utils/focus/key-focus/util';\n\nexport interface Closable {\n close(): void;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class ModalStackService {\n private readonly modalStack: Closable[] = [];\n private readonly keyUpEventListener = this.onKeyUp.bind(this);\n\n constructor(@Inject(PLATFORM_ID) private readonly platformId: unknown) {}\n\n trackModalOpen(openedModal: Closable) {\n if (this.modalStack.includes(openedModal) === false) {\n this.modalStack.unshift(openedModal);\n }\n\n if (isPlatformBrowser(this.platformId)) {\n document.body.addEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n trackModalClose(closedModal: Closable) {\n const closedModalIndex = this.modalStack.indexOf(closedModal);\n\n if (closedModalIndex > -1) {\n this.modalStack.splice(closedModalIndex, 1);\n }\n\n if (this.modalStack.length === 0 && isPlatformBrowser(this.platformId)) {\n document.body.removeEventListener('keyup', this.keyUpEventListener);\n }\n }\n\n private onKeyUp(event: KeyboardEvent) {\n if (this.modalStack.length && normalizeKey(event.key) === Keys.Escape) {\n // We blur the active element because escaping with an input element in focus could cause\n // an ExpressionChangedAfterItHasBeenCheckedError for the touched state. (CDE-1662)\n (document.activeElement as HTMLElement).blur();\n\n this.modalStack[0].close();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\n\nimport { ModalStackService } from '../../../modal/modal-stack.service';\n\n@Injectable()\nexport class DetailService {\n id: string;\n\n private toggleState = false;\n private cache: any;\n private button: HTMLButtonElement;\n private _enabled = false;\n private _state = new BehaviorSubject<boolean | null>(this.toggleState);\n\n constructor(private readonly modalStackService: ModalStackService) {}\n\n get enabled(): boolean {\n return this._enabled;\n }\n set enabled(state: boolean) {\n this._enabled = state;\n }\n\n get state() {\n return this.cache;\n }\n\n get stateChange(): Observable<boolean | null> {\n return this._state.asObservable();\n }\n\n get isOpen() {\n return this.toggleState === true;\n }\n\n open(item: any, button?: HTMLButtonElement) {\n this.cache = item;\n this.button = button;\n this.toggleState = true;\n this._state.next(this.toggleState);\n this.modalStackService.trackModalOpen(this);\n }\n\n close() {\n this.toggleState = false;\n this._state.next(this.toggleState);\n this.modalStackService.trackModalClose(this);\n if (this.button) {\n this.button.focus();\n this.button = null;\n }\n }\n\n toggle(item: any, button?: HTMLButtonElement) {\n if (this.isRowOpen(item) || !item) {\n this.close();\n } else {\n this.open(item, button);\n }\n }\n\n isRowOpen(item: any) {\n return !!(this.toggleState && this.cache === item);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { DetailService } from './detail.service';\n\n@Injectable()\nexport class ExpandableRowsCount {\n private expandableCount = 0;\n\n constructor(private detailService: DetailService) {}\n\n /**\n * false means no rows with action\n * check if details are on, and disable rows entirely\n */\n get hasExpandableRow(): boolean {\n return !this.detailService.enabled && this.expandableCount > 0;\n }\n\n register() {\n this.expandableCount++;\n }\n\n unregister() {\n this.expandableCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { ExpandableRowsCount } from '../providers/global-expandable-rows';\nimport { DatagridWillyWonka } from './datagrid-willy-wonka';\n\n@Directive({\n selector: 'clr-datagrid, clr-dg-row',\n})\nexport class ExpandableOompaLoompa extends OompaLoompa {\n private expandableCount: ExpandableRowsCount;\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() willyWonka: DatagridWillyWonka,\n expandableCount: ExpandableRowsCount\n ) {\n if (!willyWonka) {\n throw new Error('clr-dg-row should only be used inside of a clr-datagrid');\n }\n super(cdr, willyWonka);\n this.expandableCount = expandableCount;\n }\n\n get flavor() {\n return this.expandableCount.hasExpandableRow;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridComparatorInterface } from '../../interfaces/comparator.interface';\nimport { NestedProperty } from '../nested-property';\n\nexport class DatagridPropertyComparator<T = any> implements ClrDatagridComparatorInterface<T> {\n private nestedProp: NestedProperty<T>;\n\n constructor(public prop: string) {\n this.nestedProp = new NestedProperty(prop);\n }\n\n compare(a: T, b: T): number {\n let propA = this.nestedProp.getPropValue(a);\n let propB = this.nestedProp.getPropValue(b);\n\n if (typeof propA === 'string') {\n propA = propA.toLowerCase();\n }\n\n if (typeof propB === 'string') {\n propB = propB.toLowerCase();\n }\n\n if (typeof propA === 'undefined' || propA === null) {\n if (typeof propB === 'undefined' || propB === null) {\n return 0;\n } else {\n return 1;\n }\n } else {\n if (typeof propB === 'undefined' || propB === null) {\n return -1;\n } else if (propA < propB) {\n return -1;\n } else if (propA > propB) {\n return 1;\n } else {\n return 0;\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * Enumeration representing the sorting order of a datagrid column. It is a constant Enum,\n * i.e. each value needs to be treated as a `number`, starting at index 0.\n *\n * @export\n * @enum {number}\n */\nexport enum ClrDatagridSortOrder {\n UNSORTED = 0,\n ASC = 1,\n DESC = -1,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\n\n@Component({\n selector: 'dg-wrapped-column',\n template: `\n <ng-template #columnPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class WrappedColumn implements DynamicWrapper, AfterViewInit, OnDestroy {\n _dynamic = false;\n\n @ViewChild('columnPortal') templateRef: TemplateRef<void>;\n columnView: EmbeddedViewRef<void>; // the columns projected view (in memory)\n\n ngAfterViewInit() {\n // Create the cells view in memory, not the DOM.\n this.columnView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.columnView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrDatagridComparatorInterface } from '../interfaces/comparator.interface';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n@Injectable()\nexport class Sort<T = any> {\n /**\n * Currently active comparator\n */\n private _comparator: ClrDatagridComparatorInterface<T>;\n\n /**\n * Ascending order if false, descending if true\n */\n private _reverse = false;\n\n /**\n * The Observable that lets other classes subscribe to sort changes\n */\n private _change = new Subject<Sort<T>>();\n\n constructor(private stateDebouncer: StateDebouncer) {}\n\n get comparator(): ClrDatagridComparatorInterface<T> {\n return this._comparator;\n }\n set comparator(value: ClrDatagridComparatorInterface<T>) {\n this.stateDebouncer.changeStart();\n this._comparator = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n get reverse(): boolean {\n return this._reverse;\n }\n set reverse(value: boolean) {\n this.stateDebouncer.changeStart();\n this._reverse = value;\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<Sort<T>> {\n return this._change.asObservable();\n }\n\n /**\n * Sets a comparator as the current one, or toggles reverse if the comparator is already used. The\n * optional forceReverse input parameter allows to override that toggling behavior by sorting in\n * reverse order if `true`.\n *\n * @memberof Sort\n */\n toggle(sortBy: ClrDatagridComparatorInterface<T>, forceReverse?: boolean) {\n this.stateDebouncer.changeStart();\n // We modify private properties directly, to batch the change event\n if (this.comparator === sortBy) {\n this._reverse = typeof forceReverse !== 'undefined' ? forceReverse || !this._reverse : !this._reverse;\n } else {\n this._comparator = sortBy;\n this._reverse = typeof forceReverse !== 'undefined' ? forceReverse : false;\n }\n this.emitChange();\n this.stateDebouncer.changeDone();\n }\n\n /**\n * Clears the current sorting order\n */\n clear() {\n this.comparator = null;\n }\n\n /**\n * Compares two objects according to the current comparator\n */\n compare(a: T, b: T): number {\n return (this.reverse ? -1 : 1) * this.comparator.compare(a, b);\n }\n\n private emitChange() {\n this._change.next(this);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridRenderStep {\n ALIGN_COLUMNS,\n CALCULATE_MODE_ON,\n CALCULATE_MODE_OFF,\n CLEAR_WIDTHS, // Note this is listened to by both cells and columns\n COMPUTE_COLUMN_WIDTHS,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { DatagridRenderStep } from '../enums/render-step.enum';\n\n@Injectable()\nexport class DatagridRenderOrganizer {\n protected _renderStep = new Subject<DatagridRenderStep>();\n\n private alreadySized = false;\n\n get renderStep(): Observable<DatagridRenderStep> {\n return this._renderStep.asObservable();\n }\n\n filterRenderSteps(step: DatagridRenderStep) {\n return this.renderStep.pipe(filter(testStep => step === testStep));\n }\n\n resize() {\n this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_ON);\n if (this.alreadySized) {\n this._renderStep.next(DatagridRenderStep.CLEAR_WIDTHS);\n }\n this._renderStep.next(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS);\n this._renderStep.next(DatagridRenderStep.ALIGN_COLUMNS);\n this.alreadySized = true;\n this._renderStep.next(DatagridRenderStep.CALCULATE_MODE_OFF);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ElementRef, Injectable } from '@angular/core';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\nconst MIN_COLUMN_WIDTH = 96;\n\n// This service allows DatagridHeaderRenderer and ClrDatagridColumnSeparator\n// to share column resize data with each other.\n\n@Injectable()\nexport class ColumnResizerService {\n // is it within the maximum resize range to the left\n isWithinMaxResizeRange: boolean;\n\n private widthBeforeResize: number;\n private _resizedBy = 0;\n\n constructor(private el: ElementRef, private domAdapter: DomAdapter, private organizer: DatagridRenderOrganizer) {}\n\n get resizedBy() {\n return this._resizedBy;\n }\n\n get minColumnWidth() {\n return this.domAdapter.minWidth(this.el.nativeElement) || MIN_COLUMN_WIDTH;\n }\n\n get maxResizeRange() {\n return this.widthBeforeResize - this.minColumnWidth;\n }\n\n get widthAfterResize(): number {\n return this.widthBeforeResize + this._resizedBy;\n }\n\n startResize(): void {\n this._resizedBy = 0;\n this.isWithinMaxResizeRange = true;\n this.widthBeforeResize = this.domAdapter.clientRect(this.el.nativeElement).width;\n }\n\n endResize(): void {\n this.organizer.resize();\n }\n\n calculateResize(resizedBy: number): void {\n // calculates the resize amount within the allowed range\n if (resizedBy < -this.maxResizeRange) {\n this._resizedBy = -this.maxResizeRange;\n this.isWithinMaxResizeRange = false;\n } else {\n this._resizedBy = resizedBy;\n this.isWithinMaxResizeRange = true;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, PLATFORM_ID } from '@angular/core';\n\n/**\n * @description\n * Internal datagrid service that holds a reference to the clr-dg-table element and exposes a method to get height.\n */\n@Injectable()\nexport class TableSizeService {\n private _tableRef: HTMLElement;\n\n constructor(@Inject(PLATFORM_ID) private platformId: any) {}\n\n get tableRef(): HTMLElement {\n return this._tableRef;\n }\n set tableRef(element: HTMLElement) {\n this._tableRef = element;\n }\n\n set table(table: ElementRef) {\n if (isPlatformBrowser(this.platformId) && table.nativeElement) {\n this.tableRef = table.nativeElement.querySelector('.datagrid-table');\n }\n }\n\n // Used when resizing columns to show the column border being dragged.\n getColumnDragHeight(): string {\n if (!this.tableRef) {\n return null;\n }\n return `${this.tableRef.clientHeight}px`;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, Inject, NgZone, OnDestroy, Renderer2, ViewChild } from '@angular/core';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ColumnResizerService } from './providers/column-resizer.service';\nimport { TableSizeService } from './providers/table-size.service';\n\n// Default resize length on each keyboard move event\nconst KEYBOARD_RESIZE_LENGTH = 12;\n\n@Component({\n selector: 'clr-dg-column-separator',\n template: `\n <button\n type=\"button\"\n class=\"datagrid-column-handle\"\n [attr.aria-label]=\"commonString.keys.columnSeparatorAriaLabel\"\n [attr.aria-describedby]=\"descriptionId\"\n cdkDrag\n cdkDragLockAxis=\"x\"\n (cdkDragStarted)=\"showTracker()\"\n (cdkDragMoved)=\"moveTracker($event.distance.x)\"\n (cdkDragEnded)=\"hideTracker(); $event.source._dragRef.reset()\"\n #columnHandle\n ></button>\n <span class=\"clr-sr-only\" [attr.id]=\"descriptionId\">\n {{ commonString.keys.columnSeparatorDescription }}\n </span>\n <div class=\"datagrid-column-resize-tracker\" #resizeTracker></div>\n `,\n host: {\n '[class.datagrid-column-separator]': 'true',\n },\n})\nexport class ClrDatagridColumnSeparator implements AfterViewInit, OnDestroy {\n columnSeparatorId = uniqueIdFactory();\n\n private resizeStartedOnKeyDown = false;\n private isWithinMaxResizeRange: boolean;\n private unlisteners: (() => void)[] = [];\n\n @ViewChild('resizeTracker') private resizeTrackerRef: ElementRef;\n @ViewChild('columnHandle') private columnHandleRef: ElementRef;\n\n constructor(\n private columnResizerService: ColumnResizerService,\n private renderer: Renderer2,\n private ngZone: NgZone,\n private tableSizeService: TableSizeService,\n public commonString: ClrCommonStringsService,\n @Inject(DOCUMENT) private document: any\n ) {}\n\n get descriptionId(): string {\n return `${this.columnSeparatorId}-aria-describedby`;\n }\n\n private get resizeTrackerEl() {\n return this.resizeTrackerRef.nativeElement;\n }\n\n private get columnHandleEl() {\n return this.columnHandleRef.nativeElement;\n }\n\n ngAfterViewInit() {\n this.ngZone.runOutsideAngular(() => {\n this.unlisteners.push(\n this.renderer.listen(this.columnHandleEl, 'keydown', event => {\n this.showTrackerOnFirstKeyDown(event);\n this.moveTrackerOnKeyDown(event);\n })\n );\n this.unlisteners.push(\n this.renderer.listen(this.columnHandleEl, 'keyup', event => {\n this.hideTrackerOnKeyUp(event);\n })\n );\n });\n }\n\n ngOnDestroy() {\n this.unlisteners.forEach(unlistener => unlistener());\n }\n\n showTracker(): void {\n this.columnResizerService.startResize();\n const tableHeight = this.tableSizeService.getColumnDragHeight();\n this.renderer.setStyle(this.resizeTrackerEl, 'height', tableHeight);\n this.renderer.setStyle(this.resizeTrackerEl, 'display', 'block');\n }\n\n moveTracker(movedBy: number): void {\n this.columnResizerService.calculateResize(movedBy);\n this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(${this.columnResizerService.resizedBy}px)`);\n this.renderer.setStyle(this.document.body, 'cursor', 'col-resize');\n this.redFlagTracker();\n }\n\n hideTracker(): void {\n this.columnResizerService.endResize();\n this.renderer.setStyle(this.resizeTrackerEl, 'display', 'none');\n this.renderer.setStyle(this.resizeTrackerEl, 'transform', `translateX(0px)`);\n this.renderer.setStyle(this.columnHandleEl, 'transform', `translateX(0px)`);\n this.renderer.setStyle(this.document.body, 'cursor', 'auto');\n }\n\n private showTrackerOnFirstKeyDown(event: KeyboardEvent): void {\n if (!this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n this.resizeStartedOnKeyDown = true;\n this.renderer.addClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n this.showTracker();\n }\n }\n\n private moveTrackerOnKeyDown(event: KeyboardEvent): void {\n if (this.isArrowLeftKeyEvent(event)) {\n event.stopPropagation();\n this.moveTracker(this.columnResizerService.resizedBy - KEYBOARD_RESIZE_LENGTH);\n } else if (this.isArrowRightKeyEvent(event)) {\n event.stopPropagation();\n this.moveTracker(this.columnResizerService.resizedBy + KEYBOARD_RESIZE_LENGTH);\n }\n }\n\n private hideTrackerOnKeyUp(event: KeyboardEvent): void {\n if (this.resizeStartedOnKeyDown && (this.isArrowLeftKeyEvent(event) || this.isArrowRightKeyEvent(event))) {\n this.resizeStartedOnKeyDown = false;\n this.renderer.removeClass(this.resizeTrackerEl, 'on-arrow-key-resize');\n this.hideTracker();\n this.columnHandleEl.focus();\n }\n }\n\n private redFlagTracker(): void {\n if (this.isWithinMaxResizeRange !== this.columnResizerService.isWithinMaxResizeRange) {\n this.isWithinMaxResizeRange = this.columnResizerService.isWithinMaxResizeRange;\n if (!this.isWithinMaxResizeRange) {\n this.renderer.addClass(this.resizeTrackerEl, 'exceeded-max');\n } else {\n this.renderer.removeClass(this.resizeTrackerEl, 'exceeded-max');\n }\n }\n }\n\n private isArrowLeftKeyEvent(event: KeyboardEvent) {\n return normalizeKey(event.key) === Keys.ArrowLeft;\n }\n\n private isArrowRightKeyEvent(event: KeyboardEvent) {\n return normalizeKey(event.key) === Keys.ArrowRight;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChild,\n EventEmitter,\n Injector,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { DatagridPropertyComparator } from './built-in/comparators/datagrid-property-comparator';\nimport { DatagridNumericFilterImpl } from './built-in/filters/datagrid-numeric-filter-impl';\nimport { DatagridPropertyNumericFilter } from './built-in/filters/datagrid-property-numeric-filter';\nimport { DatagridPropertyStringFilter } from './built-in/filters/datagrid-property-string-filter';\nimport { DatagridStringFilterImpl } from './built-in/filters/datagrid-string-filter-impl';\nimport { ClrDatagridSortOrder } from './enums/sort-order.enum';\nimport { ClrDatagridComparatorInterface } from './interfaces/comparator.interface';\nimport { ClrDatagridFilterInterface } from './interfaces/filter.interface';\nimport { CustomFilter } from './providers/custom-filter';\nimport { DetailService } from './providers/detail.service';\nimport { FiltersProvider } from './providers/filters';\nimport { Sort } from './providers/sort';\nimport { DatagridFilterRegistrar } from './utils/datagrid-filter-registrar';\nimport { WrappedColumn } from './wrapped-column';\n\n@Component({\n selector: 'clr-dg-column',\n template: `\n <div class=\"datagrid-column-flex\">\n <button class=\"datagrid-column-title\" *ngIf=\"sortable\" (click)=\"sort()\" type=\"button\">\n <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n <cds-icon\n *ngIf=\"sortDirection\"\n shape=\"arrow\"\n [attr.direction]=\"sortDirection\"\n aria-hidden=\"true\"\n class=\"sort-icon\"\n ></cds-icon>\n </button>\n <!-- I'm really not happy with that select since it's not very scalable -->\n <ng-content select=\"clr-dg-filter, clr-dg-string-filter, clr-dg-numeric-filter\"></ng-content>\n\n <clr-dg-string-filter\n *ngIf=\"field && !customFilter && colType == 'string'\"\n [clrFilterPlaceholder]=\"filterStringPlaceholder\"\n [clrDgStringFilter]=\"registered\"\n [(clrFilterValue)]=\"filterValue\"\n ></clr-dg-string-filter>\n\n <clr-dg-numeric-filter\n *ngIf=\"field && !customFilter && colType == 'number'\"\n [clrFilterMaxPlaceholder]=\"filterNumberMaxPlaceholder\"\n [clrFilterMinPlaceholder]=\"filterNumberMinPlaceholder\"\n [clrDgNumericFilter]=\"registered\"\n [(clrFilterValue)]=\"filterValue\"\n ></clr-dg-numeric-filter>\n\n <ng-template #columnTitle>\n <ng-content></ng-content>\n </ng-template>\n\n <span class=\"datagrid-column-title\" *ngIf=\"!sortable\">\n <ng-container *ngTemplateOutlet=\"columnTitle\"></ng-container>\n </span>\n\n <clr-dg-column-separator *ngIf=\"showSeparator\"></clr-dg-column-separator>\n </div>\n `,\n hostDirectives: [ClrPopoverHostDirective],\n host: {\n '[class.datagrid-column]': 'true',\n '[attr.aria-sort]': 'ariaSort',\n role: 'columnheader',\n },\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class ClrDatagridColumn<T = any>\n extends DatagridFilterRegistrar<T, ClrDatagridFilterInterface<T>>\n implements OnDestroy, OnInit, OnChanges\n{\n @Input('clrFilterStringPlaceholder') filterStringPlaceholder: string;\n @Input('clrFilterNumberMaxPlaceholder') filterNumberMaxPlaceholder: string;\n @Input('clrFilterNumberMinPlaceholder') filterNumberMinPlaceholder: string;\n\n @Output('clrDgSortOrderChange') sortOrderChange = new EventEmitter<ClrDatagridSortOrder>();\n @Output('clrFilterValueChange') filterValueChange = new EventEmitter();\n\n showSeparator = true;\n\n /**\n * A custom filter for this column that can be provided in the projected content\n */\n customFilter = false;\n\n /*\n * What type is this column? This defaults to STRING, but can also be\n * set to NUMBER. Unsupported types default to STRING. Users can set it\n * via the [clrDgColType] input by setting it to 'string' or 'number'.\n */\n private _colType: 'string' | 'number' = 'string';\n\n /*\n * Simple object property shortcut, activates both sorting and filtering\n * based on native comparison of the specified property on the items.\n */\n private _field: string;\n\n /**\n * ClrDatagridComparatorInterface to use when sorting the column\n */\n private _sortBy: ClrDatagridComparatorInterface<T>;\n\n /**\n * Indicates how the column is currently sorted\n */\n private _sortOrder: ClrDatagridSortOrder = ClrDatagridSortOrder.UNSORTED;\n\n private _sortDirection: 'up' | 'down' | null;\n\n // This property holds filter value temporarily while this.filter property is not yet registered\n // When this.filter is registered, this property value would be used update this.filter.value\n //\n private initFilterValue: string | [number, number];\n\n private wrappedInjector: Injector;\n\n /**\n * Subscription to the sort service changes\n */\n private subscriptions: Subscription[] = [];\n\n constructor(\n private _sort: Sort<T>,\n filters: FiltersProvider<T>,\n private vcr: ViewContainerRef,\n private detailService: DetailService,\n private changeDetectorRef: ChangeDetectorRef\n ) {\n super(filters);\n this.subscriptions.push(this.listenForSortingChanges());\n this.subscriptions.push(this.listenForDetailPaneChanges());\n }\n\n // TODO: We might want to make this an enum in the future\n @Input('clrDgColType')\n get colType() {\n return this._colType;\n }\n set colType(value: 'string' | 'number') {\n this._colType = value;\n }\n\n @Input('clrDgField')\n get field() {\n return this._field;\n }\n set field(field: string) {\n if (typeof field === 'string') {\n this._field = field;\n\n if (!this._sortBy) {\n this._sortBy = new DatagridPropertyComparator(field);\n }\n }\n }\n\n @Input('clrDgSortBy')\n get sortBy() {\n return this._sortBy;\n }\n set sortBy(comparator: ClrDatagridComparatorInterface<T> | string) {\n if (typeof comparator === 'string') {\n this._sortBy = new DatagridPropertyComparator(comparator);\n } else {\n if (comparator) {\n this._sortBy = comparator;\n } else {\n if (this.field) {\n this._sortBy = new DatagridPropertyComparator(this.field);\n } else {\n delete this._sortBy;\n }\n }\n }\n }\n\n @Input('clrDgSortOrder')\n get sortOrder() {\n return this._sortOrder;\n }\n set sortOrder(value: ClrDatagridSortOrder) {\n if (typeof value === 'undefined') {\n return;\n }\n\n // only if the incoming order is different from the current one\n if (this._sortOrder === value) {\n return;\n }\n\n switch (value) {\n // the Unsorted case happens when the current state is either Asc or Desc\n default:\n case ClrDatagridSortOrder.UNSORTED:\n this._sort.clear();\n break;\n case ClrDatagridSortOrder.ASC:\n this.sort(false);\n break;\n case ClrDatagridSortOrder.DESC:\n this.sort(true);\n break;\n }\n }\n\n @Input('clrFilterValue')\n set updateFilterValue(newValue: string | [number, number]) {\n if (this.filter) {\n if (this.filter instanceof DatagridStringFilterImpl) {\n if (!newValue || typeof newValue !== 'string') {\n newValue = '';\n }\n if (newValue !== this.filter.value) {\n this.filter.value = newValue;\n }\n } else if (this.filter instanceof DatagridNumericFilterImpl) {\n if (!newValue || !(newValue instanceof Array)) {\n newValue = [null, null];\n }\n if (newValue.length === 2 && (newValue[0] !== this.filter.value[0] || newValue[1] !== this.filter.value[1])) {\n this.filter.value = newValue;\n }\n }\n } else {\n this.initFilterValue = newValue;\n }\n }\n\n @ContentChild(CustomFilter)\n set projectedFilter(custom: any) {\n if (custom) {\n this.deleteFilter();\n this.customFilter = true;\n }\n }\n\n /**\n * Indicates if the column is sortable\n */\n get sortable(): boolean {\n return !!this._sortBy;\n }\n\n get ariaSort() {\n switch (this._sortOrder) {\n default:\n case ClrDatagridSortOrder.UNSORTED:\n return 'none';\n case ClrDatagridSortOrder.ASC:\n return 'ascending';\n case ClrDatagridSortOrder.DESC:\n return 'descending';\n }\n }\n\n get sortDirection(): 'up' | 'down' | null {\n return this._sortDirection;\n }\n\n /**\n * @NOTE type `any` here is to let us pass templateStrictMode, because in our code we try to handle\n * two types of filters String and Number with the same variable but both of them work with different\n * format we got an error for casting. We could not cast anything inside the template so to not mess the\n * casting, the last type is set to `any`\n *\n * Orignial types: string | [number, number]\n */\n get filterValue() {\n if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n return this.filter.value;\n }\n return null;\n }\n set filterValue(newValue: any) {\n if (this.filter instanceof DatagridStringFilterImpl || this.filter instanceof DatagridNumericFilterImpl) {\n this.updateFilterValue = newValue;\n this.filterValueChange.emit(this.filter.value);\n }\n }\n\n get _view() {\n return this.wrappedInjector.get(WrappedColumn, this.vcr).columnView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedColumn, this.vcr);\n }\n\n ngOnChanges(changes: SimpleChanges) {\n if (\n changes.colType &&\n changes.colType.currentValue &&\n changes.colType.currentValue !== changes.colType.previousValue\n ) {\n if (!this.customFilter && !this.filter && this.colType && this.field) {\n this.setupDefaultFilter(this.field, this.colType);\n }\n }\n if (changes.field && changes.field.currentValue && changes.field.currentValue !== changes.field.previousValue) {\n if (!this.customFilter && this.colType) {\n this.setupDefaultFilter(this.field, this.colType);\n }\n }\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * Sorts the datagrid based on this column\n */\n sort(reverse?: boolean) {\n if (!this.sortable) {\n return;\n }\n\n this._sort.toggle(this._sortBy, reverse);\n\n // setting the private variable to not retrigger the setter logic\n this._sortOrder = this._sort.reverse ? ClrDatagridSortOrder.DESC : ClrDatagridSortOrder.ASC;\n // Sets the correct icon for current sort order\n this._sortDirection = this._sortOrder === ClrDatagridSortOrder.DESC ? 'down' : 'up';\n this.sortOrderChange.emit(this._sortOrder);\n }\n\n private listenForDetailPaneChanges() {\n return this.detailService.stateChange.subscribe(state => {\n if (this.showSeparator !== !state) {\n this.showSeparator = !state;\n // Have to manually change because of OnPush\n this.changeDetectorRef.markForCheck();\n }\n });\n }\n\n private listenForSortingChanges() {\n return this._sort.change.subscribe(sort => {\n // Need to manually mark the component to be checked\n // for both activating and deactivating sorting\n this.changeDetectorRef.markForCheck();\n // We're only listening to make sure we emit an event when the column goes from sorted to unsorted\n if (this.sortOrder !== ClrDatagridSortOrder.UNSORTED && sort.comparator !== this._sortBy) {\n this._sortOrder = ClrDatagridSortOrder.UNSORTED;\n this.sortOrderChange.emit(this._sortOrder);\n this._sortDirection = null;\n }\n });\n }\n\n private setupDefaultFilter(field: string, colType: 'string' | 'number') {\n if (colType === 'number') {\n this.setFilter(new DatagridNumericFilterImpl(new DatagridPropertyNumericFilter(field)));\n } else if (colType === 'string') {\n this.setFilter(new DatagridStringFilterImpl(new DatagridPropertyStringFilter(field)));\n }\n if (this.filter && this.initFilterValue) {\n this.updateFilterValue = this.initFilterValue;\n // This initFilterValue should be used only once after the filter registration\n // So deleting this property value to prevent it from being used again\n // if this field property is set again\n delete this.initFilterValue;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, TrackByFunction } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\nimport { Subscription } from 'rxjs';\n\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\n\nexport type ClrDatagridItemsTrackByFunction<T> = (item: T) => any;\n\n@Injectable()\nexport class Items<T = any> {\n /**\n * Indicates if the data is currently loading\n */\n loading = false;\n\n /**\n * New tracking function to identify objects. If provided, this will be used instead of `iteratorTrackBy`.\n */\n datagridTrackBy: ClrDatagridItemsTrackByFunction<T>;\n\n /**\n * Subscriptions to the other providers changes.\n */\n private _filtersSub: Subscription;\n private _sortSub: Subscription;\n private _pageSub: Subscription;\n\n /**\n * Whether we should use smart items for this datagrid or let the user handle\n * everything.\n */\n private _smart = false;\n\n /**\n * List of all items in the datagrid\n */\n private _all: T[];\n\n /**\n * Internal temporary step, which we preserve to avoid re-filtering or re-sorting if not necessary\n */\n private _filtered: T[];\n\n /**\n * List of items currently displayed\n */\n private _displayed: T[] = [];\n\n /**\n * The Observable that lets other classes subscribe to items changes\n */\n private _change = new Subject<T[]>();\n\n private _allChanges = new Subject<T[]>();\n\n constructor(private _filters: FiltersProvider<T>, private _sort: Sort<T>, private _page: Page) {}\n\n get smart(): boolean {\n return this._smart;\n }\n\n get all() {\n return this._all;\n }\n set all(items: T[]) {\n this._all = items;\n this.emitAllChanges(items);\n if (this.smart) {\n this._filterItems();\n } else {\n this._displayed = items;\n this.emitChange();\n }\n }\n\n get displayed(): T[] {\n // Ideally we could return an immutable array, but we don't have it in Clarity yet.\n return this._displayed;\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<T[]> {\n return this._change.asObservable();\n }\n\n get allChanges(): Observable<T[]> {\n return this._allChanges.asObservable();\n }\n\n /**\n * Checks if we don't have data to process yet, to abort early operations\n */\n private get uninitialized() {\n return !this._all;\n }\n\n /**\n * Tracking function to identify objects. Default is reference equality.\n *\n * @deprecated in v15 and scheduled for removal in v17 (CDE-71)\n */\n iteratorTrackBy: TrackByFunction<T> = (_index, item) => item;\n\n /**\n * Cleans up our subscriptions to other providers\n */\n destroy() {\n if (this._filtersSub) {\n this._filtersSub.unsubscribe();\n }\n if (this._sortSub) {\n this._sortSub.unsubscribe();\n }\n if (this._pageSub) {\n this._pageSub.unsubscribe();\n }\n }\n\n smartenUp() {\n this._smart = true;\n /*\n * These observers trigger a chain of function: filter -> sort -> paginate\n * An observer up the chain re-triggers all the operations that follow it.\n */\n this._filtersSub = this._filters.change.subscribe(() => this._filterItems());\n this._sortSub = this._sort.change.subscribe(() => {\n // Special case, if the datagrid went from sorted to unsorted, we have to re-filter\n // to get the original order back\n if (!this._sort.comparator) {\n this._filterItems();\n } else {\n this._sortItems();\n }\n });\n this._pageSub = this._page.change.subscribe(() => this._changePage());\n }\n\n /**\n * Manually recompute the list of displayed items\n */\n refresh() {\n if (this.smart) {\n this._filterItems();\n }\n }\n\n canTrackBy(): boolean {\n // all items are needed unless `datagridTrackBy` is set because `iteratorTrackBy` requires the item's index\n return !!this.datagridTrackBy || Array.isArray(this.all);\n }\n\n trackBy(item: T, index?: number) {\n if (this.datagridTrackBy) {\n return this.datagridTrackBy(item);\n } else if (Array.isArray(this.all)) {\n index = index ?? this.all.indexOf(item);\n return this.iteratorTrackBy(index, item);\n } else {\n throw new Error('improper call to Items#trackBy');\n }\n }\n\n private emitChange() {\n this._change.next(this.displayed);\n }\n\n private emitAllChanges(items: T[]): void {\n this._allChanges.next(items);\n }\n\n /**\n * FiltersProvider items from the raw list\n */\n private _filterItems() {\n if (this.uninitialized) {\n return;\n }\n if (this._filters.hasActiveFilters()) {\n this._filtered = this._all.filter(item => this._filters.accepts(item));\n } else {\n // Work on a shallow copy of the array, to not modify the user's model\n this._filtered = this._all.slice();\n }\n this._page.totalItems = this._filtered.length;\n this._sortItems();\n }\n\n /**\n * Sorts items in the filtered list\n */\n private _sortItems() {\n if (this.uninitialized) {\n return;\n }\n if (this._sort.comparator) {\n this._filtered.sort((a, b) => this._sort.compare(a, b));\n }\n this._changePage();\n }\n\n /**\n * Extracts the current page from the sorted list\n */\n private _changePage() {\n // If we know we have pagination but the page size hasn't been set yet, we wait for it.\n if (this.uninitialized || (this._page.activated && this._page.size === 0)) {\n return;\n }\n if (this._page.size > 0) {\n this._displayed = this._filtered.slice(this._page.firstItem, this._page.lastItem + 1);\n } else {\n this._displayed = this._filtered;\n }\n this.emitChange();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgForOf, NgForOfContext } from '@angular/common';\nimport {\n Directive,\n DoCheck,\n Input,\n IterableDiffer,\n IterableDiffers,\n OnDestroy,\n TemplateRef,\n TrackByFunction,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Items } from './providers/items';\n\n@Directive({\n selector: '[clrDgItems][clrDgItemsOf]',\n})\nexport class ClrDatagridItems<T> implements DoCheck, OnDestroy {\n private iterableProxy: NgForOf<T>;\n private _rawItems: T[];\n private differ: IterableDiffer<T> | null = null;\n private subscriptions: Subscription[] = [];\n\n constructor(\n public template: TemplateRef<NgForOfContext<T>>,\n private differs: IterableDiffers,\n private items: Items,\n private vcr: ViewContainerRef\n ) {\n items.smartenUp();\n this.iterableProxy = new NgForOf<T>(this.vcr, this.template, this.differs);\n this.subscriptions.push(\n items.change.subscribe(newItems => {\n this.iterableProxy.ngForOf = newItems;\n this.iterableProxy.ngDoCheck();\n })\n );\n }\n\n @Input('clrDgItemsOf')\n set rawItems(items: T[]) {\n this._rawItems = items ? items : []; // local copy for ngOnChange diffing\n }\n\n @Input('clrDgItemsTrackBy')\n set trackBy(value: TrackByFunction<T>) {\n this.items.iteratorTrackBy = value;\n this.iterableProxy.ngForTrackBy = value;\n }\n\n /**\n * Asserts the correct type of the template context that the directive will render.\n * See https://angular.io/guide/structural-directives#typing-the-directives-context\n *\n * The presence of this method is a signal to the Ivy template type-check compiler that the\n * structural directive renders its template with a specific context type.\n */\n static ngTemplateContextGuard<T>(_dir: ClrDatagridItems<T>, _ctx: unknown): _ctx is NgForOfContext<T> {\n return true;\n }\n\n ngDoCheck() {\n if (!this.differ) {\n this.differ = this.differs.find(this._rawItems).create(this.iterableProxy.ngForTrackBy);\n }\n if (this.differ) {\n const changes = this.differ.diff(this._rawItems);\n if (changes) {\n // TODO: not very efficient right now,\n // but premature optimization is the root of all evil.\n this.items.all = this._rawItems;\n }\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { Items } from './providers/items';\n\n@Component({\n selector: 'clr-dg-placeholder',\n template: `\n <div class=\"datagrid-placeholder\" [class.datagrid-empty]=\"emptyDatagrid\" role=\"row\">\n <div class=\"datagrid-placeholder-image\" *ngIf=\"emptyDatagrid\"></div>\n <span role=\"gridcell\" class=\"datagrid-placeholder-content\"><ng-content *ngIf=\"emptyDatagrid\"></ng-content></span>\n </div>\n `,\n host: { '[class.datagrid-placeholder-container]': 'true' },\n})\nexport class ClrDatagridPlaceholder<T = any> {\n constructor(private items: Items<T>) {}\n\n /**\n * Tests if the datagrid is empty, meaning it doesn't contain any items\n */\n get emptyDatagrid() {\n return !this.items.loading && (!this.items.displayed || this.items.displayed.length === 0);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class SignpostFocusManager {\n private _triggerEl: HTMLElement;\n\n set triggerEl(value: HTMLElement) {\n this._triggerEl = value;\n }\n\n focusTrigger() {\n if (this._triggerEl) {\n this._triggerEl.focus();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class SignpostIdService {\n private _id = new Subject<string>();\n\n get id(): Observable<string> {\n return this._id.asObservable();\n }\n\n setId(id: string) {\n this._id.next(id);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Directive, ElementRef, HostListener, Inject, OnDestroy, PLATFORM_ID } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\n\n@Directive({\n selector: '[clrSignpostTrigger]',\n host: {\n class: 'signpost-trigger',\n '[attr.aria-expanded]': 'ariaExpanded',\n '[attr.aria-controls]': 'ariaControl',\n '[class.active]': 'isOpen',\n },\n})\n\n/*********\n *\n * @description\n * A Directive added to the ClrSignpost Trigger button that will call the ClrSignpost.toggle() function to hide/show the\n * ClrSignpostContent.\n *\n */\nexport class ClrSignpostTrigger implements OnDestroy {\n ariaExpanded = false;\n ariaControl: string;\n isOpen: boolean;\n\n private document: Document;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private toggleService: ClrPopoverToggleService,\n private el: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private signpostIdService: SignpostIdService,\n private signpostFocusManager: SignpostFocusManager,\n @Inject(DOCUMENT) document: any,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.document = document;\n }\n\n ngOnInit() {\n this.signpostFocusManager.triggerEl = this.el.nativeElement;\n this.subscriptions.push(\n this.toggleService.openChange.subscribe((isOpen: boolean) => {\n this.ariaExpanded = isOpen;\n\n const prevIsOpen = this.isOpen;\n this.isOpen = isOpen;\n\n // openChange fires false on initialization because signpost starts as closed by default\n // but we shouldn't focus on that initial false value\n // we should focus back only if it's closed after being opened\n if (!this.isOpen && prevIsOpen) {\n this.focusOnClose();\n }\n }),\n this.signpostIdService.id.subscribe(idChange => (this.ariaControl = idChange))\n );\n this.addDefaultAriaLabel(this.el.nativeElement);\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n /**********\n *\n * @description\n * click handler for the ClrSignpost trigger button used to hide/show ClrSignpostContent.\n */\n @HostListener('click', ['$event'])\n onSignpostTriggerClick(event: Event): void {\n this.toggleService.toggleWithEvent(event);\n }\n\n private addDefaultAriaLabel(el: HTMLElement) {\n if (!el.hasAttribute('aria-label')) {\n el.setAttribute('aria-label', this.commonStrings.keys.signpostToggle);\n }\n }\n\n private focusOnClose() {\n if (!isPlatformBrowser(this.platformId)) {\n return;\n }\n // we have to set the focus back on the trigger only if the focus is reset back to the body element\n // if the focus is on another element, we are not allowed to move that focus back to this trigger again.\n if (!this.isOpen && this.document.activeElement === this.document.body) {\n this.signpostFocusManager.focusTrigger();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\nimport { ClrSignpostTrigger } from './signpost-trigger';\n\n@Component({\n selector: 'clr-signpost',\n template: `\n <ng-container *ngIf=\"!useCustomTrigger\">\n <button type=\"button\" class=\"signpost-action btn btn-small btn-icon btn-link\" clrSignpostTrigger>\n <cds-icon shape=\"info-circle\" [attr.title]=\"commonStrings.keys.info\"></cds-icon>\n </button>\n </ng-container>\n\n <ng-content></ng-content>\n `,\n host: { '[class.signpost]': 'true' },\n providers: [SignpostFocusManager, SignpostIdService],\n hostDirectives: [ClrPopoverHostDirective],\n})\n\n/*********\n *\n * @class ClrSignpost\n *\n * @description\n * Class used to configure and control the state of a ClrSignpost and its associated ClrSignpostContent.\n * It supports the clrPosition with a 'right-middle' default.\n *\n */\nexport class ClrSignpost {\n /**********\n * @property useCustomTrigger\n *\n * @description\n * Flag used to determine if we need to use the default trigger or a user supplied trigger element.\n *\n */\n useCustomTrigger = false;\n\n constructor(public commonStrings: ClrCommonStringsService) {}\n\n /**********\n * @property signPostTrigger\n *\n * @description\n * Uses ContentChild to check for a user supplied element with the ClrSignpostTrigger on it.\n *\n */\n @ContentChild(ClrSignpostTrigger)\n set customTrigger(trigger: ClrSignpostTrigger) {\n this.useCustomTrigger = !!trigger;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\n\n@Component({\n selector: 'dg-wrapped-cell',\n template: `\n <ng-template #cellPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class WrappedCell implements DynamicWrapper, AfterViewInit, OnDestroy {\n _dynamic = false;\n @ViewChild('cellPortal') templateRef: TemplateRef<void>;\n cellView: EmbeddedViewRef<void>; // the cells projected view\n\n ngAfterViewInit() {\n this.cellView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.cellView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChildren, Injector, OnInit, QueryList, ViewContainerRef } from '@angular/core';\n\nimport { ClrSignpost } from '../../popover/signpost/signpost';\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { WrappedCell } from './wrapped-cell';\n\n@Component({\n selector: 'clr-dg-cell',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.datagrid-cell]': 'true',\n '[class.datagrid-signpost-trigger]': 'signpost.length > 0',\n role: 'gridcell',\n },\n})\nexport class ClrDatagridCell implements OnInit {\n /*********\n * @property signpost\n *\n * @description\n * @ContentChild is used to detect the presence of a Signpost in the projected content.\n * On the host, we set the .datagrid-signpost-trigger class on the cell when signpost.length is greater than 0.\n *\n */\n @ContentChildren(ClrSignpost) signpost: QueryList<ClrSignpost>;\n\n private wrappedInjector: Injector;\n\n constructor(private vcr: ViewContainerRef) {}\n\n get _view() {\n return this.wrappedInjector.get(WrappedCell, this.vcr).cellView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedCell, this.vcr);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { ClrLoadingState } from '../../utils/loading/loading';\n\nlet nbRow = 0;\n\n@Injectable()\nexport class DatagridIfExpandService extends IfExpandService {\n expandableId = '';\n\n private _replace = new BehaviorSubject(false);\n private _animate = new Subject<boolean>();\n\n constructor() {\n super();\n nbRow++;\n this.expandableId = 'clr-dg-expandable-row-' + nbRow;\n }\n // due to the es5 spec if the set is overridden on base class the getter must also be overridden\n override get expanded(): boolean {\n return this._expanded;\n }\n override set expanded(value: boolean) {\n value = !!value;\n if (value !== this._expanded) {\n this._expanded = value;\n this._animate.next();\n this._expandChange.next(value);\n }\n }\n\n get replace(): Observable<boolean> {\n return this._replace.asObservable();\n }\n\n get animate(): Observable<boolean> {\n return this._animate.asObservable();\n }\n\n override loadingStateChange(state: ClrLoadingState) {\n super.loadingStateChange(state);\n if (state !== ClrLoadingState.LOADING) {\n this._animate.next();\n }\n }\n\n setReplace(replaceValue: boolean) {\n this._replace.next(replaceValue);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridDisplayMode {\n DISPLAY,\n CALCULATE,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum SelectionType {\n None,\n Single,\n Multi,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterViewInit, Component, EmbeddedViewRef, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { DynamicWrapper } from '../../utils/host-wrapping/dynamic-wrapper';\n\n@Component({\n selector: 'dg-wrapped-row',\n template: `\n <ng-template #rowPortal>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class WrappedRow implements DynamicWrapper, AfterViewInit, OnDestroy {\n _dynamic = false;\n\n @ViewChild('rowPortal') templateRef: TemplateRef<void>;\n rowView: EmbeddedViewRef<void>; // the rows projected view (in memory)\n\n ngAfterViewInit() {\n // Create the cells view in memory, not the DOM.\n this.rowView = this.templateRef.createEmbeddedView(null);\n }\n\n ngOnDestroy() {\n this.rowView.destroy();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { SelectionType } from '../enums/selection-type';\nimport { FiltersProvider } from './filters';\nimport { Items } from './items';\n\nlet nbSelection = 0;\n\n@Injectable()\nexport class Selection<T = any> {\n id: string;\n preserveSelection = false;\n\n /**\n * Last selection, for use in range selection.\n */\n rangeStart: T;\n\n /**\n * Shift key state, for use in range selection.\n */\n shiftPressed = false;\n\n /** @deprecated since 2.0, remove in 3.0 */\n rowSelectionMode = false;\n\n private prevSelectionRefs: T[] = []; // Refs of selected items\n private prevSingleSelectionRef: T; // Ref of single selected item\n private lockedRefs: T[] = []; // Ref of locked items\n private valueCollector = new Subject<T[]>();\n private _selectionType: SelectionType = SelectionType.None;\n\n /**\n * The current selection\n */\n private _current: T[];\n\n /**\n * The current selection in single selection type\n */\n private _currentSingle: T;\n\n /**\n * The Observable that lets other classes subscribe to selection changes\n */\n private _change = new Subject<T[] | T>();\n\n /**\n * Subscriptions to the other providers changes.\n */\n private subscriptions: Subscription[] = [];\n\n constructor(private _items: Items<T>, private _filters: FiltersProvider<T>) {\n this.id = 'clr-dg-selection' + nbSelection++;\n\n this.subscriptions.push(\n this._filters.change.subscribe(() => {\n if (!this._selectable || this.preserveSelection) {\n return;\n }\n this.clearSelection();\n })\n );\n\n this.subscriptions.push(\n this._items.allChanges.subscribe(updatedItems => {\n // Reset the lockedRefs;\n const updateLockedRef: T[] = [];\n\n switch (this.selectionType) {\n case SelectionType.None: {\n break;\n }\n\n case SelectionType.Single: {\n let newSingle: any;\n let selectionUpdated = false;\n\n // if the currentSingle has been set before data was loaded, we look up and save the ref from current data set\n if (this.currentSingle && !this.prevSingleSelectionRef) {\n if (this._items.canTrackBy()) {\n this.prevSingleSelectionRef = this._items.trackBy(this.currentSingle);\n }\n }\n\n updatedItems.forEach((item, index) => {\n const ref = this._items.trackBy(item, index);\n // If one of the updated items is the previously selectedSingle, set it as the new one\n if (this.prevSingleSelectionRef === ref) {\n newSingle = item;\n selectionUpdated = true;\n }\n if (this.lockedRefs.indexOf(ref) > -1) {\n updateLockedRef.push(ref);\n }\n });\n\n // If we're using smart datagrids, we expect all items to be present in the updatedItems array.\n // Therefore, we should delete the currentSingle if it used to be defined but doesn't exist anymore.\n // No explicit \"delete\" is required, since newSingle would be undefined at this point.\n // Marking it as selectionUpdated here will set currentSingle to undefined below in the setTimeout.\n if (this._items.smart && !newSingle) {\n selectionUpdated = true;\n }\n\n // TODO: Discussed this with Eudes and this is fine for now.\n // But we need to figure out a different pattern for the\n // child triggering the parent change detection problem.\n // Using setTimeout for now to fix this.\n setTimeout(() => {\n if (selectionUpdated) {\n this.currentSingle = newSingle;\n }\n }, 0);\n break;\n }\n\n case SelectionType.Multi: {\n let leftOver: any[] = this.current.slice();\n let selectionUpdated = false;\n\n // if the current has been set before data was loaded, we look up and save the ref from current data set\n if (this.current.length > 0 && this.prevSelectionRefs.length !== this.current.length) {\n if (this._items.canTrackBy()) {\n this.prevSelectionRefs = [];\n this.current.forEach(item => {\n this.prevSelectionRefs.push(this._items.trackBy(item));\n });\n }\n }\n\n // Duplicate loop, when the issue is issue#2342 is revisited keep in mind that\n // we need to go over every updated item and check to see if there are valid to be\n // locked or not and update it. When only add items that are found in the lockedRefs back.\n //\n // The both loops below that goes over updatedItems could be combined into one.\n updatedItems.forEach((item, index) => {\n const ref = this._items.trackBy(item, index);\n if (this.lockedRefs.indexOf(ref) > -1) {\n updateLockedRef.push(ref);\n }\n });\n\n // TODO: revisit this when we work on https://github.com/vmware/clarity/issues/2342\n // currently, the selection is cleared when filter is applied, so the logic inside\n // the if statement below results in broken behavior.\n if (leftOver.length > 0) {\n updatedItems.forEach((item, index) => {\n const ref = this._items.trackBy(item, index);\n // Look in current selected refs array if item is selected, and update actual value\n const selectedIndex = this.prevSelectionRefs.indexOf(ref);\n if (selectedIndex > -1) {\n leftOver[selectedIndex] = item;\n selectionUpdated = true;\n }\n });\n\n // Filter out any unmatched items if we're using smart datagrids where we expect all items to be\n // present\n if (this._items.smart) {\n leftOver = leftOver.filter(selected => updatedItems.indexOf(selected) > -1);\n if (this.current.length !== leftOver.length) {\n selectionUpdated = true;\n }\n }\n\n // TODO: Discussed this with Eudes and this is fine for now.\n // But we need to figure out a different pattern for the\n // child triggering the parent change detection problem.\n // Using setTimeout for now to fix this.\n setTimeout(() => {\n if (selectionUpdated) {\n this.current = leftOver;\n }\n }, 0);\n }\n break;\n }\n\n default: {\n break;\n }\n }\n // Sync locked items\n this.lockedRefs = updateLockedRef;\n })\n );\n\n this.subscriptions.push(this.valueCollector.pipe(debounceTime(0)).subscribe(() => this.emitChange()));\n }\n\n get selectionType(): SelectionType {\n return this._selectionType;\n }\n set selectionType(value: SelectionType) {\n if (value === this.selectionType) {\n return;\n }\n this._selectionType = value;\n if (value === SelectionType.None) {\n delete this.current;\n } else {\n this.updateCurrent([], false);\n }\n }\n\n get current(): T[] {\n return this._current;\n }\n set current(value: T[]) {\n this.updateCurrent(value, true);\n }\n\n get currentSingle(): T {\n return this._currentSingle;\n }\n set currentSingle(value: T) {\n if (value === this._currentSingle) {\n return;\n }\n\n this._currentSingle = value;\n if (this._items.canTrackBy() && value) {\n this.prevSingleSelectionRef = this._items.trackBy(value);\n }\n this.emitChange();\n }\n\n // We do not want to expose the Subject itself, but the Observable which is read-only\n get change(): Observable<T[] | T> {\n return this._change.asObservable();\n }\n\n private get _selectable(): boolean {\n return this._selectionType === SelectionType.Multi || this._selectionType === SelectionType.Single;\n }\n\n clearSelection(): void {\n this._current = [];\n this.prevSelectionRefs = [];\n this.prevSingleSelectionRef = null;\n this._currentSingle = null;\n this.emitChange();\n }\n\n /**\n * Cleans up our subscriptions to other providers\n */\n destroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n updateCurrent(value: T[], emit: boolean) {\n this._current = value;\n\n if (emit) {\n this.valueCollector.next(value);\n }\n }\n\n /**\n * Checks if an item is currently selected\n */\n isSelected(item: T): boolean {\n if (this._selectionType === SelectionType.Single) {\n return this.currentSingle === item;\n } else if (this._selectionType === SelectionType.Multi) {\n return this.current.indexOf(item) >= 0;\n }\n return false;\n }\n\n /**\n * Selects or deselects an item\n */\n setSelected(item: T, selected: boolean) {\n const index = this.current ? this.current.indexOf(item) : -1;\n\n switch (this._selectionType) {\n case SelectionType.None:\n break;\n case SelectionType.Single:\n // in single selection, set currentSingle method should be used\n break;\n case SelectionType.Multi:\n if (index >= 0 && !selected) {\n this.deselectItem(index);\n } else if (index < 0 && selected) {\n this.selectItem(item);\n }\n break;\n default:\n break;\n }\n }\n\n /**\n * Checks if all currently displayed items are selected\n */\n isAllSelected(): boolean {\n if (this._selectionType !== SelectionType.Multi || !this._items.displayed) {\n return false;\n }\n // make sure to exclude the locked items from the list when counting\n const displayedItems: T[] = this._items.displayed.filter(item => {\n return this.isLocked(item) === false;\n });\n\n const nbDisplayed = displayedItems.length;\n if (nbDisplayed < 1) {\n return false;\n }\n const temp: T[] = displayedItems.filter(item => this.current.indexOf(item) > -1);\n return temp.length === displayedItems.length;\n }\n\n /**\n * Lock and unlock item\n */\n lockItem(item: T, lock: boolean) {\n if (this.canItBeLocked()) {\n const ref = this._items.trackBy(item);\n if (lock === true) {\n // Add to lockedRef\n this.lockedRefs.push(ref);\n } else {\n // Remove from lockedRef\n this.lockedRefs = this.lockedRefs.filter(lockedItem => ref !== lockedItem);\n }\n }\n }\n\n /**\n * Check is item locked or not by searching into lockedRefs for entry\n */\n isLocked(item: T): boolean {\n /**\n * The check for selectionType will boost the performance by NOT searching\n * into the array when there is no need for that.\n */\n if (this.canItBeLocked()) {\n const ref = this._items.trackBy(item);\n return this.lockedRefs.indexOf(ref) > -1;\n }\n\n return false;\n }\n\n /**\n * Selects or deselects all currently displayed items\n */\n toggleAll() {\n if (this._selectionType === SelectionType.None || this._selectionType === SelectionType.Single) {\n return;\n }\n /**\n * If every currently displayed item is already selected, we clear them.\n * If at least one item isn't selected, we select every currently displayed item.\n */\n if (this.isAllSelected()) {\n this._items.displayed.forEach(item => {\n const currentIndex = this.current.indexOf(item);\n if (currentIndex > -1 && this.isLocked(item) === false) {\n this.deselectItem(currentIndex);\n }\n });\n } else {\n this._items.displayed.forEach(item => {\n if (this.current.indexOf(item) < 0 && this.isLocked(item) === false) {\n this.selectItem(item);\n }\n });\n }\n }\n\n /**\n * Selects an item\n */\n private selectItem(item: T): void {\n this.current = this.current.concat(item);\n if (this._items.canTrackBy()) {\n // Push selected ref onto array\n this.prevSelectionRefs.push(this._items.trackBy(item));\n }\n }\n\n /**\n * Deselects an item\n */\n private deselectItem(indexOfItem: number): void {\n this.current = this.current.slice(0, indexOfItem).concat(this.current.slice(indexOfItem + 1));\n if (indexOfItem < this.prevSelectionRefs.length) {\n // Keep selected refs array in sync\n const removedItems = this.prevSelectionRefs.splice(indexOfItem, 1);\n // locked reference is no longer needed (if any)\n this.lockedRefs = this.lockedRefs.filter(locked => locked !== removedItems[0]);\n }\n }\n\n /**\n * Make sure that it could be locked\n */\n private canItBeLocked(): boolean {\n return this._selectionType !== SelectionType.None && this._items.canTrackBy();\n }\n\n private emitChange() {\n if (this._selectionType === SelectionType.Single) {\n this._change.next(this.currentSingle);\n } else if (this._selectionType === SelectionType.Multi) {\n this._change.next(this.current);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable, Subscription } from 'rxjs';\n\nimport { DatagridDisplayMode } from '../enums/display-mode.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { DatagridRenderOrganizer } from '../render/render-organizer';\n\n@Injectable()\nexport class DisplayModeService implements OnDestroy {\n protected _view = new BehaviorSubject(DatagridDisplayMode.DISPLAY);\n\n private subscriptions: Subscription[] = [];\n\n constructor(renderOrganizer: DatagridRenderOrganizer) {\n this.subscriptions.push(\n renderOrganizer\n .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_ON)\n .subscribe(() => this._view.next(DatagridDisplayMode.CALCULATE))\n );\n\n this.subscriptions.push(\n renderOrganizer\n .filterRenderSteps(DatagridRenderStep.CALCULATE_MODE_OFF)\n .subscribe(() => this._view.next(DatagridDisplayMode.DISPLAY))\n );\n }\n\n get view(): Observable<DatagridDisplayMode> {\n return this._view.asObservable();\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostListener } from '@angular/core';\n\nimport { Selection } from './providers/selection';\n\n@Directive({\n selector: '.datagrid-select',\n})\nexport class ClrDatagridSelectionCellDirective {\n constructor(private readonly selection: Selection) {}\n\n @HostListener('click', ['$event'])\n private onSelectionCellClick(event: MouseEvent & { target: HTMLElement }) {\n // We want to effectively expand the selection click target to the entire selection cell.\n\n // If row selection is enabled, do nothing because the entire selection cell is already clickable.\n if (this.selection.rowSelectionMode) {\n return;\n }\n\n // If click was outside the label/input, forward the click to the input.\n if (event.target.tagName !== 'LABEL' && event.target.tagName !== 'INPUT') {\n event.target.querySelector('input').click();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Injector,\n Input,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { combineLatest, ReplaySubject, Subscription } from 'rxjs';\n\nimport { ClrExpandableAnimation } from '../../utils/animations/expandable-animation/expandable-animation';\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { HostWrapper } from '../../utils/host-wrapping/host-wrapper';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { SelectionType } from './enums/selection-type';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { Items } from './providers/items';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { WrappedRow } from './wrapped-row';\n\nlet nbRow = 0;\n\n@Component({\n selector: 'clr-dg-row',\n templateUrl: './datagrid-row.html',\n host: {\n '[class.datagrid-row]': 'true',\n '[class.datagrid-selected]': 'selected',\n '[attr.aria-owns]': 'id',\n role: 'rowgroup',\n },\n providers: [\n DatagridIfExpandService,\n { provide: IfExpandService, useExisting: DatagridIfExpandService },\n { provide: LoadingListener, useExisting: DatagridIfExpandService },\n ],\n})\nexport class ClrDatagridRow<T = any> implements AfterContentInit, AfterViewInit {\n @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<boolean>(false);\n @Output('clrDgExpandedChange') expandedChange = new EventEmitter<boolean>(false);\n\n id: string;\n radioId: string;\n checkboxId: string;\n expandableId: string;\n replaced: boolean;\n displayCells = false;\n expandAnimationTrigger = false;\n\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n /**\n * @internal\n */\n itemChanges = new ReplaySubject<T>(1);\n\n /*****\n * property dgCells\n *\n * @description\n * A Query List of the ClrDatagrid cells in this row.\n *\n */\n @ContentChildren(ClrDatagridCell) dgCells: QueryList<ClrDatagridCell>;\n\n @ViewChild(ClrExpandableAnimation) expandAnimation: ClrExpandableAnimation;\n @ViewChild('detailButton') detailButton: ElementRef;\n @ViewChild('stickyCells', { read: ViewContainerRef }) _stickyCells: ViewContainerRef;\n @ViewChild('scrollableCells', { read: ViewContainerRef }) _scrollableCells: ViewContainerRef;\n @ViewChild('calculatedCells', { read: ViewContainerRef }) _calculatedCells: ViewContainerRef;\n\n private _item: T;\n private _selected = false;\n private _detailOpenLabel = '';\n private _detailCloseLabel = '';\n private _rowAriaLabel = '';\n private wrappedInjector: Injector;\n private subscriptions: Subscription[] = [];\n\n // By default, every item is selectable; it becomes not selectable only if it's explicitly set to false\n private _selectable: boolean | string = true;\n\n constructor(\n public selection: Selection<T>,\n public rowActionService: RowActionService,\n public globalExpandable: ExpandableRowsCount,\n public expand: DatagridIfExpandService,\n public detailService: DetailService,\n private displayMode: DisplayModeService,\n private vcr: ViewContainerRef,\n private renderer: Renderer2,\n private el: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private items: Items,\n @Inject(DOCUMENT) private document: any\n ) {\n nbRow++;\n this.id = 'clr-dg-row' + nbRow;\n this.radioId = 'clr-dg-row-rd' + nbRow;\n this.checkboxId = 'clr-dg-row-cb' + nbRow;\n this.expandableId = expand.expandableId;\n\n this.subscriptions.push(\n combineLatest(this.expand.replace, this.expand.expandChange).subscribe(\n ([expandReplaceValue, expandChangeValue]) => {\n if (expandReplaceValue && expandChangeValue) {\n // replaced and expanding\n this.replaced = true;\n this.renderer.addClass(this.el.nativeElement, 'datagrid-row-replaced');\n } else {\n this.replaced = false;\n // Handles these cases: not replaced and collapsing & replaced and\n // collapsing and not replaced and expanding.\n this.renderer.removeClass(this.el.nativeElement, 'datagrid-row-replaced');\n }\n }\n )\n );\n }\n\n /**\n * Model of the row, to use for selection\n */\n @Input('clrDgItem')\n get item(): T {\n return this._item;\n }\n set item(item: T) {\n this._item = item;\n this.itemChanges.next(item);\n this.clrDgSelectable = this._selectable;\n }\n\n @Input('clrDgSelectable')\n get clrDgSelectable() {\n return !this.selection.isLocked(this.item);\n }\n set clrDgSelectable(value: boolean | string) {\n if (this.item) {\n this.selection.lockItem(this.item, value === 'false' || value === false);\n }\n // Store this value locally, to be initialized when item is initialized\n this._selectable = value;\n }\n\n /**\n * Indicates if the row is selected\n */\n @Input('clrDgSelected')\n get selected() {\n if (this.selection.selectionType === SelectionType.None) {\n return this._selected;\n } else {\n return this.selection.isSelected(this.item);\n }\n }\n set selected(value: boolean | string) {\n if (this.selection.selectionType === SelectionType.None) {\n this._selected = value as boolean;\n } else {\n if (value && this.selection.selectionType === SelectionType.Multi) {\n this.rangeSelect();\n } else {\n this.selection.rangeStart = null;\n }\n this.selection.setSelected(this.item, value as boolean);\n }\n }\n\n @Input('clrDgExpanded')\n get expanded() {\n return this.expand.expanded;\n }\n set expanded(value: boolean | string) {\n this.expand.expanded = value as boolean;\n }\n\n @Input()\n get clrDgDetailOpenLabel(): string {\n return this._detailOpenLabel ? this._detailOpenLabel : this.commonStrings.keys.open;\n }\n set clrDgDetailOpenLabel(label: string) {\n this._detailOpenLabel = label;\n }\n\n @Input()\n get clrDgDetailCloseLabel(): string {\n return this._detailCloseLabel ? this._detailCloseLabel : this.commonStrings.keys.close;\n }\n set clrDgDetailCloseLabel(label: string) {\n this._detailCloseLabel = label;\n }\n\n // CDE-151: Rename this field to clrDgRowSelectionLabel in v16\n @Input()\n get clrDgRowAriaLabel(): string {\n return this._rowAriaLabel ? this._rowAriaLabel : this.commonStrings.keys.select;\n }\n set clrDgRowAriaLabel(label: string) {\n this._rowAriaLabel = label;\n }\n\n get _view() {\n return this.wrappedInjector.get(WrappedRow, this.vcr).rowView;\n }\n\n ngOnInit() {\n this.wrappedInjector = new HostWrapper(WrappedRow, this.vcr);\n this.selection.lockItem(this.item, this.clrDgSelectable === false);\n }\n\n ngAfterContentInit() {\n this.dgCells.changes.subscribe(() => {\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._scrollableCells.insert(cell._view);\n }\n });\n });\n }\n\n ngAfterViewInit() {\n this.subscriptions.push(\n this.displayMode.view.subscribe(viewChange => {\n // Listen for view changes and move cells around depending on the current displayType\n // remove cell views from display view\n for (let i = this._scrollableCells.length; i > 0; i--) {\n this._scrollableCells.detach();\n }\n // remove cell views from calculated view\n for (let i = this._calculatedCells.length; i > 0; i--) {\n this._calculatedCells.detach();\n }\n if (viewChange === DatagridDisplayMode.CALCULATE) {\n this.displayCells = false;\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._calculatedCells.insert(cell._view);\n }\n });\n } else {\n this.displayCells = true;\n this.dgCells.forEach(cell => {\n if (!cell._view.destroyed) {\n this._scrollableCells.insert(cell._view);\n }\n });\n }\n }),\n this.expand.animate.subscribe(() => {\n this.expandAnimationTrigger = !this.expandAnimationTrigger;\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n toggle(selected = !this.selected) {\n if (selected !== this.selected) {\n this.selected = selected;\n this.selectedChanged.emit(selected);\n }\n }\n\n toggleExpand() {\n if (this.expand.expandable) {\n this.expandAnimation.updateStartHeight();\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n }\n\n /**\n * The default behavior in Chrome and Firefox for shift-clicking on a label is to perform text-selection.\n * This prevents our intended range-selection, because this text-selection overrides our shift-click event.\n * We need to clear the stored selection range when shift-clicking. This will override the mostly unused shift-click\n * selection browser functionality, which is inconsistently implemented in browsers anyway.\n */\n clearRanges(event: MouseEvent) {\n if (event.shiftKey) {\n this.document.getSelection().removeAllRanges();\n // Firefox is too persistent about its text-selection behaviour. So we need to add a preventDefault();\n // We should not try to enforce this on the other browsers, though, because their toggle cycle does not get canceled by\n // the preventDefault() and they toggle the checkbox second time, effectively retrurning it to not-selected.\n if (window.navigator.userAgent.indexOf('Firefox') !== -1) {\n event.preventDefault();\n this.toggle(true);\n }\n }\n }\n\n /**\n * @deprecated related to clrDgRowSelection, which is deprecated\n */\n protected selectRow(selected = !this.selected, $event) {\n // The label also captures clicks that bubble up to the row event listener, causing\n // this handler to run twice. This exits early to prevent toggling the checkbox twice.\n if ($event.target.tagName === 'LABEL') {\n return;\n }\n if (this.selection.selectionType === this.SELECTION_TYPE.Single) {\n this.selection.currentSingle = this.item;\n } else {\n this.toggle(selected);\n }\n }\n\n private rangeSelect() {\n const items = this.items.displayed;\n if (!items) {\n return;\n }\n const startIx = items.indexOf(this.selection.rangeStart);\n if (\n this.selection.rangeStart &&\n this.selection.current.includes(this.selection.rangeStart) &&\n this.selection.shiftPressed &&\n startIx !== -1\n ) {\n const endIx = items.indexOf(this.item);\n // Using Set to remove duplicates\n const newSelection = new Set(\n this.selection.current.concat(items.slice(Math.min(startIx, endIx), Math.max(startIx, endIx) + 1))\n );\n this.selection.clearSelection();\n this.selection.current.push(...newSelection);\n } else {\n // page number has changed or\n // no Shift was pressed or\n // rangeStart not yet set\n this.selection.rangeStart = this.item;\n }\n }\n}\n","<!--\n We need to wrap the #rowContent in label element if we are in rowSelectionMode.\n Clicking of that wrapper label will equate to clicking on the whole row, which triggers the checkbox to toggle.\n-->\n<div\n class=\"datagrid-row-clickable\"\n *ngIf=\"selection.rowSelectionMode\"\n (mousedown)=\"clearRanges($event)\"\n (click)=\"selectRow(!selected, $event)\"\n>\n <clr-expandable-animation [clrExpandTrigger]=\"expandAnimationTrigger\" *ngIf=\"expand.expandable\">\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n </clr-expandable-animation>\n <ng-template [ngTemplateOutlet]=\"rowContent\" *ngIf=\"!expand.expandable\"></ng-template>\n</div>\n\n<clr-expandable-animation\n *ngIf=\"!selection.rowSelectionMode && expand.expandable\"\n [clrExpandTrigger]=\"expandAnimationTrigger\"\n>\n <ng-template [ngTemplateOutlet]=\"rowContent\"></ng-template>\n</clr-expandable-animation>\n\n<ng-template *ngIf=\"!selection.rowSelectionMode && !expand.expandable\" [ngTemplateOutlet]=\"rowContent\"></ng-template>\n\n<!--\n We need the \"project into template\" hacks because we need this in 2 different places\n depending on whether the details replace the row or not.\n-->\n<ng-template #detail>\n <ng-content select=\"clr-dg-row-detail\"></ng-content>\n</ng-template>\n\n<ng-template #rowContent>\n <div\n role=\"row\"\n [id]=\"id\"\n class=\"datagrid-row-master datagrid-row-flex\"\n [class.datagrid-row-detail-open]=\"detailService.isRowOpen(item)\"\n >\n <div class=\"datagrid-row-sticky\">\n <!-- Sticky elements here -->\n <ng-container #stickyCells>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-checkbox-wrapper>\n <input\n type=\"checkbox\"\n clrCheckbox\n [ngModel]=\"selected\"\n (ngModelChange)=\"toggle($event)\"\n [id]=\"checkboxId\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"checkboxId\" class=\"clr-control-label clr-col-null\" (click)=\"clearRanges($event)\">\n <span class=\"clr-sr-only\">{{clrDgRowAriaLabel || commonStrings.keys.select}}</span>\n </label>\n </clr-checkbox-wrapper>\n </div>\n <div\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n class=\"datagrid-select datagrid-fixed-column datagrid-cell\"\n [ngClass]=\"{ 'clr-form-control-disabled': !clrDgSelectable }\"\n role=\"gridcell\"\n >\n <clr-radio-wrapper>\n <input\n type=\"radio\"\n clrRadio\n [id]=\"radioId\"\n [name]=\"selection.id + '-radio'\"\n [value]=\"item\"\n [(ngModel)]=\"selection.currentSingle\"\n [checked]=\"selection.currentSingle === item\"\n [disabled]=\"clrDgSelectable ? null : true\"\n [attr.aria-disabled]=\"clrDgSelectable ? null : true\"\n />\n <label class=\"clr-control-label clr-col-null\" [for]=\"radioId\">\n <span class=\"clr-sr-only\">{{ clrDgRowAriaLabel || commonStrings.keys.select }}</span>\n </label>\n </clr-radio-wrapper>\n </div>\n <div\n *ngIf=\"rowActionService.hasActionableRow\"\n class=\"datagrid-row-actions datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-content select=\"clr-dg-action-overflow\"></ng-content>\n </div>\n <div\n *ngIf=\"globalExpandable.hasExpandableRow\"\n class=\"datagrid-expandable-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <ng-container *ngIf=\"expand.expandable\">\n <button\n *ngIf=\"!expand.loading\"\n (click)=\"toggleExpand()\"\n type=\"button\"\n class=\"datagrid-expandable-caret-button\"\n [attr.aria-expanded]=\"expand.expanded\"\n [attr.aria-label]=\"expand.expanded ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-controls]=\"expandableId\"\n >\n <cds-icon\n shape=\"angle\"\n class=\"datagrid-expandable-caret-icon\"\n [attr.direction]=\"expand.expanded ? 'down' : 'right'\"\n [attr.title]=\"expand.expanded ? commonStrings.keys.collapse : commonStrings.keys.expand\"\n ></cds-icon>\n </button>\n <clr-spinner *ngIf=\"expand.loading\" clrSmall>{{ commonStrings.keys.loading }}</clr-spinner>\n </ng-container>\n </div>\n <div\n *ngIf=\"detailService.enabled\"\n class=\"datagrid-detail-caret datagrid-fixed-column datagrid-cell\"\n role=\"gridcell\"\n >\n <button\n (click)=\"detailService.toggle(item, detailButton)\"\n type=\"button\"\n #detailButton\n class=\"datagrid-detail-caret-button\"\n [class.is-open]=\"detailService.isRowOpen(item)\"\n [attr.aria-label]=\"detailService.isRowOpen(item) ? clrDgDetailCloseLabel : clrDgDetailOpenLabel\"\n [attr.aria-expanded]=\"detailService.isOpen\"\n [attr.aria-controls]=\"detailService.id\"\n aria-haspopup=\"dialog\"\n >\n <cds-icon\n shape=\"angle-double\"\n [attr.direction]=\"detailService.isRowOpen(item) ? 'left' : 'right'\"\n class=\"datagrid-detail-caret-icon\"\n [attr.title]=\"detailService.isRowOpen(item) ? commonStrings.keys.close: commonStrings.keys.open\"\n ></cds-icon>\n </button>\n </div>\n </ng-container>\n <!-- placeholder for projecting other sticky cells as pinned-->\n </div>\n <div class=\"datagrid-row-scrollable\" [ngClass]=\"{'is-replaced': replaced && expanded}\">\n <div class=\"datagrid-scrolling-cells\">\n <ng-content select=\"clr-dg-cell\"></ng-content>\n <ng-container #scrollableCells></ng-container>\n </div>\n <!-- details here when replace, re-visit when sticky container is used for pinned cells -->\n <ng-template *ngIf=\"replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n <ng-template *ngIf=\"!replaced && !expand.loading\" [ngTemplateOutlet]=\"detail\"></ng-template>\n </div>\n </div>\n</ng-template>\n\n<ng-container #calculatedCells></ng-container>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum DatagridColumnChanges {\n WIDTH,\n HIDDEN,\n}\n\nexport const ALL_COLUMN_CHANGES: DatagridColumnChanges[] = Object.keys(DatagridColumnChanges)\n .map(key => (DatagridColumnChanges as Record<string, any>)[key])\n .filter(key => key === parseInt(key, 10)); // extracts only integer keys\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ALL_COLUMN_CHANGES } from '../enums/column-changes.enum';\nimport { ColumnState, ColumnStateDiff } from '../interfaces/column-state.interface';\n\n@Injectable()\nexport class ColumnsService {\n columns: BehaviorSubject<ColumnState>[] = [];\n\n private _cache: ColumnState[] = [];\n\n get columnStates(): ColumnState[] {\n return this.columns.map(column => column.value);\n }\n\n get hasHideableColumns(): boolean {\n return this.columnStates.filter(state => state.hideable).length > 0;\n }\n\n cache() {\n this._cache = this.columns.map(subject => {\n const value = { ...subject.value };\n delete value.changes;\n return value;\n });\n }\n\n hasCache() {\n return !!this._cache.length;\n }\n\n resetToLastCache() {\n this._cache.forEach((state, index) => {\n // Just emit the exact value from the cache\n this.columns[index].next({ ...state, changes: ALL_COLUMN_CHANGES });\n });\n this._cache = [];\n }\n\n // Helper method to emit a change to a column only when there is an actual diff to process for that column\n emitStateChangeAt(columnIndex: number, diff: ColumnStateDiff) {\n if (!this.columns[columnIndex]) {\n return;\n }\n this.emitStateChange(this.columns[columnIndex], diff);\n }\n\n emitStateChange(column: BehaviorSubject<ColumnState>, diff: ColumnStateDiff) {\n column.next({ ...column.value, ...diff });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nimport { DatagridPropertyComparator } from '../built-in/comparators/datagrid-property-comparator';\nimport { ClrDatagridStateInterface } from '../interfaces/state.interface';\nimport { FiltersProvider } from './filters';\nimport { Page } from './page';\nimport { Sort } from './sort';\nimport { StateDebouncer } from './state-debouncer.provider';\n\n/**\n * This provider aggregates state changes from the various providers of the Datagrid\n */\n@Injectable()\nexport class StateProvider<T> {\n /**\n * The Observable that lets other classes subscribe to global state changes\n */\n change: Observable<ClrDatagridStateInterface<T>> = this.debouncer.change.pipe(map(() => this.state));\n\n constructor(\n private filters: FiltersProvider<T>,\n private sort: Sort<T>,\n private page: Page,\n private debouncer: StateDebouncer\n ) {}\n\n /*\n * By making this a getter, we open the possibility for a setter in the future.\n * It's been requested a couple times.\n */\n get state(): ClrDatagridStateInterface<T> {\n const state: ClrDatagridStateInterface<T> = {};\n if (this.page.size > 0) {\n state.page = {\n from: this.page.firstItem,\n to: this.page.lastItem,\n size: this.page.size,\n current: this.page.current,\n };\n }\n if (this.sort.comparator) {\n if (this.sort.comparator instanceof DatagridPropertyComparator) {\n /*\n * Special case for the default object property comparator,\n * we give the property name instead of the actual comparator.\n */\n state.sort = { by: (this.sort.comparator as DatagridPropertyComparator<T>).prop, reverse: this.sort.reverse };\n } else {\n state.sort = { by: this.sort.comparator, reverse: this.sort.reverse };\n }\n }\n\n const activeFilters = this.filters.getActiveFilters();\n if (activeFilters.length > 0) {\n state.filters = [];\n for (const filter of activeFilters) {\n if (filter.state) {\n state.filters.push(filter.state);\n } else {\n state.filters.push(filter);\n }\n }\n }\n return state;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, NgZone, OnDestroy } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nexport function getTabableItems(el: HTMLElement) {\n const tabableSelector = [\n 'a[href]',\n 'area[href]',\n 'input:not([disabled])',\n 'button:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'iframe',\n 'object',\n 'embed',\n '*[tabindex]',\n '*[contenteditable=true]',\n '[role=button]:not([disabled])',\n ].join(',');\n return Array.from(el.querySelectorAll(tabableSelector)) as HTMLElement[];\n}\n\nexport interface KeyNavigationGridConfig {\n keyGrid: string;\n keyGridRows: string;\n keyGridCells: string;\n}\n\n@Injectable()\nexport class KeyNavigationGridController implements OnDestroy {\n private host: HTMLElement;\n private config: KeyNavigationGridConfig;\n private listenersAdded = false;\n private destroy$ = new Subject<void>();\n\n constructor(private zone: NgZone) {\n this.config = {\n keyGridRows: '[role=row]:not(.datagrid-placeholder)',\n keyGridCells:\n '[role=gridcell]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), [role=columnheader]:not(.datagrid-hidden-column):not(.datagrid-placeholder-content), .datagrid-detail-caret',\n keyGrid: '[role=grid]',\n };\n }\n\n private get grid() {\n return this.host?.querySelector(this.config.keyGrid);\n }\n\n private get rows() {\n return this.host?.querySelectorAll(this.config.keyGridRows) as NodeListOf<HTMLElement>;\n }\n\n private get cells() {\n return this.host?.querySelectorAll(this.config.keyGridCells) as NodeListOf<HTMLElement>;\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n addListeners() {\n if (this.listenersAdded) {\n return;\n }\n\n this.zone.runOutsideAngular(() => {\n fromEvent(this.grid, 'mousedown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: MouseEvent) => {\n // preserve right click for context menus & keyboard mouse control https://apple.stackexchange.com/questions/32715/how-do-i-open-the-context-menu-from-a-mac-keyboard\n if (e.buttons === 1 && !e.ctrlKey) {\n const activeCell = this.cells\n ? Array.from(this.cells).find(\n c => c === e.target || c === (e.target as HTMLElement).closest(this.config.keyGridCells)\n )\n : null;\n if (activeCell) {\n this.setActiveCell(activeCell);\n }\n }\n });\n\n fromEvent(this.grid, 'keydown')\n .pipe(takeUntil(this.destroy$))\n .subscribe((e: KeyboardEvent) => {\n // Skip column resize events\n if (\n (e.target as HTMLElement).classList.contains('drag-handle') &&\n (e.code === 'ArrowLeft' || e.code === 'ArrowRight')\n ) {\n return;\n }\n if (\n e.code === 'ArrowUp' ||\n e.code === 'ArrowDown' ||\n e.code === 'ArrowLeft' ||\n e.code === 'ArrowRight' ||\n e.code === 'End' ||\n e.code === 'Home' ||\n e.code === 'PageUp' ||\n e.code === 'PageDown'\n ) {\n const { x, y } = this.getNextItemCoordinate(e);\n const activeItem = this.rows\n ? (Array.from(this.rows[y].querySelectorAll(this.config.keyGridCells))[x] as HTMLElement)\n : null;\n if (activeItem) {\n this.setActiveCell(activeItem);\n }\n e.preventDefault();\n }\n });\n });\n this.listenersAdded = true;\n }\n\n initializeKeyGrid(host: HTMLElement) {\n this.host = host;\n this.addListeners();\n this.resetKeyGrid();\n }\n\n resetKeyGrid() {\n this.cells?.forEach((i: HTMLElement) => i.setAttribute('tabindex', '-1'));\n const firstCell = this.cells ? this.cells[0] : null;\n firstCell?.setAttribute('tabindex', '0');\n }\n\n private setActiveCell(activeCell: HTMLElement) {\n const prior = this.cells ? Array.from(this.cells).find(c => c.getAttribute('tabindex') === '0') : null;\n\n if (prior) {\n prior.setAttribute('tabindex', '-1');\n }\n\n activeCell.setAttribute('tabindex', '0');\n\n const items = getTabableItems(activeCell);\n const item = activeCell.getAttribute('role') !== 'columnheader' && items[0] ? items[0] : activeCell;\n item.focus();\n }\n\n private getNextItemCoordinate(e: any) {\n let currentCell = this.cells ? Array.from(this.cells).find(i => i.getAttribute('tabindex') === '0') : null;\n if (e.code === 'Tab') {\n currentCell = document.activeElement as HTMLElement;\n }\n const currentRow = this.rows && currentCell ? Array.from(this.rows).find(r => r.contains(currentCell)) : null;\n const numOfRows = this.rows ? this.rows.length - 1 : 0;\n const numOfColumns = this.cells ? this.cells.length / this.rows.length - 1 : 0;\n\n let x =\n currentRow && currentCell\n ? Array.from(currentRow.querySelectorAll(this.config.keyGridCells)).indexOf(currentCell)\n : 0;\n let y = currentRow && currentCell && this.rows ? Array.from(this.rows).indexOf(currentRow) : 0;\n\n const dir = this.host.dir;\n const inlineStart = dir === 'rtl' ? 'ArrowRight' : 'ArrowLeft';\n const inlineEnd = dir === 'rtl' ? 'ArrowLeft' : 'ArrowRight';\n\n const itemsPerPage =\n Math.floor(this.host?.querySelector('.datagrid').clientHeight / this.rows[0].clientHeight) - 1 || 0;\n\n if (e.code === 'ArrowUp' && y !== 0) {\n y = y - 1;\n } else if (e.code === 'ArrowDown' && y < numOfRows) {\n y = y + 1;\n } else if (e.code === inlineStart && x !== 0) {\n x = x - 1;\n } else if (e.code === inlineEnd && x < numOfColumns) {\n x = x + 1;\n } else if (e.code === 'End') {\n x = numOfColumns;\n\n if (e.ctrlKey) {\n y = numOfRows;\n }\n } else if (e.code === 'Home') {\n x = 0;\n\n if (e.ctrlKey) {\n y = 0;\n }\n } else if (e.code === 'PageUp') {\n y = y - itemsPerPage > 0 ? y - itemsPerPage : 0;\n } else if (e.code === 'PageDown') {\n y = y + itemsPerPage < numOfRows ? y + itemsPerPage : numOfRows;\n }\n\n return { x, y };\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChild,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n QueryList,\n Renderer2,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { combineLatest, fromEvent, merge, of, Subscription } from 'rxjs';\nimport { debounceTime, switchMap } from 'rxjs/operators';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { DatagridDisplayMode } from './enums/display-mode.enum';\nimport { SelectionType } from './enums/selection-type';\nimport { ClrDatagridStateInterface } from './interfaces/state.interface';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { DisplayModeService } from './providers/display-mode.service';\nimport { FiltersProvider } from './providers/filters';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { ClrDatagridItemsTrackByFunction, Items } from './providers/items';\nimport { Page } from './providers/page';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\nimport { Sort } from './providers/sort';\nimport { StateDebouncer } from './providers/state-debouncer.provider';\nimport { StateProvider } from './providers/state.provider';\nimport { TableSizeService } from './providers/table-size.service';\nimport { DatagridRenderOrganizer } from './render/render-organizer';\nimport { KeyNavigationGridController } from './utils/key-navigation-grid.controller';\n\n@Component({\n selector: 'clr-datagrid',\n templateUrl: './datagrid.html',\n providers: [\n Selection,\n Sort,\n FiltersProvider,\n Page,\n Items,\n DatagridRenderOrganizer,\n RowActionService,\n ExpandableRowsCount,\n StateDebouncer,\n DetailService,\n StateProvider,\n TableSizeService,\n ColumnsService,\n DisplayModeService,\n KeyNavigationGridController,\n ],\n host: {\n '[class.datagrid-host]': 'true',\n '[class.datagrid-detail-open]': 'detailService.isOpen',\n },\n})\nexport class ClrDatagrid<T = any> implements AfterContentInit, AfterViewInit, OnDestroy {\n @Input() clrDgSingleSelectionAriaLabel: string = this.commonStrings.keys.singleSelectionAriaLabel;\n @Input() clrDgSingleActionableAriaLabel: string = this.commonStrings.keys.singleActionableAriaLabel;\n @Input() clrDetailExpandableAriaLabel: string = this.commonStrings.keys.detailExpandableAriaLabel;\n\n // Allows disabling of the auto focus on page/state changes (excludes focus management inside of popups)\n @Input() clrDgDisablePageFocus = false;\n\n @Output('clrDgSelectedChange') selectedChanged = new EventEmitter<T[]>(false);\n @Output('clrDgSingleSelectedChange') singleSelectedChanged = new EventEmitter<T>(false);\n\n /**\n * Output emitted whenever the data needs to be refreshed, based on user action or external ones\n */\n @Output('clrDgRefresh') refresh = new EventEmitter<ClrDatagridStateInterface<T>>(false);\n\n /**\n * We grab the smart iterator from projected content\n */\n @ContentChild(ClrDatagridItems) iterator: ClrDatagridItems<T>;\n\n /**\n * Custom placeholder detection\n */\n @ContentChild(ClrDatagridPlaceholder) placeholder: ClrDatagridPlaceholder<T>;\n\n /**\n * Hideable Column data source / detection.\n */\n @ContentChildren(ClrDatagridColumn) columns: QueryList<ClrDatagridColumn<T>>;\n\n /**\n * When the datagrid is user-managed without the smart iterator, we get the items displayed\n * by querying the projected content. This is needed to keep track of the models currently\n * displayed, typically for selection.\n */\n @ContentChildren(ClrDatagridRow) rows: QueryList<ClrDatagridRow<T>>;\n\n @ViewChild('datagridTable', { read: ElementRef }) datagridTable: ElementRef;\n @ViewChild('scrollableColumns', { read: ViewContainerRef }) scrollableColumns: ViewContainerRef;\n @ViewChild('projectedDisplayColumns', { read: ViewContainerRef }) _projectedDisplayColumns: ViewContainerRef;\n @ViewChild('projectedCalculationColumns', { read: ViewContainerRef }) _projectedCalculationColumns: ViewContainerRef;\n @ViewChild('displayedRows', { read: ViewContainerRef }) _displayedRows: ViewContainerRef;\n @ViewChild('calculationRows', { read: ViewContainerRef }) _calculationRows: ViewContainerRef;\n\n selectAllId: string;\n\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n /**\n * Subscriptions to all the services and queries changes\n */\n private _subscriptions: Subscription[] = [];\n\n constructor(\n private organizer: DatagridRenderOrganizer,\n public items: Items<T>,\n public expandableRows: ExpandableRowsCount,\n public selection: Selection<T>,\n public rowActionService: RowActionService,\n private stateProvider: StateProvider<T>,\n private displayMode: DisplayModeService,\n private renderer: Renderer2,\n public detailService: DetailService,\n @Inject(DOCUMENT) private document: any,\n private el: ElementRef,\n private page: Page,\n public commonStrings: ClrCommonStringsService,\n private columnsService: ColumnsService,\n private keyNavigation: KeyNavigationGridController,\n private zone: NgZone\n ) {\n const datagridId = uniqueIdFactory();\n\n this.selectAllId = 'clr-dg-select-all-' + datagridId;\n this.detailService.id = datagridId;\n }\n\n /**\n * Freezes the datagrid while data is loading\n */\n @Input('clrDgLoading')\n get loading(): boolean {\n return this.items.loading;\n }\n set loading(value: boolean) {\n this.items.loading = value;\n }\n\n /**\n * Array of all selected items\n */\n @Input('clrDgSelected')\n set selected(value: T[] | undefined) {\n if (value) {\n this.selection.selectionType = SelectionType.Multi;\n } else {\n this.selection.selectionType = SelectionType.None;\n }\n this.selection.updateCurrent(value, false);\n }\n\n /**\n * Selected item in single-select mode\n */\n @Input('clrDgSingleSelected')\n set singleSelected(value: T) {\n this.selection.selectionType = SelectionType.Single;\n // the clrDgSingleSelected is updated in one of two cases:\n // 1. an explicit value is passed\n // 2. is being set to null or undefined, where previously it had a value\n if (value) {\n this.selection.currentSingle = value;\n } else if (this.selection.currentSingle) {\n this.selection.currentSingle = null;\n }\n }\n\n @Input()\n set clrDgPreserveSelection(state: boolean) {\n this.selection.preserveSelection = state;\n }\n\n /**\n * @deprecated since 2.0, remove in 3.0\n *\n * Selection/Deselection on row click mode\n */\n @Input('clrDgRowSelection')\n set rowSelectionMode(value: boolean) {\n this.selection.rowSelectionMode = value;\n }\n\n @Input('clrDgItemsTrackBy')\n set trackBy(value: ClrDatagridItemsTrackByFunction<T>) {\n this.items.datagridTrackBy = value;\n }\n\n /**\n * Indicates if all currently displayed items are selected\n */\n get allSelected() {\n return this.selection.isAllSelected();\n }\n set allSelected(_value: boolean) {\n /**\n * This is a setter but we ignore the value.\n * It's strange, but it lets us have an indeterminate state where only\n * some of the items are selected.\n */\n this.selection.toggleAll();\n }\n\n ngAfterContentInit() {\n if (!this.items.smart) {\n this.items.all = this.rows.map((row: ClrDatagridRow<T>) => row.item);\n }\n\n const rowItemsChanges = this.rows.changes.pipe(\n switchMap((rows: ClrDatagridRow<T>[]) =>\n merge(\n // immediate update\n of(rows.map(row => row.item)),\n // subsequent updates once per tick\n combineLatest(rows.map(row => row.itemChanges)).pipe(debounceTime(0))\n )\n )\n );\n\n this._subscriptions.push(\n rowItemsChanges.subscribe(all => {\n if (!this.items.smart) {\n this.items.all = all;\n }\n }),\n this.rows.changes.subscribe(() => {\n // Remove any projected rows from the displayedRows container\n // Necessary with Ivy off. See https://github.com/vmware/clarity/issues/4692\n for (let i = this._displayedRows.length - 1; i >= 0; i--) {\n if (this._displayedRows.get(i).destroyed) {\n this._displayedRows.remove(i);\n }\n }\n this.rows.forEach(row => {\n this._displayedRows.insert(row._view);\n });\n\n // Try to update only when there is something cached and its open.\n if (this.detailService.state && this.detailService.isOpen) {\n const row = this.items.canTrackBy()\n ? this.rows.find(row => this.items.trackBy(row.item) === this.items.trackBy(this.detailService.state))\n : undefined;\n\n /**\n * Reopen updated row or close it\n */\n row ? this.detailService.open(row.item, row.detailButton.nativeElement) : this.detailService.close();\n }\n })\n );\n }\n\n /**\n * Our setup happens in the view of some of our components, so we wait for it to be done before starting\n */\n ngAfterViewInit() {\n this.keyNavigation.initializeKeyGrid(this.el.nativeElement);\n\n // TODO: determine if we can get rid of provider wiring in view init so that subscriptions can be done earlier\n this.refresh.emit(this.stateProvider.state);\n this._subscriptions.push(\n this.stateProvider.change.subscribe(state => this.refresh.emit(state)),\n this.selection.change.subscribe(s => {\n if (this.selection.selectionType === SelectionType.Single) {\n this.singleSelectedChanged.emit(s as T);\n } else if (this.selection.selectionType === SelectionType.Multi) {\n this.selectedChanged.emit(s as T[]);\n }\n }),\n // Reinitialize arrow key navigation on page changes\n this.page.change.subscribe(() => {\n this.keyNavigation.resetKeyGrid();\n if (!this.clrDgDisablePageFocus) {\n this.datagridTable.nativeElement.focus();\n }\n }),\n // Reinitialize arrow key navigation on hide/unhide columns\n combineLatest(this.columnsService.columns).subscribe(() => this.keyNavigation?.resetKeyGrid()),\n // A subscription that listens for displayMode changes on the datagrid\n this.displayMode.view.subscribe(viewChange => {\n // Remove any projected columns from the projectedDisplayColumns container\n for (let i = this._projectedDisplayColumns.length; i > 0; i--) {\n this._projectedDisplayColumns.detach();\n }\n // Remove any projected columns from the projectedCalculationColumns container\n for (let i = this._projectedCalculationColumns.length; i > 0; i--) {\n this._projectedCalculationColumns.detach();\n }\n // Remove any projected rows from the calculationRows container\n for (let i = this._calculationRows.length; i > 0; i--) {\n this._calculationRows.detach();\n }\n // Remove any projected rows from the displayedRows container\n for (let i = this._displayedRows.length; i > 0; i--) {\n this._displayedRows.detach();\n }\n if (viewChange === DatagridDisplayMode.DISPLAY) {\n // Set state, style for the datagrid to DISPLAY and insert row & columns into containers\n this.renderer.removeClass(this.el.nativeElement, 'datagrid-calculate-mode');\n this.columns.forEach(column => {\n this._projectedDisplayColumns.insert(column._view);\n });\n this.rows.forEach(row => {\n this._displayedRows.insert(row._view);\n });\n } else {\n // Set state, style for the datagrid to CALCULATE and insert row & columns into containers\n this.renderer.addClass(this.el.nativeElement, 'datagrid-calculate-mode');\n this.columns.forEach(column => {\n this._projectedCalculationColumns.insert(column._view);\n });\n this.rows.forEach(row => {\n this._calculationRows.insert(row._view);\n });\n }\n })\n );\n\n // We need to preserve shift state, so it can be used on selection change, regardless of the input event\n // that triggered the change. This helps us to easily resolve the k/b only case together with the mouse selection case.\n this.zone.runOutsideAngular(() => {\n this._subscriptions.push(\n fromEvent(this.document.body, 'keydown').subscribe((event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n this.selection.shiftPressed = true;\n }\n }),\n fromEvent(this.document.body, 'keyup').subscribe((event: KeyboardEvent) => {\n if (event.key === 'Shift') {\n this.selection.shiftPressed = false;\n }\n })\n );\n });\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n }\n\n resize(): void {\n this.organizer.resize();\n }\n\n /**\n * Public method to re-trigger the computation of displayed items manually\n */\n dataChanged() {\n this.items.refresh();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<ng-content select=\"clr-dg-action-bar\"></ng-content>\n<div class=\"datagrid-outer-wrapper\">\n <div class=\"datagrid-inner-wrapper\">\n <div class=\"datagrid\" #datagrid [attr.aria-hidden]=\"detailService.isOpen ? true : null\">\n <div class=\"datagrid-table-wrapper\">\n <div role=\"grid\" class=\"datagrid-table\" tabindex=\"-1\" #datagridTable>\n <div role=\"rowgroup\" class=\"datagrid-header\">\n <div role=\"row\" class=\"datagrid-row\">\n <div class=\"datagrid-row-master datagrid-row-flex\">\n <div class=\"datagrid-row-sticky\">\n <!--header for datagrid where you can select multiple rows -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi\"\n (keydown.space)=\"allSelected = !allSelected; $event.preventDefault()\"\n >\n <div class=\"clr-checkbox-wrapper\">\n <!-- We need to move focus and space-key handling to the parent because of keyboard arrow key navigation,\n which is not able to transfer focus directly on the input when focused with the tab key -->\n <input\n type=\"checkbox\"\n [id]=\"selectAllId\"\n [(ngModel)]=\"allSelected\"\n [attr.aria-label]=\"commonStrings.keys.selectAll\"\n tabindex=\"-1\"\n />\n <!-- Usage of class clr-col-null here prevents clr-col-* classes from being added when a datagrid is wrapped inside clrForm -->\n <label [for]=\"selectAllId\" class=\"clr-control-label clr-col-null\">\n <span class=\"clr-sr-only\">{{commonStrings.keys.selectAll}}</span>\n </label>\n </div>\n\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for datagrid where you can select one row only -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-select datagrid-fixed-column\"\n *ngIf=\"selection.selectionType === SELECTION_TYPE.Single\"\n [attr.aria-label]=\"clrDgSingleSelectionAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for single row action; only displayType if we have at least one actionable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-row-actions datagrid-fixed-column\"\n *ngIf=\"rowActionService.hasActionableRow\"\n [attr.aria-label]=\"clrDgSingleActionableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n <!-- header for carets; only displayType if we have at least one expandable row in datagrid -->\n <div\n role=\"columnheader\"\n class=\"datagrid-column datagrid-expandable-caret datagrid-fixed-column\"\n *ngIf=\"expandableRows.hasExpandableRow || detailService.enabled\"\n [attr.aria-label]=\"clrDetailExpandableAriaLabel\"\n >\n <div class=\"datagrid-column-separator\"></div>\n </div>\n </div>\n <div class=\"datagrid-row-scrollable\">\n <ng-container #projectedDisplayColumns></ng-container>\n </div>\n </div>\n </div>\n </div>\n <ng-container #displayedRows></ng-container>\n <!-- Custom placeholder overrides the default empty one -->\n <ng-content select=\"clr-dg-placeholder\"></ng-content>\n <clr-dg-placeholder *ngIf=\"!placeholder\"></clr-dg-placeholder>\n </div>\n </div>\n </div>\n <ng-content select=\"clr-dg-footer\"></ng-content>\n <div class=\"datagrid-spinner\" *ngIf=\"loading\">\n <clr-spinner clrMedium>Loading</clr-spinner>\n </div>\n </div>\n <ng-content select=\"[clrIfDetail],clr-dg-detail\"></ng-content>\n</div>\n\n<div class=\"datagrid-calculation-table\">\n <div class=\"datagrid-calculation-header\">\n <ng-container #projectedCalculationColumns></ng-container>\n </div>\n <ng-container #calculationRows></ng-container>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-dg-action-bar',\n template: `<ng-content></ng-content>`,\n host: { '[class.datagrid-action-bar]': 'true' },\n})\nexport class ClrDatagridActionBar {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './key-focus';\nexport * from './key-focus-item';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n Component,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnDestroy,\n Output,\n PLATFORM_ID,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrKeyFocus } from '../../utils/focus/key-focus';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { RowActionService } from './providers/row-action-service';\n\nlet clrDgActionId = 0;\n\n@Component({\n selector: 'clr-dg-action-overflow',\n hostDirectives: [ClrPopoverHostDirective],\n template: `\n <button\n class=\"datagrid-action-toggle\"\n type=\"button\"\n role=\"button\"\n aria-haspopup=\"true\"\n #anchor\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-expanded]=\"open\"\n [attr.aria-label]=\"buttonLabel || commonStrings.keys.rowActions\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n >\n <cds-icon shape=\"ellipsis-vertical\" [attr.title]=\"buttonLabel || commonStrings.keys.rowActions\"></cds-icon>\n </button>\n\n <div\n class=\"datagrid-action-overflow\"\n [id]=\"popoverId\"\n [attr.aria-hidden]=\"!open\"\n [attr.id]=\"popoverId\"\n clrKeyFocus\n cdkTrapFocus\n (click)=\"closeOverflowContent($event)\"\n *clrPopoverContent=\"open; at: smartPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <ng-content></ng-content>\n </div>\n `,\n})\nexport class ClrDatagridActionOverflow implements OnDestroy {\n @Input('clrDgActionOverflowButtonLabel') buttonLabel: string;\n\n @Output('clrDgActionOverflowOpenChange') openChange = new EventEmitter<boolean>(false);\n\n popoverId = uniqueIdFactory();\n\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.HORIZONTAL,\n side: ClrSide.AFTER,\n anchor: ClrAlignment.CENTER,\n content: ClrAlignment.CENTER,\n };\n\n @ViewChild(ClrKeyFocus) private readonly keyFocus: ClrKeyFocus;\n\n private _open = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private rowActionService: RowActionService,\n public commonStrings: ClrCommonStringsService,\n @Inject(PLATFORM_ID) private platformId: any,\n private zone: NgZone,\n private smartToggleService: ClrPopoverToggleService\n ) {\n this.rowActionService.register();\n this.subscriptions.push(\n this.smartToggleService.openChange.subscribe(openState => {\n this.open = openState;\n }),\n this.smartToggleService.popoverVisible.subscribe(visible => {\n if (visible) {\n this.initializeFocus();\n }\n })\n );\n this.popoverId = 'clr-action-menu' + clrDgActionId++;\n }\n\n @Input('clrDgActionOverflowOpen')\n get open() {\n return this._open;\n }\n set open(open: boolean) {\n const openState = !!open;\n if (!!openState !== this.open) {\n // prevents chocolate mess\n this.smartToggleService.open = openState;\n this.openChange.emit(openState);\n this._open = openState;\n }\n }\n\n ngOnDestroy() {\n this.rowActionService.unregister();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n closeOverflowContent(event: Event): void {\n this.smartToggleService.toggleWithEvent(event);\n }\n\n private initializeFocus(): void {\n if (isPlatformBrowser(this.platformId)) {\n const buttons = Array.from(document.querySelectorAll<HTMLButtonElement>('button.action-item'));\n\n if (buttons.length) {\n this.keyFocus.current = 0;\n this.keyFocus.focusableItems = buttons;\n\n this.keyFocus.focusCurrent();\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/**\n * This file prevents an import cycle.\n */\n\nimport { TrackByFunction } from '@angular/core';\n\nimport { ColumnState } from './interfaces/column-state.interface';\n\nexport const columnToggleTrackByFn: TrackByFunction<ColumnState> = index => index;\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Input, Optional, TrackByFunction } from '@angular/core';\n\nimport { columnToggleTrackByFn } from './datagrid-column-toggle-trackby';\nimport { Items } from './providers/items';\n\n@Directive({\n selector: '[ngForTrackBy]',\n})\nexport class ClrDatagridItemsTrackBy<T = any> {\n constructor(@Optional() private _items: Items<T>) {}\n\n @Input('ngForTrackBy')\n set trackBy(value: TrackByFunction<T>) {\n /**\n * This is a workaround to prevent the items `trackBy` function from\n * being replaced when the \"manage columns\" button is clicked. This is\n * not a complete solution. If there is another `ngForTrackBy` function\n * within the datagrid in application code, it could sill replace the\n * items `trackBy` function whether it is the row iterator or not.\n */\n if (value === columnToggleTrackByFn) {\n return;\n }\n\n if (this._items) {\n this._items.iteratorTrackBy = value;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Output } from '@angular/core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\n\n@Component({\n selector: 'clr-dg-column-toggle-button',\n template: `\n <button\n class=\"btn btn-sm btn-link switch-button\"\n (click)=\"selectAll()\"\n [disabled]=\"allHideablesVisible\"\n type=\"button\"\n >\n {{ commonStrings.keys.selectAll }}\n </button>\n `,\n})\nexport class ClrDatagridColumnToggleButton {\n private allSelected: Subject<boolean> = new EventEmitter();\n\n constructor(public commonStrings: ClrCommonStringsService, private columnsService: ColumnsService) {}\n\n @Output('clrAllSelected')\n get clrAllSelected(): Observable<boolean> {\n return this.allSelected.asObservable();\n }\n\n get allHideablesVisible() {\n return this.hideableColumns().filter(column => column.value.hidden).length === 0;\n }\n\n selectAll() {\n this.hideableColumns().forEach(hideableColumn =>\n this.columnsService.emitStateChange(hideableColumn, {\n hidden: false,\n changes: [DatagridColumnChanges.HIDDEN],\n })\n );\n this.allSelected.next(true);\n }\n\n private hideableColumns(): BehaviorSubject<ColumnState>[] {\n return this.columnsService.columns.filter(column => column.value.hideable);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrAlignment } from '../../utils/popover/enums/alignment.enum';\nimport { ClrAxis } from '../../utils/popover/enums/axis.enum';\nimport { ClrSide } from '../../utils/popover/enums/side.enum';\nimport { ClrPopoverPosition } from '../../utils/popover/interfaces/popover-position.interface';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { columnToggleTrackByFn } from './datagrid-column-toggle-trackby';\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { ColumnsService } from './providers/columns.service';\n\n@Component({\n selector: 'clr-dg-column-toggle',\n template: `\n <button\n role=\"button\"\n type=\"button\"\n class=\"btn btn-sm column-toggle--action\"\n clrPopoverAnchor\n clrPopoverOpenCloseButton\n [attr.aria-controls]=\"popoverId\"\n [attr.aria-owns]=\"popoverId\"\n [attr.aria-expanded]=\"openState\"\n >\n {{ commonStrings.keys.pickColumns }}\n </button>\n <div\n class=\"column-switch\"\n role=\"dialog\"\n [attr.aria-label]=\"commonStrings.keys.showColumnsMenuDescription\"\n [id]=\"popoverId\"\n cdkTrapFocus\n *clrPopoverContent=\"openState; at: smartPosition; outsideClickToClose: true; scrollToClose: true\"\n >\n <div class=\"switch-header\">\n <div class=\"clr-sr-only\" tabindex=\"-1\" #allSelected>{{ commonStrings.keys.allColumnsSelected }}</div>\n <h2>{{ commonStrings.keys.showColumns }}</h2>\n <button\n class=\"btn btn-sm btn-link toggle-switch-close-button\"\n clrPopoverCloseButton\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n >\n <cds-icon shape=\"window-close\" aria-hidden=\"true\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n <span class=\"clr-sr-only\">{{ commonStrings.keys.close }}</span>\n </button>\n </div>\n <ul class=\"switch-content list-unstyled\">\n <li *ngFor=\"let columnState of hideableColumnStates; trackBy: trackByFn\">\n <clr-checkbox-wrapper>\n <input\n clrCheckbox\n type=\"checkbox\"\n [disabled]=\"hasOnlyOneVisibleColumn && !columnState.hidden\"\n [ngModel]=\"!columnState.hidden\"\n (ngModelChange)=\"toggleColumnState(columnState, !$event)\"\n />\n <label>\n <ng-template [ngTemplateOutlet]=\"columnState.titleTemplateRef\"></ng-template>\n </label>\n </clr-checkbox-wrapper>\n </li>\n </ul>\n <div class=\"switch-footer\">\n <clr-dg-column-toggle-button (clrAllSelected)=\"allColumnsSelected()\"></clr-dg-column-toggle-button>\n </div>\n </div>\n `,\n host: { '[class.column-switch-wrapper]': 'true', '[class.active]': 'openState' },\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrDatagridColumnToggle implements OnDestroy {\n popoverId = uniqueIdFactory();\n openState: boolean;\n\n // Smart Popover\n smartPosition: ClrPopoverPosition = {\n axis: ClrAxis.VERTICAL,\n side: ClrSide.BEFORE,\n anchor: ClrAlignment.START,\n content: ClrAlignment.START,\n };\n\n // Without tracking the checkboxes get rerendered on model update, which leads\n // to loss of focus after checkbox toggle.\n readonly trackByFn = columnToggleTrackByFn;\n\n private _allColumnsVisible: boolean;\n private subscription: Subscription;\n\n @ViewChild('allSelected', { read: ElementRef }) private allSelectedElement: ElementRef<HTMLElement>;\n\n constructor(\n public commonStrings: ClrCommonStringsService,\n private columnsService: ColumnsService,\n popoverToggleService: ClrPopoverToggleService\n ) {\n this.subscription = popoverToggleService.openChange.subscribe(change => (this.openState = change));\n }\n\n get allColumnsVisible(): boolean {\n return this._allColumnsVisible;\n }\n set allColumnsVisible(value: boolean) {\n this._allColumnsVisible = value;\n }\n\n get hideableColumnStates(): ColumnState[] {\n const hideables = this.columnsService.columns.filter(column => column.value.hideable);\n return hideables.map(column => column.value);\n }\n\n get hasOnlyOneVisibleColumn(): boolean {\n const nbNonHideableColumns = this.columnsService.columns.length - this.hideableColumnStates.length;\n // this should only return true when there is no non-hideable columns.\n return (\n nbNonHideableColumns === 0 && this.hideableColumnStates.filter(columnState => !columnState.hidden).length === 1\n );\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n\n toggleColumnState(columnState: ColumnState, event: boolean) {\n const columnToToggle = this.columnsService.columns.filter(column => column.value === columnState)[0];\n this.columnsService.emitStateChange(columnToToggle, {\n hidden: event,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n }\n\n toggleSwitchPanel() {\n this.openState = !this.openState;\n }\n\n allColumnsSelected() {\n this.allSelectedElement.nativeElement.focus();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-detail-header',\n host: {\n '[class.datagrid-detail-header]': 'true',\n },\n template: `\n <div class=\"datagrid-detail-header-title\" cdkFocusInitial tabindex=\"-1\" [id]=\"titleId\">\n <ng-content></ng-content>\n </div>\n <div class=\"datagrid-detail-pane-close\">\n <button\n type=\"button\"\n class=\"btn btn-link\"\n (click)=\"detailService.close()\"\n [attr.aria-label]=\"commonStrings.keys.close\"\n >\n <cds-icon shape=\"times\"></cds-icon>\n </button>\n </div>\n `,\n})\nexport class ClrDatagridDetailHeader {\n constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n\n get titleId() {\n return `${this.detailService.id}-title`;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DetailService } from './providers/detail.service';\n\n@Component({\n selector: 'clr-dg-detail',\n host: {\n '[class.datagrid-detail-pane]': 'true',\n },\n // We put the *ngIf on the cdkTrapFocus so it doesn't always exist on the page\n // have to test for presence of header for aria-describedby because it was causing unit tests to crash\n template: `\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n class=\"datagrid-detail-pane-content\"\n *ngIf=\"detailService.isOpen\"\n role=\"dialog\"\n [id]=\"detailService.id\"\n aria-modal=\"true\"\n [attr.aria-describedby]=\"header ? header.titleId : ''\"\n >\n <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneStart }}</div>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\">{{ commonStrings.keys.detailPaneEnd }}</div>\n </div>\n `,\n})\nexport class ClrDatagridDetail {\n @ContentChild(ClrDatagridDetailHeader) header: ClrDatagridDetailHeader;\n\n constructor(public detailService: DetailService, public commonStrings: ClrCommonStringsService) {}\n\n close(): void {\n this.detailService.close();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-dg-detail-body',\n template: `\n <div class=\"clr-dg-detail-body-wrapper\">\n <ng-content></ng-content>\n </div>\n `,\n host: {\n '[class.datagrid-detail-body]': 'true',\n },\n})\nexport class ClrDatagridDetailBody {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Optional } from '@angular/core';\n\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\n\n/*\n * I don't think this deserves to be in IfExpanded itself,\n * so I'm adding a second directive on the same selector for now just for the datagrid\n */\n@Directive({\n selector: '[clrIfExpanded]',\n})\nexport class DatagridDetailRegisterer {\n constructor(@Optional() private expandableRowsCount: ExpandableRowsCount) {\n if (this.expandableRowsCount) {\n this.expandableRowsCount.register();\n }\n }\n\n ngOnDestroy() {\n if (this.expandableRowsCount) {\n this.expandableRowsCount.unregister();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils';\nimport { SelectionType } from './enums/selection-type';\nimport { ColumnsService } from './providers/columns.service';\nimport { DetailService } from './providers/detail.service';\nimport { Selection } from './providers/selection';\n\n@Component({\n selector: 'clr-dg-footer',\n template: `\n <ng-container *ngIf=\"selection.selectionType === SELECTION_TYPE.Multi && selection.current.length > 0\">\n <div class=\"clr-form-control-disabled\">\n <clr-checkbox-wrapper class=\"datagrid-footer-select\">\n <input clrCheckbox type=\"checkbox\" checked=\"checked\" disabled />\n <label>{{ selection.current.length }}</label>\n <span class=\"clr-sr-only\">{{ commonStrings.keys.selectedRows }}</span>\n </clr-checkbox-wrapper>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!detailService.isOpen\">\n <clr-dg-column-toggle *ngIf=\"hasHideableColumns\"></clr-dg-column-toggle>\n <div class=\"datagrid-footer-description\">\n <ng-content></ng-content>\n </div>\n </ng-container>\n <ng-content select=\"clr-dg-pagination\"></ng-content>\n `,\n host: {\n '[class.datagrid-footer]': 'true',\n },\n})\nexport class ClrDatagridFooter<T = any> {\n /* reference to the enum so that template can access */\n SELECTION_TYPE = SelectionType;\n\n constructor(\n public selection: Selection<T>,\n public detailService: DetailService,\n private columnsService: ColumnsService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get hasHideableColumns(): boolean {\n return this.columnsService.hasHideableColumns;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { InjectionToken } from '@angular/core';\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ColumnState } from '../interfaces/column-state.interface';\n\nexport const COLUMN_STATE = new InjectionToken<ColumnState>('COLUMN_STATE');\n\nexport function columnStateFactory() {\n return new BehaviorSubject<ColumnState>({\n changes: [],\n });\n}\n\nexport const COLUMN_STATE_PROVIDER = {\n provide: COLUMN_STATE,\n useFactory: columnStateFactory,\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n EventEmitter,\n Inject,\n Input,\n OnDestroy,\n Optional,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DatagridColumnChanges } from './enums/column-changes.enum';\nimport { ColumnState } from './interfaces/column-state.interface';\nimport { COLUMN_STATE } from './providers/column-state.provider';\nimport { ColumnsService } from './providers/columns.service';\n\n@Directive({\n selector: '[clrDgHideableColumn]',\n})\n\n/**\n *\n * @description\n * A structural directive meant to be used inside a clr-dg-column component.\n *\n * <clr-dg-column>\n * <ng-container *clrDgHideableColumn=\"{ hidden: true }\">\n * User ID\n * </ng-container>\n * </clr-dg-column>\n *\n * It sets up state and properties so that columns can be manges for hide/show by a service and an internal\n * datagrid toggle component.\n *\n */\nexport class ClrDatagridHideableColumn implements OnDestroy {\n @Output('clrDgHiddenChange') hiddenChange = new EventEmitter<boolean>();\n\n /**\n *\n * @description\n * Used to initialize the column with either hidden or visible state.\n *\n */\n private _hidden: boolean;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private titleTemplateRef: TemplateRef<any>,\n private viewContainerRef: ViewContainerRef,\n private columnsService: ColumnsService,\n @Optional()\n @Inject(COLUMN_STATE)\n private columnState: BehaviorSubject<ColumnState>\n ) {\n this.viewContainerRef.createEmbeddedView(this.titleTemplateRef);\n\n if (!this.columnState) {\n throw new Error('The *clrDgHideableColumn directive can only be used inside of a clr-dg-column component.');\n }\n }\n\n /**\n *\n * @description\n * Setter fn for the @Input with the same name as this structural directive.\n * It allows the user to pre-configure the column's hide/show state. { hidden: true }\n * It's more verbose but has more Clarity.\n *\n * @example\n * *clrDgHideableColumn\n * *clrDgHideableColumn={hidden: false}\n * *clrDgHideableColumn={hidden: true}\n *\n */\n @Input('clrDgHideableColumn')\n set clrDgHideableColumn(value: { hidden: boolean } | string) {\n if (typeof value === 'string') {\n this.clrDgHidden = false;\n return;\n }\n this.clrDgHidden = value && value.hidden ? value.hidden : false;\n }\n\n @Input('clrDgHidden')\n set clrDgHidden(hidden: boolean) {\n this._hidden = hidden ? hidden : false;\n this.columnsService.emitStateChange(this.columnState, {\n hidden: this._hidden,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n }\n\n ngOnInit() {\n this.columnsService.emitStateChange(this.columnState, {\n hideable: true,\n titleTemplateRef: this.titleTemplateRef,\n hidden: this._hidden,\n changes: [DatagridColumnChanges.HIDDEN],\n });\n\n this.subscriptions.push(\n this.columnState.subscribe((state: ColumnState) => {\n if (state.changes && state.changes.indexOf(DatagridColumnChanges.HIDDEN) > -1) {\n this.hiddenChange.emit(state.hidden); // Can emit through @Output when desugared syntax is used\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Directive,\n EmbeddedViewRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n TemplateRef,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DetailService } from './providers/detail.service';\n\n@Directive({\n selector: '[clrIfDetail]',\n})\nexport class ClrIfDetail implements OnInit, OnDestroy {\n @Output('clrIfDetailChange') stateChange = new EventEmitter<any>(null);\n\n private subscriptions: Subscription[] = [];\n private skip = false; // This keeps us from resetting the input and calling the toggle twice\n private embeddedViewRef: EmbeddedViewRef<any>;\n\n constructor(\n private templateRef: TemplateRef<any>,\n private viewContainer: ViewContainerRef,\n private detailService: DetailService\n ) {\n this.detailService.enabled = true;\n }\n\n @Input('clrIfDetail')\n set state(model: any) {\n if (!this.skip) {\n this.detailService.toggle(model);\n }\n this.skip = false;\n }\n\n ngOnInit() {\n this.subscriptions.push(\n this.detailService.stateChange.subscribe(state => {\n if (state === true) {\n this.togglePanel(true);\n } else {\n this.togglePanel(false);\n }\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private togglePanel(showPanel: boolean) {\n let stateChangeParams = null;\n\n if (showPanel === true) {\n const embeddedViewContext = { $implicit: this.detailService.state };\n\n if (this.embeddedViewRef) {\n this.embeddedViewRef.context = embeddedViewContext;\n } else {\n this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef, embeddedViewContext);\n }\n\n this.skip = true;\n stateChangeParams = this.detailService.state;\n } else {\n this.viewContainer.clear();\n this.embeddedViewRef = null;\n }\n\n this.stateChange.emit(stateChangeParams);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { Page } from './providers/page';\n\n@Component({\n selector: 'clr-dg-page-size',\n template: `\n <label [for]=\"pageSizeOptionsId\"><ng-content></ng-content></label>\n <div class=\"clr-select-wrapper\">\n <select [id]=\"pageSizeOptionsId\" [class.clr-page-size-select]=\"true\" [(ngModel)]=\"page.size\">\n <option *ngFor=\"let option of pageSizeOptions\" [ngValue]=\"option\">{{ option }}</option>\n </select>\n </div>\n `,\n})\nexport class ClrDatagridPageSize {\n @Input('clrPageSizeOptions') pageSizeOptions: number[];\n @Input('clrPageSizeOptionsId') pageSizeOptionsId = uniqueIdFactory();\n\n constructor(public page: Page) {}\n\n ngOnInit() {\n if (!this.pageSizeOptions || this.pageSizeOptions.length === 0) {\n this.pageSizeOptions = [this.page.size];\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ContentChild,\n ElementRef,\n EventEmitter,\n Input,\n OnDestroy,\n OnInit,\n Output,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { DetailService } from './providers/detail.service';\nimport { Page } from './providers/page';\n\n@Component({\n selector: 'clr-dg-pagination',\n template: `\n <ng-container *ngIf=\"!detailService.isOpen\">\n <div class=\"pagination-size\" *ngIf=\"_pageSizeComponent\">\n <ng-content select=\"clr-dg-page-size\"></ng-content>\n </div>\n <div class=\"pagination-description\">\n <ng-content></ng-content>\n </div>\n <div class=\"pagination-list\" *ngIf=\"page.last > 1\">\n <button\n type=\"button\"\n class=\"pagination-first\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = 1\"\n [attr.aria-label]=\"commonStrings.keys.firstPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.firstPage }}</span>\n <cds-icon shape=\"step-forward-2\" direction=\"down\"></cds-icon>\n </button>\n <button\n type=\"button\"\n class=\"pagination-previous\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = page.current - 1\"\n [attr.aria-label]=\"commonStrings.keys.previousPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n <input\n *ngIf=\"!disableCurrentPageInput; else readOnly\"\n #currentPageInput\n type=\"text\"\n class=\"pagination-current clr-input\"\n [size]=\"page.last.toString().length\"\n [value]=\"page.current\"\n (keydown.enter)=\"updateCurrentPage($event)\"\n (blur)=\"verifyCurrentPage($event)\"\n [attr.aria-label]=\"commonStrings.keys.currentPage\"\n />\n <ng-template #readOnly>\n <span>{{ page.current }}</span>\n </ng-template>\n\n / <span [attr.aria-label]=\"commonStrings.keys.totalPages\">{{ page.last }}</span>\n <button\n type=\"button\"\n class=\"pagination-next\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.current + 1\"\n [attr.aria-label]=\"commonStrings.keys.nextPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n <button\n type=\"button\"\n class=\"pagination-last\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.last\"\n [attr.aria-label]=\"commonStrings.keys.lastPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.lastPage }}</span>\n <cds-icon shape=\"step-forward-2\" direction=\"up\"></cds-icon>\n </button>\n </div>\n </ng-container>\n <ng-container *ngIf=\"detailService.isOpen\">\n <div class=\"pagination-description-compact\">\n {{ page.firstItem + 1 }}-{{ page.lastItem + 1 }} / {{ page.totalItems }}\n </div>\n <div class=\"pagination-list\">\n <button\n type=\"button\"\n class=\"pagination-previous\"\n [disabled]=\"page.current <= 1\"\n (click)=\"page.current = page.current - 1\"\n [attr.aria-label]=\"commonStrings.keys.previousPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.previousPage }}</span>\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n <span>{{ page.current }}</span>\n <button\n type=\"button\"\n class=\"pagination-next\"\n [disabled]=\"page.current >= page.last\"\n (click)=\"page.current = page.current + 1\"\n [attr.aria-label]=\"commonStrings.keys.nextPage\"\n >\n <span class=\"clr-sr-only\">{{ commonStrings.keys.nextPage }}</span>\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n </ng-container>\n `,\n host: { '[class.pagination]': 'true' },\n})\nexport class ClrDatagridPagination implements OnDestroy, OnInit {\n @Input('clrDgPageInputDisabled') disableCurrentPageInput: boolean;\n\n @Output('clrDgPageChange') currentChanged = new EventEmitter<number>(false);\n\n @ContentChild(ClrDatagridPageSize) _pageSizeComponent: ClrDatagridPageSize;\n\n @ViewChild('currentPageInput') currentPageInputRef: ElementRef;\n\n /**\n * Subscription to the page service changes\n */\n private _pageSubscription: Subscription;\n\n constructor(public page: Page, public commonStrings: ClrCommonStringsService, public detailService: DetailService) {\n this.page.activated = true;\n }\n\n /**\n * Page size\n */\n @Input('clrDgPageSize')\n get pageSize(): number {\n return this.page.size;\n }\n set pageSize(size: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof size === 'number') {\n this.page.size = size;\n }\n }\n\n /**\n * Total items (needed to guess the last page)\n */\n @Input('clrDgTotalItems')\n get totalItems(): number {\n return this.page.totalItems;\n }\n set totalItems(total: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof total === 'number') {\n this.page.totalItems = total;\n }\n }\n\n /**\n * Last page\n */\n @Input('clrDgLastPage')\n get lastPage(): number {\n return this.page.last;\n }\n set lastPage(last: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof last === 'number') {\n this.page.last = last;\n }\n }\n\n /**\n * Current page\n */\n @Input('clrDgPage')\n get currentPage(): number {\n return this.page.current;\n }\n set currentPage(page: number) {\n // todo(v16): Remove this check. The property type used to be `string | number`. I kept this check to maintain the no-op if you pass a string.\n if (typeof page === 'number') {\n this.page.current = page;\n }\n }\n\n /**\n * Index of the first item displayed on the current page, starting at 0, -1 if none displayed\n */\n get firstItem(): number {\n return this.page.firstItem;\n }\n\n /**\n * Index of the last item displayed on the current page, starting at 0, -1 if none displayed\n */\n get lastItem(): number {\n return this.page.lastItem;\n }\n\n /**\n * Conditionally adds page numbers before and after the current page\n */\n get middlePages(): number[] {\n const middlePages: number[] = [];\n if (this.page.current > 1) {\n middlePages.push(this.page.current - 1);\n }\n middlePages.push(this.page.current);\n if (this.page.current < this.page.last) {\n middlePages.push(this.page.current + 1);\n }\n return middlePages;\n }\n\n /**********\n * Subscription to the Page service for page changes.\n * Note: this only emits after the datagrid is initialized/stabalized and the page changes.\n */\n ngOnInit() {\n /*\n * Default page size is 10.\n * The reason we set it here and not in the provider itself is because\n * we don't want pagination if this component isn't present in the datagrid.\n */\n if (!this.page.size) {\n this.page.size = 10;\n }\n this._pageSubscription = this.page.change.subscribe(current => this.currentChanged.emit(current));\n }\n\n ngOnDestroy() {\n this.page.resetPageSize(true);\n if (this._pageSubscription) {\n this._pageSubscription.unsubscribe();\n }\n }\n\n /**\n * Moves to the previous page if it exists\n */\n previous() {\n this.page.previous();\n }\n\n /**\n * Moves to the next page if it exists\n */\n next() {\n this.page.next();\n }\n\n verifyCurrentPage(event: any): void {\n const parsed = parseInt(event.target.value, 10);\n if (parsed !== this.page.current) {\n event.target.value = this.page.current;\n }\n }\n\n /**\n * We only update the pagination's current page on enter.\n */\n updateCurrentPage(event: any): void {\n const parsed = parseInt(event.target.value, 10);\n\n // if the input value, is not a number, we don't update the page\n if (!isNaN(parsed)) {\n if (parsed < 1) {\n this.page.current = 1;\n } else if (parsed > this.page.last) {\n this.page.current = this.page.last;\n } else {\n this.page.current = parsed;\n }\n }\n\n /**\n * Set the input's value to the new current page. This is needed because the code\n * above may have changed the value from what the user entered in.\n */\n this.currentPageInputRef.nativeElement.value = this.page.current;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, Component, ContentChildren, Input, OnDestroy, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { DatagridIfExpandService } from './datagrid-if-expanded.service';\nimport { SelectionType } from './enums/selection-type';\nimport { ExpandableRowsCount } from './providers/global-expandable-rows';\nimport { RowActionService } from './providers/row-action-service';\nimport { Selection } from './providers/selection';\n\n/**\n * Generic bland container serving various purposes for Datagrid.\n * For instance, it can help span a text over multiple rows in detail view.\n */\n@Component({\n selector: 'clr-dg-row-detail',\n template: `\n <div class=\"clr-sr-only\">\n {{ beginningOfExpandableContentAriaText }}\n {{ commonStrings.keys.datagridExpandableRowsHelperText }}\n </div>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\">{{ endOfExpandableContentAriaText }}</div>\n `,\n host: {\n '[class.datagrid-row-flex]': 'true',\n '[class.datagrid-row-detail]': 'true',\n '[class.datagrid-container]': 'cells.length === 0',\n '[attr.id]': 'expand.expandableId',\n role: 'gridcell',\n },\n})\nexport class ClrDatagridRowDetail implements AfterContentInit, OnDestroy {\n @Input('clrRowDetailBeginningAriaText') _beginningOfExpandableContentAriaText: string;\n @Input('clrRowDetailEndAriaText') _endOfExpandableContentAriaText: string;\n\n replacedRow = false;\n\n /* reference to the enum so that template can access it */\n SELECTION_TYPE = SelectionType;\n\n @ContentChildren(ClrDatagridCell) cells: QueryList<ClrDatagridCell>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n public selection: Selection,\n public rowActionService: RowActionService,\n public expand: DatagridIfExpandService,\n public expandableRows: ExpandableRowsCount,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n @Input('clrDgReplace')\n set replace(value: boolean) {\n this.expand.setReplace(!!value);\n }\n\n get beginningOfExpandableContentAriaText() {\n return (\n this._beginningOfExpandableContentAriaText ||\n `${this.commonStrings.keys.datagridExpandableBeginningOf} \n ${this.commonStrings.keys.datagridExpandableRowContent}`\n );\n }\n\n get endOfExpandableContentAriaText() {\n return (\n this._endOfExpandableContentAriaText ||\n `${this.commonStrings.keys.datagridExpandableEndOf} \n ${this.commonStrings.keys.datagridExpandableRowContent}`\n );\n }\n\n ngAfterContentInit() {\n this.subscriptions.push(\n this.expand.replace.subscribe(replaceChange => {\n this.replacedRow = replaceChange;\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// @TODO The top two are not used now, which is probably a performance drag that was broken along the way.\n// There was a previous pattern to hide everything to do computation then display, for Firefox, needs revisiting.\nexport const NO_LAYOUT_CLASS = 'datagrid-no-layout';\nexport const COMPUTE_WIDTH_CLASS = 'datagrid-computing-columns-width';\nexport const STRICT_WIDTH_CLASS = 'datagrid-fixed-width';\nexport const HIDDEN_COLUMN_CLASS = 'datagrid-hidden-column';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, OnDestroy, Renderer2 } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { ALL_COLUMN_CHANGES, DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\n\n@Directive({\n selector: 'clr-dg-cell',\n})\nexport class DatagridCellRenderer implements OnDestroy {\n private runAllChanges: DatagridColumnChanges[];\n private stateSubscription: Subscription;\n private subscriptions: Subscription[] = [];\n\n constructor(private el: ElementRef, private renderer: Renderer2, organizer: DatagridRenderOrganizer) {\n this.subscriptions.push(\n organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n );\n }\n\n // @TODO(JEREMY) Work out how to dedupe some of this code between header and cell renderers\n set columnState(columnState: BehaviorSubject<ColumnState>) {\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n\n this.runAllChanges = ALL_COLUMN_CHANGES;\n this.stateSubscription = columnState.subscribe(state => this.stateChanges(state));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n if (this.stateSubscription) {\n this.stateSubscription.unsubscribe();\n }\n }\n\n private stateChanges(state: ColumnState) {\n if (this.runAllChanges) {\n state.changes = this.runAllChanges;\n delete this.runAllChanges;\n }\n if (state.changes && state.changes.length) {\n state.changes.forEach(change => {\n switch (change) {\n case DatagridColumnChanges.WIDTH:\n this.setWidth(state);\n break;\n case DatagridColumnChanges.HIDDEN:\n this.setHidden(state);\n break;\n default:\n break;\n }\n });\n }\n }\n\n private clearWidth() {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.renderer.setStyle(this.el.nativeElement, 'width', null);\n }\n\n private setWidth(state: ColumnState) {\n if (state.strictWidth) {\n this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n }\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n }\n\n private setHidden(state: ColumnState) {\n if (state.hidden) {\n this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, EventEmitter, Inject, OnDestroy, Output, Renderer2 } from '@angular/core';\nimport { BehaviorSubject, Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnState } from '../interfaces/column-state.interface';\nimport { ColumnResizerService } from '../providers/column-resizer.service';\nimport { COLUMN_STATE, COLUMN_STATE_PROVIDER } from '../providers/column-state.provider';\nimport { ColumnsService } from '../providers/columns.service';\nimport { HIDDEN_COLUMN_CLASS, STRICT_WIDTH_CLASS } from './constants';\nimport { DatagridRenderOrganizer } from './render-organizer';\n\n@Directive({\n selector: 'clr-dg-column',\n providers: [ColumnResizerService, COLUMN_STATE_PROVIDER],\n})\nexport class DatagridHeaderRenderer implements OnDestroy {\n @Output('clrDgColumnResize') resizeEmitter = new EventEmitter<number>();\n\n /**\n * Indicates if the column has a strict width, so it doesn't shrink or expand based on the content.\n */\n private widthSet = false;\n private autoSet = false;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private el: ElementRef,\n private renderer: Renderer2,\n private organizer: DatagridRenderOrganizer,\n private domAdapter: DomAdapter,\n private columnResizerService: ColumnResizerService,\n private columnsService: ColumnsService,\n @Inject(COLUMN_STATE) private columnState: BehaviorSubject<ColumnState>\n ) {\n this.subscriptions.push(\n this.organizer.filterRenderSteps(DatagridRenderStep.CLEAR_WIDTHS).subscribe(() => this.clearWidth())\n );\n\n this.subscriptions.push(columnState.subscribe(state => this.stateChanges(state)));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n getColumnWidthState(): Partial<ColumnState> {\n const strictWidth = this.detectStrictWidth();\n return {\n width: this.computeWidth(strictWidth),\n strictWidth: strictWidth,\n };\n }\n\n setColumnState(index: number) {\n this.columnsService.columns[index] = this.columnState;\n }\n\n private stateChanges(state: ColumnState) {\n if (state.changes && state.changes.length) {\n state.changes.forEach(change => {\n switch (change) {\n case DatagridColumnChanges.WIDTH:\n this.setWidth(state);\n break;\n case DatagridColumnChanges.HIDDEN:\n this.setHidden(state);\n break;\n default:\n break;\n }\n });\n }\n }\n\n private clearWidth() {\n // remove the width only if we set it, and it is not changed by dragging.\n if (this.widthSet && !this.columnResizerService.resizedBy) {\n this.renderer.setStyle(this.el.nativeElement, 'width', null);\n }\n if (this.autoSet) {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n }\n }\n\n private detectStrictWidth(): number {\n if (this.columnResizerService.resizedBy) {\n return this.columnResizerService.widthAfterResize;\n } else if (this.autoSet) {\n return 0;\n } else {\n return this.domAdapter.userDefinedWidth(this.el.nativeElement);\n }\n }\n\n private computeWidth(strictWidth: number): number {\n let width: number = strictWidth;\n if (!width) {\n width = this.domAdapter.scrollWidth(this.el.nativeElement);\n }\n return width;\n }\n\n private setWidth(state: ColumnState) {\n if (state.strictWidth) {\n if (this.columnResizerService.resizedBy) {\n this.resizeEmitter.emit(state.width);\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n this.widthSet = false;\n }\n // Don't set width if there is a user-defined one. Just add the strict width class.\n this.renderer.addClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.autoSet = false;\n } else {\n this.renderer.removeClass(this.el.nativeElement, STRICT_WIDTH_CLASS);\n this.renderer.setStyle(this.el.nativeElement, 'width', state.width + 'px');\n this.widthSet = true;\n this.autoSet = true;\n }\n }\n\n private setHidden(state: ColumnState) {\n if (state.hidden) {\n this.renderer.addClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n } else {\n this.renderer.removeClass(this.el.nativeElement, HIDDEN_COLUMN_CLASS);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/*\n * This version of the DomAdapter is for use on non-browser platforms, where there are no\n * nativeElements to use for calculations.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\n\n@Injectable()\nexport class NoopDomAdapter implements DomAdapter {\n userDefinedWidth(_element: any): number {\n return 0;\n }\n\n scrollBarWidth(_element: any) {\n return 0;\n }\n\n scrollWidth(_element: any) {\n return 0;\n }\n\n computedHeight(_element: any): number {\n return 0;\n }\n\n clientRect(_element: any): DOMRect {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0,\n } as DOMRect;\n }\n\n minWidth(_element: any): number {\n return 0;\n }\n\n focus(_element: any): void {\n // Do nothing\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { AfterContentInit, ContentChildren, Directive, OnDestroy, QueryList } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ColumnsService } from '../providers/columns.service';\nimport { DatagridCellRenderer } from './cell-renderer';\n\n@Directive({\n selector: 'clr-dg-row, clr-dg-row-detail',\n})\nexport class DatagridRowRenderer implements AfterContentInit, OnDestroy {\n @ContentChildren(DatagridCellRenderer) private cells: QueryList<DatagridCellRenderer>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(private columnsService: ColumnsService) {}\n\n ngAfterContentInit() {\n this.setColumnState(); // case #3 and #4\n this.subscriptions.push(\n this.cells.changes.subscribe(() => {\n this.setColumnState(); // case #2\n // Note on case #2: In the case of dynamic columns, when one column (header/cell together) gets deleted,\n // this.cells.changes emits before this.columnsService.columns gets updated in MainRenderer\n // when this.headers.changes emits as well. So that means there will be n+1 column state providers\n // when this.cells.changes emits. Hence, we should quit earlier there. But this method will be called\n // right after again when this.headers.changes emits. By then, there will be the same number of column state\n // providers as column headers.\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n setColumnState() {\n // This method runs in four cases:\n // 1. When the initial rows appear on the first page.\n // In this case, the method will be called in DatagridMainRenderer.\n // 2. When columns (corresponding header/cells) get added and deleted.\n // In this case, the method will be called in DatagridMainRenderer. (Read the note on this case above).\n // 3. When rows load asynchronously.\n // In this case, the method will be called in this class.\n // 4. When rows load after switching pages.\n // In this case, the method will be called in this class (Basically, same as the case 3).\n if (this.cells.length === this.columnsService.columns.length) {\n this.cells.forEach((cell, index) => {\n if (this.columnsService.columns[index]) {\n cell.columnState = this.columnsService.columns[index];\n }\n });\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewChecked,\n AfterViewInit,\n ContentChildren,\n Directive,\n ElementRef,\n NgZone,\n OnDestroy,\n PLATFORM_ID,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { DomAdapter } from '../../../utils/dom-adapter/dom-adapter';\nimport { DatagridColumnChanges } from '../enums/column-changes.enum';\nimport { DatagridRenderStep } from '../enums/render-step.enum';\nimport { ColumnStateDiff } from '../interfaces/column-state.interface';\nimport { ColumnsService } from '../providers/columns.service';\nimport { DetailService } from '../providers/detail.service';\nimport { Items } from '../providers/items';\nimport { Page } from '../providers/page';\nimport { TableSizeService } from '../providers/table-size.service';\nimport { DatagridHeaderRenderer } from './header-renderer';\nimport { NoopDomAdapter } from './noop-dom-adapter';\nimport { DatagridRenderOrganizer } from './render-organizer';\nimport { DatagridRowRenderer } from './row-renderer';\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\nexport const domAdapterFactory = (platformId: any) => {\n if (isPlatformBrowser(platformId)) {\n return new DomAdapter();\n } else {\n return new NoopDomAdapter();\n }\n};\n\n// Fixes build error\n// @dynamic (https://github.com/angular/angular/issues/19698#issuecomment-338340211)\n@Directive({\n selector: 'clr-datagrid',\n providers: [{ provide: DomAdapter, useFactory: domAdapterFactory, deps: [PLATFORM_ID] }],\n})\nexport class DatagridMainRenderer implements AfterContentInit, AfterViewInit, AfterViewChecked, OnDestroy {\n @ContentChildren(DatagridHeaderRenderer) private headers: QueryList<DatagridHeaderRenderer>;\n @ContentChildren(DatagridRowRenderer, { descendants: true }) private rows: QueryList<DatagridRowRenderer>; // if expandable row is expanded initially, query its cells too.\n\n private _heightSet = false;\n private shouldStabilizeColumns = true;\n private subscriptions: Subscription[] = [];\n\n /**\n * Indicates if we want to re-compute columns width. This should only happen:\n * 1) When headers change, with columns being added or removed\n * 2) When rows are lazily loaded for the first time\n */\n private columnsSizesStable = false;\n\n constructor(\n private organizer: DatagridRenderOrganizer,\n private items: Items,\n private page: Page,\n private domAdapter: DomAdapter,\n private el: ElementRef,\n private renderer: Renderer2,\n private detailService: DetailService,\n private tableSizeService: TableSizeService,\n private columnsService: ColumnsService,\n private ngZone: NgZone\n ) {\n this.subscriptions.push(\n this.organizer\n .filterRenderSteps(DatagridRenderStep.COMPUTE_COLUMN_WIDTHS)\n .subscribe(() => this.computeHeadersWidth())\n );\n\n this.subscriptions.push(\n this.page.sizeChange.subscribe(() => {\n if (this._heightSet) {\n this.resetDatagridHeight();\n }\n })\n );\n this.subscriptions.push(this.detailService.stateChange.subscribe(state => this.toggleDetailPane(state)));\n this.subscriptions.push(this.items.change.subscribe(() => (this.shouldStabilizeColumns = true)));\n }\n\n ngAfterContentInit() {\n this.setupColumns();\n\n this.subscriptions.push(\n this.headers.changes.subscribe(() => {\n // TODO: only re-stabilize if a column was added or removed. Reordering is fine.\n // Need to setup columns before stabalizing them\n this.setupColumns();\n this.columnsSizesStable = false;\n this.stabilizeColumns();\n })\n );\n }\n\n // Initialize and set Table width for horizontal scrolling here.\n ngAfterViewInit() {\n this.tableSizeService.table = this.el;\n }\n\n ngAfterViewChecked() {\n if (this.shouldStabilizeColumns) {\n this.stabilizeColumns();\n }\n if (this.shouldComputeHeight()) {\n this.ngZone.runOutsideAngular(() => {\n setTimeout(() => {\n this.computeDatagridHeight();\n });\n });\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n toggleDetailPane(state: boolean) {\n if (this.headers) {\n if (state && !this.columnsService.hasCache()) {\n this.columnsService.cache();\n this.headers.forEach((_header, index) => {\n if (index > 0) {\n this.columnsService.emitStateChangeAt(index, {\n changes: [DatagridColumnChanges.HIDDEN],\n hidden: state,\n });\n }\n });\n } else if (!state) {\n this.columnsService.resetToLastCache();\n }\n }\n }\n\n private setupColumns() {\n this.headers.forEach((header, index) => header.setColumnState(index));\n this.columnsService.columns.splice(this.headers.length); // Trim any old columns\n this.rows.forEach(row => row.setColumnState());\n }\n\n private shouldComputeHeight(): boolean {\n if (!this._heightSet && this.page.size > 0) {\n if (this.items.displayed.length === this.page.size) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Computes the height of the datagrid.\n *\n * NOTE: We had to choose to set the height instead of the min-height because\n * IE 11 requires the height on the parent for the children flex grow/shrink properties to work.\n * When we used min-height, 1 1 auto doesn't used to work in IE11 :-(\n * But this doesn't affect the fix. It works in both fixed & variable height datagrids.\n *\n * Refer: http://stackoverflow.com/questions/24396205/flex-grow-not-working-in-internet-explorer-11-0\n */\n private computeDatagridHeight() {\n // IE doesn't return correct value for getComputedStyle(element).getPropertyValue(\"height\")\n const value: number = this.domAdapter.clientRect(this.el.nativeElement).height;\n this.renderer.setStyle(this.el.nativeElement, 'height', value + 'px');\n this._heightSet = true;\n }\n\n private resetDatagridHeight() {\n this.renderer.setStyle(this.el.nativeElement, 'height', '');\n this._heightSet = false;\n }\n\n /**\n * Makes each header compute its width.\n */\n private computeHeadersWidth() {\n const nbColumns: number = this.headers.length;\n let allStrict = true;\n this.headers.forEach((header, index) => {\n // On the last header column check whether all columns have strict widths.\n // If all columns have strict widths, remove the strict width from the last column and make it the column's\n // minimum width so that when all previous columns shrink, it will get a flexible width and cover the empty\n // gap in the Datagrid.\n const state: ColumnStateDiff = {\n changes: [DatagridColumnChanges.WIDTH],\n ...header.getColumnWidthState(),\n };\n\n if (!state.strictWidth) {\n allStrict = false;\n }\n\n if (nbColumns === index + 1 && allStrict) {\n state.strictWidth = 0;\n }\n\n this.columnsService.emitStateChangeAt(index, state);\n });\n }\n\n /**\n * Triggers a whole re-rendring cycle to set column sizes, if needed.\n */\n private stabilizeColumns() {\n this.shouldStabilizeColumns = false;\n if (this.columnsSizesStable) {\n // Nothing to do.\n return;\n }\n // Resize when the rows are loaded.\n if (this.items.displayed.length > 0) {\n this.organizer.resize();\n this.columnsSizesStable = true;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n angleDoubleIcon,\n arrowIcon,\n ClarityIcons,\n ellipsisVerticalIcon,\n filterGridCircleIcon,\n filterGridIcon,\n stepForward2Icon,\n timesIcon,\n viewColumnsIcon,\n windowCloseIcon,\n} from '@cds/core/icon';\n\nimport { ClrFormsModule } from '../../forms/forms.module';\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrSpinnerModule } from '../../progress/spinner/spinner.module';\nimport { ClrExpandableAnimationModule } from '../../utils/animations/expandable-animation/expandable-animation.module';\nimport { CdkDragModule } from '../../utils/cdk/cdk-drag.module';\nimport { CdkTrapFocusModule } from '../../utils/cdk/cdk-trap-focus.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { ClrLoadingModule } from '../../utils/loading/loading.module';\nimport { ClrOutsideClickModule } from '../../utils/outside-click/outside-click.module';\nimport { ClrPopoverModuleNext } from '../../utils/popover/popover.module';\nimport { DatagridNumericFilter } from './built-in/filters/datagrid-numeric-filter';\nimport { DatagridStringFilter } from './built-in/filters/datagrid-string-filter';\nimport { ActionableOompaLoompa } from './chocolate/actionable-oompa-loompa';\nimport { DatagridWillyWonka } from './chocolate/datagrid-willy-wonka';\nimport { ExpandableOompaLoompa } from './chocolate/expandable-oompa-loompa';\nimport { ClrDatagrid } from './datagrid';\nimport { ClrDatagridActionBar } from './datagrid-action-bar';\nimport { ClrDatagridActionOverflow } from './datagrid-action-overflow';\nimport { ClrDatagridCell } from './datagrid-cell';\nimport { ClrDatagridColumn } from './datagrid-column';\nimport { ClrDatagridColumnSeparator } from './datagrid-column-separator';\nimport { ClrDatagridColumnToggle } from './datagrid-column-toggle';\nimport { ClrDatagridColumnToggleButton } from './datagrid-column-toggle-button';\nimport { ClrDatagridDetail } from './datagrid-detail';\nimport { ClrDatagridDetailBody } from './datagrid-detail-body';\nimport { ClrDatagridDetailHeader } from './datagrid-detail-header';\nimport { DatagridDetailRegisterer } from './datagrid-detail-registerer';\nimport { ClrDatagridFilter } from './datagrid-filter';\nimport { ClrDatagridFooter } from './datagrid-footer';\nimport { ClrDatagridHideableColumn } from './datagrid-hideable-column';\nimport { ClrIfDetail } from './datagrid-if-detail';\nimport { ClrDatagridItems } from './datagrid-items';\nimport { ClrDatagridItemsTrackBy } from './datagrid-items-trackby';\nimport { ClrDatagridPageSize } from './datagrid-page-size';\nimport { ClrDatagridPagination } from './datagrid-pagination';\nimport { ClrDatagridPlaceholder } from './datagrid-placeholder';\nimport { ClrDatagridRow } from './datagrid-row';\nimport { ClrDatagridRowDetail } from './datagrid-row-detail';\nimport { ClrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\nimport { DatagridCellRenderer } from './render/cell-renderer';\nimport { DatagridHeaderRenderer } from './render/header-renderer';\nimport { DatagridMainRenderer } from './render/main-renderer';\nimport { DatagridRowRenderer } from './render/row-renderer';\nimport { WrappedCell } from './wrapped-cell';\nimport { WrappedColumn } from './wrapped-column';\nimport { WrappedRow } from './wrapped-row';\n\nexport const CLR_DATAGRID_DIRECTIVES: Type<any>[] = [\n // Core\n ClrDatagrid,\n ClrDatagridActionBar,\n ClrDatagridActionOverflow,\n ClrDatagridCell,\n ClrDatagridColumn,\n ClrDatagridColumnSeparator,\n ClrDatagridDetail,\n ClrDatagridDetailBody,\n ClrDatagridDetailHeader,\n ClrDatagridFilter,\n ClrDatagridFooter,\n ClrDatagridHideableColumn,\n ClrDatagridItems,\n ClrDatagridItemsTrackBy,\n ClrDatagridPageSize,\n ClrDatagridPagination,\n ClrDatagridPlaceholder,\n ClrDatagridRow,\n ClrDatagridRowDetail,\n ClrDatagridSelectionCellDirective,\n ClrIfDetail,\n DatagridDetailRegisterer,\n WrappedCell,\n WrappedColumn,\n WrappedRow,\n\n // Renderers\n DatagridCellRenderer,\n DatagridHeaderRenderer,\n DatagridMainRenderer,\n DatagridRowRenderer,\n\n // Chocolate\n ActionableOompaLoompa,\n DatagridWillyWonka,\n ExpandableOompaLoompa,\n\n // Built-in shortcuts\n DatagridNumericFilter,\n DatagridStringFilter,\n];\n\nconst CLR_DATAGRID_INTERNAL_DIRECTIVES = [ClrDatagridColumnToggle, ClrDatagridColumnToggleButton];\n\n@NgModule({\n imports: [\n CommonModule,\n CdkDragModule,\n CdkTrapFocusModule,\n ClrIconModule,\n ClrFormsModule,\n FormsModule,\n ClrLoadingModule,\n ClrConditionalModule,\n ClrOutsideClickModule,\n ClrExpandableAnimationModule,\n ClrSpinnerModule,\n ClrPopoverModuleNext,\n ClrKeyFocusModule,\n ],\n declarations: [CLR_DATAGRID_DIRECTIVES, CLR_DATAGRID_INTERNAL_DIRECTIVES],\n exports: [CLR_DATAGRID_DIRECTIVES],\n})\nexport class ClrDatagridModule {\n constructor() {\n ClarityIcons.addIcons(\n ellipsisVerticalIcon,\n viewColumnsIcon,\n windowCloseIcon,\n arrowIcon,\n timesIcon,\n stepForward2Icon,\n angleDoubleIcon,\n filterGridCircleIcon,\n filterGridIcon\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Directive, Input, OnInit } from '@angular/core';\n\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\n\n@Directive({\n selector: 'clr-stack-content',\n})\nexport class ClrStackViewCustomTags {\n // No behavior\n // The only purpose is to \"declare\" the tag in Angular\n}\n\n@Component({\n selector: 'clr-stack-label',\n template: '<ng-content></ng-content>',\n host: {\n '[attr.id]': 'id',\n },\n})\nexport class ClrStackViewLabel implements OnInit {\n private _generatedId: string = null;\n\n private _id: string = null;\n\n @Input()\n get id() {\n return this._id;\n }\n set id(val: string) {\n if (typeof val === 'string' && val !== '') {\n this._id = val;\n } else {\n this._id = this._generatedId + '';\n }\n }\n\n ngOnInit() {\n this._generatedId = 'clr-stack-label-' + uniqueIdFactory();\n\n if (!this.id) {\n this._id = this._generatedId + '';\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n Component,\n ContentChild,\n EventEmitter,\n HostBinding,\n Input,\n OnInit,\n Optional,\n Output,\n SkipSelf,\n} from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { ClrStackViewLabel } from './stack-view-custom-tags';\n\n@Component({\n selector: 'clr-stack-block',\n template: `\n <!-- The 'preventDefault' for the space keydown event prevents the page\n from scrolling when a stack block is toggled via the space key. -->\n <div\n class=\"stack-block-label\"\n (click)=\"toggleExpand($event)\"\n (keyup.enter)=\"toggleExpand($event)\"\n (keyup.space)=\"toggleExpand($event)\"\n (keydown.space)=\"preventDefaultIfNotInputEvent($event)\"\n (focus)=\"focused = true\"\n (blur)=\"focused = false\"\n [id]=\"uniqueId\"\n [attr.role]=\"role\"\n [attr.tabindex]=\"tabIndex\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-controls]=\"getStackChildrenId()\"\n >\n <cds-icon shape=\"angle\" class=\"stack-block-caret\" *ngIf=\"expandable\" [attr.direction]=\"caretDirection\"></cds-icon>\n <span class=\"clr-sr-only\" *ngIf=\"getChangedValue\">{{ commonStrings.keys.stackViewChanged }}</span>\n <div class=\"stack-view-key\">\n <!-- This structure changed to fix #3567 and the a11y request was to move away from dl's -->\n <!-- I added the key class to update css targets for the original component style -->\n <ng-content select=\"clr-stack-label\"></ng-content>\n </div>\n <div class=\"stack-block-content\">\n <ng-content></ng-content>\n </div>\n </div>\n\n <clr-expandable-animation [clrExpandTrigger]=\"expanded\" class=\"stack-children\">\n <div\n [style.height]=\"expanded ? 'auto' : 0\"\n role=\"region\"\n *ngIf=\"expanded\"\n [attr.id]=\"getStackChildrenId()\"\n [attr.aria-labelledby]=\"labelledById\"\n >\n <ng-content select=\"clr-stack-block\"></ng-content>\n </div>\n </clr-expandable-animation>\n `,\n // Custom elements are inline by default\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n // Make sure the host has the proper class for styling purposes\n host: {\n '[class.stack-block]': 'true',\n '[attr.role]': '\"heading\"',\n '[attr.aria-level]': 'headingLevel',\n },\n})\nexport class ClrStackBlock implements OnInit {\n @Input('clrSbExpanded') @HostBinding('class.stack-block-expanded') expanded = false;\n @Input('clrSbExpandable') @HostBinding('class.stack-block-expandable') expandable = false;\n\n /**\n * Depth of the stack view starting from 1 for first level\n */\n @Input('clrStackViewLevel') ariaLevel: number;\n\n @Output('clrSbExpandedChange') expandedChange = new EventEmitter<boolean>(false);\n\n @ContentChild(ClrStackViewLabel) stackBlockTitle: any;\n\n focused = false;\n uniqueId = uniqueIdFactory();\n\n private _changedChildren = 0;\n private _fullyInitialized = false;\n private _changed = false;\n\n /*\n * This would be more efficient with @ContentChildren, with the parent ClrStackBlock\n * querying for children StackBlocks, but this feature is not available when downgrading\n * the component for Angular 1.\n */\n constructor(\n @SkipSelf()\n @Optional()\n private parent: ClrStackBlock,\n public commonStrings: ClrCommonStringsService\n ) {\n if (parent) {\n parent.addChild();\n }\n }\n\n @Input('clrSbNotifyChange')\n set setChangedValue(value: boolean) {\n this._changed = value;\n\n if (this.parent && this._fullyInitialized) {\n if (value) {\n this.parent._changedChildren++;\n } else {\n this.parent._changedChildren--;\n }\n }\n }\n\n @HostBinding('class.stack-block-changed')\n get getChangedValue(): boolean {\n return this._changed || (this._changedChildren > 0 && !this.expanded);\n }\n\n @HostBinding('class.on-focus')\n get onStackLabelFocus(): boolean {\n return this.expandable && !this.expanded && this.focused;\n }\n\n get labelledById() {\n return this.stackBlockTitle.id;\n }\n\n get headingLevel() {\n if (this.ariaLevel) {\n return this.ariaLevel + '';\n }\n\n return this.parent ? '4' : '3';\n }\n\n get caretDirection(): string {\n return this.expanded ? 'down' : 'right';\n }\n\n get role(): string {\n return this.expandable ? 'button' : null;\n }\n\n get tabIndex(): string {\n return this.expandable ? '0' : null;\n }\n\n get ariaExpanded(): string {\n if (!this.expandable) {\n return null;\n } else {\n return this.expanded ? 'true' : 'false';\n }\n }\n\n ngOnInit(): void {\n // in order to access the parent ClrStackBlock's properties,\n // the child ClrStackBlock has to be fully initialized at first.\n this._fullyInitialized = true;\n }\n\n addChild(): void {\n this.expandable = true;\n }\n\n toggleExpand(event?: Event): void {\n if (eventIsInputEvent(event)) {\n return;\n }\n\n if (this.expandable) {\n this.expanded = !this.expanded;\n this.expandedChange.emit(this.expanded);\n }\n }\n\n getStackChildrenId() {\n return this.expanded ? `clr-stack-children-${this.uniqueId}` : null;\n }\n\n protected preventDefaultIfNotInputEvent(event: Event) {\n if (eventIsInputEvent(event)) {\n return;\n }\n\n event.preventDefault();\n }\n}\n\nfunction eventIsInputEvent(event?: Event) {\n const targetElement = event?.target as HTMLElement;\n\n return targetElement?.tagName === 'INPUT';\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\n\n@Directive({\n selector: '[clrStackInput]',\n host: {\n '[class.clr-input]': 'true',\n '[attr.aria-labelledby]': 'uniqueId',\n },\n})\nexport class ClrStackContentInput {\n uniqueId = uniqueIdFactory();\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-stack-view',\n template: `\n <ng-content select=\"clr-stack-header\"></ng-content>\n <div class=\"stack-view\"><ng-content></ng-content></div>\n `,\n // Custom elements are inline by default.\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class ClrStackView {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrStackView } from './stack-view';\n\n@Component({\n selector: 'clr-stack-header',\n template: `\n <div class=\"stack-header\">\n <h4 class=\"stack-title\"><ng-content></ng-content></h4>\n\n <span class=\"stack-actions\">\n <ng-content select=\".stack-action\"></ng-content>\n </span>\n </div>\n `,\n // Custom elements are inline by default\n styles: [\n `\n :host {\n display: block;\n }\n `,\n ],\n})\nexport class ClrStackHeader {\n constructor(public stackView: ClrStackView) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { angleIcon, ClarityIcons } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrExpandableAnimationModule } from '../../utils/animations/expandable-animation/expandable-animation.module';\nimport { ClrStackBlock } from './stack-block';\nimport { ClrStackContentInput } from './stack-content-input';\nimport { ClrStackHeader } from './stack-header';\nimport { ClrStackView } from './stack-view';\nimport { ClrStackViewCustomTags, ClrStackViewLabel } from './stack-view-custom-tags';\n\nexport const CLR_STACK_VIEW_DIRECTIVES: Type<any>[] = [\n ClrStackView,\n ClrStackHeader,\n ClrStackBlock,\n ClrStackContentInput,\n ClrStackViewLabel,\n ClrStackViewCustomTags,\n];\n\n@NgModule({\n imports: [CommonModule, FormsModule, ClrIconModule, ClrExpandableAnimationModule],\n declarations: [CLR_STACK_VIEW_DIRECTIVES],\n exports: [CLR_STACK_VIEW_DIRECTIVES],\n})\nexport class ClrStackViewModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Optional, SkipSelf, TemplateRef } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { ClrRecursiveForOfContext } from './recursive-for-of';\n\n@Injectable()\nexport class TreeFeaturesService<T> {\n selectable = false;\n eager = true;\n recursion: {\n template: TemplateRef<ClrRecursiveForOfContext<T>>;\n root: RecursiveTreeNodeModel<T>[];\n };\n childrenFetched = new Subject<void>();\n}\n\nexport function treeFeaturesFactory<T>(existing: TreeFeaturesService<T>) {\n return existing || new TreeFeaturesService();\n}\n\nexport const TREE_FEATURES_PROVIDER = {\n provide: TreeFeaturesService,\n useFactory: treeFeaturesFactory,\n /*\n * The Optional + SkipSelf pattern ensures that in case of nested components, only the root one will\n * instantiate a new service and all its children will reuse the root's instance.\n * If there are several roots (in this case, several independent trees on a page), each root will instantiate\n * its own service so they won't interfere with one another.\n *\n * TL;DR - Optional + SkipSelf = 1 instance of TreeFeaturesService per tree.\n */\n deps: [[new Optional(), new SkipSelf(), TreeFeaturesService]],\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input, Optional } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { ClrRecursiveForOfContext } from './recursive-for-of';\nimport { TreeFeaturesService } from './tree-features.service';\n\n@Component({\n selector: 'clr-recursive-children',\n template: `\n <ng-container *ngIf=\"shouldRender()\">\n <ng-container *ngFor=\"let child of parent?.children || children\">\n <ng-container *ngTemplateOutlet=\"featuresService.recursion.template; context: getContext(child)\"></ng-container>\n </ng-container>\n </ng-container>\n `,\n host: {\n '[attr.role]': '\"group\"', // Safari + VO needs direct relationship between treeitem and group; no element should exist between them\n },\n})\n/**\n * Internal component, do not export!\n * This is part of the hack to get around https://github.com/angular/angular/issues/15998\n */\nexport class RecursiveChildren<T> {\n // Offering the option to either give the parent node to recurse potentially lazily,\n // or directly the list of children to display.\n @Input('parent') parent: TreeNodeModel<T>;\n @Input('children') children: TreeNodeModel<T>[];\n\n subscription: Subscription;\n\n constructor(public featuresService: TreeFeaturesService<T>, @Optional() private expandService: IfExpandService) {\n if (expandService) {\n this.subscription = this.expandService.expandChange.subscribe(value => {\n if (!value && this.parent && !this.featuresService.eager && this.featuresService.recursion) {\n // In the case of lazy-loading recursive trees, we clear the children on collapse.\n // This is better in case they change between two user interaction, and that way\n // the app itself can decide whether to cache them or not.\n (this.parent as RecursiveTreeNodeModel<T>).clearChildren();\n }\n });\n }\n }\n\n shouldRender() {\n return (\n this.featuresService.recursion &&\n // In the smart case, we eagerly render all the recursive children\n // to make sure two-way bindings for selection are available.\n // They will be hidden with CSS by the parent.\n (this.featuresService.eager || !this.expandService || this.expandService.expanded)\n );\n }\n\n getContext(node: TreeNodeModel<T>): ClrRecursiveForOfContext<T> {\n return {\n $implicit: node.model,\n clrModel: node,\n };\n }\n\n ngOnDestroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// We need to make sure people can give us null or undefined children even if they run strict type checking.\nimport { Observable } from 'rxjs';\n\nexport type AsyncArray<T> =\n | T[]\n | null\n | undefined\n | Promise<T[] | null | undefined>\n | Observable<T[] | null | undefined>;\n\nexport function isPromise<T>(o: AsyncArray<T>): o is Promise<T[]> {\n // Shamelessly copied from every open-source project out there.\n return o && typeof (o as any).then === 'function';\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// TODO: I'd like this to be a CheckedState enum for the checkboxes in the future.\nexport enum ClrSelectedState {\n // WARNING! Unselected has the value 0,\n // so it's actually the only one that will evaluate to false if cast to a boolean.\n // Don't mess with the order!\n UNSELECTED = 0,\n SELECTED,\n INDETERMINATE,\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { BehaviorSubject } from 'rxjs';\n\nimport { ClrSelectedState } from './selected-state.enum';\n\nexport abstract class TreeNodeModel<T> {\n nodeId: string;\n expanded: boolean;\n model: T | null;\n textContent: string;\n loading$ = new BehaviorSubject(false);\n selected = new BehaviorSubject(ClrSelectedState.UNSELECTED);\n\n /*\n * Being able to push this down to the RecursiveTreeNodeModel would require too much work on the angular components\n * right now for them to know which kind of model they are using. So I'm lifting the public properties to this\n * abstract parent class for now and we can revisit it later, when we're not facing such a close deadline.\n */\n private _loading = false;\n\n /*\n * Ideally, I would like to use a polymorphic this type here to ensure homogeneity of the tree, something like:\n * abstract parent: this<T> | null;\n * abstract children: this<T>[];\n * But I'm hitting limitations on typescript not allowing that type in constructors or static methods.\n * So I'm resorting to forcing override with more precise types by marking these abstract.\n */\n abstract parent: TreeNodeModel<T> | null;\n abstract children: TreeNodeModel<T>[];\n\n get loading() {\n return this._loading;\n }\n set loading(isLoading: boolean) {\n this._loading = isLoading;\n this.loading$.next(isLoading);\n }\n\n destroy() {\n // Just to be safe\n this.selected.complete();\n }\n\n // Propagate by default when eager, don't propagate in the lazy-loaded tree.\n setSelected(state: ClrSelectedState, propagateUp: boolean, propagateDown: boolean) {\n if (state === this.selected.value) {\n return;\n }\n this.selected.next(state);\n if (propagateDown && state !== ClrSelectedState.INDETERMINATE && this.children) {\n this.children.forEach(child => child.setSelected(state, false, true));\n }\n if (propagateUp && this.parent) {\n this.parent._updateSelectionFromChildren();\n }\n }\n\n toggleSelection(propagate: boolean) {\n // Both unselected and indeterminate toggle to selected\n const newState =\n this.selected.value === ClrSelectedState.SELECTED ? ClrSelectedState.UNSELECTED : ClrSelectedState.SELECTED;\n // NOTE: we always propagate selection up in this method because it is only called when the user takes an action.\n // It should never be called from lifecycle hooks or app-provided inputs.\n this.setSelected(newState, true, propagate);\n }\n\n /*\n * Internal, but needs to be called by other nodes\n */\n _updateSelectionFromChildren() {\n const newState = this.computeSelectionStateFromChildren();\n if (newState === this.selected.value) {\n return;\n }\n this.selected.next(newState);\n if (this.parent) {\n this.parent._updateSelectionFromChildren();\n }\n }\n\n private computeSelectionStateFromChildren() {\n let oneSelected = false;\n let oneUnselected = false;\n // Using a good old for loop to exit as soon as we can tell, for better performance on large trees.\n for (const child of this.children) {\n switch (child.selected.value) {\n case ClrSelectedState.INDETERMINATE:\n return ClrSelectedState.INDETERMINATE;\n case ClrSelectedState.SELECTED:\n oneSelected = true;\n if (oneUnselected) {\n return ClrSelectedState.INDETERMINATE;\n }\n break;\n case ClrSelectedState.UNSELECTED:\n default:\n // Default is the same as unselected, in case an undefined somehow made it all the way here.\n oneUnselected = true;\n if (oneSelected) {\n return ClrSelectedState.INDETERMINATE;\n }\n break;\n }\n }\n if (!oneSelected) {\n return ClrSelectedState.UNSELECTED;\n } else if (!oneUnselected) {\n return ClrSelectedState.SELECTED;\n } else {\n return ClrSelectedState.UNSELECTED;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isObservable, Subscription } from 'rxjs';\n\nimport { TreeFeaturesService } from '../tree-features.service';\nimport { AsyncArray, isPromise } from './async-array';\nimport { TreeNodeModel } from './tree-node.model';\n\n/*\n * A recursive model is built received from the app and traversed to create the corresponding components.\n * Recursive = Model dictates the tree node components\n */\nexport class RecursiveTreeNodeModel<T> extends TreeNodeModel<T> {\n parent: RecursiveTreeNodeModel<T> | null;\n\n private subscription: Subscription;\n private childrenFetched = false;\n private _children: RecursiveTreeNodeModel<T>[] = [];\n\n constructor(\n model: T,\n parent: RecursiveTreeNodeModel<T> | null,\n private getChildren: (node: T) => AsyncArray<T> | undefined,\n private featuresService: TreeFeaturesService<T> | undefined\n ) {\n super();\n this.model = model;\n this.parent = parent;\n }\n\n get children(): RecursiveTreeNodeModel<T>[] {\n this.fetchChildren();\n return this._children;\n }\n set children(value: RecursiveTreeNodeModel<T>[]) {\n this._children = value;\n }\n\n override destroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n super.destroy();\n }\n\n clearChildren() {\n this._children.forEach(child => child.destroy());\n delete this._children;\n this.childrenFetched = false;\n }\n\n fetchChildren() {\n if (this.childrenFetched) {\n return;\n }\n\n const asyncChildren = this.getChildren(this.model);\n if (isPromise(asyncChildren)) {\n this.loading = true;\n asyncChildren.then(raw => {\n this._children = this.wrapChildren(raw);\n this.loading = false;\n });\n } else if (isObservable(asyncChildren)) {\n this.loading = true;\n this.subscription = asyncChildren.subscribe(raw => {\n this._children = this.wrapChildren(raw);\n this.loading = false;\n });\n } else if (asyncChildren) {\n // Synchronous case\n this._children = this.wrapChildren(asyncChildren);\n } else {\n this._children = [];\n }\n this.childrenFetched = true;\n if (this.featuresService) {\n this.featuresService.childrenFetched.next();\n }\n }\n\n private wrapChildren(rawModels: T[]) {\n return rawModels.map(m => new RecursiveTreeNodeModel(m, this, this.getChildren, this.featuresService));\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Input, OnChanges, OnDestroy, TemplateRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { debounceTime } from 'rxjs/operators';\n\nimport { AsyncArray } from './models/async-array';\nimport { RecursiveTreeNodeModel } from './models/recursive-tree-node.model';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { TreeFeaturesService } from './tree-features.service';\n\nexport interface ClrRecursiveForOfContext<T> {\n $implicit: T;\n clrModel: TreeNodeModel<T>;\n}\n\n@Directive({\n selector: '[clrRecursiveFor][clrRecursiveForOf]',\n})\nexport class ClrRecursiveForOf<T> implements OnChanges, OnDestroy {\n // TODO: accept NgIterable<T>\n @Input('clrRecursiveForOf') nodes: T | T[];\n\n // TODO: accept NgIterable<T> return type\n @Input('clrRecursiveForGetChildren') getChildren: (node: T) => AsyncArray<T>;\n\n private childrenFetchSubscription: Subscription;\n\n constructor(\n private template: TemplateRef<ClrRecursiveForOfContext<T>>,\n private featuresService: TreeFeaturesService<T>,\n private cdr: ChangeDetectorRef\n ) {}\n\n // I'm using OnChanges instead of OnInit to easily keep up to date with dynamic trees. Maybe optimizable later.\n ngOnChanges() {\n let wrapped: RecursiveTreeNodeModel<T>[];\n if (Array.isArray(this.nodes)) {\n wrapped = this.nodes.map(node => new RecursiveTreeNodeModel(node, null, this.getChildren, this.featuresService));\n } else {\n wrapped = [new RecursiveTreeNodeModel(this.nodes, null, this.getChildren, this.featuresService)];\n }\n if (!this.childrenFetchSubscription) {\n this.childrenFetchSubscription = this.featuresService.childrenFetched.pipe(debounceTime(0)).subscribe(() => {\n this.cdr.detectChanges();\n });\n }\n\n this.featuresService.recursion = {\n template: this.template,\n root: wrapped,\n };\n }\n\n ngOnDestroy() {\n if (this.childrenFetchSubscription) {\n this.childrenFetchSubscription.unsubscribe();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\nimport { TreeNodeModel } from './models/tree-node.model';\n\n@Injectable()\nexport class TreeFocusManagerService<T> {\n rootNodeModels: TreeNodeModel<T>[];\n\n private focusedNodeId: string;\n private _focusRequest = new Subject<string>();\n private _focusChange = new Subject<string>();\n\n get focusRequest(): Observable<string> {\n return this._focusRequest.asObservable();\n }\n\n get focusChange(): Observable<string> {\n return this._focusChange.asObservable();\n }\n\n focusNode(model: TreeNodeModel<T>): void {\n if (model) {\n this._focusRequest.next(model.nodeId);\n }\n }\n\n broadcastFocusedNode(nodeId: string): void {\n if (this.focusedNodeId !== nodeId) {\n this.focusedNodeId = nodeId;\n this._focusChange.next(nodeId);\n }\n }\n\n focusParent(model: TreeNodeModel<T>): void {\n if (model) {\n this.focusNode(model.parent);\n }\n }\n\n focusFirstVisibleNode(): void {\n const focusModel = this.rootNodeModels && this.rootNodeModels[0];\n this.focusNode(focusModel);\n }\n\n focusLastVisibleNode(): void {\n this.focusNode(this.findLastVisibleInTree());\n }\n\n focusNodeAbove(model: TreeNodeModel<T>): void {\n this.focusNode(this.findNodeAbove(model));\n }\n\n focusNodeBelow(model: TreeNodeModel<T>): void {\n this.focusNode(this.findNodeBelow(model));\n }\n\n focusNodeStartsWith(searchString: string, model: TreeNodeModel<T>): void {\n this.focusNode(this.findClosestNodeStartsWith(searchString, model));\n }\n\n private findSiblings(model: TreeNodeModel<T>): TreeNodeModel<T>[] {\n // the method will return not only sibling models but also itself among them\n if (model.parent) {\n return model.parent.children;\n } else {\n return this.rootNodeModels;\n }\n }\n\n private findLastVisibleInNode(model: TreeNodeModel<T>): TreeNodeModel<T> {\n // the method will traverse through until it finds the last visible node from the given node\n if (!model) {\n return null;\n }\n if (model.expanded && model.children.length > 0) {\n const children = model.children;\n const lastChild = children[children.length - 1];\n return this.findLastVisibleInNode(lastChild);\n } else {\n return model;\n }\n }\n\n private findNextFocusable(model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n const siblings = this.findSiblings(model);\n const selfIndex = siblings.indexOf(model);\n\n if (selfIndex < siblings.length - 1) {\n return siblings[selfIndex + 1];\n } else if (selfIndex === siblings.length - 1) {\n return this.findNextFocusable(model.parent);\n }\n return null;\n }\n\n private findLastVisibleInTree(): TreeNodeModel<T> {\n const lastRootNode =\n this.rootNodeModels && this.rootNodeModels.length && this.rootNodeModels[this.rootNodeModels.length - 1];\n return this.findLastVisibleInNode(lastRootNode);\n }\n\n private findNodeAbove(model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n const siblings = this.findSiblings(model);\n const selfIndex = siblings.indexOf(model);\n\n if (selfIndex === 0) {\n return model.parent;\n } else if (selfIndex > 0) {\n return this.findLastVisibleInNode(siblings[selfIndex - 1]);\n }\n return null;\n }\n\n private findNodeBelow(model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n if (model.expanded && model.children.length > 0) {\n return model.children[0];\n } else {\n return this.findNextFocusable(model);\n }\n }\n\n private findDescendentNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (model.expanded && model.children.length > 0) {\n for (const childModel of model.children) {\n const found = this.findNodeStartsWith(searchString, childModel);\n if (found) {\n return found;\n }\n }\n }\n return null;\n }\n\n private findSiblingNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n const siblings = this.findSiblings(model);\n const selfIndex = siblings.indexOf(model);\n\n // Look from sibling nodes\n for (let i = selfIndex + 1; i < siblings.length; i++) {\n const siblingModel = siblings[i];\n const found = this.findNodeStartsWith(searchString, siblingModel);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private findRootNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n for (const rootModel of this.rootNodeModels) {\n // Don't look from a parent yet\n if (model.parent && model.parent === rootModel) {\n continue;\n }\n\n const found = this.findNodeStartsWith(searchString, rootModel);\n if (found) {\n return found;\n }\n }\n return null;\n }\n\n private findNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n if (model.textContent.startsWith(searchString)) {\n return model;\n }\n\n return this.findDescendentNodeStartsWith(searchString, model);\n }\n\n private findClosestNodeStartsWith(searchString: string, model: TreeNodeModel<T>): TreeNodeModel<T> {\n if (!model) {\n return null;\n }\n\n const foundFromDescendents = this.findDescendentNodeStartsWith(searchString, model);\n\n if (foundFromDescendents) {\n return foundFromDescendents;\n }\n\n const foundFromSiblings = this.findSiblingNodeStartsWith(searchString, model);\n\n if (foundFromSiblings) {\n return foundFromSiblings;\n }\n\n const foundFromRootNodes = this.findRootNodeStartsWith(searchString, model);\n\n if (foundFromRootNodes) {\n return foundFromRootNodes;\n }\n // Now look from its own direct parent\n return this.findNodeStartsWith(searchString, model.parent);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { TreeNodeModel } from './tree-node.model';\n\n/*\n * A declarative model is built by traversing the Angular component tree.\n * Declarative = Tree node components dictate the model\n */\nexport class DeclarativeTreeNodeModel<T> extends TreeNodeModel<T> {\n // Override for a more precise type\n parent: DeclarativeTreeNodeModel<T> | null;\n children: DeclarativeTreeNodeModel<T>[];\n\n constructor(parent: DeclarativeTreeNodeModel<T> | null) {\n super();\n this.parent = parent;\n if (parent) {\n parent._addChild(this);\n }\n this.children = [];\n }\n\n override destroy() {\n if (this.parent) {\n this.parent._removeChild(this);\n }\n super.destroy();\n }\n\n _addChild(child: DeclarativeTreeNodeModel<T>) {\n this.children.push(child);\n }\n\n _removeChild(child: DeclarativeTreeNodeModel<T>) {\n const index = this.children.indexOf(child);\n if (index > -1) {\n this.children.splice(index, 1);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '.clr-treenode-link',\n})\nexport class ClrTreeNodeLink {\n constructor(private el: ElementRef<HTMLElement>) {}\n\n get active() {\n return this.el.nativeElement.classList.contains('active');\n }\n\n activate() {\n if (this.el.nativeElement && this.el.nativeElement.click) {\n this.el.nativeElement.click();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n Inject,\n Injector,\n Input,\n OnDestroy,\n OnInit,\n Optional,\n Output,\n PLATFORM_ID,\n QueryList,\n SkipSelf,\n ViewChild,\n} from '@angular/core';\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, filter } from 'rxjs/operators';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { isKeyEitherLetterOrNumber, normalizeKey, preventArrowKeyScroll } from '../../utils/focus/key-focus/util';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { LoadingListener } from '../../utils/loading/loading-listener';\nimport { DeclarativeTreeNodeModel } from './models/declarative-tree-node.model';\nimport { ClrSelectedState } from './models/selected-state.enum';\nimport { TreeNodeModel } from './models/tree-node.model';\nimport { TREE_FEATURES_PROVIDER, TreeFeaturesService } from './tree-features.service';\nimport { TreeFocusManagerService } from './tree-focus-manager.service';\nimport { ClrTreeNodeLink } from './tree-node-link';\n\nconst LVIEW_CONTEXT_INDEX = 8;\n\n// If the user types multiple keys without allowing 200ms to pass between them,\n// then those keys are sent together in one request.\nconst TREE_TYPE_AHEAD_TIMEOUT = 200;\n\n@Component({\n selector: 'clr-tree-node',\n templateUrl: './tree-node.html',\n providers: [TREE_FEATURES_PROVIDER, IfExpandService, { provide: LoadingListener, useExisting: IfExpandService }],\n animations: [\n trigger('toggleChildrenAnim', [\n transition('collapsed => expanded', [style({ height: 0 }), animate(200, style({ height: '*' }))]),\n transition('expanded => collapsed', [style({ height: '*' }), animate(200, style({ height: 0 }))]),\n state('expanded', style({ height: '*', 'overflow-y': 'visible' })),\n state('collapsed', style({ height: 0 })),\n ]),\n ],\n host: {\n '[class.clr-tree-node]': 'true',\n },\n})\nexport class ClrTreeNode<T> implements OnInit, AfterContentInit, AfterViewInit, OnDestroy {\n // Allows the consumer to override our logic deciding if a node is expandable.\n // Useful for recursive trees that don't want to pre-load one level ahead just to know which nodes are expandable.\n @Input('clrExpandable') expandable: boolean | undefined;\n\n @Output('clrSelectedChange') selectedChange = new EventEmitter<ClrSelectedState>(false);\n @Output('clrExpandedChange') expandedChange = new EventEmitter<boolean>();\n\n STATES = ClrSelectedState;\n isModelLoading = false;\n nodeId = uniqueIdFactory();\n contentContainerTabindex = -1;\n _model: TreeNodeModel<T>;\n\n private skipEmitChange = false;\n private typeAheadKeyBuffer = '';\n private typeAheadKeyEvent = new Subject<string>();\n private subscriptions: Subscription[] = [];\n\n @ViewChild('contentContainer', { read: ElementRef, static: true }) private contentContainer: ElementRef;\n\n // @ContentChild would have been more succinct\n // but it doesn't offer a way to query only an immediate child\n @ContentChildren(ClrTreeNodeLink, { descendants: false }) private treeNodeLinkList: QueryList<ClrTreeNodeLink>;\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n @Optional()\n @SkipSelf()\n parent: ClrTreeNode<T>,\n public featuresService: TreeFeaturesService<T>,\n public expandService: IfExpandService,\n public commonStrings: ClrCommonStringsService,\n private focusManager: TreeFocusManagerService<T>,\n private elementRef: ElementRef<HTMLElement>,\n injector: Injector\n ) {\n if (this.featuresService.recursion) {\n // I'm completely stuck, we have to hack into private properties until either\n // https://github.com/angular/angular/issues/14935 or https://github.com/angular/angular/issues/15998\n // are fixed\n // This is for non-ivy implementations\n if ((injector as any).view) {\n this._model = (injector as any).view.context.clrModel;\n } else {\n // Ivy puts this on a specific index of a _lView property\n this._model = (injector as any)._lView[LVIEW_CONTEXT_INDEX].clrModel;\n }\n } else {\n // Force cast for now, not sure how to tie the correct type here to featuresService.recursion\n this._model = new DeclarativeTreeNodeModel(parent ? (parent._model as DeclarativeTreeNodeModel<T>) : null);\n }\n this._model.nodeId = this.nodeId;\n }\n\n @Input('clrSelected')\n get selected(): ClrSelectedState | boolean {\n return this._model.selected.value;\n }\n set selected(value: ClrSelectedState | boolean) {\n this.featuresService.selectable = true;\n // Gracefully handle falsy states like null or undefined because it's just easier than answering questions.\n // This shouldn't happen with strict typing on the app's side, but it's not up to us.\n if (value === null || typeof value === 'undefined') {\n value = ClrSelectedState.UNSELECTED;\n }\n // We match booleans to the corresponding ClrSelectedState\n if (typeof value === 'boolean') {\n value = value ? ClrSelectedState.SELECTED : ClrSelectedState.UNSELECTED;\n }\n // We propagate only if the tree is in smart mode, and skip emitting the output when we set the input\n // See https://github.com/vmware/clarity/issues/3073\n this.skipEmitChange = true;\n this._model.setSelected(value, this.featuresService.eager, this.featuresService.eager);\n this.skipEmitChange = false;\n }\n\n // I'm caving on this, for tree nodes I think we can tolerate having a two-way binding on the component\n // rather than enforce the clrIfExpanded structural directive for dynamic cases. Mostly because for the smart\n // case, you can't use a structural directive, it would need to go on an ng-container.\n @Input('clrExpanded')\n get expanded(): boolean {\n return this.expandService.expanded;\n }\n set expanded(value: boolean) {\n this.expandService.expanded = value;\n }\n\n @Input('clrForTypeAhead')\n set clrForTypeAhead(value: string) {\n this._model.textContent = trimAndLowerCase(value || this.elementRef.nativeElement.textContent);\n }\n\n get ariaSelected(): boolean {\n if (this.isSelectable()) {\n return this._model.selected.value === ClrSelectedState.SELECTED;\n } else if (this.treeNodeLink?.active) {\n return true;\n } else {\n return null;\n }\n }\n\n get treeNodeLink() {\n return this.treeNodeLinkList && this.treeNodeLinkList.first;\n }\n\n private get isParent() {\n return this._model.children && this._model.children.length > 0;\n }\n\n ngOnInit() {\n this._model.expanded = this.expanded;\n this.subscriptions.push(\n this._model.selected.pipe(filter(() => !this.skipEmitChange)).subscribe(value => {\n this.selectedChange.emit(value);\n })\n );\n this.subscriptions.push(\n this.expandService.expandChange.subscribe(value => {\n this.expandedChange.emit(value);\n this._model.expanded = value;\n })\n );\n this.subscriptions.push(\n this.focusManager.focusRequest.subscribe(nodeId => {\n if (this.nodeId === nodeId) {\n this.focusTreeNode();\n }\n }),\n this.focusManager.focusChange.subscribe(nodeId => {\n this.checkTabIndex(nodeId);\n })\n );\n\n this.subscriptions.push(\n this._model.loading$.pipe(debounceTime(0)).subscribe(isLoading => (this.isModelLoading = isLoading))\n );\n }\n\n ngAfterContentInit() {\n this.subscriptions.push(\n this.typeAheadKeyEvent.pipe(debounceTime(TREE_TYPE_AHEAD_TIMEOUT)).subscribe((bufferedKeys: string) => {\n this.focusManager.focusNodeStartsWith(bufferedKeys, this._model);\n // reset once bufferedKeys are used\n this.typeAheadKeyBuffer = '';\n })\n );\n }\n\n ngAfterViewInit() {\n if (!this._model.textContent) {\n this._model.textContent = trimAndLowerCase(this.elementRef.nativeElement.textContent);\n }\n }\n\n ngOnDestroy() {\n this._model.destroy();\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n isExpandable() {\n if (typeof this.expandable !== 'undefined') {\n return this.expandable;\n }\n return !!this.expandService.expandable || this.isParent;\n }\n\n isSelectable() {\n return this.featuresService.selectable;\n }\n\n focusTreeNode(): void {\n const containerEl = this.contentContainer.nativeElement;\n if (isPlatformBrowser(this.platformId) && document.activeElement !== containerEl) {\n this.setTabIndex(0);\n containerEl.focus();\n containerEl.scrollIntoView({ block: 'nearest', inline: 'nearest' });\n }\n }\n\n broadcastFocusOnContainer() {\n this.focusManager.broadcastFocusedNode(this.nodeId);\n }\n\n onKeyDown(event: KeyboardEvent) {\n // Two reasons to prevent default behavior:\n // 1. to prevent scrolling on arrow keys\n // 2. Assistive Technology focus differs from Keyboard focus behavior.\n // By default, pressing arrow key makes AT focus go into the nested content of the item.\n preventArrowKeyScroll(event);\n\n // https://www.w3.org/TR/wai-aria-practices-1.1/#keyboard-interaction-22\n switch (normalizeKey(event.key)) {\n case Keys.ArrowUp:\n this.focusManager.focusNodeAbove(this._model);\n break;\n case Keys.ArrowDown:\n this.focusManager.focusNodeBelow(this._model);\n break;\n case Keys.ArrowRight:\n this.expandOrFocusFirstChild();\n break;\n case Keys.ArrowLeft:\n this.collapseOrFocusParent();\n break;\n case Keys.Home:\n event.preventDefault();\n this.focusManager.focusFirstVisibleNode();\n break;\n case Keys.End:\n event.preventDefault();\n this.focusManager.focusLastVisibleNode();\n break;\n case Keys.Enter:\n this.toggleExpandOrTriggerDefault();\n break;\n case Keys.Space:\n case Keys.Spacebar:\n // to prevent scrolling on space key in this specific case\n event.preventDefault();\n this.toggleExpandOrTriggerDefault();\n break;\n default:\n if (this._model.textContent && isKeyEitherLetterOrNumber(event)) {\n this.typeAheadKeyBuffer += event.key;\n this.typeAheadKeyEvent.next(this.typeAheadKeyBuffer);\n return;\n }\n break;\n }\n\n // if non-letter keys are pressed, do reset.\n this.typeAheadKeyBuffer = '';\n }\n\n private setTabIndex(value: number) {\n this.contentContainerTabindex = value;\n this.contentContainer.nativeElement.setAttribute('tabindex', value);\n }\n\n private checkTabIndex(nodeId: string): void {\n if (isPlatformBrowser(this.platformId) && this.nodeId !== nodeId && this.contentContainerTabindex !== -1) {\n this.setTabIndex(-1);\n }\n }\n\n private toggleExpandOrTriggerDefault() {\n if (this.isExpandable() && !this.isSelectable()) {\n this.expandService.expanded = !this.expanded;\n } else {\n this.triggerDefaultAction();\n }\n }\n\n private expandOrFocusFirstChild() {\n if (this.expanded) {\n // if the node is already expanded and has children, focus its very first child\n if (this.isParent) {\n this.focusManager.focusNodeBelow(this._model);\n }\n } else {\n // we must check if the node is expandable, in order to set .expanded to true from false\n // because we shouldn't set .expanded to true if it's not expandable node\n if (this.isExpandable()) {\n this.expandService.expanded = true;\n }\n }\n }\n\n private collapseOrFocusParent() {\n if (this.expanded) {\n this.expandService.expanded = false;\n } else {\n this.focusManager.focusParent(this._model);\n }\n }\n\n private triggerDefaultAction() {\n if (this.treeNodeLink) {\n this.treeNodeLink.activate();\n } else {\n if (this.isSelectable()) {\n this._model.toggleSelection(this.featuresService.eager);\n }\n }\n }\n}\n\nfunction trimAndLowerCase(value: string) {\n return value.toLocaleLowerCase().trim();\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n #contentContainer\n role=\"treeitem\"\n class=\"clr-tree-node-content-container\"\n tabindex=\"-1\"\n [attr.aria-expanded]=\"isExpandable() ? expanded : null\"\n [attr.aria-selected]=\"ariaSelected\"\n (keydown)=\"onKeyDown($event)\"\n (focus)=\"broadcastFocusOnContainer()\"\n>\n <button\n *ngIf=\"isExpandable() && !isModelLoading && !expandService.loading\"\n aria-hidden=\"true\"\n type=\"button\"\n tabindex=\"-1\"\n class=\"clr-treenode-caret\"\n (click)=\"expandService.toggle();\"\n (focus)=\"focusTreeNode()\"\n >\n <cds-icon\n class=\"clr-treenode-caret-icon\"\n shape=\"angle\"\n [attr.direction]=\"expandService.expanded ? 'down' : 'right'\"\n ></cds-icon>\n </button>\n <div class=\"clr-treenode-spinner-container\" *ngIf=\"expandService.loading || isModelLoading\">\n <span class=\"clr-treenode-spinner spinner\"></span>\n </div>\n <div class=\"clr-checkbox-wrapper clr-treenode-checkbox\" *ngIf=\"featuresService.selectable\">\n <input\n aria-hidden=\"true\"\n type=\"checkbox\"\n id=\"{{nodeId}}-check\"\n class=\"clr-checkbox\"\n [checked]=\"_model.selected.value === STATES.SELECTED\"\n [indeterminate]=\"_model.selected.value === STATES.INDETERMINATE\"\n (change)=\"_model.toggleSelection(featuresService.eager)\"\n (focus)=\"focusTreeNode()\"\n tabindex=\"-1\"\n />\n <label for=\"{{nodeId}}-check\" class=\"clr-control-label\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </label>\n </div>\n <div class=\"clr-treenode-content\" (mousedown)=\"focusTreeNode()\" *ngIf=\"!featuresService.selectable\">\n <ng-container [ngTemplateOutlet]=\"treenodeContent\"></ng-container>\n </div>\n\n <ng-template #treenodeContent>\n <ng-content></ng-content>\n <div class=\"clr-sr-only\" *ngIf=\"featuresService.selectable || ariaSelected\">\n <span *ngIf=\"ariaSelected\"> selected</span>\n <span *ngIf=\"!ariaSelected\"> unselected</span>\n </div>\n </ng-template>\n</div>\n<div\n class=\"clr-treenode-children\"\n [@toggleChildrenAnim]=\"expandService.expanded ? 'expanded' : 'collapsed'\"\n [attr.role]=\"isExpandable() && !featuresService.recursion ? 'group' : null\"\n>\n <ng-content select=\"clr-tree-node\"></ng-content>\n <ng-content select=\"[clrIfExpanded]\"></ng-content>\n <clr-recursive-children [parent]=\"_model\"></clr-recursive-children>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport { fromEvent, Subscription } from 'rxjs';\n\nimport { TREE_FEATURES_PROVIDER, TreeFeaturesService } from './tree-features.service';\nimport { TreeFocusManagerService } from './tree-focus-manager.service';\nimport { ClrTreeNode } from './tree-node';\n\n@Component({\n selector: 'clr-tree',\n template: `\n <ng-content></ng-content>\n <clr-recursive-children\n *ngIf=\"featuresService.recursion\"\n [children]=\"featuresService.recursion.root\"\n ></clr-recursive-children>\n `,\n providers: [TREE_FEATURES_PROVIDER, TreeFocusManagerService],\n host: {\n tabindex: '0',\n '[attr.role]': '\"tree\"',\n '[attr.aria-multiselectable]': 'isMultiSelectable',\n },\n})\nexport class ClrTree<T> implements AfterContentInit, OnDestroy {\n @ContentChildren(ClrTreeNode) private rootNodes: QueryList<ClrTreeNode<T>>;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n public featuresService: TreeFeaturesService<T>,\n private focusManagerService: TreeFocusManagerService<T>,\n { nativeElement }: ElementRef<HTMLElement>,\n renderer: Renderer2,\n ngZone: NgZone\n ) {\n const subscription = ngZone.runOutsideAngular(() =>\n fromEvent(nativeElement, 'focusin').subscribe((event: FocusEvent) => {\n if (event.target === nativeElement) {\n // After discussing with the team, I've made it so that when the tree receives focus, the first visible node will be focused.\n // This will prevent from the page scrolling abruptly to the first selected node if it exist in a deeply nested tree.\n this.focusManagerService.focusFirstVisibleNode();\n // when the first child gets focus,\n // tree should no longer have tabindex of 0.\n renderer.removeAttribute(nativeElement, 'tabindex');\n }\n })\n );\n\n this.subscriptions.push(subscription);\n }\n\n @Input('clrLazy')\n set lazy(value: boolean) {\n this.featuresService.eager = !value;\n }\n\n get isMultiSelectable() {\n return this.featuresService.selectable && this.rootNodes.length > 0;\n }\n\n ngAfterContentInit() {\n this.setRootNodes();\n this.subscriptions.push(\n this.rootNodes.changes.subscribe(() => {\n this.setRootNodes();\n })\n );\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n private setRootNodes(): void {\n // if node has no parent, it's a root node\n // for recursive tree, this.rootNodes registers also nested children\n // so we have to use filter to extract the ones that are truly root nodes\n this.focusManagerService.rootNodeModels = this.rootNodes.map(node => node._model).filter(node => !node.parent);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { angleIcon, ClarityIcons } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrLoadingModule } from '../../utils/loading/loading.module';\nimport { RecursiveChildren } from './recursive-children';\nimport { ClrRecursiveForOf } from './recursive-for-of';\nimport { ClrTree } from './tree';\nimport { ClrTreeNode } from './tree-node';\nimport { ClrTreeNodeLink } from './tree-node-link';\n\nexport const CLR_TREE_VIEW_DIRECTIVES: Type<any>[] = [ClrTree, ClrTreeNode, ClrRecursiveForOf, ClrTreeNodeLink];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrLoadingModule],\n declarations: [CLR_TREE_VIEW_DIRECTIVES, RecursiveChildren],\n exports: [CLR_TREE_VIEW_DIRECTIVES],\n})\nexport class ClrTreeViewModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { ClrDatagridModule } from './datagrid/datagrid.module';\nimport { ClrStackViewModule } from './stack-view/stack-view.module';\nimport { ClrTreeViewModule } from './tree-view/tree-view.module';\n\n@NgModule({\n exports: [ClrDatagridModule, ClrStackViewModule, ClrTreeViewModule],\n})\nexport class ClrDataModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable, Observer } from 'rxjs';\n\nexport function wrapObservable<T>(\n observable: Observable<T>,\n onSubscribe?: (observer: Observer<T>) => void,\n onUnsubscribe?: (observer: Observer<T>) => void\n): Observable<T> {\n return Observable.create((observer: Observer<T>) => {\n onSubscribe(observer);\n const subscription = observable.subscribe(observer);\n return () => {\n subscription.unsubscribe();\n if (onUnsubscribe) {\n onUnsubscribe(observer);\n }\n };\n });\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Inject, Injectable, OnDestroy, Optional, PLATFORM_ID, Renderer2, SkipSelf } from '@angular/core';\nimport { Observable, of, ReplaySubject } from 'rxjs';\nimport { map, take } from 'rxjs/operators';\n\nimport { ArrowKeyDirection } from '../../../utils/focus/arrow-key-direction.enum';\nimport { FocusService } from '../../../utils/focus/focus.service';\nimport { customFocusableItemProvider } from '../../../utils/focus/focusable-item/custom-focusable-item-provider';\nimport { FocusableItem } from '../../../utils/focus/focusable-item/focusable-item';\nimport { Linkers } from '../../../utils/focus/focusable-item/linkers';\nimport { wrapObservable } from '../../../utils/focus/wrap-observable';\nimport { uniqueIdFactory } from '../../../utils/id-generator/id-generator.service';\nimport { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\n\n@Injectable()\nexport class DropdownFocusHandler implements OnDestroy, FocusableItem {\n id = uniqueIdFactory();\n focusBackOnTriggerWhenClosed = false;\n\n right?: Observable<FocusableItem>;\n down?: Observable<FocusableItem>;\n up?: Observable<FocusableItem>;\n\n private _trigger: HTMLElement;\n private _container: HTMLElement;\n private children: ReplaySubject<FocusableItem[]>;\n private _unlistenFuncs: (() => void)[] = [];\n\n constructor(\n private renderer: Renderer2,\n @SkipSelf()\n @Optional()\n private parent: DropdownFocusHandler,\n private toggleService: ClrPopoverToggleService,\n private focusService: FocusService,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n this.resetChildren();\n this.moveToFirstItemWhenOpen();\n if (!this.parent) {\n this.handleRootFocus();\n }\n }\n\n get trigger() {\n return this._trigger;\n }\n set trigger(el: HTMLElement) {\n this._trigger = el;\n\n if (this.parent) {\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.arrowright', event => this.toggleService.toggleWithEvent(event))\n );\n } else {\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.arrowup', event => this.toggleService.toggleWithEvent(event))\n );\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.arrowdown', event => this.toggleService.toggleWithEvent(event))\n );\n this.focusService.listenToArrowKeys(el);\n }\n }\n\n get container() {\n return this._container;\n }\n set container(el: HTMLElement) {\n this._container = el;\n\n // whether root container or not, tab key should always toggle (i.e. close) the container\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.tab', event => this.toggleService.toggleWithEvent(event))\n );\n\n if (this.parent) {\n // if it's a nested container, pressing escape has the same effect as pressing left key, which closes the current\n // popup and moves up to its parent. Here, we stop propagation so that the parent container\n // doesn't receive the escape keydown\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.escape', event => {\n this.focusService.move(ArrowKeyDirection.LEFT);\n event.stopPropagation();\n })\n );\n } else {\n // The root container is the only one we register to the focus service, others do not need focus\n this.focusService.registerContainer(el);\n\n // The root container will simply close the container when escape key is pressed\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'keydown.escape', event => this.toggleService.toggleWithEvent(event))\n );\n\n // When the user moves focus outside of the menu, we close the dropdown\n this._unlistenFuncs.push(\n this.renderer.listen(el, 'blur', event => {\n // we clear out any existing focus on the items\n this.children.pipe(take(1)).subscribe(items => items.forEach(item => item.blur()));\n\n // event.relatedTarget is null in IE11. In that case we use document.activeElement which correctly points\n // to the element we want to check. Note that other browsers might point document.activeElement to the\n // wrong element. This is ok, because all the other browsers we support relies on event.relatedTarget.\n const target = event.relatedTarget || document.activeElement;\n\n // If the user clicks on an item which triggers the blur, we don't want to close it since it may open a submenu.\n // In the case of needing to close it (i.e. user selected an item and the dropdown menu is set to close on\n // selection), dropdown-item.ts handles it.\n if (target && isPlatformBrowser(this.platformId)) {\n if (el.contains(target) || target === this.trigger) {\n return;\n }\n }\n // We let the user move focus to where the want, we don't force the focus back on the trigger\n this.focusBackOnTriggerWhenClosed = false;\n this.toggleService.open = false;\n })\n );\n }\n }\n\n ngOnDestroy() {\n this._unlistenFuncs.forEach((unlisten: () => void) => unlisten());\n this.focusService.detachListeners();\n }\n\n /**\n * If the dropdown was opened by clicking on the trigger, we automatically move to the first item\n */\n moveToFirstItemWhenOpen() {\n const subscription = this.toggleService.openChange.subscribe(open => {\n if (open && this.toggleService.originalEvent) {\n // Even if we properly waited for ngAfterViewInit, the container still wouldn't be attached to the DOM.\n // So setTimeout is the only way to wait for the container to be ready to move focus to first item.\n setTimeout(() => {\n this.focusService.moveTo(this);\n if (this.parent) {\n this.focusService.move(ArrowKeyDirection.RIGHT);\n } else {\n this.focusService.move(ArrowKeyDirection.DOWN);\n }\n });\n }\n });\n\n this._unlistenFuncs.push(() => subscription.unsubscribe());\n }\n\n /**\n * Focus on the menu when it opens, and focus back on the root trigger when the whole dropdown becomes closed\n */\n handleRootFocus() {\n const subscription = this.toggleService.openChange.subscribe(open => {\n if (!open) {\n // We reset the state of the focus service both on initialization and when closing.\n this.focusService.reset(this);\n // But we only actively focus the trigger when closing, not on initialization.\n if (this.focusBackOnTriggerWhenClosed) {\n this.focus();\n }\n }\n this.focusBackOnTriggerWhenClosed = open;\n });\n\n this._unlistenFuncs.push(() => subscription.unsubscribe());\n }\n\n focus() {\n if (this.trigger && isPlatformBrowser(this.platformId)) {\n this.trigger.focus();\n }\n }\n\n blur() {\n if (this.trigger && isPlatformBrowser(this.platformId)) {\n this.trigger.blur();\n }\n }\n\n activate() {\n if (isPlatformBrowser(this.platformId)) {\n this.trigger.click();\n }\n }\n\n resetChildren() {\n this.children = new ReplaySubject<FocusableItem[]>(1);\n if (this.parent) {\n this.right = this.openAndGetChildren().pipe(map(all => all[0]));\n } else {\n this.down = this.openAndGetChildren().pipe(map(all => all[0]));\n this.up = this.openAndGetChildren().pipe(map(all => all[all.length - 1]));\n }\n }\n\n addChildren(children: FocusableItem[]) {\n Linkers.linkVertical(children);\n if (this.parent) {\n Linkers.linkParent(children, this.closeAndGetThis(), ArrowKeyDirection.LEFT);\n }\n this.children.next(children);\n }\n\n private openAndGetChildren() {\n return wrapObservable(this.children, () => (this.toggleService.open = true));\n }\n\n private closeAndGetThis() {\n return wrapObservable(of(this), () => (this.toggleService.open = false));\n }\n}\n\nexport const DROPDOWN_FOCUS_HANDLER_PROVIDER = customFocusableItemProvider(DropdownFocusHandler);\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class RootDropdownService {\n private _changes = new Subject<boolean>();\n\n get changes(): Observable<boolean> {\n return this._changes.asObservable();\n }\n\n closeMenus(): void {\n this._changes.next(false);\n }\n}\n\nexport function clrRootDropdownFactory(existing: RootDropdownService) {\n return existing || new RootDropdownService();\n}\n\nexport const ROOT_DROPDOWN_PROVIDER = {\n provide: RootDropdownService,\n useFactory: clrRootDropdownFactory,\n deps: [[new Optional(), new SkipSelf(), RootDropdownService]],\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Component, Input, OnDestroy, Optional, SkipSelf } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { FOCUS_SERVICE_PROVIDER } from '../../utils/focus/focus.service';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { DROPDOWN_FOCUS_HANDLER_PROVIDER, DropdownFocusHandler } from './providers/dropdown-focus-handler.service';\nimport { ROOT_DROPDOWN_PROVIDER, RootDropdownService } from './providers/dropdown.service';\n\n@Component({\n selector: 'clr-dropdown',\n template: '<ng-content></ng-content>',\n host: {\n '[class.dropdown]': 'true',\n '[class.open]': 'toggleService.open',\n },\n providers: [ROOT_DROPDOWN_PROVIDER, FOCUS_SERVICE_PROVIDER, DROPDOWN_FOCUS_HANDLER_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrDropdown implements OnDestroy {\n @Input('clrCloseMenuOnItemClick') isMenuClosable = true;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n @SkipSelf()\n @Optional()\n public parent: ClrDropdown,\n public toggleService: ClrPopoverToggleService,\n public focusHandler: DropdownFocusHandler,\n private cdr: ChangeDetectorRef,\n dropdownService: RootDropdownService\n ) {\n this.subscriptions.push(dropdownService.changes.subscribe(value => (this.toggleService.open = value)));\n this.subscriptions.push(toggleService.openChange.subscribe(() => this.cdr.markForCheck()));\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { ElementRef, Inject, Injectable, PLATFORM_ID, Renderer2 } from '@angular/core';\n\nimport { uniqueIdFactory } from '../../id-generator/id-generator.service';\nimport { FocusableItem } from './focusable-item';\n\n@Injectable()\nexport class BasicFocusableItem implements FocusableItem {\n id = uniqueIdFactory();\n disabled = false;\n\n constructor(\n private el: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n @Inject(PLATFORM_ID) private platformId: any\n ) {\n renderer.setAttribute(el.nativeElement, 'id', this.id);\n renderer.setAttribute(el.nativeElement, 'tabindex', '-1');\n }\n\n focus() {\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '0');\n this.el.nativeElement.focus();\n this.el.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n }\n }\n blur() {\n if (isPlatformBrowser(this.platformId)) {\n this.renderer.setAttribute(this.el.nativeElement, 'tabindex', '-1');\n this.el.nativeElement.blur();\n }\n }\n\n activate() {\n if (isPlatformBrowser(this.platformId)) {\n this.el.nativeElement.click();\n }\n }\n}\n\nexport const BASIC_FOCUSABLE_ITEM_PROVIDER = [\n {\n provide: FocusableItem,\n useClass: BasicFocusableItem,\n },\n];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostListener, Input } from '@angular/core';\n\nimport { BASIC_FOCUSABLE_ITEM_PROVIDER } from '../../utils/focus/focusable-item/basic-focusable-item.service';\nimport { FocusableItem } from '../../utils/focus/focusable-item/focusable-item';\nimport { ClrDropdown } from './dropdown';\nimport { RootDropdownService } from './providers/dropdown.service';\n\n@Directive({\n selector: '[clrDropdownItem]',\n host: {\n '[class.disabled]': 'disabled',\n '[class.dropdown-item]': 'true',\n '[attr.role]': '\"menuitem\"',\n '[attr.aria-disabled]': 'disabled',\n '[attr.id]': 'dropdownItemId',\n },\n providers: [BASIC_FOCUSABLE_ITEM_PROVIDER],\n})\nexport class ClrDropdownItem {\n constructor(\n private dropdown: ClrDropdown,\n private _dropdownService: RootDropdownService,\n private focusableItem: FocusableItem\n ) {}\n\n @Input('clrDisabled')\n get disabled() {\n return this.focusableItem.disabled;\n }\n set disabled(value: boolean | string) {\n // Empty string attribute evaluates to false but should disable the item, so we need to add a special case for it.\n this.focusableItem.disabled = !!value || value === '';\n }\n\n /**\n * Let you overwrite the focusable auto increment id.\n */\n @Input('id')\n get dropdownItemId() {\n return this.focusableItem.id;\n }\n set dropdownItemId(value: string) {\n this.focusableItem.id = value;\n }\n\n @HostListener('click')\n private onDropdownItemClick(): void {\n // Move focus back to the root dropdown trigger.\n // This is done BEFORE the dropdown is closed so that focus gets moved properly if a modal is opened.\n if (this.dropdown.isMenuClosable && !this.disabled && this.dropdown.toggleService.open) {\n const rootDropdown = this.findRootDropdown();\n\n rootDropdown.focusHandler.focus();\n // Prevent moving focus back to the trigger when the dropdown menu is closed.\n // Without this line, focus could be \"stolen\" from a modal that was opened from a dropdown item.\n rootDropdown.focusHandler.focusBackOnTriggerWhenClosed = false;\n }\n\n // Ensure that the dropdown is closed after custom dropdown item click event handlers have run.\n setTimeout(() => {\n if (this.dropdown.isMenuClosable && !this.disabled) {\n this._dropdownService.closeMenus();\n }\n });\n }\n\n @HostListener('keydown.space', ['$event'])\n private onSpaceKeydown($event: KeyboardEvent) {\n this.stopImmediatePropagationIfDisabled($event);\n }\n\n @HostListener('keydown.enter', ['$event'])\n private onEnterKeydown($event: KeyboardEvent) {\n this.stopImmediatePropagationIfDisabled($event);\n }\n\n private stopImmediatePropagationIfDisabled($event: Event) {\n if (this.disabled) {\n $event.preventDefault(); // prevent click event\n $event.stopImmediatePropagation();\n }\n }\n\n private findRootDropdown() {\n let rootDropdown = this.dropdown;\n\n while (rootDropdown.parent) {\n rootDropdown = rootDropdown.parent;\n }\n\n return rootDropdown;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n/*\n * Do NOT Angular this up. It assumes we're in the DOM, plays with native elements, ...\n * It could potentially be used as part of @clr/ui as a vanilla Javascript helper.\n */\n\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { PopoverOptions } from './popover-options.interface';\nexport enum Point {\n RIGHT_CENTER,\n RIGHT_TOP,\n RIGHT_BOTTOM,\n TOP_CENTER,\n TOP_RIGHT,\n TOP_LEFT,\n BOTTOM_CENTER,\n BOTTOM_RIGHT,\n BOTTOM_LEFT,\n LEFT_CENTER,\n LEFT_TOP,\n LEFT_BOTTOM,\n}\n\nconst POSITION_RELATIVE = 'relative';\nconst POSITION_ABSOLUTE = 'absolute';\nconst POSITION_FIXED = 'fixed';\n\nconst OVERFLOW_SCROLL = 'scroll';\nconst OVERFLOW_AUTO = 'auto';\n\nexport class Popover {\n private _scroll: Subject<void>;\n private boundOnScrollListener: any = this.emitScrollEvent.bind(this);\n\n /*\n * Containers up to the first positioned one will have an event on scroll\n */\n private scrollableElements: HTMLElement[] = [];\n\n constructor(private element: any) {\n // Browsers don't agree with what to do if some of these are not specified, so we set them all to be safe.\n element.style.position = POSITION_ABSOLUTE;\n element.style.top = 0;\n element.style.bottom = 'auto';\n element.style.left = 0;\n element.style.right = 'auto';\n }\n\n // TODO: need a way to account for parameters that change dynamically (positioning).\n anchor(\n anchor: any,\n anchorAlign: Point,\n popoverAlign: Point,\n { offsetX = 0, offsetY = 0, useAnchorParent = false }: PopoverOptions = {}\n ): Observable<any> {\n // TODO: we are assuming here that the popover is inside or next to the anchor.\n // We'd need to go up the popover tree too otherwise\n\n this.addScrollEventListeners(anchor);\n if (useAnchorParent) {\n anchor = anchor.parentNode;\n }\n // explicitly override anchor's style to static\n anchor.style.position = 'static';\n\n const anchorRect = anchor.getBoundingClientRect();\n const popoverRect = this.element.getBoundingClientRect();\n\n // position of left top corner of anchor + the offset\n let leftDiff: number = anchorRect.left - popoverRect.left + offsetX;\n let topDiff: number = anchorRect.top - popoverRect.top + offsetY;\n\n // first, adjust positioning based on anchor's align point\n switch (anchorAlign) {\n case Point.LEFT_TOP:\n case Point.TOP_LEFT:\n break;\n case Point.TOP_CENTER:\n leftDiff += anchorRect.width / 2;\n break;\n case Point.TOP_RIGHT:\n leftDiff += anchorRect.width;\n break;\n case Point.RIGHT_TOP:\n leftDiff += anchorRect.width;\n break;\n case Point.LEFT_BOTTOM:\n topDiff += anchorRect.height;\n break;\n case Point.BOTTOM_LEFT:\n topDiff += anchorRect.height;\n break;\n case Point.BOTTOM_CENTER:\n topDiff += anchorRect.height;\n leftDiff += anchorRect.width / 2;\n break;\n case Point.BOTTOM_RIGHT:\n topDiff += anchorRect.height;\n leftDiff += anchorRect.width;\n break;\n case Point.RIGHT_BOTTOM:\n topDiff += anchorRect.height;\n leftDiff += anchorRect.width;\n break;\n case Point.LEFT_CENTER:\n topDiff += anchorRect.height / 2;\n break;\n case Point.RIGHT_CENTER:\n topDiff += anchorRect.height / 2;\n leftDiff += anchorRect.width;\n break;\n default:\n }\n\n // second, adjust positioning based on popover's align point\n switch (popoverAlign) {\n case Point.LEFT_TOP:\n case Point.TOP_LEFT:\n break;\n case Point.TOP_CENTER:\n leftDiff -= popoverRect.width / 2;\n break;\n case Point.TOP_RIGHT:\n leftDiff -= popoverRect.width;\n break;\n case Point.RIGHT_TOP:\n leftDiff -= popoverRect.width;\n break;\n case Point.LEFT_BOTTOM:\n topDiff -= popoverRect.height;\n break;\n case Point.BOTTOM_LEFT:\n topDiff -= popoverRect.height;\n break;\n case Point.BOTTOM_CENTER:\n topDiff -= popoverRect.height;\n leftDiff -= popoverRect.width / 2;\n break;\n case Point.BOTTOM_RIGHT:\n topDiff -= popoverRect.height;\n leftDiff -= popoverRect.width;\n break;\n case Point.RIGHT_BOTTOM:\n topDiff -= popoverRect.height;\n leftDiff -= popoverRect.width;\n break;\n case Point.LEFT_CENTER:\n topDiff -= popoverRect.height / 2;\n break;\n case Point.RIGHT_CENTER:\n topDiff -= popoverRect.height / 2;\n leftDiff -= popoverRect.width;\n break;\n default:\n }\n\n // Third, adjust with popover's margins based on the two align points.\n // Here, we make an assumption that popover is primarily positioned outside the\n // anchor with minor offset. Without this assumption, it's impossible to apply\n // the popover's margins in a predictable way. For example, assume that a popover\n // and its anchor are exactly the same size. if a popover is positioned inside the\n // anchor (which is technically possible), then it becomes impossible to know what to do\n // if the popover has a non-zero margin value all around (because applying the margin in\n // all four directions will result in no margin visually, which isn't what we want).\n // Therefore, our logic makes assumptions about margins of interest given the points,\n // and only covers the cases where popover is outside the anchor.\n\n const popoverComputedStyle = getComputedStyle(this.element);\n const marginLeft = parseInt(popoverComputedStyle.marginLeft, 10);\n const marginRight = parseInt(popoverComputedStyle.marginRight, 10);\n const marginTop = parseInt(popoverComputedStyle.marginTop, 10);\n const marginBottom = parseInt(popoverComputedStyle.marginBottom, 10);\n\n switch (anchorAlign) {\n case Point.LEFT_TOP:\n case Point.TOP_LEFT:\n case Point.TOP_RIGHT:\n case Point.RIGHT_TOP:\n if (popoverAlign === Point.BOTTOM_RIGHT || popoverAlign === Point.RIGHT_BOTTOM) {\n topDiff -= marginBottom;\n leftDiff -= marginRight;\n }\n if (popoverAlign === Point.BOTTOM_LEFT || popoverAlign === Point.LEFT_BOTTOM) {\n topDiff -= marginTop;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.TOP_LEFT || popoverAlign === Point.LEFT_TOP) {\n topDiff += marginTop;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.TOP_RIGHT || popoverAlign === Point.RIGHT_TOP) {\n topDiff += marginTop;\n leftDiff -= marginRight;\n }\n break;\n case Point.LEFT_BOTTOM:\n case Point.BOTTOM_LEFT:\n case Point.BOTTOM_RIGHT:\n case Point.RIGHT_BOTTOM:\n if (popoverAlign === Point.BOTTOM_LEFT || popoverAlign === Point.LEFT_BOTTOM) {\n topDiff -= marginBottom;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.BOTTOM_RIGHT || popoverAlign === Point.RIGHT_BOTTOM) {\n topDiff -= marginBottom;\n leftDiff -= marginRight;\n }\n if (popoverAlign === Point.TOP_LEFT || popoverAlign === Point.LEFT_TOP) {\n topDiff += marginTop;\n leftDiff += marginLeft;\n }\n if (popoverAlign === Point.TOP_RIGHT || popoverAlign === Point.RIGHT_TOP) {\n topDiff += marginTop;\n leftDiff -= marginRight;\n }\n break;\n case Point.TOP_CENTER:\n topDiff -= marginBottom;\n leftDiff += marginLeft;\n leftDiff -= marginRight;\n break;\n case Point.BOTTOM_CENTER:\n topDiff += marginTop;\n leftDiff += marginLeft;\n leftDiff -= marginRight;\n break;\n case Point.LEFT_CENTER:\n topDiff += marginTop;\n topDiff -= marginBottom;\n leftDiff -= marginRight;\n break;\n case Point.RIGHT_CENTER:\n topDiff += marginTop;\n topDiff -= marginBottom;\n leftDiff += marginLeft;\n break;\n default:\n }\n\n this.element.style.transform = `translateX(${Math.round(leftDiff)}px) translateY(${Math.round(topDiff)}px)`;\n return this._scroll.asObservable();\n }\n\n release() {\n this.element.style.transform = '';\n this.removeScrollEventListeners();\n }\n\n private isPositioned(container: any) {\n const position = getComputedStyle(container).position;\n return position === POSITION_RELATIVE || position === POSITION_ABSOLUTE || position === POSITION_FIXED;\n }\n\n private emitScrollEvent() {\n this._scroll.next();\n }\n\n private addScrollEventListeners(e: any) {\n this._scroll = new Subject<void>();\n const anchor: any = e;\n let current: any = e;\n while (current && current !== document) {\n if (this.scrolls(current)) {\n current.addEventListener('scroll', this.boundOnScrollListener);\n this.scrollableElements.push(current);\n }\n if (current !== anchor && this.isPositioned(current)) {\n break;\n }\n current = current.parentNode;\n }\n }\n\n private removeScrollEventListeners() {\n for (const elem of this.scrollableElements) {\n elem.removeEventListener('scroll', this.boundOnScrollListener);\n }\n this.scrollableElements.length = 0;\n if (this._scroll) {\n this._scroll.complete();\n delete this._scroll;\n }\n }\n\n private scrolls(container: any): boolean {\n const computedStyles = getComputedStyle(container);\n return (\n computedStyles.overflowX === OVERFLOW_SCROLL ||\n computedStyles.overflowX === OVERFLOW_AUTO ||\n computedStyles.overflowY === OVERFLOW_SCROLL ||\n computedStyles.overflowY === OVERFLOW_AUTO\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterViewChecked,\n ChangeDetectorRef,\n Directive,\n ElementRef,\n HostBinding,\n Injector,\n NgZone,\n OnDestroy,\n Renderer2,\n SkipSelf,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { Keys } from '../../utils/enums/keys.enum';\nimport { normalizeKey } from '../../utils/focus/key-focus/util';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { Point, Popover } from './popover';\nimport { PopoverOptions } from './popover-options.interface';\n\n@Directive()\nexport abstract class AbstractPopover implements AfterViewChecked, OnDestroy {\n /*\n * Until https://github.com/angular/angular/issues/8785 is supported, we don't have any way to instantiate\n * a separate directive on the host. So let's do dirty but performant for now.\n */\n closeOnOutsideClick = false;\n\n protected el: ElementRef;\n protected toggleService: ClrPopoverToggleService;\n protected renderer: Renderer2;\n protected ngZone: NgZone;\n protected ref: ChangeDetectorRef;\n protected anchorElem: any;\n protected anchorPoint: Point;\n protected popoverPoint: Point;\n protected popoverOptions: PopoverOptions = {};\n protected ignoredElement: any;\n\n private updateAnchor = false;\n private popoverInstance: Popover;\n private subscription: Subscription;\n private documentESCListener: VoidFunction | null = null;\n\n constructor(injector: Injector, @SkipSelf() protected parentHost: ElementRef) {\n this.el = injector.get(ElementRef);\n this.toggleService = injector.get(ClrPopoverToggleService);\n this.renderer = injector.get(Renderer2);\n this.ngZone = injector.get(NgZone);\n this.ref = injector.get(ChangeDetectorRef);\n // Default anchor is the parent host\n this.anchorElem = parentHost.nativeElement;\n\n this.popoverInstance = new Popover(this.el.nativeElement);\n this.subscription = this.toggleService.openChange.subscribe(change => {\n if (change) {\n this.anchor();\n this.attachESCListener();\n } else {\n this.release();\n this.detachESCListener();\n }\n });\n if (this.toggleService.open) {\n this.anchor();\n this.attachESCListener();\n }\n }\n\n /*\n * Fallback to hide when *clrIfOpen is not being used\n */\n @HostBinding('class.is-off-screen')\n get isOffScreen() {\n return this.toggleService.open ? false : true;\n }\n\n ngAfterViewChecked() {\n if (this.updateAnchor) {\n this.updateAnchor = false;\n this.popoverInstance\n .anchor(this.anchorElem, this.anchorPoint, this.popoverPoint, this.popoverOptions)\n .subscribe(() => {\n // if a scroll event is detected, close the popover\n this.toggleService.open = false;\n });\n this.attachOutsideClickListener();\n }\n }\n\n ngOnDestroy() {\n this.release();\n this.detachESCListener();\n this.subscription.unsubscribe();\n }\n\n protected anchor() {\n this.updateAnchor = true;\n }\n\n protected release() {\n this.detachOutsideClickListener();\n this.popoverInstance.release();\n }\n\n private attachESCListener(): void {\n if (this.popoverOptions.ignoreGlobalESCListener) {\n return;\n }\n\n this.ngZone.runOutsideAngular(() => {\n this.documentESCListener = this.renderer.listen('document', 'keydown', event => {\n if (event && event.key) {\n if (normalizeKey(event.key) === Keys.Escape) {\n this.ngZone.run(() => {\n this.toggleService.open = false;\n this.ref.markForCheck();\n });\n }\n }\n });\n });\n }\n\n private detachESCListener(): void {\n if (this.documentESCListener) {\n this.documentESCListener();\n this.documentESCListener = null;\n }\n }\n\n private closeOnOutsideClickCallback = event => {\n // The anchor element containing the click event origin means, the click wasn't triggered outside.\n if (this.anchorElem.contains(event.target)) {\n return;\n }\n this.toggleService.open = false;\n };\n\n private attachOutsideClickListener() {\n if (this.closeOnOutsideClick && this.toggleService.open) {\n if (document && document.addEventListener) {\n // To listen outside click, the listener should catch the event during the capturing phase.\n // We have to do this ugly document check as Renderer2.listen doesn't allow passive/useCapture listen.\n document.addEventListener('click', this.closeOnOutsideClickCallback, true);\n }\n }\n }\n\n private detachOutsideClickListener() {\n if (this.closeOnOutsideClick) {\n if (document && document.removeEventListener) {\n document.removeEventListener('click', this.closeOnOutsideClickCallback, true);\n }\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n Inject,\n Injector,\n Input,\n OnDestroy,\n Optional,\n QueryList,\n SkipSelf,\n} from '@angular/core';\n\nimport { FocusableItem } from '../../utils/focus/focusable-item/focusable-item';\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { Point } from '../common/popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { DropdownFocusHandler } from './providers/dropdown-focus-handler.service';\n\n@Component({\n selector: 'clr-dropdown-menu',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.dropdown-menu]': 'true',\n '[attr.role]': '\"menu\"',\n },\n})\nexport class ClrDropdownMenu extends AbstractPopover implements AfterContentInit, OnDestroy {\n @ContentChildren(FocusableItem) items: QueryList<FocusableItem>;\n\n private focusHandler: DropdownFocusHandler;\n\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef<HTMLElement>,\n @Optional()\n @SkipSelf()\n nested: ClrDropdownMenu,\n focusHandler: DropdownFocusHandler\n ) {\n if (!parentHost) {\n throw new Error('clr-dropdown-menu should only be used inside of a clr-dropdown');\n }\n super(injector, parentHost);\n if (!nested) {\n // Default positioning for normal dropdown is bottom-left\n this.anchorPoint = Point.BOTTOM_LEFT;\n this.popoverPoint = Point.LEFT_TOP;\n } else {\n // Default positioning for nested dropdown is right-top\n this.anchorPoint = Point.RIGHT_TOP;\n this.popoverPoint = Point.LEFT_TOP;\n }\n this.popoverOptions.allowMultipleOpen = true;\n this.popoverOptions.ignoreGlobalESCListener = true;\n this.closeOnOutsideClick = true;\n this.focusHandler = focusHandler;\n }\n\n @Input('clrPosition')\n set position(position: string) {\n // set the popover values based on menu position\n switch (position) {\n case 'top-right':\n this.anchorPoint = Point.TOP_RIGHT;\n this.popoverPoint = Point.RIGHT_BOTTOM;\n break;\n case 'top-left':\n this.anchorPoint = Point.TOP_LEFT;\n this.popoverPoint = Point.LEFT_BOTTOM;\n break;\n case 'bottom-right':\n this.anchorPoint = Point.BOTTOM_RIGHT;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n case 'bottom-left':\n this.anchorPoint = Point.BOTTOM_LEFT;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'right-top':\n this.anchorPoint = Point.RIGHT_TOP;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'right-bottom':\n this.anchorPoint = Point.RIGHT_BOTTOM;\n this.popoverPoint = Point.LEFT_BOTTOM;\n break;\n case 'left-top':\n this.anchorPoint = Point.LEFT_TOP;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n case 'left-bottom':\n this.anchorPoint = Point.LEFT_BOTTOM;\n this.popoverPoint = Point.RIGHT_BOTTOM;\n break;\n default:\n this.anchorPoint = Point.BOTTOM_LEFT;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n }\n }\n\n ngAfterContentInit() {\n this.focusHandler.container = this.el.nativeElement;\n this.items.changes.subscribe(() => this.focusHandler.addChildren(this.items.toArray()));\n // I saw this on GitHub as a solution to avoid code duplication because of missed QueryList changes\n this.items.notifyOnChanges();\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n this.focusHandler.resetChildren();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, HostListener } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { ClrDropdown } from './dropdown';\nimport { DropdownFocusHandler } from './providers/dropdown-focus-handler.service';\n\n@Directive({\n // We support both selectors for legacy reasons\n selector: '[clrDropdownTrigger],[clrDropdownToggle]',\n host: {\n '[class.dropdown-toggle]': 'isRootLevelToggle',\n '[class.dropdown-item]': '!isRootLevelToggle',\n '[class.expandable]': '!isRootLevelToggle',\n '[class.active]': 'active',\n '[attr.aria-haspopup]': '\"menu\"',\n '[attr.aria-expanded]': 'active',\n },\n})\nexport class ClrDropdownTrigger {\n isRootLevelToggle = true;\n\n constructor(\n dropdown: ClrDropdown,\n private toggleService: ClrPopoverToggleService,\n el: ElementRef<HTMLElement>,\n focusHandler: DropdownFocusHandler\n ) {\n // if the containing dropdown has a parent, then this is not the root level one\n if (dropdown.parent) {\n this.isRootLevelToggle = false;\n }\n focusHandler.trigger = el.nativeElement;\n }\n\n get active(): boolean {\n return this.toggleService.open;\n }\n\n @HostListener('click', ['$event'])\n onDropdownTriggerClick(event: any): void {\n this.toggleService.toggleWithEvent(event);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrDropdown } from './dropdown';\nimport { ClrDropdownItem } from './dropdown-item';\nimport { ClrDropdownMenu } from './dropdown-menu';\nimport { ClrDropdownTrigger } from './dropdown-trigger';\n\nexport const CLR_DROPDOWN_DIRECTIVES: Type<any>[] = [ClrDropdown, ClrDropdownMenu, ClrDropdownTrigger, ClrDropdownItem];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_DROPDOWN_DIRECTIVES],\n exports: [CLR_DROPDOWN_DIRECTIVES, ClrConditionalModule, ClrIconModule],\n})\nexport class ClrDropdownModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\n// @TODO Make this an enum\nexport const ALERT_TYPES: string[] = ['info', 'warning', 'danger', 'success'];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../../utils/i18n/common-strings.service';\nimport { AlertInfoObject } from '../utils/alert-info-object';\nimport { ALERT_TYPES } from '../utils/alert-types';\n\n@Injectable()\nexport class AlertIconAndTypesService {\n private defaultIconShape = 'info-circle';\n private _alertIconShape = '';\n private _alertType = 'info';\n\n constructor(private commonStrings: ClrCommonStringsService) {}\n\n get alertType(): string {\n return this._alertType;\n }\n set alertType(val: string) {\n if (ALERT_TYPES.indexOf(val) > -1) {\n this._alertType = val;\n }\n }\n\n get alertIconShape(): string {\n if ('' === this._alertIconShape) {\n return this.iconInfoFromType(this._alertType).shape;\n }\n return this._alertIconShape;\n }\n set alertIconShape(val: string) {\n if (!val) {\n this._alertIconShape = '';\n } else if (val !== this._alertIconShape) {\n this._alertIconShape = val;\n }\n }\n\n get alertIconTitle(): string {\n return this.iconInfoFromType(this._alertType).title;\n }\n\n iconInfoFromType(type: string): AlertInfoObject {\n const returnObj = { shape: '', cssClass: '', title: '' };\n\n switch (type) {\n case 'warning':\n returnObj.shape = 'exclamation-triangle';\n returnObj.cssClass = 'alert-warning';\n returnObj.title = this.commonStrings.keys.warning;\n break;\n case 'danger':\n returnObj.shape = 'exclamation-circle';\n returnObj.cssClass = 'alert-danger';\n returnObj.title = this.commonStrings.keys.danger;\n break;\n case 'success':\n returnObj.shape = 'check-circle';\n returnObj.cssClass = 'alert-success';\n returnObj.title = this.commonStrings.keys.success;\n break;\n default:\n returnObj.shape = this.defaultIconShape;\n returnObj.cssClass = 'alert-info';\n returnObj.title = this.commonStrings.keys.info;\n break;\n }\n\n return returnObj;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, QueryList } from '@angular/core';\nimport { Observable, Subject, Subscription } from 'rxjs';\n\nimport { ClrAlert } from '../alert';\n\n@Injectable()\nexport class MultiAlertService {\n private subscription: Subscription;\n private allAlerts: QueryList<ClrAlert>;\n private _change = new Subject<number>();\n private _current: number;\n\n /**\n * The Observable that lets other classes subscribe to changes\n */\n get changes(): Observable<number> {\n return this._change.asObservable();\n }\n\n get current() {\n return this._current;\n }\n set current(index: number) {\n if (index !== this._current) {\n this._current = index;\n this._change.next(index);\n }\n }\n\n get activeAlerts() {\n return this.allAlerts && this.allAlerts.filter(alert => !alert._closed);\n }\n\n get currentAlert() {\n return this.activeAlerts && this.activeAlerts[this.current];\n }\n set currentAlert(alert: ClrAlert) {\n this.current = this.activeAlerts.indexOf(alert);\n }\n\n get count() {\n return (this.activeAlerts && this.activeAlerts.length) || 0;\n }\n\n manage(alerts: QueryList<ClrAlert>) {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n this.allAlerts = alerts;\n // After receiving alerts' QueryList,\n // we are picking index 0 as current by default if a user hasn't any index\n this.current = typeof this._current === 'number' ? this._current : 0;\n // we have to also broadcast that initial index\n this._change.next(this.current);\n\n this.subscription = this.allAlerts.changes.subscribe(() => {\n if (this.current >= this.allAlerts.length) {\n this.current = Math.max(0, this.allAlerts.length - 1);\n }\n });\n }\n\n next() {\n this._current = this.current === this.activeAlerts.length - 1 ? 0 : this.current + 1;\n this._change.next(this._current);\n }\n\n previous() {\n if (this.activeAlerts.length === 0) {\n return;\n }\n this._current = this.current === 0 ? this.activeAlerts.length - 1 : this.current - 1;\n this._change.next(this._current);\n }\n\n open() {\n if (this.activeAlerts.length === 0) {\n return;\n }\n\n if (!this.currentAlert) {\n this._current = 0;\n }\n\n this._change.next(this._current);\n }\n\n close(isCurrentAlert: boolean) {\n if (this.activeAlerts.length === 0) {\n return;\n }\n\n if (isCurrentAlert) {\n this._current = Math.max(0, this.current - 1);\n }\n\n this._change.next(this._current);\n }\n\n destroy() {\n if (this.subscription) {\n this.subscription.unsubscribe();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Component, EventEmitter, Input, OnDestroy, OnInit, Optional, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { AlertIconAndTypesService } from './providers/icon-and-types.service';\nimport { MultiAlertService } from './providers/multi-alert.service';\n\n@Component({\n selector: 'clr-alert',\n providers: [AlertIconAndTypesService],\n templateUrl: './alert.html',\n styles: [':host { display: block; }'],\n})\nexport class ClrAlert implements OnInit, OnDestroy {\n @Input('clrAlertSizeSmall') isSmall = false;\n @Input('clrAlertClosable') closable = true;\n @Input('clrAlertAppLevel') isAppLevel = false;\n @Input() clrCloseButtonAriaLabel: string = this.commonStrings.keys.alertCloseButtonAriaLabel;\n\n @Output('clrAlertClosedChange') _closedChanged = new EventEmitter<boolean>(false);\n\n _closed = false;\n\n private _hidden: boolean;\n private subscriptions: Subscription[] = [];\n\n constructor(\n private iconService: AlertIconAndTypesService,\n private cdr: ChangeDetectorRef,\n @Optional() private multiAlertService: MultiAlertService,\n private commonStrings: ClrCommonStringsService\n ) {}\n\n @Input('clrAlertType')\n get alertType(): string {\n return this.iconService.alertType;\n }\n set alertType(val: string) {\n this.iconService.alertType = val;\n }\n\n @Input('clrAlertIcon')\n set alertIconShape(value: string) {\n this.iconService.alertIconShape = value;\n }\n\n @Input('clrAlertClosed')\n set closed(value: boolean) {\n if (value && !this._closed) {\n this.close();\n } else if (!value && this._closed) {\n this.open();\n }\n }\n\n get alertClass(): string {\n return this.iconService.iconInfoFromType(this.iconService.alertType).cssClass;\n }\n\n get hidden() {\n return this._hidden;\n }\n set hidden(value: boolean) {\n if (value !== this._hidden) {\n this._hidden = value;\n this.cdr.detectChanges();\n }\n }\n\n ngOnInit() {\n if (this.multiAlertService) {\n this.subscriptions.push(\n this.multiAlertService.changes.subscribe(() => {\n this.hidden = this.multiAlertService.currentAlert !== this;\n })\n );\n }\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n }\n\n open(): void {\n this._closed = false;\n if (this.multiAlertService) {\n this.multiAlertService.open();\n }\n this._closedChanged.emit(false);\n }\n\n close(): void {\n if (!this.closable) {\n return;\n }\n const isCurrentAlert = this.multiAlertService?.currentAlert === this;\n this._closed = true;\n if (this.multiAlertService?.activeAlerts) {\n this.multiAlertService.close(isCurrentAlert);\n }\n this._closedChanged.emit(true);\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div\n *ngIf=\"!_closed\"\n class=\"alert\"\n [ngClass]=\"alertClass\"\n [class.alert-hidden]=\"hidden\"\n [class.alert-sm]=\"isSmall\"\n [class.alert-app-level]=\"isAppLevel\"\n>\n <div class=\"alert-items\">\n <ng-content></ng-content>\n </div>\n <button type=\"button\" class=\"close\" *ngIf=\"closable\" (click)=\"close()\" [attr.aria-label]=\"clrCloseButtonAriaLabel\">\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { AlertIconAndTypesService } from './providers/icon-and-types.service';\n\n@Component({\n selector: 'clr-alert-item',\n template: `\n <div class=\"alert-icon-wrapper\">\n <cds-icon\n class=\"alert-icon\"\n role=\"img\"\n [attr.shape]=\"iconService.alertIconShape\"\n [attr.aria-label]=\"iconService.alertIconTitle\"\n ></cds-icon>\n </div>\n <ng-content></ng-content>\n `,\n host: { class: 'alert-item' },\n})\nexport class ClrAlertItem {\n constructor(public iconService: AlertIconAndTypesService) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\n/**\n * @remark\n * This directive is used only of selectin alert text.\n */\n@Directive({\n selector: '.alert-text',\n})\nexport class ClrAlertText {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, OnDestroy, OnInit, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrAlert } from './alert';\nimport { MultiAlertService } from './providers/multi-alert.service';\n\n@Component({\n selector: 'clr-alerts-pager',\n templateUrl: './alerts-pager.html',\n host: { '[class.alerts-pager]': 'true' },\n})\nexport class ClrAlertsPager implements OnInit, OnDestroy {\n @Output('clrCurrentAlertChange') currentAlertChange = new EventEmitter<ClrAlert>(false);\n @Output('clrCurrentAlertIndexChange') currentAlertIndexChange = new EventEmitter<number>();\n\n private multiAlertServiceChanges: Subscription;\n\n constructor(public multiAlertService: MultiAlertService, public commonStrings: ClrCommonStringsService) {}\n\n /**\n * Input/Output to support two way binding on current alert instance\n */\n @Input('clrCurrentAlert')\n get currentAlert() {\n return this.multiAlertService.currentAlert;\n }\n set currentAlert(alert: ClrAlert) {\n if (alert) {\n this.multiAlertService.currentAlert = alert;\n }\n }\n\n /**\n * Input/Output to support two way binding on current alert index\n */\n @Input('clrCurrentAlertIndex')\n get currentAlertIndex() {\n return this.multiAlertService.current;\n }\n set currentAlertIndex(index: number) {\n this.multiAlertService.current = index;\n }\n\n protected get previousAlertAriaLabel() {\n const CURRENT = this.currentAlertIndex + 1;\n return this.commonStrings.parse(this.commonStrings.keys.alertPreviousAlertAriaLabel, {\n CURRENT: (CURRENT === 1 ? this.multiAlertService.count : CURRENT - 1).toString(),\n COUNT: this.multiAlertService.count.toString(),\n });\n }\n\n protected get nextAlertAriaLabel() {\n const CURRENT = this.currentAlertIndex + 1;\n return this.commonStrings.parse(this.commonStrings.keys.alertNextAlertAriaLabel, {\n CURRENT: (CURRENT === this.multiAlertService.count ? 1 : CURRENT + 1).toString(),\n COUNT: this.multiAlertService.count.toString(),\n });\n }\n\n ngOnInit() {\n this.multiAlertServiceChanges = this.multiAlertService.changes.subscribe(index => {\n this.currentAlertIndexChange.emit(index);\n this.currentAlertChange.emit(this.multiAlertService.activeAlerts[index]);\n });\n }\n\n ngOnDestroy() {\n this.multiAlertServiceChanges.unsubscribe();\n }\n\n pageUp() {\n this.multiAlertService.next();\n }\n\n pageDown() {\n this.multiAlertService.previous();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"alerts-pager-control\">\n <div class=\"alerts-page-down\">\n <button class=\"alerts-pager-button\" type=\"button\" (click)=\"pageDown()\" [attr.aria-label]=\"previousAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"left\"></cds-icon>\n </button>\n </div>\n <div class=\"alerts-pager-text\">{{this.multiAlertService.current+1}} / {{this.multiAlertService.count}}</div>\n <div class=\"alerts-page-up\">\n <button class=\"alerts-pager-button\" type=\"button\" (click)=\"pageUp()\" [attr.aria-label]=\"nextAlertAriaLabel\">\n <cds-icon shape=\"angle\" direction=\"right\"></cds-icon>\n </button>\n </div>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n EventEmitter,\n Input,\n OnDestroy,\n Output,\n QueryList,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrAlert } from './alert';\nimport { MultiAlertService } from './providers/multi-alert.service';\n\n@Component({\n selector: 'clr-alerts',\n templateUrl: './alerts.html',\n providers: [MultiAlertService],\n host: {\n '[class.alerts]': 'true',\n '[class.alert-danger]': \"this.currentAlertType == 'danger'\",\n '[class.alert-info]': \"this.currentAlertType == 'info'\",\n '[class.alert-success]': \"this.currentAlertType == 'success'\",\n '[class.alert-warning]': \"this.currentAlertType == 'warning'\",\n },\n styles: [':host { display: block }'],\n})\nexport class ClrAlerts implements AfterContentInit, OnDestroy {\n @Output('clrCurrentAlertChange') currentAlertChange = new EventEmitter<ClrAlert>(false);\n @Output('clrCurrentAlertIndexChange') currentAlertIndexChange = new EventEmitter<number>(false);\n\n private subscriptions: Subscription[] = [];\n\n constructor(public multiAlertService: MultiAlertService) {}\n\n @ContentChildren(ClrAlert)\n set allAlerts(value: QueryList<ClrAlert>) {\n this.multiAlertService.manage(value); // provide alerts\n }\n\n /**\n * Input/Output to support two way binding on current alert index\n */\n @Input('clrCurrentAlertIndex')\n set _inputCurrentIndex(index: number) {\n if (Number.isInteger(index) && index >= 0) {\n this.multiAlertService.current = index;\n }\n }\n\n get currentAlertIndex() {\n return this.multiAlertService.current;\n }\n set currentAlertIndex(index: number) {\n this.multiAlertService.current = index;\n }\n\n /**\n * Input/Output to support two way binding on current alert instance\n */\n @Input('clrCurrentAlert')\n get currentAlert() {\n return this.multiAlertService.currentAlert;\n }\n set currentAlert(alert: ClrAlert) {\n if (alert) {\n this.multiAlertService.currentAlert = alert;\n }\n }\n\n /**\n * Ensure we are only dealing with alerts that have not been closed yet\n */\n get alerts() {\n return this.allAlerts.filter(alert => {\n return alert.hidden === false;\n });\n }\n\n get currentAlertType(): string {\n if (this.multiAlertService.currentAlert) {\n return this.multiAlertService.currentAlert.alertType;\n }\n return '';\n }\n\n ngAfterContentInit() {\n this.subscriptions.push(\n this.multiAlertService.changes.subscribe(index => {\n this.currentAlertIndexChange.next(index);\n this.currentAlertChange.next(this.multiAlertService.currentAlert);\n })\n );\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(sub => sub.unsubscribe());\n this.multiAlertService.destroy();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<clr-alerts-pager *ngIf=\"multiAlertService.count > 1\" [clrCurrentAlertIndex]=\"currentAlertIndex\"></clr-alerts-pager>\n<ng-content select=\"clr-alert\"></ng-content>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport {\n checkCircleIcon,\n ClarityIcons,\n exclamationCircleIcon,\n exclamationTriangleIcon,\n infoCircleIcon,\n windowCloseIcon,\n} from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrDropdownModule } from '../../popover/dropdown/dropdown.module';\nimport { ClrAlert } from './alert';\nimport { ClrAlertItem } from './alert-item';\nimport { ClrAlertText } from './alert-text';\nimport { ClrAlerts } from './alerts';\nimport { ClrAlertsPager } from './alerts-pager';\n\nexport const CLR_ALERT_DIRECTIVES: Type<any>[] = [ClrAlert, ClrAlertItem, ClrAlerts, ClrAlertsPager, ClrAlertText];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrDropdownModule],\n declarations: [CLR_ALERT_DIRECTIVES],\n exports: [CLR_ALERT_DIRECTIVES],\n})\nexport class ClrAlertModule {\n constructor() {\n ClarityIcons.addIcons(\n checkCircleIcon,\n infoCircleIcon,\n exclamationCircleIcon,\n exclamationTriangleIcon,\n windowCloseIcon\n );\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { ClrAlertModule } from './alert/alert.module';\n\n@NgModule({\n exports: [ClrAlertModule],\n})\nexport class ClrEmphasisModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class ResponsiveNavCodes {\n static NAV_LEVEL_1 = 1;\n static NAV_LEVEL_2 = 2;\n static NAV_CLOSE_ALL = 'NAV_CLOSE_ALL';\n static NAV_OPEN = 'NAV_OPEN';\n static NAV_CLOSE = 'NAV_CLOSE';\n static NAV_TOGGLE = 'NAV_TOGGLE';\n static NAV_CLASS_HAMBURGER_MENU = 'open-hamburger-menu';\n static NAV_CLASS_OVERFLOW_MENU = 'open-overflow-menu';\n static NAV_CLASS_TRIGGER_1 = 'header-hamburger-trigger';\n static NAV_CLASS_TRIGGER_2 = 'header-overflow-trigger';\n static NAV_CLASS_LEVEL_1 = 'clr-nav-level-1';\n static NAV_CLASS_LEVEL_2 = 'clr-nav-level-2';\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport class ResponsiveNavControlMessage {\n constructor(private _controlCode: string, private _navLevel: number) {}\n\n get controlCode(): string {\n return this._controlCode;\n }\n\n get navLevel(): number {\n return this._navLevel;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { ReplaySubject, Subject } from 'rxjs';\n\nimport { ResponsiveNavCodes } from '../responsive-nav-codes';\nimport { ResponsiveNavControlMessage } from '../responsive-nav-control-message';\n\n@Injectable({ providedIn: 'root' })\nexport class ResponsiveNavigationService {\n responsiveNavList: number[] = [];\n\n private registerNavSubject = new ReplaySubject<number[]>();\n private controlNavSubject = new Subject<ResponsiveNavControlMessage>();\n\n constructor() {\n this.closeAllNavs(); // We start with all navs closed\n }\n\n get registeredNavs(): Observable<number[]> {\n return this.registerNavSubject.asObservable();\n }\n\n get navControl(): Observable<ResponsiveNavControlMessage> {\n return this.controlNavSubject.asObservable();\n }\n\n registerNav(navLevel: number): void {\n if (!navLevel || this.isNavRegistered(navLevel)) {\n return;\n }\n this.responsiveNavList.push(navLevel);\n this.registerNavSubject.next(this.responsiveNavList);\n }\n\n isNavRegistered(navLevel: number): boolean {\n if (this.responsiveNavList.indexOf(navLevel) > -1) {\n console.error('Multiple clr-nav-level ' + navLevel + ' attributes found. Please make sure that only one exists');\n return true;\n }\n return false;\n }\n\n unregisterNav(navLevel: number) {\n const index = this.responsiveNavList.indexOf(navLevel);\n if (index > -1) {\n this.responsiveNavList.splice(index, 1);\n this.registerNavSubject.next(this.responsiveNavList);\n }\n }\n\n sendControlMessage(controlCode: string, navLevel: number) {\n const message: ResponsiveNavControlMessage = new ResponsiveNavControlMessage(controlCode, navLevel);\n this.controlNavSubject.next(message);\n }\n\n closeAllNavs() {\n const message: ResponsiveNavControlMessage = new ResponsiveNavControlMessage(\n ResponsiveNavCodes.NAV_CLOSE_ALL,\n -999\n );\n this.controlNavSubject.next(message);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, OnDestroy, OnInit } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ResponsiveNavigationService } from '../nav/providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from '../nav/responsive-nav-codes';\nimport { ResponsiveNavControlMessage } from '../nav/responsive-nav-control-message';\n\n@Directive({\n selector: 'clr-main-container',\n host: { '[class.main-container]': 'true' },\n})\nexport class ClrMainContainer implements OnDestroy, OnInit {\n private _subscription: Subscription;\n private _classList: DOMTokenList;\n\n constructor(private elRef: ElementRef, private responsiveNavService: ResponsiveNavigationService) {}\n\n ngOnInit() {\n this._classList = this.elRef.nativeElement.classList;\n this._subscription = this.responsiveNavService.navControl.subscribe({\n next: (message: ResponsiveNavControlMessage) => {\n this.processMessage(message);\n },\n });\n }\n\n processMessage(message: ResponsiveNavControlMessage): void {\n let navClass: string = ResponsiveNavCodes.NAV_CLASS_HAMBURGER_MENU;\n if (message.controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL) {\n this._classList.remove(ResponsiveNavCodes.NAV_CLASS_HAMBURGER_MENU);\n this._classList.remove(ResponsiveNavCodes.NAV_CLASS_OVERFLOW_MENU);\n } else if (message.navLevel === ResponsiveNavCodes.NAV_LEVEL_1) {\n this.controlNav(message.controlCode, navClass);\n } else if (message.navLevel === ResponsiveNavCodes.NAV_LEVEL_2) {\n navClass = ResponsiveNavCodes.NAV_CLASS_OVERFLOW_MENU;\n this.controlNav(message.controlCode, navClass);\n }\n }\n\n controlNav(controlCode: string, navClass: string): void {\n if (controlCode === ResponsiveNavCodes.NAV_OPEN) {\n this._classList.add(navClass);\n } else if (controlCode === ResponsiveNavCodes.NAV_CLOSE) {\n this._classList.remove(navClass);\n } else if (controlCode === ResponsiveNavCodes.NAV_TOGGLE) {\n this._classList.toggle(navClass);\n }\n }\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrMainContainer } from './main-container';\n\nexport const CLR_LAYOUT_DIRECTIVES: Type<any>[] = [ClrMainContainer];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule],\n declarations: [CLR_LAYOUT_DIRECTIVES],\n exports: [CLR_LAYOUT_DIRECTIVES],\n})\nexport class ClrMainContainerModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, OnDestroy, OnInit } from '@angular/core';\nimport { RouterLinkActive } from '@angular/router';\nimport { Subscription } from 'rxjs';\n\n@Directive({\n selector: '[clrAriaCurrentLink]',\n host: { '[attr.aria-current]': 'ariaCurrent' },\n})\nexport class ClrAriaCurrentLink implements OnInit, OnDestroy {\n ariaCurrent: string | undefined;\n private subscription: Subscription;\n\n constructor(private rla: RouterLinkActive) {}\n\n ngOnInit() {\n this.subscription = this.rla.isActiveChange.subscribe(isActive => {\n this.ariaCurrent = isActive ? 'page' : undefined;\n });\n }\n\n ngOnDestroy() {\n this.subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({\n selector: 'clr-main-container',\n})\nexport class MainContainerWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { ResponsiveNavigationService } from '../providers/responsive-navigation.service';\nimport { MainContainerWillyWonka } from './main-container-willy-wonka';\n\n@Directive({\n selector: 'clr-header',\n})\nexport class NavDetectionOompaLoompa extends OompaLoompa {\n private responsiveNavService: ResponsiveNavigationService;\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() willyWonka: MainContainerWillyWonka,\n responsiveNavService: ResponsiveNavigationService\n ) {\n if (!willyWonka) {\n throw new Error('clr-header should only be used inside of a clr-main-container');\n }\n super(cdr, willyWonka);\n this.responsiveNavService = responsiveNavService;\n }\n\n // NavDetectionOompaLoompa is the addition of the nav levels\n // Since we support 2 levels, the possibilities are 0, 1 or 3 (1 + 2)\n get flavor() {\n return this.responsiveNavService.responsiveNavList.reduce((sum, navLevel) => sum + navLevel, 0);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, HostBinding, Input, OnDestroy } from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ResponsiveNavigationService } from './providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from './responsive-nav-codes';\n\n@Component({\n selector: 'clr-header',\n template: `\n <button\n type=\"button\"\n *ngIf=\"isNavLevel1OnPage\"\n class=\"header-hamburger-trigger\"\n [attr.aria-label]=\"responsiveNavCommonString\"\n (click)=\"openNav(responsiveNavCodes.NAV_LEVEL_1)\"\n >\n <span></span>\n </button>\n <ng-content></ng-content>\n <button\n type=\"button\"\n *ngIf=\"isNavLevel2OnPage\"\n class=\"header-overflow-trigger\"\n [attr.aria-label]=\"responsiveOverflowCommonString\"\n (click)=\"openNav(responsiveNavCodes.NAV_LEVEL_2)\"\n >\n <span></span>\n </button>\n <div class=\"header-backdrop\" (click)=\"closeOpenNav()\"></div>\n `,\n host: { '[class.header]': 'true' },\n})\nexport class ClrHeader implements OnDestroy {\n @Input() @HostBinding('attr.role') role = 'banner';\n\n isNavLevel1OnPage = false;\n isNavLevel2OnPage = false;\n openNavLevel: number = null;\n responsiveNavCodes = ResponsiveNavCodes;\n private _subscription: Subscription;\n\n constructor(\n private responsiveNavService: ResponsiveNavigationService,\n public commonStrings: ClrCommonStringsService\n ) {\n this._subscription = this.responsiveNavService.registeredNavs.subscribe({\n next: (navLevelList: number[]) => {\n this.initializeNavTriggers(navLevelList);\n },\n });\n\n this._subscription.add(\n this.responsiveNavService.navControl\n .pipe(\n filter(\n ({ controlCode }) =>\n controlCode === ResponsiveNavCodes.NAV_CLOSE || controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL\n )\n )\n .subscribe(() => {\n this.openNavLevel = null;\n })\n );\n }\n\n get responsiveNavCommonString() {\n const myCommonStrings = this.commonStrings.keys;\n if (this.openNavLevel !== this.responsiveNavCodes.NAV_LEVEL_1) {\n return myCommonStrings.responsiveNavToggleOpen;\n } else {\n return myCommonStrings.responsiveNavToggleClose;\n }\n }\n\n get responsiveOverflowCommonString() {\n const myCommonStrings = this.commonStrings.keys;\n if (this.openNavLevel !== this.responsiveNavCodes.NAV_LEVEL_2) {\n return myCommonStrings.responsiveNavOverflowOpen;\n } else {\n return myCommonStrings.responsiveNavOverflowClose;\n }\n }\n\n // reset triggers. handles cases when an application has different nav levels on different pages.\n resetNavTriggers() {\n this.isNavLevel1OnPage = false;\n this.isNavLevel2OnPage = false;\n }\n\n // decides which triggers to show on the header\n initializeNavTriggers(navList: number[]): void {\n this.resetNavTriggers();\n if (navList.length > 2) {\n console.error('More than 2 Nav Levels detected.');\n return;\n }\n navList.forEach(navLevel => {\n if (navLevel === ResponsiveNavCodes.NAV_LEVEL_1) {\n this.isNavLevel1OnPage = true;\n } else if (navLevel === ResponsiveNavCodes.NAV_LEVEL_2) {\n this.isNavLevel2OnPage = true;\n }\n });\n }\n\n // closes the nav that is open\n closeOpenNav() {\n this.responsiveNavService.closeAllNavs();\n }\n\n /**\n * @deprecated Will be removed in with @clr/angular v15.0.0\n *\n * Use `openNav(navLevel)` instead to open the navigation and ResponsiveNavService to close it.\n */\n toggleNav(navLevel: number) {\n if (this.openNavLevel === navLevel) {\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, navLevel);\n return;\n }\n\n this.openNav(navLevel);\n }\n\n openNav(navLevel: number) {\n this.openNavLevel = navLevel;\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, navLevel);\n }\n\n ngOnDestroy() {\n this._subscription.unsubscribe();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n HostListener,\n Inject,\n Injector,\n Input,\n OnInit,\n PLATFORM_ID,\n Renderer2,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { commonStringsDefault } from '../../utils';\nimport { LARGE_BREAKPOINT } from '../../utils/breakpoints/breakpoints';\nimport { ClrStandaloneCdkTrapFocus } from '../../utils/focus/focus-trap';\nimport { ResponsiveNavigationService } from './providers/responsive-navigation.service';\nimport { ResponsiveNavCodes } from './responsive-nav-codes';\n\nimport '@cds/core/internal-components/close-button/register.js';\n\nconst createCdsCloseButton = (document: Document, ariaLabel: string) => {\n const cdsCloseButton = document.createElement('cds-internal-close-button');\n cdsCloseButton.setAttribute('icon-size', '32');\n cdsCloseButton.setAttribute('aria-label', ariaLabel);\n cdsCloseButton.setAttribute('aria-hidden', 'true');\n cdsCloseButton.setAttribute('type', 'button');\n /**\n * The button is hidden by default based on our Desktop-first approach.\n */\n cdsCloseButton.setAttribute('hidden', 'true');\n cdsCloseButton.className = 'clr-nav-close';\n return cdsCloseButton;\n};\n\n@Directive({\n selector: '[clr-nav-level]',\n hostDirectives: [ClrStandaloneCdkTrapFocus],\n})\nexport class ClrNavLevel implements OnInit {\n @Input('clr-nav-level') _level: number;\n @Input('closeAriaLabel') closeButtonAriaLabel: string;\n\n private _isOpen = false;\n private _document: Document;\n private _subscription: Subscription;\n\n constructor(\n @Inject(PLATFORM_ID) platformId: any,\n private cdkTrapFocus: ClrStandaloneCdkTrapFocus,\n private responsiveNavService: ResponsiveNavigationService,\n private elementRef: ElementRef<HTMLElement>,\n private renderer: Renderer2,\n injector: Injector\n ) {\n if (isPlatformBrowser(platformId)) {\n this._document = injector.get(DOCUMENT);\n }\n\n this._subscription = responsiveNavService.navControl\n .pipe(\n filter(x => x.navLevel === this.level),\n filter(\n ({ controlCode }) =>\n (controlCode === ResponsiveNavCodes.NAV_OPEN && !this.isOpen) ||\n (controlCode === ResponsiveNavCodes.NAV_CLOSE && this.isOpen)\n )\n )\n .subscribe(({ controlCode }) => {\n if (controlCode === ResponsiveNavCodes.NAV_OPEN) {\n this.open();\n return;\n }\n\n this.close();\n });\n\n this._subscription.add(\n responsiveNavService.navControl\n .pipe(filter(({ controlCode }) => controlCode === ResponsiveNavCodes.NAV_CLOSE_ALL))\n .subscribe(() => this.close())\n );\n }\n\n get level(): number {\n return this._level;\n }\n\n // getter to access the responsive navigation codes from the template\n get responsiveNavCodes(): ResponsiveNavCodes {\n return ResponsiveNavCodes;\n }\n\n get isOpen(): boolean {\n return this._isOpen;\n }\n\n ngOnInit() {\n this.cdkTrapFocus.enabled = false;\n\n if (!this.closeButtonAriaLabel) {\n this.closeButtonAriaLabel =\n this._level === ResponsiveNavCodes.NAV_LEVEL_1\n ? commonStringsDefault.responsiveNavToggleClose\n : commonStringsDefault.responsiveNavOverflowClose;\n }\n\n if (this.level !== ResponsiveNavCodes.NAV_LEVEL_1 && this.level !== ResponsiveNavCodes.NAV_LEVEL_2) {\n console.error('Nav Level can only be 1 or 2');\n return;\n }\n this.responsiveNavService.registerNav(this.level);\n this.addNavClass(this.level);\n }\n\n ngAfterViewInit() {\n const closeButton = createCdsCloseButton(this._document, this.closeButtonAriaLabel);\n this.renderer.listen(closeButton, 'click', this.close.bind(this));\n this.renderer.insertBefore(this.elementRef.nativeElement, closeButton, this.elementRef.nativeElement.firstChild); // Adding the button at the top of the nav\n\n if (this._document.body.clientWidth < LARGE_BREAKPOINT) {\n /**\n * Close if the document body is smaller than the large breakpoint for example:\n * - Refreshing the page\n * - Browser window size is changed when opening the applicaiton\n * - Browser zoom is turned on and zoomed to a size that makes the document smaller than the large breakpoint\n */\n this.close();\n }\n }\n\n ngOnDestroy() {\n this.responsiveNavService.unregisterNav(this.level);\n this._subscription.unsubscribe();\n }\n\n @HostListener('window:resize', ['$event'])\n onResize(event: Event) {\n const target = event.target as Window;\n\n if (target.innerWidth < LARGE_BREAKPOINT && this.isOpen) {\n this.close();\n return;\n }\n\n this.showNavigation();\n }\n\n // TODO: Figure out whats the best way to do this. Possible methods\n // 1. HostListener (current solution)\n // 2. Directives on the .nav-link class. We discussed on moving away from class selectors but I forget the reason\n // why\n @HostListener('click', ['$event.target'])\n onMouseClick(target: any) {\n let current: any = target; // Get the element in the DOM on which the mouse was clicked\n const navHost: any = this.elementRef.nativeElement; // Get the current nav native HTML element\n\n // Start checking if current and navHost are equal.\n // If not traverse to the parentNode and check again.\n while (current) {\n if (current === navHost) {\n return;\n } else if (current.classList.contains('nav-link') && this._document.body.clientWidth < LARGE_BREAKPOINT) {\n this.close();\n return;\n }\n current = current.parentNode;\n }\n }\n\n addNavClass(level: number) {\n const navHostClassList = this.elementRef.nativeElement.classList;\n if (level === ResponsiveNavCodes.NAV_LEVEL_1) {\n navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_1);\n } else if (level === ResponsiveNavCodes.NAV_LEVEL_2) {\n navHostClassList.add(ResponsiveNavCodes.NAV_CLASS_LEVEL_2);\n }\n }\n\n open(): void {\n this._isOpen = true;\n this.showNavigation();\n this.cdkTrapFocus.enabled = true;\n this.showCloseButton();\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_OPEN, this.level);\n }\n\n close(): void {\n this._isOpen = false;\n this.hideNavigation();\n this.cdkTrapFocus.enabled = false;\n this.hideCloseButton();\n this.responsiveNavService.sendControlMessage(ResponsiveNavCodes.NAV_CLOSE, this.level);\n }\n\n protected hideNavigation() {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');\n this.renderer.setAttribute(this.elementRef.nativeElement, 'hidden', 'true');\n }\n\n protected showNavigation() {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'false');\n this.renderer.removeAttribute(this.elementRef.nativeElement, 'hidden');\n }\n\n protected hideCloseButton() {\n this.renderer.setAttribute(this.elementRef.nativeElement, 'aria-hidden', 'true');\n this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden', 'true');\n }\n\n protected showCloseButton() {\n this.renderer.setAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'aria-hidden', 'false');\n this.renderer.removeAttribute(this.elementRef.nativeElement.querySelector('.clr-nav-close'), 'hidden');\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrDropdownModule } from '../../popover/dropdown/dropdown.module';\nimport { ClrAriaCurrentLink } from './aria-current-link';\nimport { MainContainerWillyWonka } from './chocolate/main-container-willy-wonka';\nimport { NavDetectionOompaLoompa } from './chocolate/nav-detection-oompa-loompa';\nimport { ClrHeader } from './header';\nimport { ClrNavLevel } from './nav-level';\n\nexport const CLR_NAVIGATION_DIRECTIVES: Type<any>[] = [\n ClrHeader,\n ClrNavLevel,\n ClrAriaCurrentLink,\n NavDetectionOompaLoompa,\n MainContainerWillyWonka,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrDropdownModule],\n declarations: [CLR_NAVIGATION_DIRECTIVES],\n exports: [CLR_NAVIGATION_DIRECTIVES],\n})\nexport class ClrNavigationModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, TemplateRef, ViewChild } from '@angular/core';\n\n@Component({\n template: `\n <ng-template>\n <ng-content></ng-content>\n </ng-template>\n `,\n})\nexport class TemplateRefContainer {\n @ViewChild(TemplateRef) template: TemplateRef<any>;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Type } from '@angular/core';\n\nimport { TemplateRefContainer } from './template-ref-container';\n\nexport * from './template-ref-container';\n\nexport const TEMPLATE_REF_DIRECTIVES: Type<any>[] = [TemplateRefContainer];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\n\nimport { TEMPLATE_REF_DIRECTIVES } from './index';\n\n@NgModule({\n imports: [CommonModule],\n declarations: [TEMPLATE_REF_DIRECTIVES],\n exports: [TEMPLATE_REF_DIRECTIVES],\n})\nexport class ClrTemplateRefModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive } from '@angular/core';\n\nimport { WillyWonka } from '../../../utils/chocolate/willy-wonka';\n\n@Directive({\n selector: 'clr-tabs',\n})\nexport class TabsWillyWonka extends WillyWonka {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Directive, Inject, Optional } from '@angular/core';\n\nimport { OompaLoompa } from '../../../utils/chocolate/oompa-loompa';\nimport { IF_ACTIVE_ID, IfActiveService } from '../../../utils/conditional/if-active.service';\nimport { TabsWillyWonka } from './tabs-willy-wonka';\n\n@Directive({\n selector: '[clrTabLink], clr-tab-content',\n})\nexport class ActiveOompaLoompa extends OompaLoompa {\n private ifActive: IfActiveService;\n private id: number;\n\n constructor(\n cdr: ChangeDetectorRef,\n @Optional() willyWonka: TabsWillyWonka,\n @Inject(IF_ACTIVE_ID) id: number,\n ifActive: IfActiveService\n ) {\n if (!willyWonka) {\n throw new Error('clrTabLink and clr-tab-content should only be used inside of a clr-tabs');\n }\n super(cdr, willyWonka);\n this.ifActive = ifActive;\n this.id = id;\n }\n\n get flavor() {\n return this.ifActive.current === this.id;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum TabsLayout {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, ViewContainerRef } from '@angular/core';\n\nimport { TabsLayout } from '../enums/tabs-layout.enum';\nimport { ClrTab } from '../tab';\n\n@Injectable()\nexport class TabsService {\n layout: TabsLayout | string = TabsLayout.HORIZONTAL;\n tabContentViewContainer: ViewContainerRef;\n\n private _children: ClrTab[] = [];\n\n get children() {\n return this._children;\n }\n\n get activeTab() {\n return this.children.find((tab: ClrTab) => {\n return tab.active;\n });\n }\n\n get overflowTabs() {\n if (this.layout === TabsLayout.VERTICAL) {\n return [];\n } else {\n return this.children.filter((tab: ClrTab) => tab.tabLink.inOverflow === true);\n }\n }\n\n register(tab: ClrTab) {\n this._children.push(tab);\n }\n\n unregister(tab: ClrTab) {\n const index = this.children.indexOf(tab);\n if (index > -1) {\n this.children.splice(index, 1);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EmbeddedViewRef, Inject, Input, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\n\nimport { IF_ACTIVE_ID, IfActiveService } from '../../utils/conditional/if-active.service';\nimport { TabsService } from './providers/tabs.service';\n\nlet nbTabContentComponents = 0;\n\n@Component({\n selector: 'clr-tab-content',\n template: `\n <ng-template #tabContentProjectedRef>\n <section\n [id]=\"tabContentId\"\n role=\"tabpanel\"\n class=\"tab-content\"\n [class.active]=\"active\"\n [hidden]=\"!active\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.aria-hidden]=\"!active\"\n >\n <ng-content></ng-content>\n </section>\n </ng-template>\n `,\n})\nexport class ClrTabContent implements OnDestroy {\n @Input('id') tabContentId: string;\n\n private viewRef: EmbeddedViewRef<ClrTabContent>;\n\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) public id: number,\n private tabsService: TabsService\n ) {\n if (!this.tabContentId) {\n this.tabContentId = 'clr-tab-content-' + nbTabContentComponents++;\n }\n }\n\n get active() {\n return this.ifActiveService.current === this.id;\n }\n\n get ariaLabelledBy(): string {\n return this.tabsService.children.find(tab => tab.tabContent === this)?.tabLink?.tabLinkId;\n }\n\n // The template must be applied on the top-down phase of view-child initialization to prevent\n // components in the content from initializing before a content container exists.\n // Some child components need their container for sizing calculations.\n @ViewChild('tabContentProjectedRef', { static: true })\n private set templateRef(value: TemplateRef<ClrTabContent>) {\n this.viewRef = this.tabsService.tabContentViewContainer.createEmbeddedView(value);\n }\n\n ngOnDestroy(): void {\n const index = this.tabsService.tabContentViewContainer.indexOf(this.viewRef);\n if (index > -1) {\n this.tabsService.tabContentViewContainer.remove(index);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { InjectionToken } from '@angular/core';\n\nlet nbTabsComponent = 0;\n\nexport const TABS_ID = new InjectionToken<number>('TABS_ID');\n\nexport function tokenFactory() {\n return 'clr-tabs-' + nbTabsComponent++;\n}\n\nexport const TABS_ID_PROVIDER = {\n provide: TABS_ID,\n useFactory: tokenFactory,\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n ComponentFactoryResolver,\n Directive,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n ViewContainerRef,\n} from '@angular/core';\n\nimport { IF_ACTIVE_ID, IfActiveService } from '../../utils/conditional/if-active.service';\nimport { TemplateRefContainer } from '../../utils/template-ref/template-ref-container';\nimport { TabsLayout } from './enums/tabs-layout.enum';\nimport { TabsService } from './providers/tabs.service';\nimport { TABS_ID } from './tabs-id.provider';\n\nlet nbTabLinkComponents = 0;\n\n@Directive({\n selector: '[clrTabLink]',\n host: {\n '[class.btn]': 'true',\n role: 'tab',\n type: 'button',\n },\n})\nexport class ClrTabLink {\n @Input('id') @HostBinding('id') tabLinkId: string;\n\n templateRefContainer: TemplateRefContainer;\n\n private _inOverflow: boolean;\n\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) private id: number,\n public el: ElementRef,\n private cfr: ComponentFactoryResolver,\n private viewContainerRef: ViewContainerRef,\n private tabsService: TabsService,\n @Inject(TABS_ID) public tabsId: number\n ) {\n if (!this.tabLinkId) {\n this.tabLinkId = 'clr-tab-link-' + nbTabLinkComponents++;\n }\n\n // Tab links can be rendered in one of two places: in the main area or inside the overflow dropdown menu.\n // Here, we create a container so that its template can be used to create embeddedView on the fly.\n // See TabsService's renderView() method and how it's used in Tabs class for an example.\n const factory = this.cfr.resolveComponentFactory(TemplateRefContainer);\n this.templateRefContainer = this.viewContainerRef.createComponent(factory, undefined, undefined, [\n [this.el.nativeElement],\n ]).instance;\n }\n\n @Input('clrTabLinkInOverflow')\n get inOverflow(): boolean {\n return this._inOverflow && this.tabsService.layout !== TabsLayout.VERTICAL;\n }\n set inOverflow(inOverflow) {\n this._inOverflow = inOverflow;\n }\n\n @HostBinding('class.btn-link')\n @HostBinding('class.nav-link')\n get addLinkClasses() {\n return !this.inOverflow;\n }\n\n @HostBinding('attr.aria-controls')\n get ariaControls(): string {\n return this.tabsService.children.find(tab => tab.tabLink === this)?.tabContent?.tabContentId;\n }\n\n @HostBinding('class.active')\n @HostBinding('attr.aria-selected')\n get active() {\n return this.ifActiveService.current === this.id;\n }\n\n @HostBinding('attr.tabindex')\n get tabindex() {\n return this.active ? 0 : -1;\n }\n\n @HostListener('click')\n activate() {\n this.ifActiveService.current = this.id;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, Inject } from '@angular/core';\n\nimport { IF_ACTIVE_ID, IF_ACTIVE_ID_PROVIDER, IfActiveService } from '../../utils/conditional/if-active.service';\nimport { TabsService } from './providers/tabs.service';\nimport { ClrTabContent } from './tab-content';\nimport { ClrTabLink } from './tab-link.directive';\n\n@Component({\n selector: 'clr-tab',\n template: `<ng-content></ng-content>`,\n providers: [IF_ACTIVE_ID_PROVIDER],\n})\nexport class ClrTab {\n @ContentChild(ClrTabLink, { static: true }) tabLink: ClrTabLink;\n @ContentChild(ClrTabContent, { static: true }) tabContent: ClrTabContent;\n\n constructor(\n public ifActiveService: IfActiveService,\n @Inject(IF_ACTIVE_ID) public id: number,\n private tabsService: TabsService\n ) {\n tabsService.register(this);\n }\n\n get active() {\n return this.ifActiveService.current === this.id;\n }\n\n ngOnDestroy() {\n this.tabsService.unregister(this);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-tab-overflow-content',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.dropdown-menu]': 'true',\n },\n})\nexport class ClrTabOverflowContent {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport {\n AfterContentInit,\n Component,\n ContentChildren,\n ElementRef,\n HostBinding,\n Inject,\n Input,\n OnDestroy,\n QueryList,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { startWith } from 'rxjs/operators';\n\nimport { IfActiveService } from '../../utils/conditional/if-active.service';\nimport { ClrKeyFocus } from '../../utils/focus/key-focus/key-focus';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { TabsLayout } from './enums/tabs-layout.enum';\nimport { TabsService } from './providers/tabs.service';\nimport { ClrTab } from './tab';\nimport { ClrTabLink } from './tab-link.directive';\nimport { ClrTabOverflowContent } from './tab-overflow-content';\nimport { TABS_ID, TABS_ID_PROVIDER } from './tabs-id.provider';\n\n@Component({\n selector: 'clr-tabs',\n template: `\n <ul\n class=\"nav\"\n role=\"tablist\"\n [clrKeyFocus]=\"tabLinkElements\"\n clrDirection=\"both\"\n (clrFocusChange)=\"toggleOverflowOnPosition($event)\"\n (focusout)=\"resetKeyFocusCurrentToActive($event)\"\n >\n <!--tab links-->\n <ng-container *ngFor=\"let link of tabLinkDirectives\">\n <ng-container *ngIf=\"link.tabsId === tabsId && !link.inOverflow\">\n <li role=\"presentation\" class=\"nav-item\">\n <ng-container [ngTemplateOutlet]=\"link.templateRefContainer.template\"></ng-container>\n </li>\n </ng-container>\n </ng-container>\n <ng-container *ngIf=\"tabsService.overflowTabs.length > 0\">\n <div class=\"tabs-overflow bottom-right\" role=\"presentation\" [class.open]=\"toggleService.open\">\n <li role=\"application\" class=\"nav-item\">\n <button\n #tabOverflowTrigger\n class=\"btn btn-link nav-link dropdown-toggle\"\n type=\"button\"\n aria-hidden=\"true\"\n [attr.tabindex]=\"activeTabInOverflow && !toggleService.open ? 0 : -1\"\n [class.active]=\"activeTabInOverflow\"\n [class.open]=\"toggleService.open\"\n (mousedown)=\"_mousedown = true\"\n (focus)=\"openOverflowOnFocus()\"\n (click)=\"toggleOverflowOnClick()\"\n [attr.title]=\"commonStrings.keys.more\"\n >\n <cds-icon\n shape=\"ellipsis-horizontal\"\n [attr.status]=\"toggleService.open ? 'info' : null\"\n [attr.title]=\"commonStrings.keys.more\"\n ></cds-icon>\n </button>\n </li>\n <!--tab links in overflow menu-->\n <clr-tab-overflow-content\n *ngIf=\"toggleService.open\"\n (document:keydown.escape)=\"closeOnEscapeKey()\"\n (document:click)=\"closeOnOutsideClick($event, tabOverflowTrigger)\"\n (focusout)=\"closeOnFocusOut($event)\"\n >\n <ng-container *ngFor=\"let link of tabLinkDirectives\">\n <ng-container\n *ngIf=\"link.tabsId === tabsId && link.inOverflow\"\n [ngTemplateOutlet]=\"link.templateRefContainer.template\"\n ></ng-container>\n </ng-container>\n </clr-tab-overflow-content>\n </div>\n </ng-container>\n </ul>\n <ng-container #tabContentViewContainer></ng-container>\n `,\n providers: [IfActiveService, TabsService, TABS_ID_PROVIDER],\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrTabs implements AfterContentInit, OnDestroy {\n tabLinkElements: HTMLElement[] = [];\n\n // in order to check focus is triggered by click\n // we are using this _mousedown flag\n _mousedown = false;\n\n @ViewChild(ClrKeyFocus, { static: true }) keyFocus: ClrKeyFocus;\n\n @ContentChildren(ClrTab) private tabs: QueryList<ClrTab>;\n\n private subscriptions: Subscription[] = [];\n private _tabOverflowEl: HTMLElement;\n private _tabLinkDirectives: ClrTabLink[] = [];\n\n constructor(\n public ifActiveService: IfActiveService,\n public toggleService: ClrPopoverToggleService,\n public tabsService: TabsService,\n @Inject(TABS_ID) public tabsId: number,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n @Input('clrLayout')\n get layout(): TabsLayout | string {\n return this.tabsService.layout;\n }\n set layout(layout: TabsLayout | string) {\n if (\n Object.keys(TabsLayout)\n .map(key => {\n return (TabsLayout as Record<string, any>)[key];\n })\n .indexOf(layout) >= 0\n ) {\n this.tabsService.layout = layout;\n }\n }\n\n get tabLinkDirectives(): ClrTabLink[] {\n return this._tabLinkDirectives;\n }\n\n get activeTabInOverflow() {\n return this.tabsService.overflowTabs.indexOf(this.tabsService.activeTab) > -1;\n }\n\n get activeTabPosition() {\n return this._tabLinkDirectives.findIndex(link => link.active);\n }\n\n get isCurrentInOverflow() {\n return this.keyFocus.current >= this.overflowPosition;\n }\n\n @HostBinding('class.tabs-vertical')\n get isVertical() {\n return this.layout === TabsLayout.VERTICAL;\n }\n\n @ViewChild(ClrTabOverflowContent, { read: ElementRef })\n set tabOverflowEl(value: ElementRef) {\n this._tabOverflowEl = value && value.nativeElement;\n if (this.toggleService.open && value) {\n // only when tab overflow view element is registered,\n // we need to move the focus to the first item\n this.keyFocus.focusCurrent();\n }\n }\n\n private get overflowPosition() {\n return this._tabLinkDirectives.filter(link => !link.inOverflow).length;\n }\n\n @ViewChild('tabContentViewContainer', { static: true, read: ViewContainerRef })\n private set tabContentViewContainer(value: ViewContainerRef) {\n this.tabsService.tabContentViewContainer = value;\n }\n\n ngAfterContentInit() {\n this.subscriptions.push(this.listenForTabLinkChanges());\n\n if (typeof this.ifActiveService.current === 'undefined' && this.tabLinkDirectives[0]) {\n this.tabLinkDirectives[0].activate();\n }\n\n // set initial current position\n this.keyFocus.current = this.activeTabPosition;\n }\n\n ngOnDestroy() {\n this.subscriptions.forEach(sub => {\n sub.unsubscribe();\n });\n }\n\n toggleOverflowOnPosition(position: number) {\n // we need to check current position to determine\n // whether we need to open the tab overflow or not\n this.toggleService.open = position >= this.overflowPosition;\n }\n\n resetKeyFocusCurrentToActive(event: FocusEvent) {\n const keyFocusContainsFocus = this.keyFocus.nativeElement.contains(event.relatedTarget as HTMLElement);\n if (!keyFocusContainsFocus && this.keyFocus.current !== this.activeTabPosition) {\n this.keyFocus.current = this.activeTabPosition;\n }\n }\n\n toggleOverflowOnClick() {\n if (this.isCurrentInOverflow && this.toggleService.open) {\n this.keyFocus.moveTo(this.overflowPosition - 1);\n } else {\n this.keyFocus.moveTo(this.overflowPosition);\n }\n\n // once click handler completes running,\n // reset the _mousedown flag\n this._mousedown = false;\n }\n\n openOverflowOnFocus() {\n // This method should be called only on keyboard generated focus\n // when the active tab is in the overflow\n if (!this._mousedown && !this.toggleService.open) {\n this.keyFocus.moveTo(this.activeTabPosition);\n }\n }\n\n closeOnFocusOut(event: FocusEvent) {\n if (\n !this._tabOverflowEl.contains(event.relatedTarget as HTMLElement) &&\n this.toggleService.open &&\n !this._mousedown\n ) {\n this.toggleService.open = false;\n\n // if the focus is out of overflow and lands on the active tab link\n // which is currently visible, set the key focus current to activeTabPosition\n if (this.tabLinkElements[this.activeTabPosition] === event.relatedTarget) {\n this.keyFocus.current = this.activeTabPosition;\n }\n }\n }\n\n closeOnEscapeKey() {\n // Move current to the last visible focusable item\n this.keyFocus.moveTo(this.overflowPosition - 1);\n }\n\n closeOnOutsideClick(event: Event, tabOverflowTrigger: HTMLElement) {\n // Exit early if the event target is the trigger element itself or element that's inside the trigger element.\n // This is because we have another handler on the tabOverflowTrigger element itself.\n // As this handler method is on the document level so the event bubbles up to it and conflicts\n // with the tabOverflowTrigger handler resulting in opening the tab overflow and closing it right away consecutively.\n if (event.target === tabOverflowTrigger || tabOverflowTrigger.contains(event.target as HTMLElement)) {\n return;\n }\n\n // Move current to the last visible focusable item\n if (!this._tabOverflowEl.contains(event.target as HTMLElement) && this.isCurrentInOverflow) {\n this.keyFocus.moveTo(this.overflowPosition - 1);\n }\n }\n\n private listenForTabLinkChanges() {\n return this.tabs.changes.pipe(startWith(this.tabs.map(tab => tab.tabLink))).subscribe(() => {\n this._tabLinkDirectives = this.tabs.map(tab => tab.tabLink);\n this.tabLinkElements = this._tabLinkDirectives.map(tab => tab.el.nativeElement);\n });\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClarityIcons, ellipsisHorizontalIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrKeyFocusModule } from '../../utils/focus/key-focus/key-focus.module';\nimport { ClrTemplateRefModule } from '../../utils/template-ref/template-ref.module';\nimport { ActiveOompaLoompa } from './chocolate/active-oompa-loompa';\nimport { TabsWillyWonka } from './chocolate/tabs-willy-wonka';\nimport { ClrTab } from './tab';\nimport { ClrTabContent } from './tab-content';\nimport { ClrTabLink } from './tab-link.directive';\nimport { ClrTabOverflowContent } from './tab-overflow-content';\nimport { ClrTabs } from './tabs';\n\nexport const CLR_TABS_DIRECTIVES: Type<any>[] = [\n ClrTabContent,\n ClrTab,\n ClrTabs,\n ClrTabOverflowContent,\n ClrTabLink,\n TabsWillyWonka,\n ActiveOompaLoompa,\n];\n\n@NgModule({\n imports: [CommonModule, ClrConditionalModule, ClrIconModule, ClrTemplateRefModule, ClrKeyFocusModule],\n declarations: [CLR_TABS_DIRECTIVES],\n exports: [CLR_TABS_DIRECTIVES, ClrConditionalModule],\n})\nexport class ClrTabsModule {\n constructor() {\n ClarityIcons.addIcons(ellipsisHorizontalIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class VerticalNavGroupRegistrationService {\n navGroupCount = 0;\n\n registerNavGroup() {\n this.navGroupCount++;\n }\n\n unregisterNavGroup(): void {\n this.navGroupCount--;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\n@Injectable()\nexport class VerticalNavIconService {\n private _icons = 0;\n\n get hasIcons(): boolean {\n return this._icons > 0;\n }\n\n registerIcon(): void {\n this._icons++;\n }\n\n unregisterIcon(): void {\n this._icons--;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class VerticalNavService {\n private _animateOnCollapsed = new Subject<boolean>();\n private _collapsedChanged = new Subject<boolean>();\n private _collapsed = false;\n private _collapsible = false;\n\n get animateOnCollapsed(): Observable<boolean> {\n return this._animateOnCollapsed.asObservable();\n }\n\n get collapsedChanged(): Observable<boolean> {\n return this._collapsedChanged.asObservable();\n }\n\n get collapsed(): boolean {\n return this._collapsed;\n }\n set collapsed(value: boolean) {\n value = !!value;\n if (this.collapsible && this._collapsed !== value) {\n this.updateCollapseBehavior(value);\n }\n }\n\n get collapsible(): boolean {\n return this._collapsible;\n }\n set collapsible(value: boolean) {\n value = !!value;\n if (this._collapsible !== value) {\n if (!value && this.collapsed) {\n this.updateCollapseBehavior(false);\n }\n this._collapsible = value;\n }\n }\n\n private updateCollapseBehavior(value: boolean): void {\n this._animateOnCollapsed.next(value);\n this._collapsed = value;\n this._collapsedChanged.next(value);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { VerticalNavGroupRegistrationService } from './providers/vertical-nav-group-registration.service';\nimport { VerticalNavIconService } from './providers/vertical-nav-icon.service';\nimport { VerticalNavService } from './providers/vertical-nav.service';\n\n@Component({\n selector: 'clr-vertical-nav',\n templateUrl: './vertical-nav.html',\n providers: [VerticalNavService, VerticalNavIconService, VerticalNavGroupRegistrationService],\n host: {\n class: 'clr-vertical-nav',\n '[class.is-collapsed]': 'collapsed',\n '[class.has-nav-groups]': 'hasNavGroups',\n '[class.has-icons]': 'hasIcons',\n },\n})\nexport class ClrVerticalNav implements OnDestroy {\n @Output('clrVerticalNavCollapsedChange') private _collapsedChanged = new EventEmitter<boolean>(true);\n\n private _sub: Subscription;\n\n constructor(\n private _navService: VerticalNavService,\n private _navIconService: VerticalNavIconService,\n private _navGroupRegistrationService: VerticalNavGroupRegistrationService,\n public commonStrings: ClrCommonStringsService\n ) {\n this._sub = this._navService.collapsedChanged.subscribe(value => {\n this._collapsedChanged.emit(value);\n });\n }\n\n @Input('clrVerticalNavCollapsible')\n get collapsible(): boolean | string {\n return this._navService.collapsible;\n }\n set collapsible(value: boolean | string) {\n this._navService.collapsible = value as boolean;\n }\n\n @Input('clrVerticalNavCollapsed')\n get collapsed(): boolean | string {\n return this._navService.collapsed;\n }\n set collapsed(value: boolean | string) {\n this._navService.collapsed = value as boolean;\n }\n\n get hasNavGroups(): boolean {\n return this._navGroupRegistrationService.navGroupCount > 0;\n }\n\n get hasIcons(): boolean {\n return this._navIconService.hasIcons;\n }\n\n get ariaExpanded(): string {\n if (!this.collapsible) {\n return null;\n }\n return !this.collapsed ? 'true' : 'false';\n }\n\n ngOnDestroy() {\n this._sub.unsubscribe();\n }\n\n toggleByButton() {\n this.collapsed = !this.collapsed;\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<button\n type=\"button\"\n class=\"nav-trigger\"\n [class.on-collapse]=\"collapsed\"\n [attr.aria-expanded]=\"ariaExpanded\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n (click)=\"toggleByButton()\"\n *ngIf=\"collapsible\"\n>\n <cds-icon\n shape=\"angle-double\"\n class=\"nav-trigger-icon\"\n [attr.direction]=\"(this.collapsed) ? 'right' : 'left'\"\n ></cds-icon>\n</button>\n<div class=\"nav-content\">\n <ng-content></ng-content>\n <button\n type=\"button\"\n (click)=\"collapsed = false\"\n class=\"nav-btn\"\n aria-hidden=\"true\"\n tabindex=\"-1\"\n [attr.aria-label]=\"commonStrings.keys.verticalNavToggle\"\n *ngIf=\"collapsible && collapsed\"\n ></button>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class VerticalNavGroupService {\n private _expandChange = new Subject<boolean>();\n\n get expandChange(): Observable<boolean> {\n return this._expandChange.asObservable();\n }\n\n expand(): void {\n this._expandChange.next(true);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, AnimationEvent, state, style, transition, trigger } from '@angular/animations';\nimport { AfterContentInit, Component, EventEmitter, HostBinding, Input, OnDestroy, Output } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { IfExpandService } from '../../utils/conditional/if-expanded.service';\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { VerticalNavGroupRegistrationService } from './providers/vertical-nav-group-registration.service';\nimport { VerticalNavGroupService } from './providers/vertical-nav-group.service';\nimport { VerticalNavService } from './providers/vertical-nav.service';\n\nconst EXPANDED_STATE = 'expanded';\nconst COLLAPSED_STATE = 'collapsed';\n\n@Component({\n selector: 'clr-vertical-nav-group',\n templateUrl: './vertical-nav-group.html',\n providers: [IfExpandService, VerticalNavGroupService],\n animations: [\n trigger('clrExpand', [\n state(EXPANDED_STATE, style({ height: '*' })),\n state(COLLAPSED_STATE, style({ height: 0, visibility: 'hidden' })),\n transition(`${EXPANDED_STATE} <=> ${COLLAPSED_STATE}`, animate('0.2s ease-in-out')),\n ]),\n ],\n host: { class: 'nav-group' },\n})\nexport class ClrVerticalNavGroup implements AfterContentInit, OnDestroy {\n @Output('clrVerticalNavGroupExpandedChange') expandedChange = new EventEmitter<boolean>(true);\n\n private wasExpanded = false;\n private _subscriptions: Subscription[] = [];\n private _expandAnimationState: string = COLLAPSED_STATE;\n\n constructor(\n private _itemExpand: IfExpandService,\n private _navGroupRegistrationService: VerticalNavGroupRegistrationService,\n private _navGroupService: VerticalNavGroupService,\n private _navService: VerticalNavService,\n public commonStrings: ClrCommonStringsService\n ) {\n this._navGroupRegistrationService.registerNavGroup();\n\n // FIXME: This subscription handles a corner case\n // Vertical Nav collapse requires the animation to run first and then\n // remove the nodes from the DOM. If the user directly sets the input\n // on the clrIfExpanded directive, we have no chance to run the animation\n // and wait for it to complete. This subscription makes sure that the\n // animation states are correct for that edge case.\n this._subscriptions.push(\n this._itemExpand.expandChange.subscribe(value => {\n if (value && this.expandAnimationState === COLLAPSED_STATE) {\n if (this._navService.collapsed) {\n this._navService.collapsed = false;\n }\n this.expandAnimationState = EXPANDED_STATE;\n } else if (!value && this.expandAnimationState === EXPANDED_STATE) {\n this.expandAnimationState = COLLAPSED_STATE;\n }\n })\n );\n\n // 1. If the nav is collapsing, close the open nav group + save its state\n // 2. If the nav is expanding, expand the nav group if the previous state was expanded\n this._subscriptions.push(\n this._navService.animateOnCollapsed.subscribe((goingToCollapse: boolean) => {\n if (goingToCollapse && this.expanded) {\n this.wasExpanded = true;\n this.expandAnimationState = COLLAPSED_STATE;\n } else if (!goingToCollapse && this.wasExpanded) {\n this.expandGroup();\n this.wasExpanded = false;\n }\n })\n );\n\n // If a link is clicked, expand the nav group\n this._subscriptions.push(\n this._navGroupService.expandChange.subscribe((expand: boolean) => {\n if (expand && !this.expanded) {\n this.expandGroup();\n }\n })\n );\n }\n\n @HostBinding('class.is-expanded')\n get expanded(): boolean {\n return this._itemExpand.expanded;\n }\n set expanded(value: boolean) {\n if (this._itemExpand.expanded !== value) {\n this._itemExpand.expanded = value;\n this.expandedChange.emit(value);\n }\n }\n\n @Input('clrVerticalNavGroupExpanded')\n set userExpandedInput(value: boolean | string) {\n value = !!value;\n if (this.expanded !== value) {\n // We have to call toggleExpand because some cases require animations to occur first\n // Directly setting the Expand service value skips the animation and can result in\n // nodes in the DOM but the nav group still being collapsed\n this.toggleExpand();\n }\n }\n\n get expandAnimationState(): string {\n return this._expandAnimationState;\n }\n set expandAnimationState(value: string) {\n if (value !== this._expandAnimationState) {\n this._expandAnimationState = value;\n }\n }\n\n ngAfterContentInit() {\n // This makes sure that if someone marks a nav group expanded in a collapsed nav\n // the expanded property is switched back to collapsed state.\n if (this._navService.collapsed && this.expanded) {\n this.wasExpanded = true;\n this.expandAnimationState = COLLAPSED_STATE;\n }\n }\n\n ngOnDestroy() {\n this._subscriptions.forEach((sub: Subscription) => sub.unsubscribe());\n this._navGroupRegistrationService.unregisterNavGroup();\n }\n\n expandGroup(): void {\n this.expanded = true;\n // Expanded animation occurs after Expand.expand is set to true\n this.expandAnimationState = EXPANDED_STATE;\n }\n\n collapseGroup(): void {\n // If a Vertical Nav Group toggle button is clicked while the Vertical Nav is in Collapsed state,\n // the Vertical Nav should be expanded first.\n this.expandAnimationState = COLLAPSED_STATE;\n }\n\n // closes a group after the collapse animation\n expandAnimationDone($event: AnimationEvent) {\n if ($event.toState === COLLAPSED_STATE) {\n this.expanded = false;\n }\n }\n\n toggleExpand(): void {\n if (this.expanded) {\n this.collapseGroup();\n } else {\n // If nav is collasped, first open the nav\n if (this._navService.collapsed) {\n this._navService.collapsed = false;\n }\n // then expand the nav group\n this.expandGroup();\n }\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"nav-group-content\">\n <ng-content select=\"[clrVerticalNavLink]\"></ng-content>\n <button class=\"nav-group-trigger\" type=\"button\" [attr.aria-expanded]=\"expanded\" (click)=\"toggleExpand()\">\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <div class=\"nav-group-text\">\n <ng-content></ng-content>\n </div>\n <cds-icon shape=\"angle\" class=\"nav-group-trigger-icon\" [attr.direction]=\"expanded ? 'down' : 'right'\"></cds-icon>\n </button>\n</div>\n<!--TODO: This animation needs to be added to the clr-vertical-nav-group-children component-->\n<div class=\"nav-group-children\" [@clrExpand]=\"expandAnimationState\" (@clrExpand.done)=\"expandAnimationDone($event)\">\n <ng-content select=\"[clrIfExpanded], clr-vertical-nav-group-children\"></ng-content>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-vertical-nav-group-children',\n template: `<ng-content></ng-content>`,\n})\nexport class ClrVerticalNavGroupChildren {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, OnDestroy } from '@angular/core';\n\nimport { VerticalNavIconService } from './providers/vertical-nav-icon.service';\n\n@Directive({\n selector: '[clrVerticalNavIcon]',\n host: { class: 'nav-icon' },\n})\nexport class ClrVerticalNavIcon implements OnDestroy {\n constructor(private _verticalNavIconService: VerticalNavIconService) {\n this._verticalNavIconService.registerIcon();\n }\n\n ngOnDestroy() {\n this._verticalNavIconService.unregisterIcon();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ChangeDetectorRef, Component, ElementRef, Inject, OnDestroy, Optional } from '@angular/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport { VerticalNavGroupService } from './providers/vertical-nav-group.service';\n\n@Component({\n selector: '[clrVerticalNavLink]',\n template: `\n <ng-content select=\"[clrVerticalNavIcon]\"></ng-content>\n <span class=\"nav-text\">\n <ng-content></ng-content>\n </span>\n `,\n host: {\n class: 'nav-link',\n },\n})\nexport class ClrVerticalNavLink implements OnDestroy {\n private destroy$ = new Subject<void>();\n\n constructor(\n host: ElementRef<HTMLElement>,\n ref: ChangeDetectorRef,\n @Optional() @Inject(VerticalNavGroupService) navGroupService: VerticalNavGroupService | null\n ) {\n // Note: since the `VerticalNavGroupService` is an optional provider, we'll setup the event\n // listener only when the `[clrVerticalLink]` is located within the `clr-vertical-nav-group`.\n navGroupService &&\n fromEvent(host.nativeElement, 'click')\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n navGroupService.expand();\n ref.markForCheck();\n });\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { angleDoubleIcon, angleIcon, ClarityIcons } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrFocusOnViewInitModule } from '../../utils/focus/focus-on-view-init/focus-on-view-init.module';\nimport { ClrVerticalNav } from './vertical-nav';\nimport { ClrVerticalNavGroup } from './vertical-nav-group';\nimport { ClrVerticalNavGroupChildren } from './vertical-nav-group-children';\nimport { ClrVerticalNavIcon } from './vertical-nav-icon';\nimport { ClrVerticalNavLink } from './vertical-nav-link';\n\nexport const CLR_VERTICAL_NAV_DIRECTIVES: Type<any>[] = [\n ClrVerticalNav,\n ClrVerticalNavLink,\n ClrVerticalNavGroup,\n ClrVerticalNavGroupChildren,\n ClrVerticalNavIcon,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrConditionalModule, ClrFocusOnViewInitModule],\n declarations: [CLR_VERTICAL_NAV_DIRECTIVES],\n exports: [CLR_VERTICAL_NAV_DIRECTIVES, ClrConditionalModule, ClrIconModule, ClrFocusOnViewInitModule],\n})\nexport class ClrVerticalNavModule {\n constructor() {\n ClarityIcons.addIcons(angleIcon, angleDoubleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { ClrMainContainerModule } from './main-container/main-container.module';\nimport { ClrNavigationModule } from './nav/navigation.module';\nimport { ClrTabsModule } from './tabs/tabs.module';\nimport { ClrVerticalNavModule } from './vertical-nav/vertical-nav.module';\n\n@NgModule({\n exports: [ClrMainContainerModule, ClrNavigationModule, ClrTabsModule, ClrVerticalNavModule],\n})\nexport class ClrLayoutModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT } from '@angular/common';\nimport { Inject, Injectable } from '@angular/core';\n\n@Injectable()\nexport class ScrollingService {\n constructor(@Inject(DOCUMENT) private _document: any) {}\n\n stopScrolling(): void {\n this._document.body.classList.add('no-scrolling');\n }\n\n resumeScrolling(): void {\n if (this._document.body.classList.contains('no-scrolling')) {\n this._document.body.classList.remove('no-scrolling');\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { animate, AnimationEvent, style, transition, trigger } from '@angular/animations';\nimport { Component, EventEmitter, HostBinding, Input, OnChanges, OnDestroy, Output, SimpleChange } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../utils/id-generator/id-generator.service';\nimport { ScrollingService } from '../utils/scrolling/scrolling-service';\nimport { ModalStackService } from './modal-stack.service';\n\n@Component({\n selector: 'clr-modal',\n viewProviders: [ScrollingService],\n templateUrl: './modal.html',\n styles: [\n `\n :host {\n display: none;\n }\n :host.open {\n display: inline;\n }\n `,\n ],\n animations: [\n trigger('fadeDown', [\n transition('* => false', [style({ opacity: 0, transform: 'translate(0, -25%)' }), animate('0.2s ease-in-out')]),\n transition('false => *', [animate('0.2s ease-in-out', style({ opacity: 0, transform: 'translate(0, -25%)' }))]),\n ]),\n trigger('fade', [\n transition('void => *', [style({ opacity: 0 }), animate('0.2s ease-in-out', style({ opacity: 0.85 }))]),\n transition('* => void', [animate('0.2s ease-in-out', style({ opacity: 0 }))]),\n ]),\n ],\n})\nexport class ClrModal implements OnChanges, OnDestroy {\n modalId = uniqueIdFactory();\n\n @Input('clrModalOpen') @HostBinding('class.open') _open = false;\n @Output('clrModalOpenChange') _openChanged = new EventEmitter<boolean>(false);\n\n @Input('clrModalClosable') closable = true;\n @Input('clrModalCloseButtonAriaLabel') closeButtonAriaLabel = this.commonStrings.keys.close;\n @Input('clrModalSize') size: string;\n @Input('clrModalStaticBackdrop') staticBackdrop = true;\n @Input('clrModalSkipAnimation') skipAnimation = 'false';\n\n @Input('clrModalPreventClose') stopClose = false;\n @Output('clrModalAlternateClose') altClose = new EventEmitter<boolean>(false);\n\n @Input('clrModalLabelledById') labelledBy = this.modalId;\n\n // presently this is only used by inline wizards\n @Input('clrModalOverrideScrollService') bypassScrollService = false;\n\n constructor(\n private _scrollingService: ScrollingService,\n public commonStrings: ClrCommonStringsService,\n private modalStackService: ModalStackService\n ) {}\n\n // Detect when _open is set to true and set no-scrolling to true\n ngOnChanges(changes: { [propName: string]: SimpleChange }): void {\n if (!this.bypassScrollService && changes && Object.prototype.hasOwnProperty.call(changes, '_open')) {\n if (changes._open.currentValue) {\n this._scrollingService.stopScrolling();\n this.modalStackService.trackModalOpen(this);\n } else {\n this._scrollingService.resumeScrolling();\n }\n }\n }\n\n ngOnDestroy(): void {\n this._scrollingService.resumeScrolling();\n }\n\n open(): void {\n if (this._open) {\n return;\n }\n this._open = true;\n this._openChanged.emit(true);\n this.modalStackService.trackModalOpen(this);\n }\n\n close(): void {\n if (this.stopClose) {\n this.altClose.emit(false);\n return;\n }\n if (!this.closable || !this._open) {\n return;\n }\n this._open = false;\n }\n\n fadeDone(e: AnimationEvent) {\n if (e.toState === 'void') {\n // TODO: Investigate if we can decouple from animation events\n this._openChanged.emit(false);\n this.modalStackService.trackModalClose(this);\n }\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<div class=\"modal\" *ngIf=\"_open\">\n <!--fixme: revisit when ngClass works with exit animation-->\n <div\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"true\"\n [@fadeDown]=\"skipAnimation\"\n (@fadeDown.done)=\"fadeDone($event)\"\n class=\"modal-dialog\"\n [class.modal-sm]=\"size == 'sm'\"\n [class.modal-lg]=\"size == 'lg'\"\n [class.modal-xl]=\"size == 'xl'\"\n role=\"dialog\"\n aria-modal=\"true\"\n [attr.aria-hidden]=\"!_open\"\n [attr.aria-labelledby]=\"labelledBy\"\n >\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentStart}}</div>\n <div class=\"modal-content-wrapper\">\n <!-- only used in wizards -->\n <ng-content select=\".modal-nav\"></ng-content>\n\n <div class=\"modal-content\">\n <div class=\"modal-header--accessible\">\n <div class=\"modal-title-wrapper\" id=\"{{modalId}}\" cdkFocusInitial tabindex=\"-1\">\n <ng-content select=\".modal-title\"></ng-content>\n </div>\n <button\n type=\"button\"\n [attr.aria-label]=\"closeButtonAriaLabel || commonStrings.keys.close\"\n class=\"close\"\n *ngIf=\"closable\"\n (click)=\"close()\"\n >\n <cds-icon shape=\"window-close\"></cds-icon>\n </button>\n </div>\n <div class=\"modal-body-wrapper\">\n <ng-content select=\".modal-body\"></ng-content>\n </div>\n <ng-content select=\".modal-footer\"></ng-content>\n </div>\n </div>\n <div class=\"clr-sr-only\">{{commonStrings.keys.modalContentEnd}}</div>\n </div>\n\n <div [@fade] class=\"modal-backdrop\" aria-hidden=\"true\" (click)=\"staticBackdrop || close()\"></div>\n</div>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, ElementRef, NgZone, OnDestroy, Renderer2 } from '@angular/core';\n\n/**\n * Allows modal overflow area to be scrollable via keyboard.\n * The modal body will focus with keyboard navigation only.\n * This allows inner focusable items to be focused without\n * the overflow scroll being focused.\n */\n@Directive({\n selector: '.modal-body',\n})\nexport class ClrModalBody implements OnDestroy {\n private tabindex = '0';\n private unlisteners: VoidFunction[] = [];\n private observer: ResizeObserver;\n\n constructor(private readonly renderer: Renderer2, private readonly host: ElementRef<HTMLElement>, ngZone: NgZone) {\n ngZone.runOutsideAngular(() => {\n this.observer = new ResizeObserver(() => this.addOrRemoveTabIndex());\n this.observer.observe(this.host.nativeElement);\n\n this.unlisteners.push(\n this.renderer.listen(this.host.nativeElement, 'mouseup', () => {\n // set the tabindex binding back when click is completed with mouseup\n this.addOrRemoveTabIndex();\n }),\n this.renderer.listen(this.host.nativeElement, 'mousedown', () => {\n // tabindex = 0 binding should be removed\n // so it won't be focused when click starts with mousedown\n this.removeTabIndex();\n })\n );\n });\n }\n\n ngOnDestroy(): void {\n while (this.unlisteners.length) {\n this.unlisteners.pop()();\n }\n\n this.observer.disconnect();\n this.observer = null;\n }\n\n private addTabIndex() {\n this.renderer.setAttribute(this.host.nativeElement, 'tabindex', this.tabindex);\n }\n\n private removeTabIndex() {\n this.renderer.removeAttribute(this.host.nativeElement, 'tabindex');\n }\n\n private addOrRemoveTabIndex() {\n const modalBody = this.host.nativeElement.parentElement;\n\n if (modalBody && modalBody.clientHeight < modalBody.scrollHeight) {\n this.addTabIndex();\n } else {\n this.removeTabIndex();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClarityIcons, windowCloseIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { CdkTrapFocusModule } from '../utils/cdk/cdk-trap-focus.module';\nimport { ClrModal } from './modal';\nimport { ClrModalBody } from './modal-body';\n\nexport const CLR_MODAL_DIRECTIVES: Type<any>[] = [ClrModal, ClrModalBody];\n\n@NgModule({\n imports: [CommonModule, CdkTrapFocusModule, ClrIconModule],\n declarations: [CLR_MODAL_DIRECTIVES],\n exports: [CLR_MODAL_DIRECTIVES, ClrIconModule],\n})\nexport class ClrModalModule {\n constructor() {\n ClarityIcons.addIcons(windowCloseIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Point } from '../common/popover';\n\nexport interface Position {\n anchorPoint: Point;\n popoverPoint: Point;\n offsetY: number;\n offsetX: number;\n}\n\nexport const SIGNPOST_POSITIONS: { [input: string]: Position } = {\n 'top-left': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_RIGHT, offsetY: -10, offsetX: 0 },\n 'top-middle': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_CENTER, offsetY: -10, offsetX: 0 },\n 'top-right': { anchorPoint: Point.TOP_CENTER, popoverPoint: Point.BOTTOM_LEFT, offsetY: -10, offsetX: 0 },\n 'right-top': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_BOTTOM, offsetY: 2, offsetX: 14 },\n 'right-middle': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_CENTER, offsetY: 6, offsetX: 14 },\n 'right-bottom': { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_TOP, offsetY: -1, offsetX: 14 },\n 'bottom-right': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_LEFT, offsetY: 9, offsetX: -1 },\n 'bottom-middle': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_CENTER, offsetY: 9, offsetX: 12 },\n 'bottom-left': { anchorPoint: Point.BOTTOM_CENTER, popoverPoint: Point.TOP_RIGHT, offsetY: 9, offsetX: 0 },\n 'left-bottom': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_TOP, offsetY: 0, offsetX: -14 },\n 'left-middle': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_CENTER, offsetY: 4, offsetX: -14 },\n 'left-top': { anchorPoint: Point.LEFT_CENTER, popoverPoint: Point.RIGHT_BOTTOM, offsetY: 0, offsetX: -14 },\n default: { anchorPoint: Point.RIGHT_CENTER, popoverPoint: Point.LEFT_CENTER, offsetY: 6, offsetX: 14 },\n};\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { DOCUMENT, isPlatformBrowser } from '@angular/common';\nimport { Component, ElementRef, Inject, Injector, Input, OnDestroy, Optional, PLATFORM_ID } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { SignpostFocusManager } from './providers/signpost-focus-manager.service';\nimport { SignpostIdService } from './providers/signpost-id.service';\nimport { SIGNPOST_POSITIONS } from './signpost-positions';\n\n// aka where the arrow / pointer is at in relation to the anchor\nconst POSITIONS: string[] = [\n 'top-left',\n 'top-middle',\n 'top-right',\n 'right-top',\n 'right-middle', // default\n 'right-bottom',\n 'bottom-right',\n 'bottom-middle',\n 'bottom-left',\n 'left-bottom',\n 'left-middle',\n 'left-top',\n];\n\n@Component({\n selector: 'clr-signpost-content',\n template: `\n <div class=\"signpost-wrap\">\n <div class=\"popover-pointer\"></div>\n <div class=\"signpost-content-header\">\n <button\n type=\"button\"\n [attr.aria-label]=\"commonStrings.keys.signpostClose\"\n class=\"signpost-action close\"\n (click)=\"close()\"\n [attr.aria-controls]=\"signpostContentId\"\n >\n <cds-icon shape=\"window-close\" [attr.title]=\"commonStrings.keys.close\"></cds-icon>\n </button>\n </div>\n <div class=\"signpost-content-body\" tabindex=\"0\">\n <ng-content></ng-content>\n </div>\n </div>\n `,\n host: { '[class.signpost-content]': 'true', '[id]': 'signpostContentId' },\n})\nexport class ClrSignpostContent extends AbstractPopover implements OnDestroy {\n signpostContentId = uniqueIdFactory();\n\n private document: Document;\n private _position: string;\n\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n public commonStrings: ClrCommonStringsService,\n private signpostIdService: SignpostIdService,\n private signpostFocusManager: SignpostFocusManager,\n @Inject(PLATFORM_ID) private platformId: any,\n @Inject(DOCUMENT) document: any\n ) {\n super(injector, parentHost);\n if (!parentHost) {\n throw new Error('clr-signpost-content should only be used inside of a clr-signpost');\n }\n // Defaults\n this.position = 'right-middle';\n this.closeOnOutsideClick = true;\n this.signpostIdService.setId(this.signpostContentId);\n\n this.document = document;\n }\n\n /*********\n *\n * @description\n * A setter for the position of the ClrSignpostContent popover. This is a combination of the following:\n * - anchorPoint - where on the trigger to anchor the ClrSignpostContent\n * - popoverPoint - where on the ClrSignpostContent container to align with the anchorPoint\n * - offsetY - where on the Y axis to align the ClrSignpostContent so it meets specs\n * - offsetX - where on the X axis to align the ClrSignpostContent so it meets specs\n * There are 12 possible positions to place a ClrSignpostContent container:\n * - top-left\n * - top-middle\n * - top-right\n * - right-top\n * - right-middle\n * - right-bottom\n * - bottom-right\n * - bottom-middle\n * - bottom-left\n * - left-bottom\n * - left-middle\n * - left-top\n *\n * I think of it as follows for 'top-left' -> CONTAINER_SIDE-SIDE_POSITION. In this case CONTAINER_SIDE is 'top'\n * meaning the top of the trigger icon (above the icon that hides/shows) the ClrSignpostContent. And, SIDE_POSITION\n * is 'left' meaning two things: 1) the ClrSignpostContent container extends to the left and 2) the 'arrow/pointer'\n * linking the SingpostContent to the trigger points down at the horizontal center of the trigger icon.\n *\n * @param newPosition\n */\n @Input('clrPosition')\n get position() {\n return this._position;\n }\n set position(position: string) {\n // Ugh\n this.renderer.removeClass(this.el.nativeElement, this.position);\n if (position && POSITIONS.indexOf(position) > -1) {\n this._position = position;\n } else {\n this._position = 'right-middle';\n }\n // Ugh\n this.renderer.addClass(this.el.nativeElement, this.position);\n\n const setPosition = SIGNPOST_POSITIONS[this.position];\n this.anchorPoint = setPosition.anchorPoint;\n this.popoverPoint = setPosition.popoverPoint;\n this.popoverOptions.offsetY = setPosition.offsetY;\n this.popoverOptions.offsetX = setPosition.offsetX;\n }\n\n /**********\n *\n * @description\n * Close function that uses the signpost instance to toggle the state of the content popover.\n *\n */\n close() {\n this.toggleService.open = false;\n }\n\n override ngOnDestroy() {\n super.ngOnDestroy();\n\n if (isPlatformBrowser(this.platformId) && this.el.nativeElement.contains(this.document.activeElement)) {\n this.signpostFocusManager.focusTrigger();\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { ClarityIcons, infoCircleIcon, windowCloseIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrFocusOnViewInitModule } from '../../utils/focus/focus-on-view-init/focus-on-view-init.module';\nimport { ClrSignpost } from './signpost';\nimport { ClrSignpostContent } from './signpost-content';\nimport { ClrSignpostTrigger } from './signpost-trigger';\n\nexport const CLR_SIGNPOST_DIRECTIVES: Type<any>[] = [ClrSignpost, ClrSignpostContent, ClrSignpostTrigger];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrFocusOnViewInitModule],\n declarations: [CLR_SIGNPOST_DIRECTIVES],\n exports: [CLR_SIGNPOST_DIRECTIVES, ClrConditionalModule],\n})\nexport class ClrSignpostModule {\n constructor() {\n ClarityIcons.addIcons(windowCloseIcon, infoCircleIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\n\n@Injectable()\nexport class TooltipIdService {\n private _id = new Subject<string>();\n\n get id(): Observable<string> {\n return this._id.asObservable();\n }\n\n updateId(id: string) {\n this._id.next(id);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { ClrPopoverToggleService } from '../../../utils/popover/providers/popover-toggle.service';\n\n@Injectable()\nexport class TooltipMouseService {\n private mouseOverTrigger: boolean;\n private mouseOverContent: boolean;\n\n constructor(private readonly toggleService: ClrPopoverToggleService) {}\n\n onMouseEnterTrigger() {\n this.mouseOverTrigger = true;\n this.toggleService.open = true;\n }\n\n onMouseLeaveTrigger() {\n this.mouseOverTrigger = false;\n this.hideIfMouseOut();\n }\n\n onMouseEnterContent() {\n this.mouseOverContent = true;\n }\n\n onMouseLeaveContent() {\n this.mouseOverContent = false;\n this.hideIfMouseOut();\n }\n\n private hideIfMouseOut() {\n // A zero timeout is used so that the code has a chance to update\n // the `mouseOverContent` property after the user moves the mouse from the trigger to the content.\n setTimeout(() => {\n if (!this.mouseOverTrigger && !this.mouseOverContent) {\n this.toggleService.open = false;\n }\n }, 0);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { ClrPopoverHostDirective } from '../../utils/popover/popover-host.directive';\nimport { TooltipIdService } from './providers/tooltip-id.service';\nimport { TooltipMouseService } from './providers/tooltip-mouse.service';\n\n@Component({\n selector: 'clr-tooltip',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.tooltip]': 'true',\n },\n providers: [TooltipIdService, TooltipMouseService],\n hostDirectives: [ClrPopoverHostDirective],\n})\nexport class ClrTooltip {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport function assertNever(value: never) {\n throw new Error(`Unhandled value: ${value}`);\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ElementRef, HostListener, Inject, Injector, Input, OnInit, Optional } from '@angular/core';\n\nimport { assertNever } from '../../utils/assert/assert.helpers';\nimport { uniqueIdFactory } from '../../utils/id-generator/id-generator.service';\nimport { AbstractPopover } from '../common/abstract-popover';\nimport { Point } from '../common/popover';\nimport { POPOVER_HOST_ANCHOR } from '../common/popover-host-anchor.token';\nimport { TooltipIdService } from './providers/tooltip-id.service';\nimport { TooltipMouseService } from './providers/tooltip-mouse.service';\n\nconst POSITIONS = ['bottom-left', 'bottom-right', 'top-left', 'top-right', 'right', 'left'] as const;\ntype Position = typeof POSITIONS[number];\n\nconst SIZES = ['xs', 'sm', 'md', 'lg'];\n\nconst defaultPosition = 'right';\nconst defaultSize = 'sm';\n\n@Component({\n selector: 'clr-tooltip-content',\n template: `<ng-content></ng-content>`,\n host: {\n '[class.tooltip-content]': 'true',\n '[style.opacity]': '1',\n '[attr.role]': '\"tooltip\"',\n '[id]': 'id',\n },\n})\nexport class ClrTooltipContent extends AbstractPopover implements OnInit {\n private _id: string;\n private _position: string;\n private _size: string;\n\n constructor(\n injector: Injector,\n @Optional()\n @Inject(POPOVER_HOST_ANCHOR)\n parentHost: ElementRef,\n private tooltipIdService: TooltipIdService,\n private tooltipMouseService: TooltipMouseService\n ) {\n super(injector, parentHost);\n\n if (!parentHost) {\n throw new Error('clr-tooltip-content should only be used inside of a clr-tooltip');\n }\n\n // Set the default id in case consumer does not supply a custom id.\n this.id = uniqueIdFactory();\n }\n\n @Input()\n get id(): string {\n return this._id;\n }\n set id(value: string) {\n const id = value || '';\n\n this._id = id;\n this.tooltipIdService.updateId(id);\n }\n\n @Input('clrPosition')\n get position() {\n return this._position;\n }\n set position(value: string) {\n const oldPosition = this._position;\n const newPosition = POSITIONS.includes(value as any) ? (value as Position) : defaultPosition;\n\n this._position = newPosition;\n this.updateCssClass({ oldClass: `tooltip-${oldPosition}`, newClass: `tooltip-${newPosition}` });\n\n // set the popover values based on direction\n switch (newPosition) {\n case 'top-right':\n this.anchorPoint = Point.TOP_CENTER;\n this.popoverPoint = Point.LEFT_BOTTOM;\n break;\n case 'top-left':\n this.anchorPoint = Point.TOP_CENTER;\n this.popoverPoint = Point.RIGHT_BOTTOM;\n break;\n case 'bottom-right':\n this.anchorPoint = Point.BOTTOM_CENTER;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'bottom-left':\n this.anchorPoint = Point.BOTTOM_CENTER;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n case 'right':\n this.anchorPoint = Point.RIGHT_CENTER;\n this.popoverPoint = Point.LEFT_TOP;\n break;\n case 'left':\n this.anchorPoint = Point.LEFT_CENTER;\n this.popoverPoint = Point.RIGHT_TOP;\n break;\n default:\n assertNever(newPosition);\n }\n }\n\n @Input('clrSize')\n get size() {\n return this._size;\n }\n set size(value: string) {\n const oldSize = this._size;\n const newSize = SIZES.includes(value) ? value : defaultSize;\n\n this._size = newSize;\n this.updateCssClass({ oldClass: `tooltip-${oldSize}`, newClass: `tooltip-${newSize}` });\n }\n\n ngOnInit() {\n this.size = this.size || defaultSize;\n this.position = this.position || defaultPosition;\n }\n\n @HostListener('mouseenter')\n private onMouseEnter() {\n this.tooltipMouseService.onMouseEnterContent();\n }\n\n @HostListener('mouseleave')\n private onMouseLeave() {\n this.tooltipMouseService.onMouseLeaveContent();\n }\n\n private updateCssClass({ oldClass, newClass }: { oldClass: string; newClass: string }) {\n this.renderer.removeClass(this.el.nativeElement, oldClass);\n this.renderer.addClass(this.el.nativeElement, newClass);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, HostListener } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { ClrPopoverToggleService } from '../../utils/popover/providers/popover-toggle.service';\nimport { TooltipIdService } from './providers/tooltip-id.service';\nimport { TooltipMouseService } from './providers/tooltip-mouse.service';\n\n@Directive({\n selector: '[clrTooltipTrigger]',\n host: {\n tabindex: '0',\n '[class.tooltip-trigger]': 'true',\n '[attr.aria-describedby]': 'ariaDescribedBy',\n '[attr.role]': '\"button\"',\n },\n})\nexport class ClrTooltipTrigger {\n ariaDescribedBy: string;\n private subs: Subscription[] = [];\n\n constructor(\n private toggleService: ClrPopoverToggleService,\n private tooltipIdService: TooltipIdService,\n private tooltipMouseService: TooltipMouseService\n ) {\n // The aria-described by comes from the id of content. It\n this.subs.push(this.tooltipIdService.id.subscribe(tooltipId => (this.ariaDescribedBy = tooltipId)));\n }\n\n ngOnDestroy() {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n\n @HostListener('focus')\n showTooltip(): void {\n this.toggleService.open = true;\n }\n\n @HostListener('blur')\n hideTooltip(): void {\n this.toggleService.open = false;\n }\n\n @HostListener('mouseenter')\n private onMouseEnter() {\n this.tooltipMouseService.onMouseEnterTrigger();\n }\n\n @HostListener('mouseleave')\n private onMouseLeave() {\n this.tooltipMouseService.onMouseLeaveTrigger();\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrIconModule } from '../../icon/icon.module';\nimport { ClrConditionalModule } from '../../utils/conditional/conditional.module';\nimport { ClrTooltip } from './tooltip';\nimport { ClrTooltipContent } from './tooltip-content';\nimport { ClrTooltipTrigger } from './tooltip-trigger';\n\nexport const CLR_TOOLTIP_DIRECTIVES: Type<any>[] = [ClrTooltip, ClrTooltipTrigger, ClrTooltipContent];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_TOOLTIP_DIRECTIVES],\n exports: [CLR_TOOLTIP_DIRECTIVES, ClrConditionalModule, ClrIconModule],\n})\nexport class ClrTooltipModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { ClrDropdownModule } from './dropdown/dropdown.module';\nimport { ClrSignpostModule } from './signpost/signpost.module';\nimport { ClrTooltipModule } from './tooltip/tooltip.module';\n\n@NgModule({\n exports: [ClrDropdownModule, ClrSignpostModule, ClrTooltipModule],\n})\nexport class ClrPopoverModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { isBooleanAttributeSet } from '../../utils/component/is-boolean-attribute-set';\n\n@Component({\n selector: 'clr-progress-bar',\n template: `\n <progress [id]=\"id\" [attr.max]=\"max\" [attr.value]=\"value\" [attr.data-displayval]=\"displayValue\"></progress>\n <span *ngIf=\"displayStringValue()\">{{ displayValue }}</span>\n `,\n})\nexport class ClrProgressBar {\n @Input('clrMax') max: number | string = 100;\n @Input('clrDisplayval') displayval: string;\n\n /*\n * No need to convert to `number` cause we could have\n * floating point and parseInt will round the numbers\n *\n * working with string won't have any side-effects,\n * we don't do any math so string will do the job.\n */\n @Input('clrValue') value: number | string = 0;\n\n @HostBinding('attr.id') externalId = '';\n\n private _ID: string;\n private _labeled: boolean;\n private _fade: boolean;\n private _loop: boolean;\n private _success: boolean;\n private _danger: boolean;\n private _flash: boolean;\n private _flashDanger: boolean;\n\n @Input()\n get id() {\n return this._ID;\n }\n set id(value: string) {\n this._ID = value;\n this.externalId = null;\n }\n\n @HostBinding('class.progress')\n get progressClass() {\n return true;\n }\n\n @Input('clrLabeled')\n set clrLabeled(value: boolean | string) {\n this._labeled = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.labeled')\n get labeledClass() {\n return this._labeled;\n }\n\n @Input('clrFade')\n set clrFade(value: boolean | string) {\n this._fade = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.progress-fade')\n get fadeClass() {\n return this._fade;\n }\n\n @Input('clrLoop')\n set clrLoop(value: boolean | string) {\n this._loop = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.loop')\n get loopClass() {\n return this._loop;\n }\n\n /** @deprecated since 2.0, remove in 4.0 */\n @Input('clrSuccess')\n set clrSuccess(value: boolean | string) {\n this._success = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.success')\n get successClass() {\n return this._success;\n }\n\n /** @deprecated since 2.0, remove in 4.0 */\n @Input('clrDanger')\n set clrDanger(value: boolean | string) {\n this._danger = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.danger')\n get dangerClass() {\n return this._danger;\n }\n\n @Input('clrFlash')\n set clrFlash(value: boolean | string) {\n this._flash = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.flash')\n get flashClass() {\n return this._flash;\n }\n\n /** @deprecated since 2.0, remove in 4.0 */\n @Input('clrFlashDanger')\n set clrFlashDanger(value: boolean | string) {\n this._flashDanger = isBooleanAttributeSet(value);\n }\n\n @HostBinding('class.flash-danger')\n get flashDangerClass() {\n return this._flashDanger;\n }\n\n /**\n * Make sure that we always will have something that is readable\n * for the screen reader\n */\n get displayValue() {\n if (this.displayval) {\n return this.displayval;\n }\n return `${this.value || 0}%`;\n }\n\n /**\n * Display optional text only when labeled is eneabled\n */\n displayStringValue() {\n return this._labeled;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\n\nimport { ClrProgressBar } from './progress-bar';\n\nexport const CLR_PROGRESS_BAR_DIRECTIVES: Type<any>[] = [ClrProgressBar];\n\n@NgModule({\n imports: [CommonModule],\n declarations: [CLR_PROGRESS_BAR_DIRECTIVES],\n exports: [CLR_PROGRESS_BAR_DIRECTIVES],\n})\nexport class ClrProgressBarModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrTimelineLayout {\n HORIZONTAL = 'horizontal',\n VERTICAL = 'vertical',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport enum ClrTimelineStepState {\n NOT_STARTED = 'not-started',\n CURRENT = 'current',\n PROCESSING = 'processing',\n SUCCESS = 'success',\n ERROR = 'error',\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../../utils/i18n/common-strings.service';\nimport { ClrTimelineStepState } from '../enums/timeline-step-state.enum';\nimport { IconAttributes } from '../interface/icon-attribute.interface';\n\n@Injectable()\nexport class TimelineIconAttributeService {\n private attributeMap: Map<ClrTimelineStepState, IconAttributes> = new Map<ClrTimelineStepState, IconAttributes>();\n\n constructor(commonStrings: ClrCommonStringsService) {\n this.attributeMap.set(ClrTimelineStepState.NOT_STARTED, {\n iconShape: 'circle',\n iconStatus: null,\n ariaLabel: commonStrings.keys.timelineStepNotStarted,\n });\n this.attributeMap.set(ClrTimelineStepState.CURRENT, {\n iconShape: 'dot-circle',\n iconStatus: 'info',\n ariaLabel: commonStrings.keys.timelineStepCurrent,\n });\n this.attributeMap.set(ClrTimelineStepState.PROCESSING, {\n iconShape: undefined,\n iconStatus: null,\n ariaLabel: commonStrings.keys.timelineStepProcessing,\n });\n this.attributeMap.set(ClrTimelineStepState.SUCCESS, {\n iconShape: 'success-standard',\n iconStatus: 'success',\n ariaLabel: commonStrings.keys.timelineStepSuccess,\n });\n this.attributeMap.set(ClrTimelineStepState.ERROR, {\n iconShape: 'error-standard',\n iconStatus: 'danger',\n ariaLabel: commonStrings.keys.timelineStepError,\n });\n }\n\n getAriaLabel(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).ariaLabel;\n }\n\n getIconShape(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).iconShape;\n }\n\n getIconStatus(step: ClrTimelineStepState): string {\n return this.attributeMap.get(step).iconStatus;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, HostBinding, Input } from '@angular/core';\n\nimport { ClrTimelineLayout } from './enums/timeline-layout.enum';\nimport { TimelineIconAttributeService } from './providers/timeline-icon-attribute.service';\n\n@Component({\n selector: 'clr-timeline',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-timeline]': 'true' },\n providers: [TimelineIconAttributeService],\n})\nexport class ClrTimeline {\n @Input('clrLayout') layout: ClrTimelineLayout = ClrTimelineLayout.HORIZONTAL;\n\n @HostBinding('class.clr-timeline-vertical')\n get isVertical(): boolean {\n return this.layout === ClrTimelineLayout.VERTICAL;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n/**\n * Note: Why does this component have aria-hidden attribute?\n *\n * tl;dr: we want screen readers to ignore this element when its reading out to blind users.\n *\n * In order to make a timeline step accessible to screen readers we need the title read out before the\n * icon. In order to do this, ClrTimeLine step has a ContentChild that queries for the ClrTimelineStepTitle and\n * then adds the projected text into a .clr-sr-only element that is a sibling element to the icon. See the\n * ClrTimlineStep template for the DOM structure.\n */\n@Component({\n selector: 'clr-timeline-step-title',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-timeline-step-title]': 'true', '[attr.aria-hidden]': 'true' },\n})\nexport class ClrTimelineStepTitle {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport { Component, ContentChild, ElementRef, Inject, Input, PLATFORM_ID } from '@angular/core';\n\nimport { ClrTimelineStepState } from './enums/timeline-step-state.enum';\nimport { TimelineIconAttributeService } from './providers/timeline-icon-attribute.service';\nimport { ClrTimelineStepTitle } from './timeline-step-title';\n\n@Component({\n selector: 'clr-timeline-step',\n template: `\n <ng-content select=\"clr-timeline-step-header\"></ng-content>\n <span class=\"clr-sr-only\">{{ stepTitleText }}</span>\n <ng-container *ngIf=\"!isProcessing; else processing\">\n <cds-icon\n [attr.status]=\"iconStatus\"\n [attr.shape]=\"iconShape\"\n [attr.aria-label]=\"iconAriaLabel\"\n role=\"img\"\n ></cds-icon>\n </ng-container>\n <div class=\"clr-timeline-step-body\">\n <ng-content select=\"clr-timeline-step-title\"></ng-content>\n <ng-content select=\"clr-timeline-step-description\"></ng-content>\n </div>\n\n <ng-template #processing>\n <clr-spinner clrMedium [attr.aria-label]=\"iconAriaLabel\"></clr-spinner>\n </ng-template>\n `,\n host: { '[class.clr-timeline-step]': 'true' },\n})\nexport class ClrTimelineStep {\n @Input('clrState') state: ClrTimelineStepState = ClrTimelineStepState.NOT_STARTED;\n\n @ContentChild(ClrTimelineStepTitle, { read: ElementRef }) stepTitle: ElementRef;\n\n stepTitleText: string;\n\n constructor(\n private iconAttributeService: TimelineIconAttributeService,\n @Inject(PLATFORM_ID) private platformId: any\n ) {}\n\n get iconAriaLabel(): string {\n return this.iconAttributeService.getAriaLabel(this.state);\n }\n\n get iconShape(): string {\n return this.iconAttributeService.getIconShape(this.state);\n }\n\n get iconStatus(): string {\n return this.iconAttributeService.getIconStatus(this.state);\n }\n\n get isProcessing(): boolean {\n return this.state === ClrTimelineStepState.PROCESSING;\n }\n\n ngAfterContentInit() {\n if (this.stepTitle && isPlatformBrowser(this.platformId)) {\n this.stepTitleText = this.stepTitle.nativeElement.innerText;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-timeline-step-description',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-timeline-step-description]': 'true' },\n})\nexport class ClrTimelineStepDescription {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n selector: 'clr-timeline-step-header',\n template: `<ng-content></ng-content>`,\n host: { '[class.clr-timeline-step-header]': 'true' },\n})\nexport class ClrTimelineStepHeader {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { circleIcon, ClarityIcons, dotCircleIcon, errorStandardIcon, successStandardIcon } from '@cds/core/icon';\n\nimport { ClrIconModule } from '../icon/icon.module';\nimport { ClrSpinnerModule } from '../progress/spinner/spinner.module';\nimport { ClrTimeline } from './timeline';\nimport { ClrTimelineStep } from './timeline-step';\nimport { ClrTimelineStepDescription } from './timeline-step-description';\nimport { ClrTimelineStepHeader } from './timeline-step-header';\nimport { ClrTimelineStepTitle } from './timeline-step-title';\n\nconst CLR_TIMELINE_DIRECTIVES: Type<any>[] = [\n ClrTimeline,\n ClrTimelineStep,\n ClrTimelineStepDescription,\n ClrTimelineStepHeader,\n ClrTimelineStepTitle,\n];\n\n@NgModule({\n imports: [CommonModule, ClrIconModule, ClrSpinnerModule],\n exports: [...CLR_TIMELINE_DIRECTIVES, ClrIconModule, ClrSpinnerModule],\n declarations: [CLR_TIMELINE_DIRECTIVES],\n})\nexport class ClrTimelineModule {\n constructor() {\n ClarityIcons.addIcons(circleIcon, dotCircleIcon, errorStandardIcon, successStandardIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class ButtonHubService {\n buttonsReady = false;\n\n private _previousBtnClicked = new Subject<any>();\n private _nextBtnClicked = new Subject<any>();\n private _dangerBtnClicked = new Subject<any>();\n private _cancelBtnClicked = new Subject<any>();\n private _finishBtnClicked = new Subject<any>();\n private _customBtnClicked = new Subject<any>();\n\n get previousBtnClicked(): Observable<any> {\n return this._previousBtnClicked.asObservable();\n }\n\n get nextBtnClicked(): Observable<any> {\n return this._nextBtnClicked.asObservable();\n }\n\n get dangerBtnClicked(): Observable<any> {\n return this._dangerBtnClicked.asObservable();\n }\n\n get cancelBtnClicked(): Observable<any> {\n return this._cancelBtnClicked.asObservable();\n }\n\n get finishBtnClicked(): Observable<any> {\n return this._finishBtnClicked.asObservable();\n }\n\n get customBtnClicked(): Observable<any> {\n return this._customBtnClicked.asObservable();\n }\n\n buttonClicked(buttonType: string): void {\n if ('previous' === buttonType) {\n this._previousBtnClicked.next();\n } else if ('next' === buttonType) {\n this._nextBtnClicked.next();\n } else if ('finish' === buttonType) {\n this._finishBtnClicked.next();\n } else if ('danger' === buttonType) {\n this._dangerBtnClicked.next();\n } else if ('cancel' === buttonType) {\n this._cancelBtnClicked.next();\n } else {\n this._customBtnClicked.next(buttonType);\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, QueryList } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Subject } from 'rxjs';\n\nimport { ClrWizardPage } from '../wizard-page';\n\n/**\n * PageCollectionService manages the collection of pages assigned to the wizard and offers\n * a number of functions useful across the wizards providers and subcomponents -- all related\n * to essentially lookups on the collection of pages.\n *\n * The easiest way to access PageCollectionService is via the wizard. The\n * following example would allow you to access your instance of the wizard from your host\n * component and thereby access the page collection via YourHostComponent.wizard.pageCollection.\n *\n * @example\n * <clr-wizard #wizard ...>\n *\n * @example\n * export class YourHostComponent {\n * @ViewChild(\"wizard\") wizard: Wizard;\n * ...\n * }\n *\n * The heart of the page collection is the query list of pages, which it is assigned as a\n * reference to the Wizard.pages QueryList when the wizard is created.\n *\n */\n@Injectable()\nexport class PageCollectionService {\n /**\n * A reference to the Wizard.pages QueryList.\n *\n * Populated when the wizard is created.\n *\n * @memberof PageCollectionService\n */\n pages: QueryList<ClrWizardPage>;\n\n /**\n *\n * @memberof PageCollectionService\n */\n private _pagesReset = new Subject<boolean>();\n\n /**\n * Converts the PageCollectionService.pages QueryList to an array and returns it.\n *\n * Useful for many instances when you would prefer a QueryList to act like an array.\n *\n * @memberof PageCollectionService\n */\n get pagesAsArray(): ClrWizardPage[] {\n return this.pages ? this.pages.toArray() : [];\n }\n\n /**\n * Returns the length of the pages query list.\n *\n * @memberof PageCollectionService\n */\n get pagesCount(): number {\n return this.pages ? this.pages.length : 0;\n }\n\n /**\n * Returns the next-to-last page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n get penultimatePage(): ClrWizardPage {\n const pageCount = this.pagesCount;\n\n if (pageCount < 2) {\n return null;\n }\n\n return this.pagesAsArray[pageCount - 2];\n }\n\n /**\n * Returns the last page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n get lastPage(): ClrWizardPage {\n const pageCount = this.pagesCount;\n\n if (pageCount < 1) {\n return null;\n }\n\n return this.pagesAsArray[pageCount - 1];\n }\n\n /**\n * Returns the first page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n get firstPage(): ClrWizardPage {\n if (!this.pagesCount) {\n return null;\n }\n\n return this.pagesAsArray[0];\n }\n\n /**\n * An observable that the navigation service listens to in order to know when\n * the page collection completed states have been reset to false so that way it\n * can also reset the navigation to make the first page in the page collection\n * current/active.\n *\n * @memberof PageCollectionService\n */\n get pagesReset(): Observable<boolean> {\n return this._pagesReset.asObservable();\n }\n\n /**\n * Used mostly internally, but accepts a string ID and returns a ClrWizardPage\n * object that matches the ID passed. Note that IDs here should include the prefix\n * \"clr-wizard-page-\".\n *\n * Returns the next-to-last page in the query list of pages. Operates as a getter\n * so that it isn't working with stale data.\n *\n * @memberof PageCollectionService\n */\n getPageById(id: string): ClrWizardPage {\n const foundPages: ClrWizardPage[] = this.pages.filter((page: ClrWizardPage) => id === page.id);\n return this.checkResults(foundPages, id);\n }\n\n /**\n * Accepts s number as a parameter and treats that number as the index of the page\n * you're looking for in the collection of pages. Returns a wizard page object.\n *\n * @memberof PageCollectionService\n */\n getPageByIndex(index: number): ClrWizardPage {\n const pageCount = this.pagesCount;\n const pagesLastIndex: number = pageCount > 1 ? pageCount - 1 : 0;\n\n if (index < 0) {\n throw new Error('Cannot retrieve page with index of ' + index);\n }\n\n if (index > pagesLastIndex) {\n throw new Error('Page index is greater than length of pages array.');\n }\n\n return this.pagesAsArray[index];\n }\n\n /**\n * Takes a wizard page object as a parameter and returns its index in the\n * collection of pages.\n *\n * @memberof PageCollectionService\n */\n getPageIndex(page: ClrWizardPage): number {\n const index = this.pagesAsArray.indexOf(page);\n\n if (index < 0) {\n throw new Error('Requested page cannot be found in collection of pages.');\n }\n\n return index;\n }\n\n /**\n * Accepts two numeric indexes and returns an array of wizard page objects that include\n * all wizard pages in the page collection from the first index to the second.\n *\n * @memberof PageCollectionService\n */\n pageRange(start: number, end: number): ClrWizardPage[] {\n let pages: ClrWizardPage[] = [];\n\n if (start < 0 || end < 0) {\n return [];\n }\n\n if (start === null || typeof start === 'undefined' || isNaN(start)) {\n return [];\n }\n\n if (end === null || typeof end === 'undefined' || isNaN(end)) {\n return [];\n }\n\n if (end > this.pagesCount) {\n end = this.pagesCount;\n }\n\n pages = this.pagesAsArray;\n\n if (end - start === 0) {\n // just return the one page they want\n return [this.getPageByIndex(start)];\n }\n\n // slice end does not include item referenced by end index, which is weird for users\n // incrementing end index here to correct that so users and other methods\n // don't have to think about it\n end = end + 1;\n\n // slice does not return the last one in the range but it does include the first one\n // does not modify original array\n return pages.slice(start, end);\n }\n\n /**\n * Accepts two wizard page objects and returns those page objects with all other page\n * objects between them in the page collection. It doesn't care which page is ahead of the\n * other in the parameters. It will be smart enough to figure that out on its own.\n *\n * @memberof PageCollectionService\n */\n getPageRangeFromPages(page: ClrWizardPage, otherPage: ClrWizardPage): ClrWizardPage[] {\n const pageIndex = this.getPageIndex(page);\n const otherPageIndex = this.getPageIndex(otherPage);\n let startIndex: number;\n let endIndex: number;\n\n if (pageIndex <= otherPageIndex) {\n startIndex = pageIndex;\n endIndex = otherPageIndex;\n } else {\n startIndex = otherPageIndex;\n endIndex = pageIndex;\n }\n return this.pageRange(startIndex, endIndex);\n }\n\n /**\n * Takes a wizard page object as a parameter and returns the wizard page object of\n * the page immediately before it in the page collection. Returns null if there is\n * no page before the page it is passed.\n *\n * @memberof PageCollectionService\n */\n getPreviousPage(page: ClrWizardPage) {\n const myPageIndex = this.getPageIndex(page);\n const previousPageIndex = myPageIndex - 1;\n if (previousPageIndex < 0) {\n return null;\n }\n return this.getPageByIndex(previousPageIndex);\n }\n\n /**\n * Accepts a wizard page object as a parameter and returns a Boolean that says if\n * the page you sent it is complete.\n *\n * @memberof PageCollectionService\n */\n previousPageIsCompleted(page: ClrWizardPage) {\n if (!page) {\n return false;\n }\n\n const previousPage = this.getPreviousPage(page);\n\n if (null === previousPage) {\n // page is the first page. no previous page.\n return true;\n }\n\n return previousPage.completed;\n }\n\n /**\n * Takes a wizard page object as a parameter and returns the wizard page object of\n * the page immediately after it in the page collection. Returns null if there is\n * no page after the page it is passed.\n *\n * @memberof PageCollectionService\n */\n getNextPage(page: ClrWizardPage) {\n const myPageIndex = this.getPageIndex(page);\n const nextPageIndex = myPageIndex + 1;\n\n if (nextPageIndex >= this.pagesAsArray.length) {\n return null;\n }\n return this.getPageByIndex(nextPageIndex);\n }\n\n /**\n * Takes a wizard page object as a parameter and generates a step item id from the\n * page ID. Returns the generated step item ID as a string.\n *\n * @memberof PageCollectionService\n */\n getStepItemIdForPage(page: ClrWizardPage) {\n const pageId = page.id;\n const pageIdParts = pageId.split('-').reverse();\n\n pageIdParts[1] = 'step';\n return pageIdParts.reverse().join('-');\n }\n\n /**\n * Generally only used internally to mark that a specific page has been \"committed\".\n * This involves marking the page complete and firing the ClrWizardPage.onCommit\n * (clrWizardPageOnCommit) output. Takes the wizard page object that you intend to\n * mark completed as a parameter.\n *\n * @memberof PageCollectionService\n */\n commitPage(page: ClrWizardPage) {\n const pageHasOverrides = page.stopNext || page.preventDefault;\n page.completed = true;\n\n if (!pageHasOverrides) {\n // prevent loop of event emission; alternate flows work off\n // of event emitters this is how they break that cycle.\n page.onCommit.emit(page.id);\n }\n }\n\n /**\n * Sets all completed states of the pages in the page collection to false and\n * notifies the navigation service to likewise reset the navigation.\n *\n * @memberof PageCollectionService\n */\n reset() {\n this.pagesAsArray.forEach((page: ClrWizardPage) => {\n page.completed = false;\n });\n this._pagesReset.next(true);\n }\n\n /**\n * Rolls through all the pages in the page collection to make sure there are no\n * incomplete pages sandwiched between completed pages in the workflow. Identifies\n * the first incomplete page index and sets all pages behind it to a completed\n * state of false.\n *\n * @memberof PageCollectionService\n */\n updateCompletedStates(): void {\n const firstIncompleteIndex = this.findFirstIncompletePageIndex();\n\n if (firstIncompleteIndex === this.pagesAsArray.length - 1) {\n // all complete no need to do anything\n return;\n }\n\n this.pagesAsArray.forEach((page: ClrWizardPage, index: number) => {\n if (index > firstIncompleteIndex) {\n page.completed = false;\n }\n });\n }\n\n /**\n * Retrieves the index of the first incomplete page in the page collection.\n *\n * @memberof PageCollectionService\n */\n findFirstIncompletePageIndex(): number {\n let returnIndex: number = null;\n this.pagesAsArray.forEach((page: ClrWizardPage, index: number) => {\n if (null === returnIndex && false === page.completed) {\n returnIndex = index;\n }\n });\n\n // fallthrough, all completed, return last page\n if (null === returnIndex) {\n returnIndex = this.pagesCount - 1;\n }\n\n return returnIndex;\n }\n\n findFirstIncompletePage(): ClrWizardPage {\n const myIncompleteIndex = this.findFirstIncompletePageIndex();\n return this.pagesAsArray[myIncompleteIndex];\n }\n\n /**\n * Consolidates guard logic that prevents a couple of unfortunate edge cases with\n * look ups on the collection of pages.\n *\n * @memberof PageCollectionService\n */\n private checkResults(results: ClrWizardPage[], requestedPageId: string) {\n const foundPagesCount: number = results.length || 0;\n\n if (foundPagesCount > 1) {\n throw new Error('More than one page has the requested id ' + requestedPageId + '.');\n } else if (foundPagesCount < 1) {\n throw new Error('No page can be found with the id ' + requestedPageId + '.');\n } else {\n return results[0];\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, OnDestroy, TemplateRef } from '@angular/core';\nimport { Observable, Subject } from 'rxjs';\nimport { Subscription } from 'rxjs';\n\nimport { ClrWizardPage } from '../wizard-page';\nimport { ButtonHubService } from './button-hub.service';\nimport { PageCollectionService } from './page-collection.service';\n\n/**\n * Performs navigation functions for a wizard and manages the current page. Presented as a\n * separate service to encapsulate the behavior of navigating and completing the wizard so\n * that it can be shared across the wizard and its sub-components.\n *\n * The easiest way to access the navigation service is there a reference on your wizard. The\n * Following example would allow you to access your instance of the wizard from your host\n * component and thereby access the navigation service via YourHostComponent.wizard.navService.\n *\n * @example\n * <clr-wizard #wizard ...>\n *\n * @example\n * export class YourHostComponent {\n * @ViewChild(\"wizard\") wizard: Wizard;\n * ...\n * }\n *\n */\n@Injectable()\nexport class WizardNavigationService implements OnDestroy {\n /**\n * Is notified when a previous button is clicked in the wizard. Performs checks\n * before alerting the current page of the button click. Enacts navigation to\n * the previous page if not overridden at the page level.\n *\n * @memberof WizardNavigationService\n */\n previousButtonSubscription: Subscription;\n\n /**\n * Is notified when a Next button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n nextButtonSubscription: Subscription;\n\n /**\n * Is notified when a danger button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n dangerButtonSubscription: Subscription;\n\n /**\n * Is notified when a finish button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n finishButtonSubscription: Subscription;\n\n /**\n * Is notified when a Custom button is clicked in the wizard.\n *\n * @memberof WizardNavigationService\n */\n customButtonSubscription: Subscription;\n\n /**\n * Is notified when a Cancel button is clicked in the wizard. Notifies the wizard,\n * which handles all cancel functionality, if cancel is not overridden at the page\n * level.\n *\n * @memberof WizardNavigationService\n */\n cancelButtonSubscription: Subscription;\n\n /**\n * Resets navigation to make the first page current when the page collection service\n * emits an event notifying WizardNavigationService that it has reset all pages\n * to their pristine, incomplete state.\n *\n * @memberof WizardNavigationService\n */\n pagesResetSubscription: Subscription;\n\n /**\n * A Boolean flag used by the ClrWizardPage to avoid a race condition when pages are\n * loading and there is no current page defined.\n *\n * @memberof WizardNavigationService\n */\n navServiceLoaded = false;\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.forceForward (clrWizardForceForwardNavigation) input. When true,\n * navigating backwards in the stepnav menu will reset any skipped pages' completed\n * state to false.\n *\n * This is useful when a wizard executes validation on a page-by-page basis when\n * the next button is clicked.\n *\n * @memberof WizardNavigationService\n */\n forceForwardNavigation = false;\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.stopCancel (clrWizardPreventDefaultCancel) input. When true, the cancel\n * routine is subverted and must be reinstated in the host component calling Wizard.close()\n * at some point.\n *\n * @memberof WizardNavigationService\n */\n wizardHasAltCancel = false;\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.stopNext (clrWizardPreventDefaultNext) input. When true, the next and finish\n * routines are subverted and must be reinstated in the host component calling Wizard.next(),\n * Wizard.forceNext(), Wizard.finish(), or Wizard.forceFinish().\n *\n * @memberof WizardNavigationService\n */\n wizardHasAltNext = false;\n\n /**\n * A boolean flag shared across the Wizard subcomponents that follows the value\n * of the Wizard.stopNavigation (clrWizardPreventNavigation) input. When true, all\n * navigational elements in the wizard are disabled.\n *\n * This is intended to freeze the wizard in place. Events are not fired so this is\n * not a way to implement alternate functionality for navigation.\n *\n * @memberof WizardNavigationService\n */\n wizardStopNavigation = false;\n\n /**\n * A boolean flag shared with the stepnav items that prevents user clicks on\n * stepnav items from navigating the wizard.\n *\n * @memberof WizardNavigationService\n */\n wizardDisableStepnav = false;\n\n /**\n * @memberof WizardNavigationService\n */\n private _currentPage: ClrWizardPage;\n\n /**\n *\n * @memberof WizardNavigationService\n */\n private _currentChanged = new Subject<ClrWizardPage>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _movedToNextPage = new Subject<boolean>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _wizardFinished = new Subject<boolean>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _movedToPreviousPage = new Subject<boolean>();\n\n /**\n * @memberof WizardNavigationService\n */\n private _cancelWizard = new Subject<any>();\n\n /**\n * Creates an instance of WizardNavigationService. Also sets up subscriptions\n * that listen to the button service to determine when a button has been clicked\n * in the wizard. Is also responsible for taking action when the page collection\n * requests that navigation be reset to its pristine state.\n *\n * @memberof WizardNavigationService\n */\n constructor(public pageCollection: PageCollectionService, public buttonService: ButtonHubService) {\n this.previousButtonSubscription = this.buttonService.previousBtnClicked.subscribe(() => {\n const currentPage = this.currentPage;\n if (this.currentPageIsFirst || currentPage.previousStepDisabled) {\n return;\n }\n currentPage.previousButtonClicked.emit(currentPage);\n if (!currentPage.preventDefault) {\n this.previous();\n }\n });\n\n this.nextButtonSubscription = this.buttonService.nextBtnClicked.subscribe(() => {\n this.checkAndCommitCurrentPage('next');\n });\n\n this.dangerButtonSubscription = this.buttonService.dangerBtnClicked.subscribe(() => {\n this.checkAndCommitCurrentPage('danger');\n });\n\n this.finishButtonSubscription = this.buttonService.finishBtnClicked.subscribe(() => {\n this.checkAndCommitCurrentPage('finish');\n });\n\n this.customButtonSubscription = this.buttonService.customBtnClicked.subscribe((type: string) => {\n if (!this.wizardStopNavigation) {\n this.currentPage.customButtonClicked.emit(type);\n }\n });\n\n this.cancelButtonSubscription = this.buttonService.cancelBtnClicked.subscribe(() => {\n if (this.wizardStopNavigation) {\n return;\n }\n\n if (this.currentPage.preventDefault) {\n this.currentPage.pageOnCancel.emit(this.currentPage);\n } else {\n this.cancel();\n }\n });\n\n this.pagesResetSubscription = this.pageCollection.pagesReset.subscribe(() => {\n this.setFirstPageCurrent();\n });\n }\n\n /**\n * An Observable that is predominantly used amongst the subcomponents and services\n * of the wizard. It is recommended that users listen to the ClrWizardPage.onLoad\n * (clrWizardPageOnLoad) output instead of this Observable.\n *\n * @memberof WizardNavigationService\n */\n get currentPageChanged(): Observable<ClrWizardPage> {\n // TODO: MAKE SURE EXTERNAL OUTPUTS SAY 'CHANGE' NOT 'CHANGED'\n // A BREAKING CHANGE SO AWAITING MINOR RELEASE\n return this._currentChanged.asObservable();\n }\n\n /**\n * @memberof WizardNavigationService\n */\n get currentPageTitle(): TemplateRef<any> {\n // when the querylist of pages is empty. this is the first place it fails...\n if (!this.currentPage) {\n return null;\n }\n return this.currentPage.title;\n }\n\n /**\n * Returns a Boolean that tells you whether or not the current page is the first\n * page in the Wizard.\n *\n * This is helpful for determining whether a page is navigable.\n *\n * @memberof WizardNavigationService\n */\n get currentPageIsFirst(): boolean {\n return this.pageCollection.firstPage === this.currentPage;\n }\n\n /**\n * Returns a Boolean that tells you whether or not the current page is the\n * last page in the Wizard.\n *\n * This is used to determine which buttons should display in the wizard footer.\n *\n * @memberof WizardNavigationService\n */\n get currentPageIsLast(): boolean {\n return this.pageCollection.lastPage === this.currentPage;\n }\n\n /**\n * Returns the ClrWizardPage object of the current page or null.\n *\n * @memberof WizardNavigationService\n */\n get currentPage(): ClrWizardPage {\n if (!this._currentPage) {\n return null;\n }\n return this._currentPage;\n }\n\n /**\n * Accepts a ClrWizardPage object, since that object to be the current/active\n * page in the wizard, and emits the ClrWizardPage.onLoad (clrWizardPageOnLoad)\n * event for that page.\n *\n * Note that all of this work is bypassed if the ClrWizardPage object is already\n * the current page.\n *\n * @memberof WizardNavigationService\n */\n set currentPage(page: ClrWizardPage) {\n if (this._currentPage !== page && !this.wizardStopNavigation) {\n this._currentPage = page;\n page.onLoad.emit(page.id);\n this._currentChanged.next(page);\n }\n }\n\n /**\n * An observable used internally to alert the wizard that forward navigation\n * has occurred. It is recommended that you use the Wizard.onMoveNext\n * (clrWizardOnNext) output instead of this one.\n *\n * @memberof WizardNavigationService\n */\n get movedToNextPage(): Observable<boolean> {\n return this._movedToNextPage.asObservable();\n }\n\n /**\n * An observable used internally to alert the wizard that the nav service\n * has approved completion of the wizard.\n *\n * It is recommended that you use the Wizard.wizardFinished (clrWizardOnFinish)\n * output instead of this one.\n *\n * @memberof WizardNavigationService\n */\n get wizardFinished(): Observable<boolean> {\n return this._wizardFinished.asObservable();\n }\n\n /**\n * Notifies the wizard when backwards navigation has occurred via the\n * previous button.\n *\n * @memberof WizardNavigationService\n */\n get movedToPreviousPage(): Observable<boolean> {\n return this._movedToPreviousPage.asObservable();\n }\n\n /**\n * Notifies the wizard that a user is trying to cancel it.\n *\n * @memberof WizardNavigationService\n */\n get notifyWizardCancel(): Observable<any> {\n return this._cancelWizard.asObservable();\n }\n\n /**\n *\n * @memberof WizardNavigationService\n */\n ngOnDestroy(): void {\n this.previousButtonSubscription.unsubscribe();\n this.nextButtonSubscription.unsubscribe();\n this.dangerButtonSubscription.unsubscribe();\n this.finishButtonSubscription.unsubscribe();\n this.customButtonSubscription.unsubscribe();\n this.cancelButtonSubscription.unsubscribe();\n this.pagesResetSubscription.unsubscribe();\n }\n\n /**\n * This is a public function that can be used to programmatically advance\n * the user to the next page.\n *\n * When invoked, this method will move the wizard to the next page after\n * successful validation. Note that this method goes through all checks\n * and event emissions as if Wizard.next(false) had been called.\n *\n * In most cases, it makes more sense to use Wizard.next(false).\n *\n * @memberof WizardNavigationService\n */\n next(): void {\n if (this.currentPageIsLast) {\n this.checkAndCommitCurrentPage('finish');\n } else {\n this.checkAndCommitCurrentPage('next');\n }\n }\n\n /**\n * Bypasses checks and most event emissions to force a page to navigate forward.\n *\n * Comparable to calling Wizard.next() or Wizard.forceNext().\n *\n * @memberof WizardNavigationService\n */\n forceNext(): void {\n const currentPage: ClrWizardPage = this.currentPage;\n const nextPage: ClrWizardPage = this.pageCollection.getNextPage(currentPage);\n\n // catch errant null or undefineds that creep in\n if (!nextPage) {\n throw new Error('The wizard has no next page to go to.');\n }\n\n if (this.wizardStopNavigation) {\n return;\n }\n\n if (!currentPage.completed) {\n // this is a state that alt next flows can get themselves in...\n this.pageCollection.commitPage(currentPage);\n }\n this.currentPage = nextPage;\n }\n\n /**\n * Accepts a button/action type as a parameter. Encapsulates all logic for\n * event emissions, state of the current page, and wizard and page level overrides.\n *\n * Avoid calling this function directly unless you really know what you're doing.\n *\n * @memberof WizardNavigationService\n */\n checkAndCommitCurrentPage(buttonType: string): void {\n const currentPage: ClrWizardPage = this.currentPage;\n\n if (!currentPage.readyToComplete || this.wizardStopNavigation) {\n return;\n }\n\n const iAmTheLastPage = this.currentPageIsLast;\n\n const isNext = buttonType === 'next';\n const isDanger = buttonType === 'danger';\n const isDangerNext = isDanger && !iAmTheLastPage;\n const isDangerFinish = isDanger && iAmTheLastPage;\n const isFinish = buttonType === 'finish' || isDangerFinish;\n\n if (isFinish && !iAmTheLastPage) {\n return;\n }\n\n currentPage.primaryButtonClicked.emit(buttonType);\n\n if (isFinish) {\n currentPage.finishButtonClicked.emit(currentPage);\n } else if (isDanger) {\n currentPage.dangerButtonClicked.emit();\n } else if (isNext) {\n currentPage.nextButtonClicked.emit();\n }\n\n if (currentPage.stopNext || currentPage.preventDefault) {\n currentPage.onCommit.emit(currentPage.id);\n return;\n }\n\n // order is very important with these emitters!\n if (isFinish) {\n // mark page as complete\n if (!this.wizardHasAltNext) {\n this.pageCollection.commitPage(currentPage);\n }\n this._wizardFinished.next();\n }\n\n if (this.wizardHasAltNext) {\n this.pageCollection.commitPage(currentPage);\n\n if (isNext || isDangerNext) {\n this._movedToNextPage.next(true);\n }\n // jump out here, no matter what type we're looking at\n return;\n }\n\n if (isNext || isDangerNext) {\n this.forceNext();\n }\n\n if (!this.wizardHasAltNext && !this.wizardStopNavigation) {\n this._movedToNextPage.next(true);\n }\n }\n\n /**\n * This is a public function that can be used to programmatically conclude\n * the wizard.\n *\n * When invoked, this method will initiate the work involved with finalizing\n * and finishing the wizard workflow. Note that this method goes through all\n * checks and event emissions as if Wizard.finish(false) had been called.\n *\n * In most cases, it makes more sense to use Wizard.finish(false).\n *\n * @memberof WizardNavigationService\n */\n finish(): void {\n this.checkAndCommitCurrentPage('finish');\n }\n\n /**\n * Programmatically moves the wizard to the page before the current page.\n *\n * In most instances, it makes more sense to call Wizard.previous()\n * which does the same thing.\n *\n * @memberof WizardNavigationService\n */\n previous(): void {\n if (this.currentPageIsFirst || this.wizardStopNavigation) {\n return;\n }\n\n const previousPage = this.pageCollection.getPreviousPage(this.currentPage);\n\n if (!previousPage) {\n return;\n }\n\n this._movedToPreviousPage.next(true);\n\n if (this.forceForwardNavigation) {\n this.currentPage.completed = false;\n }\n\n this.currentPage = previousPage;\n }\n\n /**\n * Allows a hook into the cancel workflow of the wizard from the nav service. Note that\n * this route goes through all checks and event emissions as if a cancel button had\n * been clicked.\n *\n * In most cases, users looking for a hook into the cancel routine are actually looking\n * for a way to close the wizard from their host component because they have prevented\n * the default cancel action.\n *\n * In this instance, it is recommended that you use Wizard.close() to avoid any event\n * emission loop resulting from an event handler calling back into routine that will\n * again evoke the events it handles.\n *\n * @memberof WizardNavigationService\n */\n cancel(): void {\n this._cancelWizard.next();\n }\n\n /**\n * Performs all required checks to determine if a user can navigate to a page. Checking at each\n * point if a page is navigable -- completed where the page immediately after the last completed\n * page.\n *\n * Takes two parameters. The first one must be either the ClrWizardPage object or the ID of the\n * ClrWizardPage object that you want to make the current page.\n *\n * The second parameter is optional and is a Boolean flag for \"lazy completion\". What this means\n * is the Wizard will mark all pages between the current page and the page you want to navigate\n * to as completed. This is useful for informational wizards that do not require user action,\n * allowing an easy means for users to jump ahead.\n *\n * To avoid checks on navigation, use ClrWizardPage.makeCurrent() instead.\n *\n * @memberof WizardNavigationService\n */\n goTo(pageToGoToOrId: any, lazyComplete = false) {\n const myPages = this.pageCollection;\n const pageToGoTo = typeof pageToGoToOrId === 'string' ? myPages.getPageById(pageToGoToOrId) : pageToGoToOrId;\n const currentPage = this.currentPage;\n\n // no point in going to the current page. you're there already!\n // also hard block on any navigation when stopNavigation is true\n if (pageToGoTo === currentPage || this.wizardStopNavigation) {\n return;\n }\n\n const currentPageIndex = myPages.getPageIndex(currentPage);\n const goToPageIndex = myPages.getPageIndex(pageToGoTo);\n const goingForward = goToPageIndex > currentPageIndex;\n const pagesToCheck = myPages.getPageRangeFromPages(this.currentPage, pageToGoTo);\n const okayToMove = lazyComplete || this.canGoTo(pagesToCheck);\n\n if (!okayToMove) {\n return;\n }\n\n if (goingForward && lazyComplete) {\n pagesToCheck.forEach((page: ClrWizardPage) => {\n if (page !== pageToGoTo) {\n page.completed = true;\n }\n });\n } else if (!goingForward && this.forceForwardNavigation) {\n pagesToCheck.forEach((page: ClrWizardPage) => {\n page.completed = false;\n });\n }\n\n this.currentPage = pageToGoTo;\n }\n\n /**\n * Accepts a range of ClrWizardPage objects as a parameter. Performs the work of checking\n * those objects to determine if navigation can be accomplished.\n *\n * @memberof WizardNavigationService\n */\n canGoTo(pagesToCheck: ClrWizardPage[]): boolean {\n let okayToMove = true;\n const myPages = this.pageCollection;\n\n // previous page can be important when moving because if it's completed it\n // allows us to move to the page even if it's incomplete...\n let previousPagePasses: boolean;\n\n if (!pagesToCheck || pagesToCheck.length < 1) {\n return false;\n }\n\n pagesToCheck.forEach((page: ClrWizardPage) => {\n if (!okayToMove) {\n return;\n }\n\n if (page.completed) {\n // default is true. just jump out instead of complicating it.\n return;\n }\n\n // so we know our page is not completed...\n const previousPage = myPages.getPageIndex(page) > 0 ? myPages.getPreviousPage(page) : null;\n previousPagePasses = previousPage === null || previousPage.completed === true;\n\n // we are false if not the current page AND previous page is not completed\n // (but must have a previous page)\n if (!page.current && !previousPagePasses) {\n okayToMove = false;\n }\n // falls through to true as default\n });\n\n return okayToMove;\n }\n\n /**\n * Looks through the collection of pages to find the first one that is incomplete\n * and makes that page the current/active page.\n *\n * @memberof WizardNavigationService\n */\n setLastEnabledPageCurrent(): void {\n const allPages: ClrWizardPage[] = this.pageCollection.pagesAsArray;\n let lastCompletedPageIndex: number = null;\n\n allPages.forEach((page: ClrWizardPage, index: number) => {\n if (page.completed) {\n lastCompletedPageIndex = index;\n }\n });\n\n if (lastCompletedPageIndex === null) {\n // always is at least the first item...\n lastCompletedPageIndex = 0;\n } else if (lastCompletedPageIndex + 1 < allPages.length) {\n lastCompletedPageIndex = lastCompletedPageIndex + 1;\n }\n\n this.currentPage = allPages[lastCompletedPageIndex];\n }\n\n /**\n * Finds the first page in the collection of pages and makes that page the\n * current/active page.\n *\n * @memberof WizardNavigationService\n */\n setFirstPageCurrent(): void {\n this.currentPage = this.pageCollection.pagesAsArray[0];\n }\n\n /**\n * Updates the stepnav on the left side of the wizard when pages are dynamically\n * added or removed from the collection of pages.\n *\n * @memberof WizardNavigationService\n */\n updateNavigation(): void {\n let toSetCurrent: ClrWizardPage;\n\n this.pageCollection.updateCompletedStates();\n\n const currentPageRemoved = this.pageCollection.pagesAsArray.indexOf(this.currentPage) < 0;\n if (currentPageRemoved) {\n toSetCurrent = this.pageCollection.findFirstIncompletePage();\n this.currentPage = toSetCurrent;\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Injectable, QueryList } from '@angular/core';\n\nimport { ClrWizardHeaderAction } from '../wizard-header-action';\nimport { WizardNavigationService } from './wizard-navigation.service';\n\n@Injectable()\nexport class HeaderActionService {\n // this service communicates information about the presence/display of header actions\n // across the wizard\n\n wizardHeaderActions: QueryList<ClrWizardHeaderAction>;\n\n constructor(public navService: WizardNavigationService) {}\n\n get wizardHasHeaderActions(): boolean {\n const wizardHdrActions = this.wizardHeaderActions;\n if (!wizardHdrActions) {\n return false;\n }\n return wizardHdrActions.toArray().length > 0;\n }\n\n get currentPageHasHeaderActions(): boolean {\n return this.navService.currentPage ? this.navService.currentPage.hasHeaderActions : false;\n }\n\n get showWizardHeaderActions(): boolean {\n return !this.currentPageHasHeaderActions && this.wizardHasHeaderActions;\n }\n\n get displayHeaderActionsWrapper(): boolean {\n return this.currentPageHasHeaderActions || this.wizardHasHeaderActions;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\nlet wizardHeaderActionIndex = 0;\n\n@Component({\n selector: 'clr-wizard-header-action',\n template: `\n <button\n type=\"button\"\n class=\"btn clr-wizard-header-action btn-link\"\n [id]=\"id\"\n [class.disabled]=\"disabled\"\n (click)=\"click()\"\n [title]=\"title\"\n >\n <ng-content></ng-content>\n </button>\n `,\n host: { class: 'clr-wizard-header-action-wrapper' },\n})\nexport class ClrWizardHeaderAction {\n // title is explanatory text added to the header action\n @Input('title') title = '';\n\n // If our host has an ID attribute, we use this instead of our index.\n @Input('id') _id: string = (wizardHeaderActionIndex++).toString();\n\n @Input('clrWizardHeaderActionDisabled') disabled = false;\n\n @Output('actionClicked') headerActionClicked = new EventEmitter<string>(false);\n\n get id(): string {\n return `clr-wizard-header-action-${this._id}`;\n }\n\n click(): void {\n if (this.disabled) {\n return;\n }\n\n // passing the header action id allows users to have one method that\n // routes to many different actions based on the type of header action\n // clicked. this is further aided by users being able to specify ids\n // for their header actions.\n this.headerActionClicked.emit(this._id);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[clrPageButtons]',\n})\nexport class ClrWizardPageButtons {\n constructor(public pageButtonsTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[clrPageHeaderActions]',\n})\nexport class ClrWizardPageHeaderActions {\n constructor(public pageHeaderActionsTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, TemplateRef } from '@angular/core';\n\n@Directive({\n selector: '[clrPageNavTitle]',\n})\nexport class ClrWizardPageNavTitle {\n constructor(public pageNavTitleTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Input, TemplateRef } from '@angular/core';\n\nimport { HeadingLevel } from './heading-level';\n\n@Directive({\n selector: '[clrPageTitle]',\n})\nexport class ClrWizardPageTitle {\n @Input('clrHeadingLevel') headingLevel: HeadingLevel;\n\n constructor(public pageTitleTemplateRef: TemplateRef<any>) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, ContentChild, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\n\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardPageButtons } from './wizard-page-buttons';\nimport { ClrWizardPageHeaderActions } from './wizard-page-header-actions';\nimport { ClrWizardPageNavTitle } from './wizard-page-navtitle';\nimport { ClrWizardPageTitle } from './wizard-page-title';\n\nlet wizardPageIndex = 0;\n\n/**\n * The ClrWizardPage component is responsible for displaying the content of each step\n * in the wizard workflow.\n *\n * ClrWizardPage component has hooks into the navigation service (ClrWizardPage.navService),\n * page collection (ClrWizardPage.pageCollection), and button service\n * (ClrWizardPage.buttonService). These three providers are shared across the components\n * within each instance of a Wizard.\n *\n */\n@Component({\n selector: 'clr-wizard-page',\n template: '<ng-content></ng-content>',\n host: {\n '[id]': 'id',\n '[attr.aria-hidden]': '!current',\n '[attr.aria-labelledby]': 'stepItemId',\n '[class.active]': 'current',\n '[class.clr-wizard-page]': 'true',\n },\n})\nexport class ClrWizardPage implements OnInit {\n /**\n * An input value that is used internally to generate the ClrWizardPage ID as\n * well as the step nav item ID.\n *\n * Typed as any because it should be able to accept numbers as well as\n * strings. Passing an index for wizard whose pages are created with an\n * ngFor loop is a common use case.\n *\n * @memberof WizardPage\n *\n */\n @Input('id') _id: any = (wizardPageIndex++).toString();\n\n /**\n * Overrides all actions from the page level, so you can use an alternate function for\n * validation or data-munging with a ClrWizardPage.onCommit (clrWizardPageOnCommit output),\n * ClrWizardPage.onCancel (clrWizardPageOnCancel output), or one\n * of the granular page-level button click event emitters.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPagePreventDefault') preventDefault: boolean | string = false;\n\n /**\n * Emits when the value of ClrWizardPage.nextStepDisabled changes.\n * Should emit the new value of nextStepDisabled.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageNextDisabledChange') nextStepDisabledChange = new EventEmitter<boolean>();\n\n /**\n * Emits when the value of ClrWizardPage.previousStepDisabled changes.\n * Should emit the new value of previousStepDisabled.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePreviousDisabledChange') previousStepDisabledChange = new EventEmitter<boolean>();\n\n /**\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePreventDefaultCancelChange') stopCancelChange = new EventEmitter<boolean>();\n\n /**\n * An event emitter carried over from a legacy version of ClrWizardPage.\n * Fires an event on ClrWizardPage whenever the next or finish buttons\n * are clicked and the page is the current page of the Wizard.\n *\n * Note that this does not automatically emit an event when a custom\n * button is used in place of a next or finish button.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageOnCommit') onCommit = new EventEmitter<string>(false);\n\n /**\n * Emits an event when ClrWizardPage becomes the current page of the\n * Wizard.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageOnLoad') onLoad = new EventEmitter<string>();\n\n /**\n * Emits an event when the ClrWizardPage invokes the cancel routine for the wizard.\n *\n * Can be used in conjunction with the ClrWizardPage.stopCancel\n * (clrWizardPagePreventDefaultCancel) or ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) inputs to implement custom cancel\n * functionality at the page level. This is useful if you would like to do\n * validation, save data, or warn users before cancelling the wizard.\n *\n * Note that this requires you to call Wizard.close() from the host component.\n * This constitues a full replacement of the cancel functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageOnCancel') pageOnCancel = new EventEmitter<ClrWizardPage>();\n\n /**\n * Emits an event when the finish button is clicked and the ClrWizardPage is\n * the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom finish\n * functionality at the page level. This is useful if you would like to do\n * validation, save data, or warn users before allowing them to complete\n * the wizard.\n *\n * Note that this requires you to call Wizard.finish() or Wizard.forceFinish()\n * from the host component. This combination creates a full replacement of\n * the finish functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageFinish') finishButtonClicked = new EventEmitter<ClrWizardPage>();\n\n /**\n * Emits an event when the previous button is clicked and the ClrWizardPage is\n * the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom backwards\n * navigation at the page level. This is useful if you would like to do\n * validation, save data, or warn users before allowing them to go\n * backwards in the wizard.\n *\n * Note that this requires you to call Wizard.previous()\n * from the host component. This combination creates a full replacement of\n * the backwards navigation functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePrevious') previousButtonClicked = new EventEmitter<ClrWizardPage>();\n\n /**\n * Emits an event when the next button is clicked and the ClrWizardPage is\n * the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom forwards\n * navigation at the page level. This is useful if you would like to do\n * validation, save data, or warn users before allowing them to go\n * to the next page in the wizard.\n *\n * Note that this requires you to call Wizard.forceNext() or Wizard.next()\n * from the host component. This combination creates a full replacement of\n * the forward navigation functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageNext') nextButtonClicked = new EventEmitter<ClrWizardPage>();\n\n /**\n * Emits an event when a danger button is clicked and the ClrWizardPage is\n * the wizard's current page. By default, a danger button will act as\n * either a \"next\" or \"finish\" button depending on if the ClrWizardPage is the\n * last page or not.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom forwards\n * or finish navigation at the page level when the danger button is clicked.\n * This is useful if you would like to do validation, save data, or warn\n * users before allowing them to go to the next page in the wizard or\n * finish the wizard.\n *\n * Note that this requires you to call Wizard.finish(), Wizard.forceFinish(),\n * Wizard.forceNext() or Wizard.next() from the host component. This\n * combination creates a full replacement of the forward navigation and\n * finish functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPageDanger') dangerButtonClicked = new EventEmitter<ClrWizardPage>();\n\n /**\n * Emits an event when a next, finish, or danger button is clicked and the\n * ClrWizardPage is the wizard's current page.\n *\n * Can be used in conjunction with the ClrWizardPage.preventDefault\n * (clrWizardPagePagePreventDefault) input to implement custom forwards\n * or finish navigation at the page level, regardless of the type of\n * primary button.\n *\n * This is useful if you would like to do validation, save data, or warn\n * users before allowing them to go to the next page in the wizard or\n * finish the wizard.\n *\n * Note that this requires you to call Wizard.finish(), Wizard.forceFinish(),\n * Wizard.forceNext() or Wizard.next() from the host component. This\n * combination creates a full replacement of the forward navigation and\n * finish functionality.\n *\n * @memberof WizardPage\n *\n */\n @Output('clrWizardPagePrimary') primaryButtonClicked = new EventEmitter<string>();\n\n @Output('clrWizardPageCustomButton') customButtonClicked = new EventEmitter<string>();\n\n /**\n * Contains a reference to the page title which is used for a number\n * of different tasks for display in the wizard.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageTitle, { static: true }) pageTitle: ClrWizardPageTitle;\n\n /**\n * Contains a reference to the desired title for the page's step in the\n * navigation on the left side of the wizard. Can be projected to change the\n * navigation link's text.\n *\n * If not defined, then ClrWizardPage.pageTitle will be displayed in the stepnav.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageNavTitle, { static: true }) pageNavTitle: ClrWizardPageNavTitle;\n\n /**\n * Contains a reference to the buttons defined within the page. If not defined,\n * the wizard defaults to the set of buttons defined as a direct child of the\n * wizard.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageButtons, { static: true }) _buttons: ClrWizardPageButtons;\n\n /**\n * Contains a reference to the header actions defined within the page. If not defined,\n * the wizard defaults to the set of header actions defined as a direct child of the\n * wizard.\n *\n * @memberof WizardPage\n *\n */\n @ContentChild(ClrWizardPageHeaderActions, { static: true }) _headerActions: ClrWizardPageHeaderActions;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _nextStepDisabled = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _previousStepDisabled = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _hasError = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _stopCancel = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _stopNext = false;\n\n /**\n *\n * @memberof WizardPage\n *\n */\n private _complete = false;\n\n /**\n * Creates an instance of ClrWizardPage.\n *\n * @memberof WizardPage\n */\n constructor(\n private navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public buttonService: ButtonHubService\n ) {}\n\n /**\n * A property that tells whether or not the wizard should be allowed\n * to move to the next page.\n *\n * Useful for in-page validation because it prevents forward navigation\n * and visibly disables the next button.\n *\n * Does not require that you re-implement navigation routines like you\n * would if you were using ClrWizardPage.preventDefault or\n * Wizard.preventDefault.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPageNextDisabled')\n get nextStepDisabled(): boolean {\n return this._nextStepDisabled;\n }\n set nextStepDisabled(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._nextStepDisabled) {\n this._nextStepDisabled = valBool;\n this.nextStepDisabledChange.emit(valBool);\n }\n }\n\n /**\n * A property that tells whether or not the wizard should be allowed\n * to move to the previous page.\n *\n * Useful for in-page validation because it prevents backward navigation\n * and visibly disables the previous button.\n *\n * Does not require that you re-implement navigation routines like you\n * would if you were using ClrWizardPage.preventDefault or\n * Wizard.preventDefault.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPagePreviousDisabled')\n get previousStepDisabled(): boolean {\n return this._previousStepDisabled;\n }\n set previousStepDisabled(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._previousStepDisabled) {\n this._previousStepDisabled = valBool;\n this.previousStepDisabledChange.emit(valBool);\n }\n }\n\n /**\n * Whether the page has an error and also resolve the \"falsy\" value. The\n * current logic treat a \"0\" or an empty string as false and likewise will treat any\n * \"truthy\" value as true.\n *\n * @memberof WizardPage\n *\n */\n @Input('clrWizardPageHasError')\n get hasError(): boolean {\n return this._hasError;\n }\n set hasError(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._hasError) {\n this._hasError = valBool;\n }\n }\n\n /**\n * Overrides the cancel action from the page level. Allows you to use an\n * alternate function for validation or data-munging before cancelling the\n * wizard when combined with the ClrWizardPage.onCancel\n * (the clrWizardPageOnCancel output).\n *\n * Requires that you manually close the wizard from your host component,\n * usually with a call to Wizard.forceNext() or wizard.next();\n *\n * @memberof ClrWizardPage\n */\n @Input('clrWizardPagePreventDefaultCancel')\n get stopCancel(): boolean {\n return this._stopCancel;\n }\n set stopCancel(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._stopCancel) {\n this._stopCancel = valBool;\n this.stopCancelChange.emit(valBool);\n }\n }\n\n /**\n * Overrides forward navigation from the page level. Allows you to use an\n * alternate function for validation or data-munging before moving the\n * wizard to the next pagewhen combined with the ClrWizardPage.onCommit\n * (clrWizardPageOnCommit) or ClrWizardPage.nextButtonClicked\n * (clrWizardPageNext) outputs.\n *\n * Requires that you manually tell the wizard to navigate forward from\n * the hostComponent, usually with a call to Wizard.forceNext() or\n * wizard.next();\n *\n * @memberof ClrWizardPage\n */\n @Input('clrWizardPagePreventDefaultNext')\n get stopNext(): boolean {\n return this._stopNext;\n }\n set stopNext(val: boolean) {\n const valBool = !!val;\n if (valBool !== this._stopNext) {\n this._stopNext = valBool;\n }\n }\n\n /**\n * A read-only getter that generates an ID string for the wizard page from\n * either the value passed to the ClrWizardPage \"id\" input or a wizard page\n * counter shared across all wizard pages in the application.\n *\n * Note that the value passed into the ID input Will be prefixed with\n * \"clr-wizard-page-\".\n *\n * @readonly\n *\n * @memberof ClrWizardPage\n */\n get id(): string {\n // covers things like null, undefined, false, and empty string\n // while allowing zero to pass\n const idIsNonZeroFalsy = !this._id && this._id !== 0;\n\n // in addition to non-zero falsy we also want to make sure _id is not a negative\n // number.\n if (idIsNonZeroFalsy || this._id < 0) {\n // guard here in the event that input becomes undefined or null by accident\n this._id = (wizardPageIndex++).toString();\n }\n return `clr-wizard-page-${this._id}`;\n }\n\n /**\n * A read-only getter that serves as a convenience for those who would rather\n * not think in the terms of !ClrWizardPage.nextStepDisabled. For some use cases,\n * ClrWizardPage.readyToComplete is more logical and declarative.\n *\n * @memberof WizardPage\n *\n */\n get readyToComplete(): boolean {\n return !this.nextStepDisabled;\n }\n\n /**\n * A page is marked as completed if it is both readyToComplete and completed,\n * as in the next or finish action has been executed while this page was current.\n *\n * Note there is and open question about how to handle pages that are marked\n * complete but who are no longer readyToComplete. This might indicate an error\n * state for the ClrWizardPage. Currently, the wizard does not acknowledge this state\n * and only returns that the page is incomplete.\n *\n * @memberof WizardPage\n *\n */\n get completed(): boolean {\n return this._complete && this.readyToComplete;\n\n // FOR V2: UNWIND COMPLETED, READYTOCOMPLETE, AND ERRORS\n // SUCH THAT ERRORS IS ITS OWN INPUT. IF A STEP IS\n // INCOMPLETE AND ERRORED, ERRORED WILL NOT SHOW.\n // FIRST QUESTION: AM I GREY OR COLORED?\n // SECOND QUESTION: AM I GREEN OR RED?\n }\n\n /**\n * A ClrWizardPage can be manually set to completed using this boolean setter.\n * It is recommended that users rely on the convenience functions in the wizard\n * and navigation service instead of manually setting pages’ completion state.\n *\n * @memberof ClrWizardPage\n */\n set completed(value: boolean) {\n this._complete = value;\n }\n\n /**\n * Checks with the navigation service to see if it is the current page.\n *\n * @memberof WizardPage\n *\n */\n get current(): boolean {\n return this.navService.currentPage === this;\n }\n\n get disabled(): boolean {\n return !this.enabled;\n }\n\n /**\n * A read-only getter that returns whether or not the page is navigable\n * in the wizard. A wizard page can be navigated to if it is completed\n * or the page before it is completed.\n *\n * This getter handles the logic for enabling or disabling the links in\n * the step nav on the left Side of the wizard.\n *\n * @memberof WizardPage\n *\n */\n get enabled(): boolean {\n return this.current || this.completed || this.previousCompleted;\n }\n\n /**\n * A read-only getter that returns whether or not the page before this\n * ClrWizardPage is completed. This is useful for determining whether or not\n * a page is navigable if it is not current or already completed.\n *\n * @memberof WizardPage\n *\n */\n get previousCompleted(): boolean {\n const previousPage = this.pageCollection.getPreviousPage(this);\n\n if (!previousPage) {\n return true;\n }\n\n return previousPage.completed;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n get title(): TemplateRef<any> {\n return this.pageTitle.pageTitleTemplateRef;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n get navTitle(): TemplateRef<any> {\n if (this.pageNavTitle) {\n return this.pageNavTitle.pageNavTitleTemplateRef;\n }\n return this.pageTitle.pageTitleTemplateRef;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n get headerActions(): TemplateRef<any> {\n if (!this._headerActions) {\n return undefined;\n }\n return this._headerActions.pageHeaderActionsTemplateRef;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n get hasHeaderActions(): boolean {\n return !!this._headerActions;\n }\n\n /**\n *\n * @memberof WizardPage\n *\n */\n get buttons(): TemplateRef<any> {\n if (!this._buttons) {\n return undefined;\n }\n return this._buttons.pageButtonsTemplateRef;\n }\n\n /**\n * A read-only getter that returns a boolean that says whether or\n * not the ClrWizardPage includes buttons. Used to determine if the\n * Wizard should override the default button set defined as\n * its direct children.\n *\n * @memberof WizardPage\n *\n */\n get hasButtons(): boolean {\n return !!this._buttons;\n }\n\n /**\n * A read-only getter that returns the id used by the step nav item associated with the page.\n *\n * ClrWizardPage needs this ID string for aria information.\n *\n * @memberof WizardPage\n *\n */\n get stepItemId(): string {\n return this.pageCollection.getStepItemIdForPage(this);\n }\n\n /**\n * Links the nav service and establishes the current page if one is not defined.\n *\n * @memberof WizardPage\n *\n */\n ngOnInit(): void {\n const navService = this.navService;\n if (!navService.currentPage && !navService.navServiceLoaded) {\n this.makeCurrent();\n this.navService.navServiceLoaded = true;\n }\n }\n\n /**\n * Uses the nav service to make the ClrWizardPage the current page in the\n * wizard. Bypasses all checks but still emits the ClrWizardPage.onLoad\n * (clrWizardPageOnLoad) output.\n *\n * In most cases, it is better to use the default navigation functions\n * in Wizard.\n *\n * @memberof WizardPage\n *\n */\n makeCurrent(): void {\n this.navService.currentPage = this;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Directive, Input } from '@angular/core';\n\nimport { HeadingLevel } from './heading-level';\n\n@Directive({\n selector: 'clr-wizard-title',\n})\nexport class ClrWizardTitle {\n @Input('clrHeadingLevel') headingLevel: HeadingLevel;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, Input } from '@angular/core';\n\nimport { ClrCommonStringsService } from '../utils';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardPage } from './wizard-page';\n\n@Component({\n selector: '[clr-wizard-stepnav-item]',\n template: `\n <button\n type=\"button\"\n class=\"btn btn-link clr-wizard-stepnav-link\"\n (click)=\"click()\"\n [attr.disabled]=\"isDisabled ? '' : null\"\n >\n <span class=\"clr-wizard-stepnav-link-suffix\">\n <cds-icon\n shape=\"error-standard\"\n status=\"danger\"\n class=\"clr-wizard-stepnav-item-error-icon\"\n *ngIf=\"hasError\"\n ></cds-icon>\n <ng-content *ngIf=\"!hasError\"></ng-content>\n </span>\n <span class=\"clr-wizard-stepnav-link-title\">\n <ng-template [ngTemplateOutlet]=\"page.navTitle\"></ng-template>\n </span>\n <span *ngIf=\"hasError\" class=\"clr-sr-only\">{{ commonStrings.keys.wizardStepError }}</span>\n <span *ngIf=\"!hasError && isComplete\" class=\"clr-sr-only\">{{ commonStrings.keys.wizardStepSuccess }}</span>\n </button>\n `,\n host: {\n '[id]': 'id',\n '[attr.aria-current]': 'stepAriaCurrent',\n '[attr.aria-controls]': 'page.id',\n '[class.clr-nav-link]': 'true',\n '[class.nav-item]': 'true',\n '[class.active]': 'isCurrent',\n '[class.disabled]': 'isDisabled',\n '[class.no-click]': '!canNavigate',\n '[class.complete]': 'isComplete',\n '[class.error]': 'hasError',\n },\n})\nexport class ClrWizardStepnavItem {\n @Input('page') page: ClrWizardPage;\n\n constructor(\n public navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public commonStrings: ClrCommonStringsService\n ) {}\n\n get id(): string {\n this.pageGuard();\n return this.pageCollection.getStepItemIdForPage(this.page);\n }\n\n get stepAriaCurrent(): string {\n return this.isCurrent && 'step';\n }\n\n get isDisabled(): boolean {\n this.pageGuard();\n return this.page.disabled || this.navService.wizardStopNavigation || this.navService.wizardDisableStepnav;\n }\n\n get isCurrent(): boolean {\n this.pageGuard();\n return this.page.current;\n }\n\n get isComplete(): boolean {\n this.pageGuard();\n return this.page.completed;\n }\n\n get hasError(): boolean {\n this.pageGuard();\n return this.page.hasError && this.isComplete;\n }\n\n get canNavigate(): boolean {\n this.pageGuard();\n return this.pageCollection.previousPageIsCompleted(this.page);\n }\n\n click(): void {\n this.pageGuard();\n\n // if we click on our own stepnav or a disabled stepnav, we don't want to do anything\n if (this.isDisabled || this.isCurrent) {\n return;\n }\n\n this.navService.goTo(this.page);\n }\n\n private pageGuard(): void {\n if (!this.page) {\n throw new Error('Wizard stepnav item is not associated with a wizard page.');\n }\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component } from '@angular/core';\n\nimport { PageCollectionService } from './providers/page-collection.service';\n\n@Component({\n selector: 'clr-wizard-stepnav',\n template: `\n <div class=\"clr-wizard-stepnav-list\">\n <div\n *ngFor=\"let page of pageService.pages; let i = index\"\n clr-wizard-stepnav-item\n [page]=\"page\"\n class=\"clr-wizard-stepnav-item\"\n >\n {{ i + 1 }}\n </div>\n </div>\n `,\n host: { class: 'clr-wizard-stepnav' },\n})\nexport class ClrWizardStepnav {\n constructor(public pageService: PageCollectionService) {}\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { isPlatformBrowser } from '@angular/common';\nimport {\n AfterContentInit,\n Component,\n ContentChild,\n ContentChildren,\n DoCheck,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n IterableDiffers,\n OnDestroy,\n Output,\n PLATFORM_ID,\n QueryList,\n ViewChild,\n} from '@angular/core';\nimport { Subscription } from 'rxjs';\nimport { filter } from 'rxjs/operators';\n\nimport { ClrCommonStringsService } from '../utils';\nimport { uniqueIdFactory } from '../utils/id-generator/id-generator.service';\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { HeaderActionService } from './providers/header-actions.service';\nimport { PageCollectionService } from './providers/page-collection.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\nimport { ClrWizardHeaderAction } from './wizard-header-action';\nimport { ClrWizardPage } from './wizard-page';\nimport { ClrWizardTitle } from './wizard-title';\n\n@Component({\n selector: 'clr-wizard',\n providers: [WizardNavigationService, PageCollectionService, ButtonHubService, HeaderActionService],\n templateUrl: './wizard.html',\n host: {\n '[class.clr-wizard]': 'true',\n '[class.wizard-md]': \"size == 'md'\",\n '[class.wizard-lg]': \"size == 'lg'\",\n '[class.wizard-xl]': \"size == 'xl'\",\n '[class.lastPage]': 'navService.currentPageIsLast',\n },\n})\nexport class ClrWizard implements OnDestroy, AfterContentInit, DoCheck {\n /**\n * Set the aria-label for the stepnav section of the wizard. Set using `[clrWizardStepnavAriaLabel]` input.\n */\n @Input('clrWizardStepnavAriaLabel') stepnavAriaLabel = this.commonStrings.keys.wizardStepnavAriaLabel;\n\n /**\n * Set the modal size of the wizard. Set using `[clrWizardSize]` input.\n */\n @Input('clrWizardSize') size = 'xl';\n\n /**\n * Tells the modal part of the wizard whether it should have a close \"X\"\n * in the top right corner. Set using `[clrWizardClosable]` input.\n */\n @Input('clrWizardClosable') closable = true;\n\n /**\n * Used to communicate to the underlying modal that animations are not\n * wanted. Primary use is for the display of static/inline wizards.\n * Set using `[clrWizardPreventModalAnimation]` input.\n */\n @Input('clrWizardPreventModalAnimation') _stopModalAnimations = false;\n\n /**\n * Emits when the wizard is opened or closed.\n * Listen via `(clrWizardOpenChange)` event.\n */\n @Output('clrWizardOpenChange') _openChanged = new EventEmitter<boolean>(false);\n\n /**\n * Emits when the wizard is canceled. Listen via `(clrWizardOnCancel)` event.\n * Can be combined with the `[clrWizardPreventDefaultCancel]` input to create\n * wizard-level custom cancel routines.\n */\n @Output('clrWizardOnCancel') onCancel = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard is completed. Listen via `(clrWizardOnFinish)` event.\n * Can be combined with the `[clrWizardPreventDefaultNext]` input to create\n * wizard-level custom completion routines.\n */\n @Output('clrWizardOnFinish') wizardFinished = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard is reset. Listen via `(clrWizardOnReset)` event.\n */\n @Output('clrWizardOnReset') onReset = new EventEmitter<any>(false);\n\n /**\n * Emits when the current page has changed. Listen via `(clrWizardCurrentPageChanged)` event.\n * output. Useful for non-blocking validation.\n */\n @Output('clrWizardCurrentPageChanged') currentPageChanged = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard moves to the next page. Listen via `(clrWizardOnNext)` event.\n * Can be combined with the `[clrWizardPreventDefaultNext]` input to create\n * wizard-level custom navigation routines, which are useful for validation.\n */\n @Output('clrWizardOnNext') onMoveNext = new EventEmitter<any>(false);\n\n /**\n * Emits when the wizard moves to the previous page. Can be useful for validation.\n * Listen via `(clrWizardOnPrevious)` event.\n */\n @Output('clrWizardOnPrevious') onMovePrevious = new EventEmitter<any>(false);\n\n @ViewChild('pageTitle') pageTitle: ElementRef;\n @ContentChildren(ClrWizardPage, { descendants: true }) pages: QueryList<ClrWizardPage>;\n @ContentChildren(ClrWizardHeaderAction) headerActions: QueryList<ClrWizardHeaderAction>;\n\n _open = false;\n wizardId = uniqueIdFactory();\n\n @ContentChild(ClrWizardTitle) protected wizardTitle: ClrWizardTitle;\n\n private _forceForward = false;\n private _stopNext = false;\n private _stopCancel = false;\n private _stopNavigation = false;\n private _disableStepnav = false;\n private differ: any; // for marking when the collection of wizard pages has been added to or deleted from\n private subscriptions: Subscription[] = [];\n\n constructor(\n @Inject(PLATFORM_ID) private platformId: any,\n private commonStrings: ClrCommonStringsService,\n public navService: WizardNavigationService,\n public pageCollection: PageCollectionService,\n public buttonService: ButtonHubService,\n public headerActionService: HeaderActionService,\n private elementRef: ElementRef<HTMLElement>,\n differs: IterableDiffers\n ) {\n this.subscriptions.push(\n this.listenForNextPageChanges(),\n this.listenForPreviousPageChanges(),\n this.listenForCancelChanges(),\n this.listenForFinishedChanges(),\n this.listenForPageChanges()\n );\n\n this.differ = differs.find([]).create(null);\n }\n\n /**\n * Resets page completed states when navigating backwards.\n * Set using `[clrWizardForceForwardNavigation]` input.\n */\n @Input('clrWizardForceForwardNavigation')\n get forceForward(): boolean {\n return this._forceForward;\n }\n set forceForward(value: boolean) {\n this._forceForward = !!value;\n this.navService.forceForwardNavigation = value;\n }\n\n /**\n * Toggles open/close of the wizard component.\n * Set using the `[clrWizardOpen]` input.\n */\n @Input('clrWizardOpen')\n set clrWizardOpen(open: boolean) {\n if (open) {\n this.buttonService.buttonsReady = true;\n }\n this._open = open;\n }\n\n /**\n * Prevents ClrWizard from moving to the next page or closing itself on finishing.\n * Set using the `[clrWizardPreventDefaultNext]` input. Note that using stopNext\n * will require you to create your own calls to .next() and .finish() in your\n * host component to make the ClrWizard work as expected.\n */\n @Input('clrWizardPreventDefaultNext')\n get stopNext(): boolean {\n return this._stopNext;\n }\n set stopNext(value: boolean) {\n this._stopNext = !!value;\n this.navService.wizardHasAltNext = value;\n }\n\n /**\n * Prevents ClrWizard from closing when the cancel button or close \"X\" is clicked.\n * Set using the `[clrWizardPreventDefaultCancel]` input.\n *\n * Note that using stopCancel will require you to create your own calls to `close()` in your host compone`nt\n * to make the ClrWizard work as expected. Useful for doing checks or prompts\n * before closing a ClrWizard.\n */\n @Input('clrWizardPreventDefaultCancel')\n get stopCancel(): boolean {\n return this._stopCancel;\n }\n set stopCancel(value: boolean) {\n this._stopCancel = !!value;\n this.navService.wizardHasAltCancel = value;\n }\n\n /**\n * Prevents ClrWizard from performing any form of navigation away from the current\n * page. Set using the `[clrWizardPreventNavigation]` input.\n * Note that stopNavigation is meant to freeze the wizard in place, typically\n * during a long validation or background action where you want the wizard to\n * display loading content but not allow the user to execute navigation in\n * the stepnav, close X, or the back, finish, or next buttons.\n */\n @Input('clrWizardPreventNavigation')\n get stopNavigation(): boolean {\n return this._stopNavigation;\n }\n set stopNavigation(value: boolean) {\n this._stopNavigation = !!value;\n this.navService.wizardStopNavigation = value;\n }\n\n /**\n * Prevents clicks on the links in the stepnav from working.\n * Set using `[clrWizardDisableStepnav]` input.\n * A more granular bypassing of navigation which can be useful when your\n * ClrWizard is in a state of completion and you don't want users to be\n * able to jump backwards and change things.\n */\n @Input('clrWizardDisableStepnav')\n get disableStepnav(): boolean {\n return this._disableStepnav;\n }\n set disableStepnav(value: boolean) {\n this._disableStepnav = !!value;\n this.navService.wizardDisableStepnav = value;\n }\n\n get currentPage(): ClrWizardPage {\n return this.navService.currentPage;\n }\n set currentPage(page: ClrWizardPage) {\n this.navService.goTo(page, true);\n }\n\n get isLast(): boolean {\n return this.navService.currentPageIsLast;\n }\n\n get isFirst(): boolean {\n return this.navService.currentPageIsFirst;\n }\n\n get isInline(): boolean {\n return this.elementRef.nativeElement.classList.contains('clr-wizard--inline');\n }\n\n get stopModalAnimations(): string {\n return this._stopModalAnimations ? 'true' : 'false';\n }\n\n ngAfterContentInit(): void {\n this.pageCollection.pages = this.pages;\n this.headerActionService.wizardHeaderActions = this.headerActions;\n this.initializeButtons();\n }\n\n ngDoCheck(): void {\n this.updateNavOnPageChanges();\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(s => s.unsubscribe());\n }\n\n /**\n * Marks Wizard as finished. By default it does not execute event\n * emissions or checks before completing and closing. This method is commonly\n * used as part of an alternative navigation with `[clrWizardPreventDefaultNext]`.\n *\n * If `skipChecksAndEmits` is true, the wizard will complete and close\n * regardless of the state of its current page. This is useful for alternative\n * navigation where event emissions have already been done and firing them again\n * may cause an event loop.\n */\n finish(skipChecksAndEmits = true): void {\n if (skipChecksAndEmits) {\n this.forceFinish();\n } else {\n this.navService.finish();\n }\n }\n\n /**\n * Marks the wizard as finished but does run checks and emissions.\n * Good for a last step in an alternate workflow. Does the same thing as\n * calling `ClrWizard.finish(true)` or `ClrWizard.finish()` without a parameter.\n */\n forceFinish(): void {\n if (this.stopNavigation) {\n return;\n }\n\n this.close();\n }\n\n /**\n * Opens the wizard. If there is no current page defined, sets the first page in the wizard to be current.\n */\n open(): void {\n this._open = true;\n\n if (!this.currentPage) {\n this.navService.setFirstPageCurrent();\n }\n\n // Only render buttons when wizard is opened, to avoid chocolate errors\n this.buttonService.buttonsReady = true;\n\n this._openChanged.emit(true);\n }\n\n /**\n * Closes the wizard. Call this directly instead of `cancel()` to implement alternative cancel functionality.\n */\n close(): void {\n if (this.stopNavigation) {\n return;\n }\n\n this._open = false;\n this._openChanged.emit(false);\n }\n\n /**\n * Used to open and close the wizard. By default the wizard will\n * close if invoked with no parameter. If parameter is true wizard will open\n * else if false will close.\n */\n toggle(open: boolean): void {\n if (open) {\n this.open();\n } else {\n this.close();\n }\n }\n\n /**\n * Moves the wizard to the previous page.\n */\n previous(): void {\n this.navService.previous();\n }\n\n /**\n * By default, `next()` does not execute event emissions.\n * This method is commonly called as part of an alternative navigation\n * with `[clrWizardPreventDefaultNext]`. The wizard will move to the next page\n * regardless of the state of its current page. This is useful for alternative\n * navigation where event emissions have already been done and firing them again\n * may cause an event loop.\n *\n * If `skipChecksAndEmits` is false, the wizard will execute default checks\n * and emit events as normal. This is useful for custom buttons or programmatic\n * workflows that are not executing the wizards default checks and emissions.\n * It is another way to navigate without having to rewrite the wizard’s default\n * functionality from scratch.\n */\n next(skipChecksAndEmits = true): void {\n if (skipChecksAndEmits) {\n this.forceNext();\n } else {\n this.navService.next();\n }\n }\n\n /**\n * Moves the wizard to the next page without the checks and emissions.\n * Good for a last step in an alternate workflow.\n * Alias for `ClrWizard.next(true)` or `ClrWizard.next()`\n */\n forceNext(): void {\n this.navService.forceNext();\n }\n\n /**\n * Cancels and closes the wizard. Do not use this for an override of the cancel\n * the functionality with `[clrWizardPreventDefaultCancel]`, `[clrWizardPreventPageDefaultCancel]`,\n * or `[clrWizardPagePreventDefault]` because it will initiate the same checks\n * and event emissions that invoked your event handler. Use `ClrWizard.close()` instead.\n */\n cancel(): void {\n this.navService.cancel();\n }\n\n /**\n * Overrides behavior of the underlying modal to avoid collisions with\n * alternative cancel functionality. In most cases, use `ClrWizard.cancel()` instead.\n */\n modalCancel(): void {\n if (this.closable) {\n this.checkAndCancel();\n }\n }\n\n /**\n * Checks for alternative cancel flows defined at the current page or\n * wizard level. Performs a canceled if not. Emits events that initiate\n * the alternative cancel outputs `(clrWizardPageOnCancel)` and `(clrWizardOnCancel)`.\n */\n checkAndCancel(): void {\n const currentPage = this.currentPage;\n const currentPageHasOverrides = currentPage.stopCancel || currentPage.preventDefault;\n\n if (this.stopNavigation) {\n return;\n }\n\n currentPage.pageOnCancel.emit();\n if (!currentPageHasOverrides) {\n this.onCancel.emit();\n }\n\n if (!this.stopCancel && !currentPageHasOverrides) {\n this.close();\n }\n }\n\n /**\n * Navigates to a given page in the Wizard. Navigation will invoke the wizard’s default\n * checks and event emissions.\n *\n * The format of the expected ID parameter can be found in the return of the\n * ClrWizardPage.id getter, usually prefixed with `clr-wizard-page-` and then either a\n * numeric ID or the ID specified for the `ClrWizardPage` component’s `id` input.\n */\n goTo(pageId: string): void {\n if (!pageId) {\n return;\n }\n this.navService.goTo(pageId);\n }\n\n /**\n * Reset sets all WizardPages to incomplete and sets the first page in the `ClrWizard` to\n * be the current page, resetting the wizard navigation.\n * Use `(clrWizardOnReset)` event to reset the data or model of your wizard.\n */\n reset(): void {\n this.pageCollection.reset();\n this.onReset.next();\n }\n\n private listenForNextPageChanges(): Subscription {\n return this.navService.movedToNextPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {\n this.onMoveNext.emit();\n this.pageTitle?.nativeElement.focus();\n });\n }\n\n private listenForPreviousPageChanges(): Subscription {\n return this.navService.movedToPreviousPage.pipe(filter(() => isPlatformBrowser(this.platformId))).subscribe(() => {\n this.onMovePrevious.emit();\n this.pageTitle?.nativeElement.focus();\n });\n }\n\n private listenForCancelChanges(): Subscription {\n return this.navService.notifyWizardCancel.subscribe(() => this.checkAndCancel());\n }\n\n private listenForFinishedChanges(): Subscription {\n return this.navService.wizardFinished.subscribe(() => this.emitWizardFinished());\n }\n\n private listenForPageChanges(): Subscription {\n return this.navService.currentPageChanged.subscribe(() => {\n // Added to address VPAT-749:\n // When clicking on a wizard tab, focus should move to that\n // tabs content to make the wizard more accessible.\n this.pageTitle?.nativeElement.focus();\n this.currentPageChanged.emit();\n });\n }\n\n private updateNavOnPageChanges(): void {\n const changes = this.differ.diff(this.pages);\n if (changes) {\n changes.forEachAddedItem(() => this.navService.updateNavigation());\n changes.forEachRemovedItem(() => this.navService.updateNavigation());\n }\n }\n\n private initializeButtons(): void {\n // Only trigger buttons ready if default is open (inlined)\n if (this._open) {\n this.buttonService.buttonsReady = true;\n }\n }\n\n private emitWizardFinished(): void {\n if (!this.stopNext) {\n this.forceFinish();\n }\n this.wizardFinished.emit();\n }\n}\n","<!--\n ~ Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n ~ This software is released under MIT license.\n ~ The full license information can be found in LICENSE in the root directory of this project.\n -->\n\n<clr-modal\n [clrModalOpen]=\"_open\"\n [clrModalSize]=\"size\"\n [clrModalClosable]=\"closable\"\n [clrModalStaticBackdrop]=\"true\"\n [clrModalSkipAnimation]=\"stopModalAnimations\"\n [clrModalOverrideScrollService]=\"isInline\"\n [clrModalPreventClose]=\"true\"\n (clrModalAlternateClose)=\"modalCancel()\"\n [clrModalLabelledById]=\"wizardId\"\n>\n <div class=\"modal-nav clr-wizard-stepnav-wrapper\" role=\"region\" [attr.aria-label]=\"stepnavAriaLabel\">\n <div class=\"clr-wizard-title\" id=\"{{wizardId}}\" role=\"heading\" [attr.aria-level]=\"wizardTitle.headingLevel || 1\">\n <ng-content select=\"clr-wizard-title\"></ng-content>\n </div>\n <clr-wizard-stepnav></clr-wizard-stepnav>\n </div>\n\n <div class=\"modal-title\" role=\"heading\" [attr.aria-level]=\"navService.currentPage.pageTitle.headingLevel || 2\">\n <span tabindex=\"-1\" #pageTitle class=\"modal-title-text\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPageTitle\"></ng-template>\n </span>\n\n <div class=\"modal-header-actions-wrapper\" *ngIf=\"headerActionService.displayHeaderActionsWrapper\">\n <div *ngIf=\"headerActionService.showWizardHeaderActions\">\n <ng-content select=\"clr-wizard-header-action\"></ng-content>\n </div>\n <div *ngIf=\"headerActionService.currentPageHasHeaderActions\">\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.headerActions\"></ng-template>\n </div>\n </div>\n </div>\n\n <div class=\"modal-body\">\n <main clr-wizard-pages-wrapper class=\"clr-wizard-content\">\n <ng-content></ng-content>\n </main>\n </div>\n <div class=\"modal-footer clr-wizard-footer\">\n <div class=\"clr-wizard-footer-buttons\">\n <div\n *ngIf=\"navService.currentPage && !navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-content select=\"clr-wizard-button\"></ng-content>\n </div>\n <div\n *ngIf=\"navService.currentPage && navService.currentPage.hasButtons\"\n class=\"clr-wizard-footer-buttons-wrapper\"\n >\n <ng-template [ngTemplateOutlet]=\"navService.currentPage.buttons\"></ng-template>\n </div>\n </div>\n </div>\n</clr-modal>\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Component, EventEmitter, Input, Output } from '@angular/core';\n\nimport { ButtonHubService } from './providers/button-hub.service';\nimport { WizardNavigationService } from './providers/wizard-navigation.service';\n\nexport const DEFAULT_BUTTON_TYPES: any = {\n cancel: 'cancel',\n previous: 'previous',\n next: 'next',\n finish: 'finish',\n danger: 'danger',\n};\n\nexport const CUSTOM_BUTTON_TYPES: any = {\n cancel: 'custom-cancel',\n previous: 'custom-previous',\n next: 'custom-next',\n finish: 'custom-finish',\n danger: 'custom-danger',\n};\n\n@Component({\n selector: 'clr-wizard-button',\n template: `\n <button\n type=\"button\"\n class=\"btn clr-wizard-btn\"\n [class.btn-link]=\"isCancel\"\n [class.clr-wizard-btn--tertiary]=\"isCancel\"\n [class.btn-outline]=\"isPrevious\"\n [class.clr-wizard-btn--secondary]=\"isPrevious\"\n [class.btn-primary]=\"isPrimaryAction\"\n [class.clr-wizard-btn--primary]=\"isPrimaryAction\"\n [class.btn-success]=\"isFinish\"\n [class.btn-danger]=\"isDanger\"\n [class.disabled]=\"isDisabled\"\n [attr.disabled]=\"_disabledAttribute\"\n (click)=\"click()\"\n >\n <ng-content></ng-content>\n </button>\n `,\n host: { class: 'clr-wizard-btn-wrapper', '[attr.aria-hidden]': 'isHidden' },\n})\nexport class ClrWizardButton {\n @Input('type') type = '';\n\n @Input('clrWizardButtonDisabled') disabled = false;\n\n @Input('clrWizardButtonHidden') hidden = false;\n\n // EventEmitter which is emitted when a button is clicked.\n @Output('clrWizardButtonClicked') wasClicked = new EventEmitter<string>(false);\n\n constructor(public navService: WizardNavigationService, public buttonService: ButtonHubService) {}\n\n get isCancel(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'cancel');\n }\n\n get isNext(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'next');\n }\n\n get isPrevious(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'previous');\n }\n\n get isFinish(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'finish');\n }\n\n get isDanger(): boolean {\n return this.checkDefaultAndCustomType(this.type, 'danger');\n }\n\n get isPrimaryAction(): boolean {\n return this.isNext || this.isDanger || this.isFinish;\n }\n\n get _disabledAttribute(): string | null {\n if (this.isDisabled) {\n return '';\n }\n return null;\n }\n\n get isDisabled(): boolean {\n // dealing with negatives here. cognitively easier to think of it like this...\n const disabled = true;\n const nav = this.navService;\n const page = this.navService.currentPage;\n\n // Ensure we don't change the response until buttons are ready to avoid chocolate\n if (!this.buttonService.buttonsReady) {\n return !disabled;\n }\n\n if (this.disabled || nav.wizardStopNavigation || !page) {\n return true;\n }\n\n if (this.isCancel) {\n return !disabled;\n }\n\n if (this.isPrevious && (nav.currentPageIsFirst || page.previousStepDisabled)) {\n return disabled;\n }\n\n if (this.isDanger && !page.readyToComplete) {\n return disabled;\n }\n\n if (this.isNext && (nav.currentPageIsLast || !page.readyToComplete)) {\n return disabled;\n }\n\n if (this.isFinish && (!nav.currentPageIsLast || !page.readyToComplete)) {\n return disabled;\n }\n\n return !disabled;\n }\n\n get isHidden(): boolean {\n // dealing with negatives here. cognitively easier to think of it like this...\n const hidden = true;\n const nav = this.navService;\n\n // Ensure we don't change the response until buttons are ready to avoid chocolate\n if (!this.buttonService.buttonsReady) {\n return !hidden;\n }\n\n if (this.hidden) {\n return true;\n }\n\n if (this.isCancel) {\n return !hidden;\n }\n\n if (this.isPrevious && nav.currentPageIsFirst) {\n return hidden;\n }\n\n if (this.isNext && nav.currentPageIsLast) {\n return hidden;\n }\n\n if (this.isFinish && !nav.currentPageIsLast) {\n return hidden;\n }\n\n return !hidden;\n }\n\n click(): void {\n if (this.isDisabled) {\n return;\n }\n\n this.wasClicked.emit(this.type);\n this.buttonService.buttonClicked(this.type);\n }\n\n private checkDefaultAndCustomType(valueToCheck = '', typeToLookUp: string) {\n if (DEFAULT_BUTTON_TYPES[typeToLookUp] === valueToCheck) {\n return true;\n }\n if (CUSTOM_BUTTON_TYPES[typeToLookUp] === valueToCheck) {\n return true;\n }\n return false;\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ClarityIcons, errorStandardIcon } from '@cds/core/icon';\n\nimport { ClrAlertModule } from '../emphasis/alert/alert.module';\nimport { ClrModalModule } from '../modal/modal.module';\nimport { ClrWizard } from './wizard';\nimport { ClrWizardButton } from './wizard-button';\nimport { ClrWizardHeaderAction } from './wizard-header-action';\nimport { ClrWizardPage } from './wizard-page';\nimport { ClrWizardPageButtons } from './wizard-page-buttons';\nimport { ClrWizardPageHeaderActions } from './wizard-page-header-actions';\nimport { ClrWizardPageNavTitle } from './wizard-page-navtitle';\nimport { ClrWizardPageTitle } from './wizard-page-title';\nimport { ClrWizardStepnav } from './wizard-stepnav';\nimport { ClrWizardStepnavItem } from './wizard-stepnav-item';\nimport { ClrWizardTitle } from './wizard-title';\n\nexport const CLR_WIZARD_DIRECTIVES: any[] = [\n ClrWizard,\n ClrWizardPage,\n ClrWizardStepnav,\n ClrWizardStepnavItem,\n ClrWizardButton,\n ClrWizardHeaderAction,\n ClrWizardTitle,\n ClrWizardPageTitle,\n ClrWizardPageNavTitle,\n ClrWizardPageButtons,\n ClrWizardPageHeaderActions,\n];\n\n@NgModule({\n imports: [CommonModule, ClrModalModule, ClrAlertModule],\n declarations: [CLR_WIZARD_DIRECTIVES],\n exports: [CLR_WIZARD_DIRECTIVES],\n})\nexport class ClrWizardModule {\n constructor() {\n ClarityIcons.addIcons(errorStandardIcon);\n }\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { NgModule } from '@angular/core';\n\nimport { ClrStepperModule } from './accordion/stepper/stepper.module';\nimport { ClrButtonModule } from './button/button.module';\nimport { ClrDataModule } from './data/data.module';\nimport { ClrEmphasisModule } from './emphasis/emphasis.module';\nimport { ClrFormsModule } from './forms/forms.module';\nimport { ClrIconModule } from './icon/icon.module';\nimport { ClrLayoutModule } from './layout/layout.module';\nimport { ClrModalModule } from './modal/modal.module';\nimport { ClrPopoverModule } from './popover/popover.module';\nimport { ClrProgressBarModule } from './progress/progress-bars/progress-bar.module';\nimport { ClrSpinnerModule } from './progress/spinner/spinner.module';\nimport { ClrTimelineModule } from './timeline/timeline.module';\nimport { ClrConditionalModule } from './utils/conditional/conditional.module';\nimport { ClrFocusOnViewInitModule } from './utils/focus/focus-on-view-init/focus-on-view-init.module';\nimport { ClrLoadingModule } from './utils/loading/loading.module';\nimport { ClrPopoverModuleNext } from './utils/popover/popover.module';\nimport { ClrWizardModule } from './wizard/wizard.module';\n\n// Register the icon library\nimport '@cds/core/icon/register';\n\n@NgModule({\n exports: [\n ClrEmphasisModule,\n ClrDataModule,\n ClrIconModule,\n ClrModalModule,\n ClrLoadingModule,\n ClrConditionalModule,\n ClrFocusOnViewInitModule,\n ClrButtonModule,\n ClrFormsModule,\n ClrLayoutModule,\n ClrPopoverModule,\n ClrWizardModule,\n ClrStepperModule,\n ClrSpinnerModule,\n ClrProgressBarModule,\n ClrPopoverModuleNext,\n ClrTimelineModule,\n ],\n})\nexport class ClarityModule {}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button';\nexport * from './button-group';\nexport * from './button-group.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './loading-button';\nexport * from './loading-button.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './button.module';\nexport * from './button-group/index';\nexport * from './button-loading/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { ClrDatagridComparatorInterface } from './comparator.interface';\n\nexport interface ClrDatagridStateInterface<T = any> {\n page?: { from?: number; to?: number; size?: number; current?: number };\n sort?: { by: string | ClrDatagridComparatorInterface<T>; reverse: boolean };\n filters?: any[];\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nimport { Observable } from 'rxjs';\n\nexport interface ClrDatagridFilterInterface<T, S = any> {\n readonly state?: S;\n\n changes: Observable<any>;\n\n isActive(): boolean;\n\n accepts(item: T): boolean;\n\n equals?(other: ClrDatagridFilterInterface<T, any>): boolean;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDatagridStringFilterInterface<T> {\n accepts(item: T, search: string): boolean;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDatagridNumericFilterInterface<T> {\n accepts(item: T, low: number, high: number): boolean;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport interface ClrDatagridComparatorInterface<T> {\n compare(a: T, b: T): number;\n}\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './datagrid';\nexport * from './datagrid-action-bar';\nexport * from './datagrid-action-overflow';\nexport * from './datagrid-column';\nexport * from './datagrid-column-toggle';\nexport * from './datagrid-column-toggle-button';\nexport * from './datagrid-column-separator';\nexport * from './datagrid-detail';\nexport * from './datagrid-detail-body';\nexport * from './datagrid-detail-header';\nexport * from './datagrid-hideable-column';\nexport * from './datagrid-filter';\nexport * from './datagrid-if-detail';\nexport * from './datagrid-items';\nexport * from './datagrid-items-trackby';\nexport * from './datagrid-row';\nexport * from './datagrid-row-detail';\nexport * from './datagrid-cell';\nexport * from './datagrid-footer';\nexport * from './datagrid-page-size';\nexport * from './datagrid-pagination';\nexport * from './datagrid-placeholder';\n\nexport * from './interfaces/state.interface';\nexport * from './enums/sort-order.enum';\nexport * from './interfaces/filter.interface';\nexport * from './interfaces/string-filter.interface';\nexport * from './interfaces/numeric-filter.interface';\nexport * from './interfaces/comparator.interface';\n\nexport * from './built-in/filters/datagrid-string-filter';\nexport * from './built-in/filters/datagrid-numeric-filter';\nexport * from './built-in/filters/datagrid-property-string-filter';\nexport * from './built-in/filters/datagrid-property-numeric-filter';\nexport * from './built-in/comparators/datagrid-property-comparator';\n\nexport * from './datagrid.module';\n\nexport { ClrDatagridItemsTrackByFunction } from './providers/items';\n\nexport { ClrDatagridSelectionCellDirective as ÇlrDatagridSelectionCellDirective } from './datagrid-selection-cell.directive';\nexport { DatagridDetailRegisterer as ÇlrDatagridDetailRegisterer } from './datagrid-detail-registerer';\nexport { WrappedCell as ÇlrWrappedCell } from './wrapped-cell';\nexport { WrappedColumn as ÇlrWrappedColumn } from './wrapped-column';\nexport { WrappedRow as ÇlrWrappedRow } from './wrapped-row';\nexport { DatagridMainRenderer as ÇlrDatagridMainRenderer } from './render/main-renderer';\nexport { DatagridHeaderRenderer as ÇlrDatagridHeaderRenderer } from './render/header-renderer';\nexport { DatagridCellRenderer as ÇlrDatagridCellRenderer } from './render/cell-renderer';\nexport { DatagridRowRenderer as ÇlrDatagridRowRenderer } from './render/row-renderer';\nexport { ExpandableOompaLoompa as ÇlrExpandableOompaLoompa } from './chocolate/expandable-oompa-loompa';\nexport { ActionableOompaLoompa as ÇlrActionableOompaLoompa } from './chocolate/actionable-oompa-loompa';\nexport { DatagridWillyWonka as ÇlrDatagridWillyWonka } from './chocolate/datagrid-willy-wonka';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './models/selected-state.enum';\nexport * from './tree';\nexport * from './tree-node';\nexport * from './recursive-for-of';\nexport * from './tree-view.module';\nexport * from './tree-node-link';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './stack-view';\nexport * from './stack-header';\nexport * from './stack-block';\nexport * from './stack-view.module';\nexport * from './stack-view-custom-tags';\nexport * from './stack-content-input';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './data.module';\nexport * from './datagrid/index';\nexport * from './tree-view/index';\nexport * from './stack-view/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './alert';\nexport * from './alert-item';\nexport * from './alert-text';\nexport * from './alerts';\nexport * from './alerts-pager';\nexport * from './alert.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './emphasis.module';\nexport * from './alert/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './if-control-state/if-error';\nexport * from './if-control-state/if-success';\nexport { ClrFormLayout } from './providers/layout.service';\nexport * from './error';\nexport * from './success';\nexport * from './form';\nexport * from './helper';\nexport * from './label';\nexport * from './layout';\nexport * from './abstract-container';\nexport * from './control';\nexport * from './control-container';\nexport * from './wrapped-control';\nexport * from './common.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './checkbox';\nexport * from './checkbox-container';\nexport * from './checkbox-wrapper';\nexport * from './checkbox.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './combobox.module';\nexport * from './combobox-container';\nexport * from './combobox';\nexport * from './options';\nexport * from './option';\nexport * from './option-items.directive';\nexport * from './option-selected.directive';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './datalist';\nexport * from './datalist-input';\nexport * from './datalist-container';\nexport * from './datalist.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './date-container';\nexport * from './date-input';\nexport * from './date-input.validator';\nexport * from './datepicker-view-manager';\nexport * from './daypicker';\nexport * from './monthpicker';\nexport * from './yearpicker';\nexport * from './calendar';\nexport * from './day';\n\nexport * from './datepicker.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './input';\nexport * from './input-container';\nexport * from './input.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './password';\nexport * from './password-container';\nexport * from './password.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './radio';\nexport * from './radio-container';\nexport * from './radio-wrapper';\nexport * from './radio.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './select';\nexport * from './select-container';\nexport * from './select.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './textarea';\nexport * from './textarea-container';\nexport * from './textarea.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './range';\nexport * from './range-container';\nexport * from './range.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './common/index';\nexport * from './checkbox/index';\nexport * from './combobox/index';\nexport * from './datalist/index';\nexport * from './datepicker/index';\nexport * from './input/index';\nexport * from './password/index';\nexport * from './radio/index';\nexport * from './select/index';\nexport * from './textarea/index';\nexport * from './range/index';\nexport * from './forms.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './icon';\nexport * from './icon.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './main-container';\nexport * from './main-container.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './main-container-willy-wonka';\nexport * from './nav-detection-oompa-loompa';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './chocolate/index';\nexport * from './header';\nexport * from './nav-level';\nexport * from './aria-current-link';\nexport * from './navigation.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './tabs';\nexport * from './tab';\nexport * from './tab-content';\nexport * from './tab-overflow-content';\nexport * from './tab-link.directive';\nexport * from './tabs.module';\n\nexport { TabsWillyWonka as ÇlrTabsWillyWonka } from './chocolate/tabs-willy-wonka';\nexport { ActiveOompaLoompa as ÇlrActiveOompaLoompa } from './chocolate/active-oompa-loompa';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './vertical-nav-group-children';\nexport * from './vertical-nav-group';\nexport * from './vertical-nav';\nexport * from './vertical-nav-link';\nexport * from './vertical-nav-icon';\nexport * from './vertical-nav.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './layout.module';\nexport * from './main-container/index';\nexport * from './nav/index';\nexport * from './tabs/index';\nexport * from './vertical-nav/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './modal';\nexport * from './modal.module';\nexport * from './modal-body';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport const CLR_MENU_POSITIONS: string[] = [\n 'bottom-left',\n 'bottom-right',\n 'top-left',\n 'top-right',\n 'left-bottom',\n 'left-top',\n 'right-bottom',\n 'right-top',\n];\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './dropdown';\nexport * from './dropdown-menu';\nexport * from './dropdown-trigger';\nexport * from './dropdown-item';\nexport * from './menu-positions';\nexport * from './dropdown.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './signpost';\nexport * from './signpost-content';\nexport * from './signpost-trigger';\nexport * from './signpost.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './tooltip';\nexport * from './tooltip-trigger';\nexport * from './tooltip-content';\nexport * from './tooltip.module';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './dropdown/index';\nexport * from './popover.module';\nexport * from './signpost/index';\nexport * from './tooltip/index';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport type HeadingLevel = 1 | 2 | 3 | 4 | 5 | 6 | '1' | '2' | '3' | '4' | '5' | '6';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './wizard';\nexport * from './wizard-page';\nexport * from './wizard-stepnav';\nexport * from './wizard-stepnav-item';\nexport * from './wizard-button';\nexport * from './wizard-header-action';\nexport * from './wizard-title';\nexport * from './wizard-page-title';\nexport * from './wizard-page-navtitle';\nexport * from './wizard-page-buttons';\nexport * from './wizard-page-header-actions';\nexport * from './wizard.module';\n\nexport * from './heading-level';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './accordion';\nexport * from './accordion-panel';\nexport * from './accordion-title';\nexport * from './accordion-content';\nexport * from './accordion-description';\nexport * from './accordion.module';\n\nexport { AccordionWillyWonka as ÇlrAccordionWillyWonka } from './chocolate/accordion-willy-wonka';\nexport { AccordionOompaLoompa as ÇlrAccordionOompaLoompa } from './chocolate/accordion-oompa-loompa';\nexport { StepperWillyWonka as ÇlrStepperWillyWonka } from './stepper/chocolate/stepper-willy-wonka';\nexport { StepperOompaLoompa as ÇlrStepperOompaLoompa } from './stepper/chocolate/stepper-oompa-loompa';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './stepper-panel';\nexport * from './stepper';\nexport * from './stepper.module';\nexport * from './step-button';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './spinner.module';\nexport * from './spinner';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './progress-bar.module';\nexport * from './progress-bar';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './timeline.module';\n\nexport * from './timeline';\nexport * from './timeline-step';\nexport * from './timeline-step-header';\nexport * from './timeline-step-description';\nexport * from './timeline-step-title';\n\nexport * from './enums/timeline-step-state.enum';\nexport * from './enums/timeline-layout.enum';\n","/*\n * Copyright (c) 2016-2023 VMware, Inc. All Rights Reserved.\n * This software is released under MIT license.\n * The full license information can be found in LICENSE in the root directory of this project.\n */\n\nexport * from './clr-angular.module';\n\nexport * from './button/index';\nexport * from './data/index';\nexport * from './emphasis/index';\nexport * from './forms/index';\nexport * from './icon/index';\nexport * from './layout/index';\nexport * from './modal/index';\nexport * from './popover/index';\nexport * from './utils/index';\nexport * from './wizard/index';\nexport * from './accordion/index';\nexport * from './accordion/stepper/index';\nexport * from './progress/spinner/index';\nexport * from './progress/progress-bars/index';\nexport * from './timeline/index';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.LoadingListener","i1.ClrCommonStringsService","i2.AccordionService","i3.IfExpandService","i4","i5.CdsIconCustomTag","i1.AccordionService","i1.WillyWonka","i1.AccordionWillyWonka","i2.IfExpandService","declarations","i2","i3.StepperService","i4.IfExpandService","i1.ClrStepperPanel","i2.StepperService","i1.StepperWillyWonka","i1.ClrPopoverEventsService","i2.ClrPopoverToggleService","i1.ClrPopoverPositionService","i2.ClrPopoverEventsService","i3.ClrPopoverToggleService","i1.ClrPopoverToggleService","i1.ButtonInGroupService","FocusService","i1.ClrStopEscapePropagationDirective","i1.DomAdapter","tokenFactory","i1.IfExpandService","i1.FocusService","i3.ClrCommonStringsService","i4.ClrDestroyService","i5.ButtonGroupFocusHandler","i7","i8.CdsIconCustomTag","i9.ClrPopoverAnchor","i10.ClrPopoverOpenCloseButton","i11.ClrPopoverContent","i1","counter","i1.ControlIdService","i2.ContainerIdService","i1.NgControlService","i2.LayoutService","i3.NgControlService","i1.LayoutService","i1.IfControlStateService","i3.ControlClassService","i4.NgControlService","i2.CdsIconCustomTag","i3.ClrLabel","i2.MarkControlService","i2.NgControlService","i2.ClrLabel","i2.ControlClassService","i4.IfControlStateService","i6.CdsIconCustomTag","i7.ClrLabel","i5.ComboboxContainerService","i6","i7.CdsIconCustomTag","i8.ClrLabel","OptionProxy","i2.ComboboxFocusHandler","i3.OptionSelectionService","i1.OptionSelectionService","i2.ClrCommonStringsService","i3.ComboboxFocusHandler","i4.ClrPopoverToggleService","i6.ClrSpinner","i8.ComboboxFocusHandler","i9.ClrPopoverHostDirective","i10","i11.CdsIconCustomTag","i12.ClrRovingTabindex","i13.ClrKeyFocusItem","i14.ClrPopoverAnchor","i15.ClrPopoverOpenCloseButton","i16.ClrPopoverContent","i2.ClrPopoverPositionService","i1.DatalistIdService","i1.ControlClassService","i4.FocusService","i5.IfControlStateService","i3.DatalistIdService","i1.LocaleHelperService","i1.DateNavigationService","i3.DateFormControlService","i4.ClrCommonStringsService","i2.DateNavigationService","i3.DatepickerFocusService","i4.DateIOService","i6.ClrDay","i1.ViewManagerService","i2.LocaleHelperService","i3.DateNavigationService","i4.DatepickerFocusService","i2.ViewManagerService","i3.LocaleHelperService","i6.ClrCalendar","i3","i4.ClrMonthpicker","i5.ClrYearpicker","i6.ClrDaypicker","i3.DatepickerEnabledService","i4.DateFormControlService","i5.DateIOService","i6.ClrCommonStringsService","i7.FocusService","i8.ViewManagerService","i9.ControlClassService","i10.LayoutService","i11.NgControlService","i12.IfControlStateService","i13.ClrPopoverHostDirective","i14","i15.CdkTrapFocusModule_CdkTrapFocus","i16.ClrPopoverAnchor","i17.ClrPopoverOpenCloseButton","i18.ClrPopoverContent","i19.CdsIconCustomTag","i20.ClrLabel","i21.ClrDatepickerViewManager","i8.DatepickerFocusService","i1.DateIOService","i9.ClrLabel","i6.ClrLabel","i4.ControlIdService","i1.ClrExpandableAnimation","i1.OutsideClick","i1.StateDebouncer","i1.Page","i2.StateDebouncer","i1.FiltersProvider","i4.CdkTrapFocusModule_CdkTrapFocus","i6.ClrPopoverAnchor","i7.ClrPopoverCloseButton","i8.ClrPopoverOpenCloseButton","i9.ClrPopoverContent","i2.DomAdapter","i5","i6.ClrDatagridFilter","i1.DatagridWillyWonka","i2.RowActionService","i1.ModalStackService","i1.DetailService","i2.ExpandableRowsCount","i2.DatagridRenderOrganizer","i4.CdkDragModule_CdkDrag","i1.Sort","i2.FiltersProvider","i3.DetailService","i4.ClrPopoverHostDirective","i7.ClrDatagridColumnSeparator","i8.DatagridNumericFilter","i9.DatagridStringFilter","i2.Sort","i3.Page","i1.Items","i3.SignpostIdService","i4.SignpostFocusManager","i2.ClrPopoverHostDirective","i4.CdsIconCustomTag","i5.ClrSignpostTrigger","nbRow","i1.DatagridRenderOrganizer","i1.Selection","i9","i10.CdsIconCustomTag","i11.ClrLabel","i12.ClrCheckbox","i13.ClrCheckboxWrapper","i14.ClrRadio","i15.ClrRadioWrapper","i16","i17.ClrExpandableAnimation","i18.ClrSpinner","i19.ClrDatagridSelectionCellDirective","i4.StateDebouncer","i9.Page","i10.ClrCommonStringsService","i11.ColumnsService","i12.KeyNavigationGridController","i13","i14.ClrLabel","i15","i16.ClrSpinner","i17.ClrDatagridPlaceholder","i18.ClrDatagridSelectionCellDirective","i5.CdkTrapFocusModule_CdkTrapFocus","i7.ClrPopoverAnchor","i10.ClrKeyFocus","i2.ColumnsService","i6.CdkTrapFocusModule_CdkTrapFocus","i9.ClrCheckbox","i10.ClrCheckboxWrapper","i11","i12.ClrPopoverAnchor","i13.ClrPopoverCloseButton","i14.ClrPopoverOpenCloseButton","i15.ClrPopoverContent","i16.ClrDatagridItemsTrackBy","i17.ClrDatagridColumnToggleButton","i3.CdsIconCustomTag","i1.ExpandableRowsCount","i2.DetailService","i3.ColumnsService","i7.ClrCheckbox","i8.ClrCheckboxWrapper","i9.ClrDatagridColumnToggle","i3.DatagridIfExpandService","i4.ExpandableRowsCount","i5.ClrCommonStringsService","i1.ColumnsService","i2.Items","i4.DomAdapter","i5.DetailService","i6.TableSizeService","i7.ColumnsService","i4.ClrExpandableAnimation","i1.ClrStackView","i1.TreeFeaturesService","i4.TreeFocusManagerService","i7.RecursiveChildren","i2.TreeFocusManagerService","i4.RecursiveChildren","i2.DropdownFocusHandler","i3.RootDropdownService","i1.ClrDropdown","i2.RootDropdownService","i3.FocusableItem","i1.DropdownFocusHandler","i3.DropdownFocusHandler","i1.AlertIconAndTypesService","i2.MultiAlertService","i1.MultiAlertService","i3.ClrAlertsPager","i1.ResponsiveNavigationService","i1.MainContainerWillyWonka","i2.ResponsiveNavigationService","i1.ClrStandaloneCdkTrapFocus","i3.ClrStandaloneCdkTrapFocus","i1.TemplateRefContainer","i2.IfActiveService","i2.TabsService","i1.IfActiveService","i5.ClrPopoverHostDirective","i8.ClrKeyFocus","i9.ClrTabOverflowContent","i1.VerticalNavService","i2.VerticalNavIconService","i3.VerticalNavGroupRegistrationService","i2.VerticalNavGroupRegistrationService","i3.VerticalNavGroupService","i4.VerticalNavService","i1.VerticalNavIconService","i1.ScrollingService","i3.ModalStackService","POSITIONS","i2.SignpostIdService","i3.SignpostFocusManager","i1.TooltipIdService","i2.TooltipMouseService","i2.TooltipIdService","i3.TooltipMouseService","i4.ClrSpinner","i1.PageCollectionService","i2.ButtonHubService","i1.WizardNavigationService","i2.PageCollectionService","i3.ButtonHubService","i3.ClrWizardStepnavItem","i2.WizardNavigationService","i3.PageCollectionService","i4.ButtonHubService","i5.HeaderActionService","i7.ClrModal","i8.ClrModalBody","i9.ClrWizardStepnav"],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;AAIG;MAOU,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,CAAA;;MASY,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,CAAA;;;AClBD;;;;AAIG;MAOU,mBAAmB,GAAgB,CAAC,gBAAgB,EAAE,gBAAgB,EAAE;MAOxE,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;2GAAb,aAAa,EAAA,YAAA,EAAA,CAPuB,gBAAgB,EAAE,gBAAgB,aAGvE,YAAY,CAAA,EAAA,OAAA,EAAA,CAHyB,gBAAgB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAOtE,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAJd,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,mBAAmB,CAAC;oBACnC,OAAO,EAAE,CAAC,mBAAmB,CAAC;AAC/B,iBAAA,CAAA;;;ACjBD;;;;AAIG;AAIH;;;AAGG;MACmB,eAAe,CAAA;AAEpC;;ACdD;;;;AAIG;IAMS,gBAKX;AALD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,eAAA,CAAA,eAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,eAAA,CAAA,eAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EALW,eAAe,KAAf,eAAe,GAK1B,EAAA,CAAA,CAAA,CAAA;MAKY,UAAU,CAAA;;AAMrB,IAAA,WAAA,CAAgC,QAAyB,EAAA;QAAzB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAiB;AAHjD,QAAA,IAAA,CAAA,aAAa,GAA6B,eAAe,CAAC,OAAO,CAAC;KAGb;AAE7D,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAyC,EAAA;QACxD,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,YAAA,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC;AACjC,SAAA;aAAM,IAAI,CAAC,KAAK,EAAE;AACjB,YAAA,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC;AACjC,SAAA;AAED,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;YAChC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACzC,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,GAAG,eAAe,CAAC,OAAO,CAAC;KAC7C;;uGA/BU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,YAAA,EAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA,CAAA;;0BAOc,QAAQ;4CAGjB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,YAAY,CAAA;;;AC5BrB;;;;AAIG;MASU,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;QAEE,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;QAEL,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAClB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAW,CAAC;AAyClD,KAAA;AAvCC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;KACF;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KACjC;AAED,IAAA,kBAAkB,CAAC,KAAsB,EAAA;AACvC,QAAA,QAAQ,KAAK;YACX,KAAK,eAAe,CAAC,OAAO;AAC1B,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;gBACpB,MAAM;AACR,YAAA;AACE,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;gBACrB,MAAM;AACT,SAAA;KACF;;4GA7CU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACZX;;;;AAIG;AAEH,IAAI,YAAY,GAAG,CAAC,CAAC;SAEL,eAAe,GAAA;AAC7B,IAAA,OAAO,SAAS,GAAG,YAAY,EAAE,CAAC;AACpC;;ACVA;;;;AAIG;MAUU,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,4JAJxB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAI1B,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iDAAiD;AAC3D,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE,EAAE,mCAAmC,EAAE,MAAM,EAAE;oBACrD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;;ACbD;;;;AAIG;AAEH,IAAY,eAIX,CAAA;AAJD,CAAA,UAAY,eAAe,EAAA;AACzB,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,eAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,eAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAJW,eAAe,KAAf,eAAe,GAI1B,EAAA,CAAA,CAAA;;ACVD;;;;AAIG;AAEI,MAAM,sBAAsB,GAAG,kBAAkB;;ACNxD;;;;AAIG;AAMI,MAAM,cAAc,GAAG;IAC5B,OAAO,CAAC,mBAAmB,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,QAAQ,EAAE;QAChB,UAAU,CAAC,WAAW,EAAE;YACtB,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;SACxD,CAAC;KACH,CAAC;CACH,CAAC;AAEK,MAAM,aAAa,GAAG;IAC3B,OAAO,CAAC,mBAAmB,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;IACxD,OAAO,CAAC,QAAQ,EAAE;QAChB,UAAU,CAAC,WAAW,EAAE;YACtB,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;YACtC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;SACxD,CAAC;QACF,UAAU,CAAC,WAAW,EAAE;AACtB,YAAA,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC3B,YAAA,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;SACvE,CAAC;KACH,CAAC;CACH;;AChCD;;;;AAIG;AAIU,MAAA,oBAAoB,GAAqB;AACpD,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,OAAO;AACf,IAAA,UAAU,EAAE,mBAAmB;AAC/B,IAAA,WAAW,EAAE,gBAAgB;AAC7B,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,YAAY,EAAE,eAAe;AAC7B,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,UAAU,EAAE,aAAa;AACzB,IAAA,WAAW,EAAE,cAAc;AAC3B,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,QAAQ,EAAE,WAAW;AACrB,IAAA,iBAAiB,EAAE,4BAA4B;AAC/C,IAAA,eAAe,EAAE,sBAAsB;AACvC,IAAA,0BAA0B,EAAE,2BAA2B;AACvD,IAAA,kBAAkB,EAAE,sBAAsB;AAC1C,IAAA,cAAc,EAAE,iBAAiB;AACjC,IAAA,aAAa,EAAE,gBAAgB;AAC/B,IAAA,OAAO,EAAE,SAAS;;AAElB,IAAA,eAAe,EAAE,sBAAsB;AACvC,IAAA,aAAa,EAAE,oBAAoB;AACnC,IAAA,wBAAwB,EAAE,yBAAyB;AACnD,IAAA,yBAAyB,EAAE,0BAA0B;AACrD,IAAA,yBAAyB,EAAE,yBAAyB;AACpD,IAAA,uBAAuB,EAAE,wBAAwB;AACjD,IAAA,6BAA6B,EAAE,eAAe;AAC9C,IAAA,wBAAwB,EAAE,sBAAsB;AAChD,IAAA,0BAA0B,EAAE,4CAA4C;;AAExE,IAAA,yBAAyB,EAAE,aAAa;AACxC,IAAA,uBAAuB,EAAE,0CAA0C;AACnE,IAAA,2BAA2B,EAAE,8CAA8C;;AAE3E,IAAA,qBAAqB,EAAE,aAAa;AACpC,IAAA,+BAA+B,EAAE,aAAa;AAC9C,IAAA,+BAA+B,EAAE,8BAA8B;AAC/D,IAAA,uBAAuB,EAAE,gBAAgB;AACzC,IAAA,sBAAsB,EAAE,eAAe;AACvC,IAAA,mBAAmB,EAAE,YAAY;AACjC,IAAA,wBAAwB,EAAE,iBAAiB;AAC3C,IAAA,oBAAoB,EAAE,aAAa;AACnC,IAAA,uBAAuB,EAAE,gBAAgB;AACzC,IAAA,yBAAyB,EAAE,qDAAqD;AAChF,IAAA,wBAAwB,EAAE,kDAAkD;AAC5E,IAAA,uBAAuB,EAAE,wBAAwB;;AAEjD,IAAA,gBAAgB,EAAE,gBAAgB;;AAElC,IAAA,uBAAuB,EAAE,sBAAsB;AAC/C,IAAA,wBAAwB,EAAE,uBAAuB;AACjD,IAAA,yBAAyB,EAAE,+BAA+B;AAC1D,IAAA,0BAA0B,EAAE,gCAAgC;;AAE5D,IAAA,iBAAiB,EAAE,4BAA4B;;AAE/C,IAAA,sBAAsB,EAAE,aAAa;AACrC,IAAA,mBAAmB,EAAE,SAAS;AAC9B,IAAA,mBAAmB,EAAE,WAAW;AAChC,IAAA,iBAAiB,EAAE,OAAO;AAC1B,IAAA,sBAAsB,EAAE,aAAa;;AAErC,IAAA,cAAc,EAAE,wBAAwB;AACxC,IAAA,iBAAiB,EAAE,qCAAqC;AACxD,IAAA,iBAAiB,EAAE,WAAW;AAC9B,IAAA,gBAAgB,EAAE,UAAU;AAC5B,IAAA,iBAAiB,EAAE,YAAY;AAC/B,IAAA,YAAY,EAAE,cAAc;;AAE5B,IAAA,6BAA6B,EAAE,cAAc;AAC7C,IAAA,uBAAuB,EAAE,QAAQ;AACjC,IAAA,4BAA4B,EAAE,wBAAwB;AACtD,IAAA,gCAAgC,EAAE,CAAgK,8JAAA,CAAA;;AAElM,IAAA,iBAAiB,EAAE,WAAW;AAC9B,IAAA,eAAe,EAAE,OAAO;AACxB,IAAA,sBAAsB,EAAE,iBAAiB;AAEzC;;;AAGG;AACH,IAAA,YAAY,EAAE,2BAA2B;AACzC,IAAA,YAAY,EAAE,2BAA2B;AAEzC;;AAEG;AACH,IAAA,YAAY,EAAE,eAAe;;;AClH/B;;;;AAIG;MAUU,uBAAuB,CAAA;AAHpC,IAAA,WAAA,GAAA;QAIU,IAAQ,CAAA,QAAA,GAAG,oBAAoB,CAAC;AA6BzC,KAAA;AA3BC;;AAEG;AACH,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,SAAoC,EAAA;AAC3C,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,SAAS,EAAE,CAAC;KACpD;AAED;;AAEG;AACH,IAAA,KAAK,CAAC,MAAc,EAAE,MAAA,GAAoC,EAAE,EAAA;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,MAAM,GAAG,MAAM,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,YAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,gBAAA,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAI,CAAA,EAAA,IAAI,CAAG,CAAA,CAAA,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AACrD,aAAC,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,MAAM,CAAC;KACf;;oHA7BU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;2FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE,MAAM;AACnB,iBAAA,CAAA;;;ACbD;;;;AAIG;AAEH,IAAY,iBAGX,CAAA;AAHD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;ACTD;;;;AAIG;AAKH,IAAI,cAAc,GAAG,CAAC,CAAC;MAEV,mBAAmB,CAAA;IAM9B,WAAmB,CAAA,EAAU,EAAS,WAA4B,EAAA;QAA/C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAAS,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;AALlE,QAAA,IAAA,CAAA,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC;QAClC,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC;QACrB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QACb,IAAU,CAAA,UAAA,GAAG,CAAG,EAAA,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;KACwB;AACvE,CAAA;MAEY,cAAc,CAAA;AAA3B,IAAA,WAAA,GAAA;AACY,QAAA,IAAA,CAAA,QAAQ,GAAG,iBAAiB,CAAC,OAAO,CAAC;QACrC,IAAc,CAAA,cAAA,GAAG,cAAc,EAAE,CAAC;QAClC,IAAO,CAAA,OAAA,GAA0C,EAAE,CAAC;KA2C/D;AAzCC,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KAC9D;AAED,IAAA,WAAW,CAAC,QAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAED,IAAA,gBAAgB,CAAC,GAAa,EAAA;QAC5B,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;KAC3B;AAED,IAAA,QAAQ,CAAC,EAAU,EAAE,IAAI,GAAG,KAAK,EAAA;AAC/B,QAAA,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAI,mBAAmB,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QACpE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;KAC9B;IAED,WAAW,CAAC,OAAe,EAAE,IAAc,EAAA;QACzC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AAC/C,QAAA,MAAM,YAAY,GAAG,IAAI,KAAK,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC;QAC9D,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,KAAK,iBAAiB,CAAC,OAAO,EAAE;YAC/D,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,YAAY,CAAC;KAC3C;IAED,YAAY,CAAC,OAAe,EAAE,QAAiB,EAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC3C;IAEO,cAAc,GAAA;QACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;KACrE;AAEO,IAAA,eAAe,CAAC,GAAa,EAAA;AACnC,QAAA,IAAI,CAAC,MAAM;aACR,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC;AAC9D,aAAA,OAAO,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;AACF;;AClED;;;;AAIG;MAUU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,cAAc,EAAE,CAAC;QACxB,IAAc,CAAA,cAAA,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAiChF,KAAA;AA/BC,IAAA,eAAe,CAAC,OAAe,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;KACpF;AAED,IAAA,WAAW,CAAC,QAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KACtC;AAED,IAAA,QAAQ,CAAC,OAAe,EAAE,IAAI,GAAG,KAAK,EAAA;QACpC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,WAAW,CAAC,OAAe,EAAE,IAAc,EAAA;QACzC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,YAAY,CAAC,OAAe,EAAE,QAAkB,EAAA;QAC9C,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,gBAAgB,CAAC,GAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAES,iBAAiB,GAAA;QACzB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACjD;;6GAlCU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACbX;;;;AAIG;MAoCU,iBAAiB,CAAA;AAgB5B,IAAA,WAAA,CACS,aAAsC,EACrC,gBAAkC,EAClC,eAAgC,EAChC,GAAsB,EAAA;QAHvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAnBuD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACxE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAEX,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW,CAAC;QAI5E,IAAe,CAAA,eAAA,GAAG,eAAe,CAAC;QAE3C,IAAW,CAAA,WAAA,GAAG,IAAI,CAAC;QAGX,IAAG,CAAA,GAAA,GAAG,eAAe,EAAE,CAAC;KAQ5B;AAEJ,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;KAClB;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;KAC7B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5G,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5D;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS,CAAC,YAAY,KAAK,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE;AACzG,YAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;AAC5E,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,KAAK,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE;AACtG,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AAC5E,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC5C;AAED,IAAA,4BAA4B,CAAC,KAA0B,EAAA;AACrD,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACf,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvC,SAAA;KACF;AAED,IAAA,oBAAoB,CAAC,KAA0B,EAAA;AAC7C,QAAA,OAAO,uBAAuB,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,IAAI,GAAG,0BAA0B,GAAG,EAAE,EAAE,CAAC;KAC9F;AAED,IAAA,qBAAqB,CAAC,EAAU,EAAA;QAC9B,OAAO,CAAA,sBAAA,EAAyB,EAAE,CAAA,CAAA,CAAG,CAAC;KACvC;AAED,IAAA,oBAAoB,CAAC,EAAU,EAAA;QAC7B,OAAO,CAAA,qBAAA,EAAwB,EAAE,CAAA,CAAE,CAAC;KACrC;AAEO,IAAA,eAAe,CAAC,KAA0B,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;AACpC,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC;;;;AAI/B,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACtC;;;;;;;;AAQG;AACH,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7B,SAAA;QAED,IAAI,KAAK,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtC,SAAA;KACF;;8GAnGU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,2BAAA,EAAA,UAAA,CAAA,EAAA,SAAA,EAAA,CAAA,uBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,6BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,oCAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,eAAe,CAAC,+DAQX,uBAAuB,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9C1C,uwEAkDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAD,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EDbc,cAAc,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAGf,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAEzB,IAAA,EAAA,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAA,eAAA,EAC9B,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,cAAc,EACf,SAAA,EAAA,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,uwEAAA,EAAA,CAAA;kMAG2D,QAAQ,EAAA,CAAA;sBAA9F,KAAK;uBAAC,2BAA2B,CAAA;;sBAAG,WAAW;uBAAC,oCAAoC,CAAA;gBACrD,SAAS,EAAA,CAAA;sBAAxC,KAAK;uBAAC,uBAAuB,CAAA;gBAES,eAAe,EAAA,CAAA;sBAArD,MAAM;uBAAC,6BAA6B,CAAA;gBAEK,oBAAoB,EAAA,CAAA;sBAA7D,eAAe;uBAAC,uBAAuB,CAAA;;;AE9C1C;;;;AAIG;MA4BU,YAAY,CAAA;AAKvB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAJrB,IAAU,CAAA,UAAA,GAAqB,KAAK,CAAC;QAEtE,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAEuB;IAE1D,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,KAAK,OAAO,CAAC,UAAU,CAAC,aAAa,EAAE;YACxE,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACrD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAClD;IAEO,oBAAoB,GAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC;AACvF,QAAA,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;KAC7C;IAEO,mBAAmB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO;AACvB,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,aAAA,SAAS,CAAC,CAAC,MAAoC,KAC9C,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CACxE,CAAC;KACL;;yGApCU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,mKAHZ,CAAC,gBAAgB,CAAC,EAKZ,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,iBAAiB,kDAPxB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAK1B,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE,EAAE,uBAAuB,EAAE,MAAM,EAAE;oBACzC,SAAS,EAAE,CAAC,gBAAgB,CAAC;oBAC7B,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;oGAEkC,UAAU,EAAA,CAAA;sBAA1C,KAAK;uBAAC,wBAAwB,CAAA;gBACK,MAAM,EAAA,CAAA;sBAAzC,eAAe;uBAAC,iBAAiB,CAAA;;;AClCpC;;;;AAIG;MASU,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,+EAHpB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAG1B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;;ACZD;;;;AAIG;MAUU,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,0IAJlB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAI1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qCAAqC;AAC/C,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE,EAAE,6BAA6B,EAAE,MAAM,EAAE;oBAC/C,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;;ACbD;;;;AAIG;AAMH;;;;;;;AAOG;MAEU,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;QAEE,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAU,CAAC;AAW5C,KAAA;AATC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;KACvC;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACxB,SAAA;KACF;;uGAbU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,SAAS;;;AClBV;;;;AAIG;MAQmB,WAAW,CAAA;;IAK/B,WAAY,CAAA,GAAsB,EAAE,UAAsB,EAAA;QACxD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC,MAAK;AACtD,YAAA,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,MAAM,EAAE;AACrC,gBAAA,UAAU,CAAC,qBAAqB,GAAG,IAAI,CAAC;gBACxC,GAAG,CAAC,aAAa,EAAE,CAAC;AACpB,gBAAA,UAAU,CAAC,qBAAqB,GAAG,KAAK,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAID,qBAAqB,GAAA;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC;KACjC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;;wGAvBmB,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADhC,SAAS;;;ACXV;;;;AAIG;AASG,MAAO,mBAAoB,SAAQ,UAAU,CAAA;;gHAAtC,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,eAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAA;;;ACZD;;;;AAIG;AAWG,MAAO,oBAAqB,SAAQ,WAAW,CAAA;AAGnD,IAAA,WAAA,CAAY,GAAsB,EAAc,UAA+B,EAAE,eAAgC,EAAA;QAC/G,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AACpF,SAAA;AACD,QAAA,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;KAC/B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC7B;;iHAbU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA,CAAA;;0BAIsC,QAAQ;;;AClB/C;;;;AAIG;AAeH,MAAMC,cAAY,GAAG;IACnB,YAAY;IACZ,iBAAiB;IACjB,iBAAiB;IACjB,uBAAuB;IACvB,mBAAmB;IACnB,oBAAoB;IACpB,mBAAmB;CACpB,CAAC;MAOW,kBAAkB,CAAA;AAC7B,IAAA,WAAA,GAAA;QACE,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC1E;;+GAHU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAd7B,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,uBAAuB;QACvB,mBAAmB;QACnB,oBAAoB;AACpB,QAAA,mBAAmB,CAIT,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,aAVrC,YAAY;QACZ,iBAAiB;QACjB,iBAAiB;QACjB,uBAAuB;QACvB,mBAAmB;QACnB,oBAAoB;QACpB,mBAAmB,CAAA,EAAA,CAAA,CAAA;gHAQR,kBAAkB,EAAA,OAAA,EAAA,CAJnB,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FAI1B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;AACtC,oBAAA,YAAY,EAAE,CAAC,GAAGA,cAAY,CAAC;AAC/B,oBAAA,OAAO,EAAE,CAAC,GAAGA,cAAY,CAAC;AAC3B,iBAAA,CAAA;;;ACjCD;;;;AAIG;AAIG,SAAU,+BAA+B,CAAC,SAAoB,EAAA;AAClE,IAAA,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,IAAG;QAC9C,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,OAAO,YAAY,WAAW,EAAE;YAClC,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAClC,SAAA;aAAM,IAAI,OAAO,YAAY,SAAS,EAAE;YACvC,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAC1C,SAAA;AACH,KAAC,CAAC,CAAC;AACL;;ACnBA;;;;AAIG;AAKG,MAAO,YAAa,SAAQ,cAAc,CAAA;AAAhD,IAAA,WAAA,GAAA;;QACU,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;KAiIxC;AA/HC,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,2BAA2B,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;KAC7G;AAEQ,IAAA,QAAQ,CAAC,EAAU,EAAE,IAAI,GAAG,KAAK,EAAA;AACxC,QAAA,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;KAClC;AAEQ,IAAA,gBAAgB,CAAC,GAAa,EAAA;AACrC,QAAA,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,KAAK,EAAE;YACzC,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;AAEQ,IAAA,WAAW,CAAC,OAAe,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,eAAe,CAAC,QAAQ,EAAE;AAC7D,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;AAC1D,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,cAAsB,EAAE,iBAAiB,GAAG,IAAI,EAAA;AAClE,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;AACrD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;AACpC,SAAA;KACF;AAED,IAAA,oBAAoB,CAAC,OAAe,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM;AACR,aAAA,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;aACjD,OAAO,CAAC,KAAK,IAAG;AACf,YAAA,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE;AAC7C,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA,IAAI,KAAK,CAAC,EAAE,KAAK,OAAO,EAAE;gBAC/B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;AACpC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;AACrC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAED,IAAA,aAAa,CAAC,OAAe,EAAA;QAC3B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC;KACzD;AAED,IAAA,eAAe,CAAC,OAAe,EAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;KACtD;AAED,IAAA,mBAAmB,CAAC,GAAa,EAAA;AAC/B,QAAA,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;KAC3C;IAED,WAAW,GAAA;;AAET,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACpC,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;AAED,IAAA,YAAY,CAAC,cAAsB,EAAA;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAClF;AAEO,IAAA,oBAAoB,CAAC,OAAe,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;KACrH;AAEO,IAAA,UAAU,CAAC,OAAe,EAAA;QAChC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;KACvC;IAEO,cAAc,GAAA;AACpB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AACxC;;;;AAIG;QACH,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;AACR,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC5C,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;KACpC;AAEO,IAAA,aAAa,CAAC,OAAe,EAAA;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,QAAQ,CAAC;QACxD,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC;KACpC;AAEO,IAAA,aAAa,CAAC,cAAsB,EAAA;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AAEpD,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC5C,SAAA;KACF;AAEO,IAAA,aAAa,CAAC,OAAe,EAAA;AACnC,QAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC;KACtD;IAEO,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;KACrD;IAEO,2BAA2B,GAAA;AACjC,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,MAAM,KAAK,eAAe,CAAC,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KAC5G;IAEO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;KACvF;AACF;;AC3ID;;;;AAIG;AAUG,MAAO,cAAe,SAAQ,gBAAgB,CAAA;AAQlD,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;AAPD,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;AAE3C,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE,CAAC;AAE1C,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAU,CAAC;QAKjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC1D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,aAAa,CAAC,OAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,eAAe,CAAC,OAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,mBAAmB,CAAC,GAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,mBAAmB,CAAC,cAAsB,EAAE,iBAAiB,GAAG,IAAI,EAAA;QAClE,IAAI,CAAC,SAAS,CAAC,mBAAmB,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED,IAAA,oBAAoB,CAAC,OAAe,EAAA;AAClC,QAAA,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAEO,cAAc,CAAC,cAAsB,EAAE,iBAA0B,EAAA;QACvE,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAE9D,IAAI,iBAAiB,IAAI,SAAS,EAAE;YAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA,IAAI,iBAAiB,EAAE;AAC5B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AAC9C,SAAA;KACF;IAEO,2BAA2B,GAAA;QACjC,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAC5C,oBAAoB,EAAE,CACvB,CAAC;KACH;;2GA5DU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACbX;;;;AAIG;AAmCG,MAAO,eAAgB,SAAQ,iBAAiB,CAAA;AAOpD,IAAA,WAAA,CAC+B,UAAe,EAC5B,aAAsC,EAClC,aAA4B,EAC5B,YAA0B,EACtC,cAA8B,EACtC,eAAgC,EAChC,GAAsB,EAAA;QAEtB,KAAK,CAAC,aAAa,EAAE,cAAc,EAAE,eAAe,EAAE,GAAG,CAAC,CAAC;QAR9B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QAC5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAClC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QACtC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAX/B,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAIrB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAY1C;AAED,IAAA,IAAa,EAAE,GAAA;QACb,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;KACzF;IACD,IAAa,EAAE,CAAC,MAAc,EAAA;;KAE7B;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;KACpF;IAEQ,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,sCAAsC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC,oBAAoB,EAAE,CAAC;;QAG5B,IAAI,IAAI,CAAC,SAAS,EAAE;;YAElB,MAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC;YAEvG,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,IAAG;gBAC5G,IAAI,MAAM,KAAK,OAAO,EAAE;oBACtB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5C,iBAAA;qBAAM,IAAI,MAAM,KAAK,SAAS,EAAE;oBAC/B,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC9C,iBAAA;aACF,CAAC,CACH,CAAC;AACH,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAClD;IAEO,oBAAoB,GAAA;QAC1B,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,cAAc,CAAC,UAAU;aAC3B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;AAClF,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAC5D,CAAC;KACH;AAEO,IAAA,sCAAsC,CAAC,KAA0B,EAAA;AACvE,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe,CAAC,KAAK,EAAE;AAC1C,YAAA,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,SAAA;KACF;;AArEU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAQhB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAT,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AARV,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,2GAFf,CAAC,eAAe,CAAC,EZrC9B,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,uwEAkDA,0VYdc,aAAa,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAGd,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAEvB,IAAA,EAAA,EAAE,6BAA6B,EAAE,MAAM,EAAE,EAAA,eAAA,EAC9B,uBAAuB,CAAC,MAAM,EACnC,UAAA,EAAA,aAAa,EACd,SAAA,EAAA,CAAC,eAAe,CAAC,EAAA,QAAA,EAAA,uwEAAA,EAAA,CAAA;;0BAUzB,MAAM;2BAAC,WAAW,CAAA;;0BAElB,QAAQ;;0BACR,QAAQ;iIARgB,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;;;AC1C3B;;;;AAIG;IAOS,kBAGX;AAHD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,iBAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACnB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA,CAAA;MAUY,aAAa,CAAA;IAIxB,WAAoB,CAAA,OAAwB,EAAU,cAA8B,EAAA;QAAhE,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QAAU,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAH5D,QAAA,IAAA,CAAA,IAAI,GAA+B,iBAAiB,CAAC,IAAI,CAAC;QAChD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;KAEiC;IAExF,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM,CAAC;KAC5D;IAGD,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACxF;;0GAbU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAb,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,eAAA,EAAA,MAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,QAAQ,EAAE,UAAU;AACrB,qBAAA;AACF,iBAAA,CAAA;6HAEyB,IAAI,EAAA,CAAA;sBAA3B,KAAK;uBAAC,eAAe,CAAA;gBACY,YAAY,EAAA,CAAA;sBAA7C,WAAW;uBAAC,mBAAmB,CAAA;gBAShC,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,OAAO,CAAA;;;AClCvB;;;;AAIG;MAiCU,UAAU,CAAA;AAMrB,IAAA,WAAA,CACsB,SAA6B,EAC7B,MAAc,EAC1B,cAA8B,EAAA;QAFlB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAoB;QAC7B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAC1B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QANxC,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAO/B;IAEJ,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AACnC,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC5E,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE,CAAC,CAAC;KAC3D;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IAAI,OAAO,CAAC,YAAY,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE;YAC5E,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7D,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACrD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAClD;IAEO,yBAAyB,GAAA;QAC/B,OAAO,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5F;IAEO,wBAAwB,GAAA;QAC9B,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,SAAS,CAAC,eAAe,IAAG;AACrE,YAAA,IAAI,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACtC,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AAC3B,aAAA;AAAM,iBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,uBAAuB,GAAA;AAC7B,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC;AACnH,QAAA,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;KAC3D;IAEO,mBAAmB,GAAA;QACzB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAkC,KAAI;YACvG,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAEtE,IAAI,IAAI,CAAC,YAAY,EAAE;gBACrB,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC7D,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;uGA/DU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,qMAHV,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,EAKtE,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,eAAe,qEAVtB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FAQ1B,UAAU,EAAA,UAAA,EAAA,CAAA;kBAVtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,2BAA2B,EAAE,MAAM;AACpC,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,cAAc,EAAE,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC;oBACvF,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;;0BAQI,QAAQ;;0BACR,QAAQ;sEAPc,YAAY,EAAA,CAAA;sBAApC,KAAK;uBAAC,gBAAgB,CAAA;gBACkC,MAAM,EAAA,CAAA;sBAA9D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;;AAgEzD,SAAS,gBAAgB,CAAC,OAAwB,EAAA;AAChD,IAAA,OAAO,IAAI,UAAU,CAAO,QAAQ,IAAG;AACrC,QAAA,MAAM,qBAAqB,GAAG,OAAO,CAAC,KAAK,CAAC;AAE5C,QAAA,OAAO,CAAC,KAAK,GAAG,MAAK;YACnB,QAAQ,CAAC,IAAI,EAAE,CAAC;AAChB,YAAA,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACvC,SAAC,CAAC;AAEF,QAAA,OAAO,MAAK;AACV,YAAA,OAAO,CAAC,KAAK,GAAG,qBAAqB,CAAC;AACxC,SAAC,CAAC;AACJ,KAAC,CAAC,CAAC;AACL;;ACpHA;;;;AAIG;AASG,MAAO,iBAAkB,SAAQ,UAAU,CAAA;;8GAApC,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;;;ACZD;;;;AAIG;AAWG,MAAO,kBAAmB,SAAQ,WAAW,CAAA;AAGjD,IAAA,WAAA,CAAY,GAAsB,EAAc,UAA6B,EAAE,eAAgC,EAAA;QAC7G,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;AAC/E,SAAA;AACD,QAAA,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;KAC/B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC7B;;+GAbU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,oCAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC/C,iBAAA,CAAA;;0BAIsC,QAAQ;;;AClB/C;;;;AAIG;AAaH,MAAM,YAAY,GAAG,CAAC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC;MAO5F,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;8GAAhB,gBAAgB,EAAA,YAAA,EAAA,CAPP,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAG3F,YAAY,EAAE,aAAa,EAAE,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAHrC,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,EAK1E,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAElC,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJjB,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAE9B,kBAAkB,CAAA,EAAA,CAAA,CAAA;2FAElC,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,kBAAkB,CAAC;AAC1D,oBAAA,YAAY,EAAE,CAAC,GAAG,YAAY,CAAC;AAC/B,oBAAA,OAAO,EAAE,CAAC,GAAG,YAAY,EAAE,kBAAkB,CAAC;AAC/C,iBAAA,CAAA;;;ACvBD;;;;AAIG;AAEH,IAAY,IAaX,CAAA;AAbD,CAAA,UAAY,IAAI,EAAA;AACd,IAAA,IAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,IAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,IAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,IAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,IAAA,CAAA,WAAA,CAAA,GAAA,WAAuB,CAAA;AACvB,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACX,IAAA,IAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,IAAA,CAAA,QAAA,CAAA,GAAA,QAAiB,CAAA;AACjB,IAAA,IAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,IAAA,CAAA,UAAA,CAAA,GAAA,GAAc,CAAA;AACd,IAAA,IAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,IAAA,CAAA,KAAA,CAAA,GAAA,KAAW,CAAA;AACb,CAAC,EAbW,IAAI,KAAJ,IAAI,GAaf,EAAA,CAAA,CAAA,CAAA;AAED,IAAY,MAOX,CAAA;AAPD,CAAA,UAAY,MAAM,EAAA;AAChB,IAAA,MAAA,CAAA,SAAA,CAAA,GAAA,IAAc,CAAA;AACd,IAAA,MAAA,CAAA,WAAA,CAAA,GAAA,MAAkB,CAAA;AAClB,IAAA,MAAA,CAAA,YAAA,CAAA,GAAA,OAAoB,CAAA;AACpB,IAAA,MAAA,CAAA,WAAA,CAAA,GAAA,MAAkB,CAAA;AAClB,IAAA,MAAA,CAAA,OAAA,CAAA,GAAA,UAAkB,CAAA;AAClB,IAAA,MAAA,CAAA,QAAA,CAAA,GAAA,KAAc,CAAA;AAChB,CAAC,EAPW,MAAM,KAAN,MAAM,GAOjB,EAAA,CAAA,CAAA;;AC5BD;;;;AAIG;AAIG,SAAU,YAAY,CAAC,GAAW,EAAA;IACtC,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,KAAK,MAAM,CAAC,OAAO,EAAE;QAClD,OAAO,IAAI,CAAC,OAAO,CAAC;AACrB,KAAA;SAAM,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,MAAM,CAAC,SAAS,EAAE;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,KAAA;SAAM,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,IAAI,GAAG,KAAK,MAAM,CAAC,UAAU,EAAE;QAC/D,OAAO,IAAI,CAAC,UAAU,CAAC;AACxB,KAAA;SAAM,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,MAAM,CAAC,SAAS,EAAE;QAC7D,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,KAAA;SAAM,IAAI,GAAG,KAAK,IAAI,CAAC,KAAK,IAAI,GAAG,KAAK,MAAM,CAAC,KAAK,EAAE;QACrD,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,KAAA;SAAM,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,IAAI,GAAG,KAAK,MAAM,CAAC,MAAM,EAAE;QACvD,OAAO,IAAI,CAAC,MAAM,CAAC;AACpB,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,GAAG,CAAC;AACZ,KAAA;AACH,CAAC;AAEK,SAAU,qBAAqB,CAAC,KAAoB,EAAA;IACxD,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEpC,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;;;;QAIvG,KAAK,CAAC,cAAc,EAAE,CAAC;AACxB,KAAA;AACH,CAAC;AAEK,SAAU,yBAAyB,CAAC,KAAoB,EAAA;AAC5D,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC;;AAEvB,IAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACnF;;ACzCA;;;;AAIG;AAOH;AACA;MAGa,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;QAEU,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AACd,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAW,CAAC;AAErC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAS,CAAC;AACxC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAe,CAAC;AAC7C,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAW,CAAC;AA4DlD,KAAA;AA1DC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,KAAY,EAAA;AACxB,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,KAAc,EAAA;AACrB,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,SAAA;KACF;;AAGD,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C;AAED;;;AAGG;AACH,IAAA,eAAe,CAAC,KAAU,EAAA;QACxB,qBAAqB,CAAC,KAAK,CAAC,CAAC;AAE7B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;KACxB;AAED,IAAA,kBAAkB,CAAC,OAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;AAED,IAAA,kBAAkB,CAAC,WAAwB,EAAA;AACzC,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACxC;;oHAjEU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACdX;;;;AAIG;AASH;AACA;MAEa,uBAAuB,CAAA;AAclC,IAAA,WAAA,CACU,QAAmB,EACnB,gBAAyC,EACvB,QAAsB,EAAA;QAFxC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QACvB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAc;QAhBlD,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;QACzB,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;QASb,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAQzC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;AAC3C,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAChC,aAAA;SACF,CAAC,EACF,gBAAgB,CAAC,cAAc,EAAE,CAAC,SAAS,CAAC,KAAK,IAAG;;AAElD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAED,iBAAiB,GAAA;QACf,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9E,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,gBAAgB;AAC5C,iBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;iBACtD,SAAS,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;;;;;;YAML,OAAO;AACR,SAAA;KACF;IAED,oBAAoB,GAAA;QAClB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAC9B,SAAA;KACF;IAED,gBAAgB,GAAA;QACd,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,KAAiB,KAAI;AAC9F,gBAAA,IAAI,KAAK,KAAK,IAAI,CAAC,YAAY,EAAE;;oBAE/B,OAAO,IAAI,CAAC,YAAY,CAAC;AAC1B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,KAAK,CAAC;;AAEnC,oBAAA,MAAM,cAAc,GAAG,KAAK,CAAC,MAAqB,CAAC;oBACnD,cAAc,CAAC,KAAK,EAAE,CAAC;AACxB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,mBAAmB,GAAA;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO,IAAI,CAAC,YAAY,CAAC;YACzB,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,OAAO,IAAI,CAAC,qBAAqB,CAAC;AACnC,aAAA;AACF,SAAA;KACF;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,MAAK;AAC/E,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,KAAK,CAAC;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;KACJ;IAED,oBAAoB,GAAA;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,cAAc,CAAC;AAC5B,SAAA;KACF;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC3C;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5C;AAEO,IAAA,mCAAmC,CAAC,KAAY,EAAA;;AAEtD,QAAA,IAAI,MAAM,GAAG,KAAK,CAAC,MAAqB,CAAC;;QAGzC,OAAO,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,KAAK,MAAM,EAAE;AACpE,YAAA,MAAM,GAAG,MAAM,CAAC,aAAa,CAAC;AAC/B,SAAA;;;;QAKD,IAAI,MAAM,CAAC,SAAS,EAAE;;AAEpB,YAAA,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;AACxE,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;IAEO,uBAAuB,GAAA;QAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;;AA5IU,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,+EAiBxB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAjBP,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;0BAkBN,MAAM;2BAAC,QAAQ,CAAA;;;ACjCpB;;;;AAIG;MAYU,gBAAgB,CAAA;IAC3B,WAAY,CAAA,iBAA0C,EAAE,OAAmB,EAAA;AACzE,QAAA,iBAAiB,CAAC,eAAe,GAAG,OAAO,CAAC;KAC7C;;6GAHU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE,MAAM;AAC7B,qBAAA;AACF,iBAAA,CAAA;;;ACfD;;;;AAIG;MAeU,qBAAqB,CAAA;AAKhC,IAAA,WAAA,CACU,UAAsB,EACtB,kBAA2C,EAC3C,gBAAyC,EAAA;QAFzC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;QAC3C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AAPhB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAQ,CAAC;QAElE,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAOzC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACvE,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB,CAAC,CACH,CAAC;KACH;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,CAAC;KAC1C;IAED,eAAe,GAAA;QACb,IAAI,CAAC,kBAAkB,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;AACzD,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KACzC;IACD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;kHA7BU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,yBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,IAAI,EAAE;AACJ,wBAAA,gCAAgC,EAAE,MAAM;AACzC,qBAAA;AACF,iBAAA,CAAA;uKAEoC,WAAW,EAAA,CAAA;sBAA7C,MAAM;uBAAC,yBAAyB,CAAA;gBAiBjC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACpCnC;;;;AAIG;IAES,QAGX;AAHD,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,OAAA,CAAA,OAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACZ,CAAC,EAHW,OAAO,KAAP,OAAO,GAGlB,EAAA,CAAA,CAAA;;ACTD;;;;AAIG;IAES,aAIX;AAJD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,YAAA,CAAA,YAAA,CAAA,QAAA,CAAA,GAAA,GAAA,CAAA,GAAA,QAAY,CAAA;AACZ,IAAA,YAAA,CAAA,YAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACT,CAAC,EAJW,YAAY,KAAZ,YAAY,GAIvB,EAAA,CAAA,CAAA;;ACVD;;;;AAIG;AAEH,IAAY,oBAKX,CAAA;AALD,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,oBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU,CAAA;AACV,IAAA,oBAAA,CAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAQ,CAAA;AACR,IAAA,oBAAA,CAAA,oBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACT,IAAA,oBAAA,CAAA,oBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACT,CAAC,EALW,oBAAoB,KAApB,oBAAoB,GAK/B,EAAA,CAAA,CAAA;;ACXD;;;;AAIG;AAWI,MAAM,SAAS,GAAiB,QAAQ,IAAG;IAChD,OAAO;AACL,QAAA,GAAG,QAAQ;AACX,QAAA,IAAI,EAAE,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI;KACzB,CAAC;AACJ,CAAC,CAAC;AAEF;AACA;AACA;AACO,MAAM,QAAQ,GAAiB,QAAQ,IAAG;IAC/C,OAAO;AACL,QAAA,GAAG,QAAQ;AACX,QAAA,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;KAClC,CAAC;AACJ,CAAC,CAAC;AAEK,MAAM,YAAY,GAAiB,CAAC,QAAQ,EAAE,OAAO,KAAI;AAC9D,IAAA,MAAM,aAAa,GAAG,QAAQ,CAAC,OAAO,IAAI,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;AAChE,IAAA,IAAI,aAAa,GAAG,CAAC,IAAI,aAAa,GAAG,CAAC,EAAE;AAC1C,QAAA,OAAO,QAAQ,CAAC;AACjB,KAAA;AAAM,SAAA;QACL,OAAO;AACL,YAAA,GAAG,QAAQ;AACX,YAAA,OAAO,EAAE,aAAa;SACvB,CAAC;AACH,KAAA;AACH,CAAC,CAAC;SAEc,wBAAwB,CAAC,IAAkB,EAAE,KAAmB,EAAE,SAAmB,EAAA;AACnG,IAAA,OAAO,CAAC,QAA4B,KAAyB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,CAAC;AAChG,CAAC;SAEe,KAAK,CAAC,QAA4B,EAAE,MAAkB,EAAE,OAAmB,EAAA;AACzF,IAAA,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC;AACxB,IAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;;;AAIvB,IAAA,QAAQ,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI;QACnC,KAAK,CAAC,CAAC,EAAE;;YAEP,KAAK,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,YAAA,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC;YACxB,MAAM;AACP,SAAA;QACD,KAAK,CAAC,EAAE;;YAEN,KAAK,IAAI,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;AACpD,YAAA,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;YACvB,MAAM;AACP,SAAA;QACD,KAAK,CAAC,EAAE;;AAEN,YAAA,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;YACvB,KAAK,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM;AACP,SAAA;QACD,KAAK,CAAC,EAAE;;AAEN,YAAA,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC;YACtB,KAAK,IAAI,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAClD,MAAM;AACP,SAAA;AACD,QAAA,SAAS;YACP,MAAM;AACP,SAAA;AACF,KAAA;IACD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,eAAe,CAAC,QAA4B,EAAE,MAAkB,EAAE,OAAmB,EAAA;IAC5F,IAAI,gBAAgB,GAAG,CAAC,CAAC;;AAEzB,IAAA,QAAQ,QAAQ,CAAC,MAAM;AACrB,QAAA,KAAK,YAAY,CAAC,KAAK,EAAE;;YAEvB,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,MAAM,EAAE;YACxB,gBAAgB,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC;YACrC,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,GAAG,EAAE;AACrB,YAAA,gBAAgB,IAAI,MAAM,CAAC,KAAK,CAAC;YACjC,MAAM;AACP,SAAA;AACD,QAAA,SAAS;YACP,MAAM;AACP,SAAA;AACF,KAAA;;AAGD,IAAA,QACE,QAAQ,CAAC,OAAO;AAChB;AACA,QAAA,KAAK,YAAY,CAAC,KAAK,EAAE;;YAEvB,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,MAAM,EAAE;YACxB,gBAAgB,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;YACtC,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,GAAG,EAAE;;AAErB,YAAA,gBAAgB,IAAI,OAAO,CAAC,KAAK,CAAC;YAClC,MAAM;AACP,SAAA;AACD,QAAA,SAAS;YACP,MAAM;AACP,SAAA;AACF,KAAA;AAED,IAAA,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,QAA4B,EAAE,MAAkB,EAAE,OAAmB,EAAA;;IAE1F,IAAI,cAAc,GAAG,CAAC,CAAC;;IAGvB,QAAQ,QAAQ,CAAC,MAAM;AACrB,QAAA,KAAK,YAAY,CAAC,KAAK,EAAE;;YAEvB,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,MAAM,EAAE;YACxB,cAAc,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;YACpC,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,GAAG,EAAE;AACrB,YAAA,cAAc,IAAI,MAAM,CAAC,MAAM,CAAC;YAChC,MAAM;AACP,SAAA;AACD,QAAA,SAAS;YACP,MAAM;AACP,SAAA;AACF,KAAA;;IAGD,QAAQ,QAAQ,CAAC,OAAO;AACtB,QAAA,KAAK,YAAY,CAAC,KAAK,EAAE;;YAEvB,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,MAAM,EAAE;YACxB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YACrC,MAAM;AACP,SAAA;AACD,QAAA,KAAK,YAAY,CAAC,GAAG,EAAE;AACrB,YAAA,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;YACjC,MAAM;AACP,SAAA;AACD,QAAA,SAAS;YACP,MAAM;AACP,SAAA;AACF,KAAA;AACD,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC;AAEe,SAAA,cAAc,CAAC,MAA+B,EAAE,OAAmB,EAAA;IACjF,MAAM,UAAU,GAA2B,EAAE,CAAC;AAC9C,IAAA,MAAM,UAAU,GAAwB;AACtC,QAAA,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM;QACvC,IAAI,EAAE,MAAM,CAAC,OAAO;AACpB,QAAA,KAAK,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK;QACrC,GAAG,EAAE,MAAM,CAAC,OAAO;KACpB,CAAC;IAEF,IAAI,EAAE,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;AAC1B,QAAA,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC3C,KAAA;IACD,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;AAC3B,QAAA,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;AAC5C,KAAA;AACD,IAAA,IAAI,EAAE,UAAU,CAAC,MAAM,KAAK,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,EAAE;AACzF,QAAA,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC9C,KAAA;AACD,IAAA,IAAI,EAAE,UAAU,CAAC,KAAK,KAAK,MAAM,CAAC,UAAU,IAAI,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,EAAE;AACtF,QAAA,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;AAC7C,KAAA;AAED,IAAA,OAAO,UAAU,CAAC;AACpB;;ACvMA;;;;AAIG;MAcU,yBAAyB,CAAA;IASpC,WAAoB,CAAA,YAAqC,EAA8B,UAAe,EAAA;QAAlF,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;QAA8B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;AAF9F,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;QAG3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KACzD;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;AAED,IAAA,YAAY,CAAC,OAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;;;YAGvC,OAAO;AACL,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,OAAO,EAAE,CAAC;aACX,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACnG,QAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC5D,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAEhG,QAAA,MAAM,oBAAoB,GAA2B,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACpH;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BG;QAEH,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,OAAO,KAAI;YAC9D,OAAO,KAAK,GAAG,OAAO,CAAC;SACxB,EAAE,CAAC,CAAC,CAAC;AAEN,QAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE;;AAEhF,YAAA,IAAI,CAAC,8BAA8B,CAAC,QAAQ,CAAC,CAAC;AAC/C,SAAA;AAAM,aAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,EAAE;;AAEzF,YAAA,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,QAAQ,EAAE;;AAEvF,YAAA,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,EAAE;;AAEzF,YAAA,IAAI,CAAC,iCAAiC,CAAC,QAAQ,CAAC,CAAC;AAClD,SAAA;AAED;;;AAGG;AACH,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,GAAG,GAAG,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AACxE,SAAA;AAED;;;;AAIG;AACH,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,EAAE;AAChE,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC;AACjE,SAAA;QAED,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAEO,IAAA,8BAA8B,CAAC,QAAgB,EAAA;AACrD,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,CAAC,CAAC;YACP,KAAK,CAAC,EAAE;;gBAEN,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC3G,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;AAEN,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AAEhG;;AAEG;AACH,gBAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,EAAE,CAAC;AAClC,iBAAA;gBAED,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;gBAEN,IAAI,CAAC,cAAc,GAAG,KAAK,CACzB,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EACjC,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;gBACF,MAAM;AACP,aAAA;AACD,YAAA,SAAS;gBACP,MAAM;AACP,aAAA;AACF,SAAA;KACF;AAEO,IAAA,+BAA+B,CAAC,QAAgB,EAAA;AACtD,QAAA,QAAQ,QAAQ;;;YAGd,KAAK,CAAC,EAAE;;gBAEN,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBACjF,IAAI,CAAC,cAAc,GAAG,KAAK,CACzB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC/B,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;gBACF,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;gBAEN,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBACnF,IAAI,CAAC,cAAc,GAAG,KAAK,CACzB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAChC,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;gBACF,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;;gBAGN,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;gBAEN,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBACjF,IAAI,CAAC,cAAc,GAAG,KAAK,CACzB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC/B,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;gBACF,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;gBAEN,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBACnF,IAAI,CAAC,cAAc,GAAG,KAAK,CACzB,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAChC,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;gBACF,MAAM;AACP,aAAA;AACD,YAAA,SAAS;gBACP,MAAM;AACP,aAAA;AACF,SAAA;KACF;AAEO,IAAA,gCAAgC,CAAC,QAAgB,EAAA;AACvD,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,CAAC,CAAC;YACP,KAAK,CAAC,EAAE;;gBAEN,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC3G,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;gBAEN,IAAI,CAAC,cAAc,GAAG,KAAK,CACzB,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EACjC,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;gBACF,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;gBAEN,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC9G,MAAM;AACP,aAAA;AACD,YAAA,SAAS;gBACP,MAAM;AACP,aAAA;AACF,SAAA;KACF;AAEO,IAAA,iCAAiC,CAAC,QAAgB,EAAA;AACxD,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,CAAC,CAAC;YACP,KAAK,CAAC,EAAE;;;;gBAIN,MAAM,gBAAgB,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBAClF,IAAI,CAAC,cAAc,GAAG,KAAK,CACzB,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAC/B,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,oBAAoB,CAC1B,CAAC;gBACF,MAAM;AACP,aAAA;YACD,KAAK,CAAC,EAAE;;;gBAGN,MAAM;AACP,aAAA;AACD,YAAA,KAAK,CAAC,CAAC;YACP,KAAK,CAAC,EAAE;;;;gBAIN,MAAM,cAAc,GAAG,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;gBAC/E,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAChH,MAAM;AACP,aAAA;AACD,YAAA,SAAS;gBACP,MAAM;AACP,aAAA;AACF,SAAA;KACF;;AA3PU,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,sDAS+B,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0HATnE,yBAAyB,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBADrC,UAAU;;0BAUmD,MAAM;2BAAC,WAAW,CAAA;;;AC3BhF;;;;AAIG;AAuBH;AACA;MAIa,iBAAiB,CAAA;AAe5B,IAAA,WAAA,CAC4B,QAAkB,EACpC,SAA2B,EAC3B,QAA0B,EAC1B,QAAmB,EACnB,oBAA+C,EAC/C,kBAA2C,EAC3C,gBAAyC,EAAA;QANvB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QACpC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAC1B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA2B;QAC/C,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;QAC3C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QApB3C,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QACnC,IAAqB,CAAA,qBAAA,GAAwB,IAAI,CAAC;QAElD,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;;;;;;;AAQtB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAQ,CAAC;KAU9C;IAEJ,IACI,IAAI,CAAC,KAAc,EAAA;QACrB,IAAI,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;KACtC;IAED,IACI,SAAS,CAAC,QAA4B,EAAA;AACxC,QAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC/C;IAED,IACI,iBAAiB,CAAC,YAAqB,EAAA;QACzC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,GAAG,CAAC,CAAC,YAAY,CAAC;KAC5D;IAED,IACI,aAAa,CAAC,aAAsB,EAAA;QACtC,IAAI,CAAC,kBAAkB,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;KACzD;IAED,qBAAqB,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE;;AAEjE,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC5B,SAAA;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAG;AAClD,YAAA,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,aAAA;SACF,CAAC,EACF,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;AACrD,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5B,SAAC,CAAC;;;AAGF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YACvD,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AAC/D,gBAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAChD,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;QACT,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;AAED;;;;;;AAMG;IACK,UAAU,GAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;QACvC,IAAI,CAAC,kBAAkB,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;;;;QAIxD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;;QAEhD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAG;AAC3E,YAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,KAAK,CAAC;AAC1C,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;AACjC,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;;AAEH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,qBAAqB,EAAE;YAC9B,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;AACnC,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACzF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KACjD;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,OAAO;AACR,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAA,EAAG,cAAc,CAAC,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAA,EAAG,cAAc,CAAC,OAAO,CAAI,EAAA,CAAA,CAAC,CAAC;AACtF,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAClE;;AAvIU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAgBlB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAhBP,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,mBAAA,EAAA,MAAA,CAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,EAAA,WAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,sCAAA,EAAA,mBAAA,CAAA,EAAA,aAAA,EAAA,CAAA,gCAAA,EAAA,eAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA,CAAA;;0BAiBI,MAAM;2BAAC,QAAQ,CAAA;wOAUd,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,mBAAmB,CAAA;gBAMtB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,qBAAqB,CAAA;gBAMxB,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,sCAAsC,CAAA;gBAMzC,aAAa,EAAA,CAAA;sBADhB,KAAK;uBAAC,gCAAgC,CAAA;;;ACxEzC;;;;AAIG;MAaU,yBAAyB,CAAA;AAKpC,IAAA,WAAA,CAAoB,gBAAyC,EAAA;QAAzC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;AAJxB,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAW,CAAC;QAE3E,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAGzC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAG;AAClD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACnC,CAAC,CACH,CAAC;KACH;AAGD,IAAA,WAAW,CAAC,KAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KAC9C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;sHApBU,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,2BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,IAAI,EAAE;AACJ,wBAAA,8BAA8B,EAAE,MAAM;AACvC,qBAAA;AACF,iBAAA,CAAA;2GAEsC,eAAe,EAAA,CAAA;sBAAnD,MAAM;uBAAC,2BAA2B,CAAA;gBAanC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC9BnC;;;;AAIG;MAcU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAHhB,YAAA,EAAA,CAAA,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAC1F,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;kHAEpF,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,EAAE;oBACX,YAAY,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;oBACrG,OAAO,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,iBAAiB,CAAC;AACjG,iBAAA,CAAA;;;ACjBD;;;;AAIG;MASU,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAa,CAAC;AAS7C,KAAA;AAPC,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,iBAAiB,CAAC,MAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC5B;;iHATU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAApB,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;ACZX;;;;AAIG;MA6BU,SAAS,CAAA;AAepB,IAAA,WAAA,CAGS,oBAA0C,EAAA;QAA1C,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;AAjBlC,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAMnD,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC;QACrB,IAAK,CAAA,KAAA,GAAW,IAAI,CAAC;QACrB,IAAS,CAAA,SAAA,GAAQ,IAAI,CAAC;QACtB,IAAG,CAAA,GAAA,GAAW,eAAe,EAAE,CAAC;KAMpC;AAEJ,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IACD,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;;;AAGrB,YAAA,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,oBAAoB,EAAE;AACpD,gBAAA,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AACnD,aAAA;AACF,SAAA;KACF;AAED,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,MAAM,UAAU,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9C,IAAI,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;AACpC,gBAAA,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,aAAA;YACD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzC,SAAA;KACF;AAED,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,SAAA;KACF;AAED,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACpB,SAAA;KACF;AAED,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AAClB,SAAA;KACF;AAED,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,KAAK,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC;KACxC;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;AAED,IAAA,kBAAkB,CAAC,KAAsB,EAAA;QACvC,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,eAAe,CAAC,OAAO,CAAC;KAClD;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACxB;;sGA3GU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAFT,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,UAAA,EAAA,CAAA,OAAA,EAAA,YAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAhBvD,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAZ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,SAAS,EAAA,UAAA,EAAA,CAAA;kBApBrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAW,SAAA,EAAE,CAAC;AAClE,iBAAA,CAAA;;0BAiBI,QAAQ;;0BACR,QAAQ;4CAhBM,MAAM,EAAA,CAAA;sBAAtB,MAAM;uBAAC,OAAO,CAAA;gBAEoC,WAAW,EAAA,CAAA;sBAA7D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAmB7C,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,WAAW,CAAA;gBAiBd,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,OAAO,CAAA;gBAeV,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,MAAM,CAAA;gBAWT,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,MAAM,CAAA;gBAWT,EAAE,EAAA,CAAA;sBADL,KAAK;uBAAC,IAAI,CAAA;gBAWP,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,UAAU,CAAA;;;AClHnB;;;;AAIG;AAKH;;;;;;;;;;;;;;;;;;;;;;;AAuBG;AAEG,MAAO,iBAAkB,SAAQ,OAAa,CAAA;IAClD,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,QAAQ,EAAE,CAAC;KACjB;;8GAJU,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACjCX;;;;AAIG;AAEH,IAAY,iBAKX,CAAA;AALD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,IAAA,CAAA,GAAA,IAAS,CAAA;AACT,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,iBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAK5B,EAAA,CAAA,CAAA;;ACXD;;;;AAIG;2BASU,YAAY,CAAA;AAIvB,IAAA,WAAA,CAAoB,QAAmB,EAAA;QAAnB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAF/B,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;KAED;AAE3C,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;AAED,IAAA,KAAK,CAAC,KAAoB,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,iBAAiB,CAAC,EAAe,EAAA;;;AAG/B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9G,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACrH;AAED,IAAA,iBAAiB,CAAC,EAAe,EAAE,QAAQ,GAAG,GAAG,EAAA;QAC/C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;;;QAG3B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,eAAe,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;KACpG;AAED,IAAA,MAAM,CAAC,IAAmB,EAAA;AACxB;;;;AAIG;QACH,IAAI,IAAI,KAAK,SAAS,EAAE;YACtB,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;AAED,IAAA,IAAI,CAAC,SAA4B,EAAA;QAC/B,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrC,YAAA,IAAI,IAAI,EAAE;;;AAGR,gBAAA,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AACrD,gBAAA,OAAO,CAAC,SAAS,CAAC,IAAI,IAAG;AACvB,oBAAA,IAAI,IAAI,EAAE;AACR,wBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;wBAClB,KAAK,GAAG,IAAI,CAAC;AACd,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;AACzC,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;AACxB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAAE,CAAC,CAAC;KACrD;;2GA9EUa,cAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAZA,cAAY,EAAA,CAAA,CAAA;2FAAZA,cAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;AAkFK,SAAA,sBAAsB,CAAC,QAAsB,EAAE,QAAmB,EAAA;AAChF,IAAA,OAAO,QAAQ,IAAI,IAAIA,cAAY,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC;AAEM,MAAM,sBAAsB,GAAG;AACpC,IAAA,OAAO,EAAEA,cAAY;AACrB,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAEA,cAAY,CAAC,EAAE,SAAS,CAAC;CAClE;;ACtGD;;;;AAIG;IAES,QAGX;AAHD,CAAA,UAAY,OAAO,EAAA;AACjB,IAAA,OAAA,CAAA,OAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,QAAW,CAAA;AACX,IAAA,OAAA,CAAA,OAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAS,CAAA;AACX,CAAC,EAHW,OAAO,KAAP,OAAO,GAGlB,EAAA,CAAA,CAAA;;ACTD;;;;AAIG;MAiBU,mBAAmB,CAAA;;AACvB,mBAAA,CAAA,WAAA,CAAW,GAAiC;IACjD,IAAI,EAAE,OAAO,CAAC,QAAQ;IACtB,IAAI,EAAE,OAAO,CAAC,MAAM;IACpB,MAAM,EAAE,YAAY,CAAC,GAAG;IACxB,OAAO,EAAE,YAAY,CAAC,GAAG;CAC1B,CAAC;AAEK,mBAAA,CAAA,UAAA,CAAU,GAAiC;IAChD,IAAI,EAAE,OAAO,CAAC,QAAQ;IACtB,IAAI,EAAE,OAAO,CAAC,MAAM;IACpB,MAAM,EAAE,YAAY,CAAC,KAAK;IAC1B,OAAO,EAAE,YAAY,CAAC,KAAK;CAC5B,CAAC;AAEK,mBAAA,CAAA,cAAA,CAAc,GAAiC;IACpD,IAAI,EAAE,OAAO,CAAC,QAAQ;IACtB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,MAAM,EAAE,YAAY,CAAC,GAAG;IACxB,OAAO,EAAE,YAAY,CAAC,GAAG;CAC1B,CAAC;AAEK,mBAAA,CAAA,aAAA,CAAa,GAAiC;IACnD,IAAI,EAAE,OAAO,CAAC,QAAQ;IACtB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,MAAM,EAAE,YAAY,CAAC,KAAK;IAC1B,OAAO,EAAE,YAAY,CAAC,KAAK;CAC5B,CAAC;AAEK,mBAAA,CAAA,WAAA,CAAW,GAAiC;IACjD,IAAI,EAAE,OAAO,CAAC,UAAU;IACxB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,MAAM,EAAE,YAAY,CAAC,MAAM;IAC3B,OAAO,EAAE,YAAY,CAAC,GAAG;CAC1B,CAAC;AAEK,mBAAA,CAAA,cAAA,CAAc,GAAiC;IACpD,IAAI,EAAE,OAAO,CAAC,UAAU;IACxB,IAAI,EAAE,OAAO,CAAC,KAAK;IACnB,MAAM,EAAE,YAAY,CAAC,KAAK;IAC1B,OAAO,EAAE,YAAY,CAAC,KAAK;CAC5B,CAAC;AAEK,mBAAA,CAAA,UAAA,CAAU,GAAiC;IAChD,IAAI,EAAE,OAAO,CAAC,UAAU;IACxB,IAAI,EAAE,OAAO,CAAC,MAAM;IACpB,MAAM,EAAE,YAAY,CAAC,MAAM;IAC3B,OAAO,EAAE,YAAY,CAAC,GAAG;CAC1B,CAAC;AAEK,mBAAA,CAAA,aAAA,CAAa,GAAiC;IACnD,IAAI,EAAE,OAAO,CAAC,UAAU;IACxB,IAAI,EAAE,OAAO,CAAC,MAAM;IACpB,MAAM,EAAE,YAAY,CAAC,KAAK;IAC1B,OAAO,EAAE,YAAY,CAAC,KAAK;CAC5B;;AC5EH;;;;AAIG;AAII,MAAM,mBAAmB,GAAG,IAAI,cAAc,CAAa,qBAAqB,CAAC;;ACRxF;;;;AAIG;MAUU,iCAAiC,CAAA;AAI5C,IAAA,WAAA,CAAoB,aAAsC,EAAA;QAAtC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAFlD,IAAc,CAAA,cAAA,GAAmB,IAAI,CAAC;KAEgB;IAE9D,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;AACjE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,CAAC;KAClC;AAGD,IAAA,WAAW,CAAC,KAAoB,EAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;AAChC,YAAA,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;gBACjC,KAAK,CAAC,eAAe,EAAE,CAAC;AACzB,aAAA;AAED,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,SAAA;KACF;;8HAzBU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kHAAjC,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAH7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;2GAkBC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,cAAc,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC9B1C;;;;AAIG;MAoBU,uBAAuB,CAAA;;oHAAvB,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EARvB,YAAA,EAAA,IAAA,EAAA,SAAA,EAAA;QACT,uBAAuB;QACvB,uBAAuB;QACvB,yBAAyB;AACzB,QAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE;AAC1D,KAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAG,iCAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAGU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAVnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,SAAS,EAAE;wBACT,uBAAuB;wBACvB,uBAAuB;wBACvB,yBAAyB;AACzB,wBAAA,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,UAAU,EAAE;AAC1D,qBAAA;oBACD,cAAc,EAAE,CAAC,iCAAiC,CAAC;AACpD,iBAAA,CAAA;;;ACvBD;;;;AAIG;MAOU,OAAO,CAAA;AAClB;;AAEG;AACH,IAAA,OAAO,UAAU,CACf,KAAsB,EACtB,MAAiD,EACjD,SAA4B,EAAA;AAE5B,QAAA,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,OAAO,YAAY,CAAC,KAAsB,EAAE,IAAI,GAAG,IAAI,EAAA;QACrD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YAC5B,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC5B,aAAA;AACD,YAAA,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAC9B,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtC,YAAA,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACzC,SAAA;KACF;AACF,CAAA;AAED;AACA;AACA;;AC5CA;;;;AAIG;AAEH,IAAY,YAGX,CAAA;AAHD,CAAA,UAAY,YAAY,EAAA;AACtB,IAAA,YAAA,CAAA,YAAA,CAAA,GAAA,OAAoB,CAAA;AACpB,IAAA,YAAA,CAAA,WAAA,CAAA,GAAA,MAAkB,CAAA;AACpB,CAAC,EAHW,YAAY,KAAZ,YAAY,GAGvB,EAAA,CAAA,CAAA;;ACTD;;;;AAIG;SAMa,QAAQ,GAAA;AACtB,IAAA,YAAY,CAAC;IACb,OAAO;AACL,QAAA,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,UAAU,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9G,UAAU,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;KAC/G,CAAC;AACJ;;ACjBA;;;;AAIG;;ACJH;;;;AAIG;MAWU,UAAU,CAAA;AACrB,IAAA,gBAAgB,CAAC,OAAoB,EAAA;AACnC,QAAA,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAClD,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;AACxD,QAAA,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;AACrD,QAAA,OAAO,gBAAgB,CAAC;KACzB;AAED,IAAA,cAAc,CAAC,OAAY,EAAA;AACzB,QAAA,OAAO,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;KAClD;AAED,IAAA,WAAW,CAAC,OAAY,EAAA;AACtB,QAAA,OAAO,OAAO,CAAC,WAAW,IAAI,CAAC,CAAC;KACjC;AAED,IAAA,cAAc,CAAC,OAAY,EAAA;AACzB,QAAA,OAAO,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;KAC3E;AAED,IAAA,UAAU,CAAC,OAAY,EAAA;AACrB,QAAA,MAAM,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC1D,OAAO;YACL,GAAG,EAAE,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,EAAE,CAAC;YACxC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;YAC9C,IAAI,EAAE,QAAQ,CAAC,iBAAiB,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1C,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5C,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,KAAK,EAAE,EAAE,CAAC;YAC5C,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,CAAC;SACpC,CAAC;KACd;AAED,IAAA,QAAQ,CAAC,OAAY,EAAA;AACnB,QAAA,OAAO,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,CAAC;KAC9E;AAED,IAAA,KAAK,CAAC,OAAY,EAAA;QAChB,OAAO,CAAC,KAAK,EAAE,CAAC;KACjB;;uGAtCU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAV,UAAU,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACdX;;;;AAIG;MA4BU,sBAAsB,CAAA;IAKjC,WAAoB,CAAA,OAAmB,EAAU,UAAsB,EAAA;QAAnD,IAAO,CAAA,OAAA,GAAP,OAAO,CAAY;QAAU,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAFvE,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;KAE2D;AAE3E,IAAA,IACI,eAAe,GAAA;AACjB,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;KACpF;IAGD,aAAa,GAAA;;;;QAIX,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KACpF;;mHAtBU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,sOAFtB,CAAC,UAAU,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAjBb,2BAA2B,EASzB,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,iBAAiB,EAAE;YACzB,UAAU,CAAC,gBAAgB,EAAE;AAC3B,gBAAA,KAAK,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;gBACtC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;aACpD,CAAC;SACH,CAAC;AACH,KAAA,EAAA,CAAA,CAAA;2FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBArBlC,SAAS;+BACE,0BAA0B,EAAA,QAAA,EAC1B,2BAA2B,EASzB,UAAA,EAAA;wBACV,OAAO,CAAC,iBAAiB,EAAE;4BACzB,UAAU,CAAC,gBAAgB,EAAE;AAC3B,gCAAA,KAAK,CAAC,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;gCACtC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;6BACpD,CAAC;yBACH,CAAC;qBACH,EACU,SAAA,EAAA,CAAC,UAAU,CAAC,EAAA,MAAA,EAAA,CAAA,wCAAA,CAAA,EAAA,CAAA;uHAGd,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBAOF,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,kBAAkB,CAAA;gBAM/B,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,uBAAuB,CAAA;;;AC5CvC;;;;AAIG;AAQU,MAAA,+BAA+B,GAAgB,CAAC,sBAAsB;;ACZnF;;;;AAIG;AAMa,SAAA,IAAI,CAAC,OAAO,GAAG,CAAC,EAAA;IAC9B,OAAO;QACL,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9G,QAAA,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAClF,CAAC;AACJ;;ACfA;;;;AAIG;;ACJH;;;;AAIG;AAMG,SAAU,SAAS,CAAC,SAAiB,EAAA;IACzC,IAAI,SAAS,GAAW,IAAI,CAAC;IAC7B,IAAI,SAAS,KAAK,IAAI,EAAE;QACtB,SAAS,GAAG,mBAAmB,CAAC;AACjC,KAAA;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE;QAC/B,SAAS,GAAG,oBAAoB,CAAC;AAClC,KAAA;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE;QAC/B,SAAS,GAAG,mBAAmB,CAAC;AACjC,KAAA;SAAM,IAAI,SAAS,KAAK,OAAO,EAAE;QAChC,SAAS,GAAG,oBAAoB,CAAC;AAClC,KAAA;AAAM,SAAA;QACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,SAAS,GAAG,uBAAuB,CAAC,CAAC;AAC7E,KAAA;IACD,OAAO;QACL,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACvG,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KACxG,CAAC;AACJ;;AC3BA;;;;AAIG;;ACJH;;;;AAIG;AAMG,SAAU,KAAK,CAAC,SAAiB,EAAA;IACrC,IAAI,SAAS,GAAW,IAAI,CAAC;IAC7B,IAAI,SAAS,KAAK,IAAI,EAAE;QACtB,SAAS,GAAG,mBAAmB,CAAC;AACjC,KAAA;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE;QAC/B,SAAS,GAAG,oBAAoB,CAAC;AAClC,KAAA;SAAM,IAAI,SAAS,KAAK,MAAM,EAAE;QAC/B,SAAS,GAAG,mBAAmB,CAAC;AACjC,KAAA;SAAM,IAAI,SAAS,KAAK,OAAO,EAAE;QAChC,SAAS,GAAG,oBAAoB,CAAC;AAClC,KAAA;AAAM,SAAA;QACL,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,SAAS,GAAG,uBAAuB,CAAC,CAAC;AAC7E,KAAA;IACD,OAAO;AACL,QAAA,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC;AAC3F,QAAA,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5F,CAAC;AACJ;;AC3BA;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;AAOU,MAAA,sBAAsB,GAAgB,CAAC,UAAU,EAAE;MAOnD,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAPuB,YAAA,EAAA,CAAA,UAAU,CAGlD,EAAA,OAAA,EAAA,CAAA,YAAY,aAH4B,UAAU,CAAA,EAAA,CAAA,CAAA;AAOjD,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJjB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;ACjBD;;;;AAIG;;ACJH;;;;AAIG;AAMH,IAAI,aAAa,GAAG,CAAC,CAAC;AAEf,MAAM,YAAY,GAAG,IAAI,cAAc,CAAS,cAAc,CAAC,CAAC;SAEvDC,cAAY,GAAA;IAC1B,OAAO,EAAE,aAAa,CAAC;AACzB,CAAC;AAEM,MAAM,qBAAqB,GAAG;AACnC,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,UAAU,EAAEA,cAAY;CACzB,CAAC;AAIF;;;;;;;;AAQG;MACU,eAAe,CAAA;AAX5B,IAAA,WAAA,GAAA;AAYE;;;;;;;AAOG;AACK,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAU,CAAC;AAoChD,KAAA;AA1BC;;;;;AAKG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC3C;AAED;;;;;;AAMG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;KACF;;4GA5CU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,UAAU;;;ACvBX;;;;AAIG;AAoBH;;;;;;;;;AASG;MACU,WAAW,CAAA;AActB,IAAA,WAAA,CACU,eAAgC,EACV,EAAU,EAChC,QAA0B,EAC1B,SAA2B,EAAA;QAH3B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QACV,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAChC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAjBrC;;;;;;;AAOG;AAC0B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAGrE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAQxB,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AAEjD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;AAC9E,YAAA,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;AACH,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;KACjD;IACD,IAAI,MAAM,CAAC,KAAuB,EAAA;AAChC,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;AACxC,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;AAED;;;;AAIG;AACH,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;AAEO,IAAA,kBAAkB,CAAC,SAAiB,EAAA;AAC1C,QAAA,MAAM,WAAW,GAAG,SAAS,KAAK,IAAI,CAAC,EAAE,CAAC;;AAE1C,QAAA,IAAI,WAAW,KAAK,IAAI,CAAC,SAAS,EAAE;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;AAC9B,SAAA;KACF;;AAnEU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,8CAgBZ,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAhBX,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAdvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAA;;0BA4BI,MAAM;2BAAC,YAAY,CAAA;qGAPO,YAAY,EAAA,CAAA;sBAAxC,MAAM;uBAAC,mBAAmB,CAAA;gBAwBvB,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,aAAa,CAAA;;;AClEtB;;;;AAIG;AAWH;;;;;;;;;AASG;MACU,SAAS,CAAA;AAcpB,IAAA,WAAA,CACU,aAAsC,EACtC,QAA0B,EAC1B,SAA2B,EAAA;QAF3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAdrC;;;;;;AAMG;AACwB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;AASvE,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAG;AACnE,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,SAAC,CAAC,CAAC;KACJ;AAED;;;AAGG;AACH,IAAA,IACI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;KAChC;IACD,IAAI,IAAI,CAAC,KAAuB,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAgB,CAAC;KAC5C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;AAED;;;;;;AAMG;AACH,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;;sGAtDU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0FAAT,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;oKAsB4B,UAAU,EAAA,CAAA;sBAApC,MAAM;uBAAC,iBAAiB,CAAA;gBAoBrB,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,WAAW,CAAA;;;ACtDpB;;;;AAIG;MAsBU,aAAa,CAAA;IAUxB,WACsB,CAAA,QAA0B,EACtC,SAA2B,EAC3B,EAAc,EACd,QAAmB,EACnB,MAAuB,EAAA;QAJX,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QACtC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAiB;AAdF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAU,IAAI,CAAC,CAAC;QAExE,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAE1B;;AAEG;QACK,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;AAS1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,MAAK;YACjC,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;SAChD,CAAC,CACH,CAAC;KACH;AAED,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAuB,EAAA;AAClC,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAiB,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACvE;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACvD,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;;;gBAGxB,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;;;;;AAKL,gBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI;;AAEF,gBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACxB,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAChE,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAClE,iBAAA;AACF,aAAA;AAAC,YAAA,OAAO,CAAC,EAAE;;AAEX,aAAA;AACF,SAAA;KACF;;0GA1EU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAb,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA,CAAA;;0BAYI,QAAQ;uJAVoB,cAAc,EAAA,CAAA;sBAA5C,MAAM;uBAAC,qBAAqB,CAAA;gBAyBzB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,eAAe,CAAA;;;ACnDxB;;;;AAIG;AASU,MAAA,sBAAsB,GAAgB,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE;MAO9E,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAPmB,YAAA,EAAA,CAAA,WAAW,EAAE,SAAS,EAAE,aAAa,CAG7E,EAAA,OAAA,EAAA,CAAA,YAAY,CAH4B,EAAA,OAAA,EAAA,CAAA,WAAW,EAAE,SAAS,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;AAO5E,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJrB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;ACnBD;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;MAIU,kBAAkB,GAAG,IAAI,cAAc,CAAU,oBAAoB,EAAE;AAEpF;AACA;AACO,MAAM,2BAA2B,GAAG;AACzC,IAAA,OAAO,EAAE,kBAAkB;AAC3B,IAAA,QAAQ,EAAE,IAAI;CACf;;ACfD;;;;AAIG;AAmBH;AAC2D;MAI9C,kBAAkB,CAAA;IAM7B,WACU,CAAA,EAAc,EACO,UAAe,EACR,eAAwB,EAC1C,QAAa,EACvB,QAAmB,EAC3B,MAAc,EAAA;QALN,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACO,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QACR,IAAe,CAAA,eAAA,GAAf,eAAe,CAAS;QAEpD,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AATrB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC;AACnB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AAWrC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;;;;;AAMvC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEzB,QAAA,MAAM,CAAC,iBAAiB,CAAC,MACvB,SAAS,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC;AACpC,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9B,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;;AAErB,gBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACjE,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAChE,aAAA;SACF,CAAC,CACL,CAAC;KACH;IAED,IACI,SAAS,CAAC,KAAuB,EAAA;QACnC,IAAI,IAAI,CAAC,eAAe,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AACtD,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;IAEO,KAAK,GAAA;AACX,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;AAC1E,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE;;;AAGzD,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACpE,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AACjE,gBAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,aAAA;AACF,SAAA;KACF;;AApEU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EAQnB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,WAAW,EACX,EAAA,EAAA,KAAA,EAAA,kBAAkB,aAClB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAVP,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,oBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;;0BASI,MAAM;2BAAC,WAAW,CAAA;;0BAClB,MAAM;2BAAC,kBAAkB,CAAA;;0BACzB,MAAM;2BAAC,QAAQ,CAAA;yFA0Bd,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,oBAAoB,CAAA;;;AC/D7B;;;;AAIG;AAQU,MAAA,6BAA6B,GAAgB,CAAC,kBAAkB,EAAE;MAQlE,wBAAwB,CAAA;;qHAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EARsB,YAAA,EAAA,CAAA,kBAAkB,CAGjE,EAAA,OAAA,EAAA,CAAA,YAAY,aAHmC,kBAAkB,CAAA,EAAA,CAAA,CAAA;AAQhE,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,EAHxB,SAAA,EAAA,CAAC,2BAA2B,CAAC,YAF9B,YAAY,CAAA,EAAA,CAAA,CAAA;2FAKX,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBANpC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,6BAA6B,CAAC;oBAC7C,SAAS,EAAE,CAAC,2BAA2B,CAAC;oBACxC,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACzC,iBAAA,CAAA;;;ACnBD;;;;AAIG;;ACJH;;;;AAIG;AAQG,MAAO,yBAA0B,SAAQ,YAAY,CAAA;;sHAA9C,yBAAyB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACXD;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;MAWU,uBAAuB,CAAA;AAQlC,IAAA,WAAA,CACU,YAA0B,EAC1B,aAAsC,EACtC,QAAmB,EAAA;QAFnB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAV7B,QAAA,IAAA,CAAA,YAAY,GAAiB,YAAY,CAAC,UAAU,CAAC;QAK7C,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;KAMxC;IAEJ,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAoB,KAAK,QAAQ,EAAE,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;KACrC;AAED,IAAA,UAAU,CAAC,EAAE,IAAI,EAAE,UAAU,EAAkD,EAAA;AAC7E,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,QAAQ,IAAI,CAAC,YAAY;YACvB,KAAK,YAAY,CAAC,SAAS;gBACzB,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,MAAM;AACR,YAAA;gBACE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;AACT,SAAA;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;YAC5B,MAAM,CAAC,IAAI,EAAE,CAAC;AAChB,SAAC,CAAC,CAAC;KACJ;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,mBAAmB,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAC5F,CAAC;AACF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;KAChH;IAEO,SAAS,CAAC,KAAoB,EAAE,iBAA0B,EAAA;AAChE,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC1C,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACzB,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAEO,WAAW,GAAA;AACjB,QAAA,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAkB,CAAC;QACvE,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,GAAG,CAAgB,aAAa,IAAG;AAC/D,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7G,OAAO;gBACL,EAAE,EAAE,aAAa,CAAC,EAAE;AACpB,gBAAA,KAAK,EAAE,aAAa;gBACpB,KAAK,EAAE,MAAK;AACV,oBAAA,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;oBAC5C,aAAa,CAAC,KAAK,EAAE,CAAC;iBACvB;gBACD,IAAI,EAAE,MAAK;AACT,oBAAA,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;oBAC7C,aAAa,CAAC,IAAI,EAAE,CAAC;iBACtB;aACF,CAAC;AACJ,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC;KAC7C;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AACjE,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC,UAAU,CAAC;KAC7C;;oHA3FU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;AA+FJ,MAAM,mCAAmC,GAAG;AACjD,IAAA,OAAO,EAAE,uBAAuB;CACjC;;AC/GD;;;;AAIG;MAqCU,cAAc,CAAA;IAkBzB,WACS,CAAA,qBAA2C,EAC1C,aAAsC,EACvC,aAAsC,EACrC,QAA2B,EAC3B,YAAqC,EAAA;QAJtC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAsB;QAC1C,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACvC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAmB;QAC3B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;QAtBZ,IAAwB,CAAA,wBAAA,GAAW,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;QAOzG,IAAS,CAAA,SAAA,GAAG,eAAe,EAAE,CAAC;QAC9B,IAAY,CAAA,YAAA,GAAG,YAAY,CAAC;AAE5B,QAAA,IAAA,CAAA,eAAe,GAAuB,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACzE,IAAa,CAAA,aAAA,GAAgB,EAAE,CAAC;QAChC,IAAW,CAAA,WAAA,GAAgB,EAAE,CAAC;KAW1B;AAEJ,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,GAAW,EAAA;AAC1B,QAAA,IAAI,GAAG,IAAK,mBAA2C,CAAC,GAAG,CAAC,EAAE;AAC5D,YAAA,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;AACpC,SAAA;QAED,IAAI,CAAC,eAAe,GAAI,mBAA2C,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACzF;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;KAChC;AAED;;;;AAIG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACpH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;QACb,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;AAED;;;;;AAKG;AACH,IAAA,eAAe,CAAC,MAAiB,EAAA;AAC/B,QAAA,IAAI,QAAqB,CAAC;AAC1B,QAAA,IAAI,MAAmB,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;AAC9B,YAAA,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;AAC3B,SAAA;AAAM,aAAA;AACL,YAAA,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5B,YAAA,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;AAC7B,SAAA;QACD,MAAM,KAAK,GAAW,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC/C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,YAAA,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;AAC5C,YAAA,IAAI,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE;gBAC9B,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AACrC,aAAA;AACF,SAAA;KACF;IAED,QAAQ,CAAC,KAAY,EAAE,YAA0B,EAAA;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AAC3C,SAAA;KACF;AAED;;;;;;;AAOG;AACH,IAAA,YAAY,CAAC,YAAuB,EAAA;QAClC,MAAM,OAAO,GAAgB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,CAAC,MAAM,CAAC,CAAC;AAClG,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;KACtC;IAED,iBAAiB,GAAA;QACf,MAAM,iBAAiB,GAAgB,EAAE,CAAC;QAC1C,MAAM,iBAAiB,GAAgB,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;YAC5B,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,gBAAA,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,aAAA;AAAM,iBAAA;AACL,gBAAA,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC;AACvC,QAAA,IAAI,CAAC,WAAW,GAAG,iBAAiB,CAAC;KACtC;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,IAAG;AACnF,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;AAC3B,oBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,aAAa;AAC7B,oBAAA,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa;AAC1C,iBAAA,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;2GAlIU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAK,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAJd,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,wBAAA,EAAA,0BAAA,EAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,mCAAmC,EAAE,sBAAsB,CAAC,EAUhG,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,SAAS,gRC/C5B,y1CAkCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDOa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,aAEjB,CAAC,oBAAoB,EAAE,iBAAiB,EAAE,mCAAmC,EAAE,sBAAsB,CAAC,EACjG,cAAA,EAAA,CAAC,uBAAuB,CAAC,EAAA,IAAA,EACnC,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,y1CAAA,EAAA,CAAA;8OAGF,wBAAwB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,0BAA0B,CAAA;gBAER,UAAU,EAAA,CAAA;sBAAlC,SAAS;uBAAC,YAAY,CAAA;gBACJ,IAAI,EAAA,CAAA;sBAAtB,SAAS;uBAAC,MAAM,CAAA;gBAEW,OAAO,EAAA,CAAA;sBAAlC,eAAe;uBAAC,SAAS,CAAA;gBAqBtB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,iBAAiB,CAAA;;;AEnE1B;;;;AAIG;MAUU,2BAA2B,GAAgB,CAAC,SAAS,EAAE,cAAc,EAAE;MAOvE,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAPwB,YAAA,EAAA,CAAA,SAAS,EAAE,cAAc,CAGtE,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,oBAAoB,CAHJ,EAAA,OAAA,EAAA,CAAA,SAAS,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;AAOrE,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJrB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAIhD,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,CAAC;oBAC5D,YAAY,EAAE,CAAC,2BAA2B,CAAC;oBAC3C,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;ACpBD;;;;AAIG;AAQH;AACA,MAAM,gBAAgB,GAAG,EAAE,CAAC;MAuDf,gBAAgB,CAAA;IAQ3B,WAAmB,CAAA,EAAc,EAAU,QAAmB,EAAA;QAA3C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AALlC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,CAAkB,KAAK,CAAC,CAAC;QAExF,IAAW,CAAA,WAAA,GAAG,eAAe,CAAC;AAC9B,QAAA,IAAA,CAAA,KAAK,GAAoB,eAAe,CAAC,OAAO,CAAC;KAEiB;AAElE,IAAA,kBAAkB,CAAC,KAAsB,EAAA;AACvC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;YACxB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AAEnB,QAAA,QAAQ,KAAK;YACX,KAAK,eAAe,CAAC,OAAO;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;AAC1D,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAC9D,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,oBAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AAClE,iBAAA;gBACD,MAAM;YACR,KAAK,eAAe,CAAC,OAAO;gBAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;AAC9B,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;AAC5E,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;gBAClE,MAAM;YACR,KAAK,eAAe,CAAC,OAAO;gBAC1B,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,MAAM;YACR,KAAK,eAAe,CAAC,KAAK;AACxB,gBAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBACjD,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACnC;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE;YACxE,MAAM,kBAAkB,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;AACzE,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,GAAG,KAAK,CAAA,EAAA,CAAI,CAAC,CAAC;AACtE,SAAA;KACF;;6GA/CU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAlChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,EAjB9D,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;GAgBT,EAEW,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,QAAQ,EAAE;;;AAGhB,YAAA,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;SACzB,CAAC;QACF,OAAO,CAAC,eAAe,EAAE;YACvB,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAEpG,YAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9C,CAAC;QACF,OAAO,CAAC,SAAS,EAAE;YACjB,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpG,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAChG,CAAC;QACF,OAAO,CAAC,WAAW,EAAE;YACnB,UAAU,CAAC,QAAQ,EAAE;AACnB,gBAAA,OAAO,CACL,OAAO,EACP,SAAS,CAAC;oBACR,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oBAC7C,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oBAClC,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oBACnD,KAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oBACjD,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC9C,iBAAA,CAAC,CACH;aACF,CAAC;YACF,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAChG,CAAC;AACH,KAAA,EAAA,CAAA,CAAA;2FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBArD5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;AAgBT,EAAA,CAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAkB,gBAAA,EAAE,CAAC;AACxE,oBAAA,UAAU,EAAE;wBACV,OAAO,CAAC,QAAQ,EAAE;;;AAGhB,4BAAA,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC;yBACzB,CAAC;wBACF,OAAO,CAAC,eAAe,EAAE;4BACvB,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAEpG,4BAAA,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;yBAC9C,CAAC;wBACF,OAAO,CAAC,SAAS,EAAE;4BACjB,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;4BACpG,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBAChG,CAAC;wBACF,OAAO,CAAC,WAAW,EAAE;4BACnB,UAAU,CAAC,QAAQ,EAAE;AACnB,gCAAA,OAAO,CACL,OAAO,EACP,SAAS,CAAC;oCACR,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;oCAC7C,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCAClC,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACnD,KAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;oCACjD,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;AAC9C,iCAAA,CAAC,CACH;6BACF,CAAC;4BACF,UAAU,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,gBAAgB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBAChG,CAAC;AACH,qBAAA;AACD,oBAAA,IAAI,EAAE,EAAE,iBAAiB,EAAE,qBAAqB,EAAE;AACnD,iBAAA,CAAA;yHAEoB,QAAQ,EAAA,CAAA;sBAA1B,KAAK;uBAAC,UAAU,CAAA;gBAEW,gBAAgB,EAAA,CAAA;sBAA3C,MAAM;uBAAC,kBAAkB,CAAA;;;ACvE5B;;;;AAIG;AAOU,MAAA,6BAA6B,GAAgB,CAAC,gBAAgB,EAAE;MAOhE,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,EAPwB,YAAA,EAAA,CAAA,gBAAgB,CAG/D,EAAA,OAAA,EAAA,CAAA,YAAY,aAHmC,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAO9D,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,YAJvB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,6BAA6B,CAAC;oBAC7C,OAAO,EAAE,CAAC,6BAA6B,CAAC;AACzC,iBAAA,CAAA;;;ACjBD;;;;AAIG;MAWU,eAAe,CAAA;AAC1B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;KAC/C;;4GAHU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,OAAA,EAAA,CAFhB,sBAAsB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;6GAE3C,eAAe,EAAA,OAAA,EAAA,CAFhB,sBAAsB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAE3C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,CAAC;AACxD,iBAAA,CAAA;;;ACdD;;;;AAIG;MAOU,WAAW,CAAA;;wGAAX,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,oDAFZ,EAAE,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAED,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,EAAE;AACb,iBAAA,CAAA;;;ACVD;;;;AAIG;AAMH;;AAEG;MAKU,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;mHAArB,qBAAqB,EAAA,YAAA,EAAA,CAHjB,WAAW,CAAA,EAAA,OAAA,EAAA,CAChB,WAAW,CAAA,EAAA,CAAA,CAAA;mHAEV,qBAAqB,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,WAAW,CAAC;oBAC3B,OAAO,EAAE,CAAC,WAAW,CAAC;AACvB,iBAAA,CAAA;;;AChBD;;;;AAIG;AAMH,IAAIC,SAAO,GAAG,CAAC,CAAC;MAGH,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,GAAG,GAAG,mBAAmB,GAAG,EAAEA,SAAO,CAAC;QACtC,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAanD,KAAA;AAXC,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;;6GAdU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACZX;;;;AAIG;AAKH,IAAIA,SAAO,GAAG,CAAC,CAAC;AAEhB;;;;;;AAMG;MAEU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,GAAG,GAAG,CAAA,mBAAA,EAAsB,EAAEA,SAAO,EAAE,CAAC;QACxC,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAanD,KAAA;AAXC,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;;+GAdU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;AClBX;;;;AAIG;AAOI,MAAM,cAAc,GAAqC;AAC9D,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,KAAK,EAAE,OAAO;AACd,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,IAAI,EAAE,IAAI;CACX,CAAC;MAGoB,kBAAkB,CAAA;IAMtC,WACwB,CAAA,gBAAkC,EAClC,kBAAsC,EAAA;QADtC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAP9D;;AAEG;QACH,IAAe,CAAA,eAAA,GAAG,UAAU,CAAC;KAKzB;AAEJ,IAAA,IAAI,EAAE,GAAA;AACJ;;;;;AAKG;QACH,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,OAAO,CAAA,EAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,CAAA,CAAE,CAAC;AAChE,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO,CAAA,EAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,eAAe,CAAA,CAAE,CAAC;AAC9D,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;+GA3BmB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBADvC,SAAS;;0BAQL,QAAQ;;0BACR,QAAQ;;;AC3Bb;;;;AAIG;AAgBG,MAAO,eAAgB,SAAQ,kBAAkB,CAAA;IAGrD,WACiC,CAAA,gBAAkC,EAClC,kBAAsC,EAAA;AAErE,QAAA,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAHb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAJ9D,QAAA,IAAA,CAAA,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC;KAO/C;;4GARU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,wJANhB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAM1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,WAAW,EAAE,IAAI;AAClB,qBAAA;AACF,iBAAA,CAAA;;0BAKI,QAAQ;;0BACR,QAAQ;;;ACzBb;;;;AAIG;AAgBG,MAAO,gBAAiB,SAAQ,kBAAkB,CAAA;IAGtD,WACiC,CAAA,gBAAkC,EAClC,kBAAsC,EAAA;AAErE,QAAA,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAHb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAJ9D,QAAA,IAAA,CAAA,eAAe,GAAG,cAAc,CAAC,MAAM,CAAC;KAOhD;;6GARU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,yJANjB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAM1B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAR5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,WAAW,EAAE,IAAI;AAClB,qBAAA;AACF,iBAAA,CAAA;;0BAKI,QAAQ;;0BACR,QAAQ;;;ACzBb;;;;AAIG;MAcU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;;AAGU,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAa,CAAC;AAE3C,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;AAiB3C,KAAA;AAfC,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,UAAU,CAAC,OAAkB,EAAA;AAC3B,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACpC;AAED,IAAA,UAAU,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;6GApBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACjBX;;;;AAIG;AAQH,IAAY,aAIX,CAAA;AAJD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,aAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACf,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA,CAAA;MAGY,qBAAqB,CAAA;AAOhC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAN9C,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;;QAInC,IAAc,CAAA,cAAA,GAAG,IAAI,eAAe,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;;AAI/D,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAG;AACvD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;;AAGvB,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;oBACxC,IAAI,CAAC,mBAAmB,EAAE,CAAC;iBAC5B,CAAC,CACH,CAAC;AACH,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC3C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;KACxE;IAED,mBAAmB,GAAA;;QAEjB,IAAI,IAAI,CAAC,OAAO,EAAE;;;YAGhB,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;AAC/F,SAAA;KACF;;kHAzCU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;AClBX;;;;AAIG;IAIS,cAIX;AAJD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,aAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,aAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA,CAAA;MAGY,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;QAEW,IAAY,CAAA,YAAA,GAAG,CAAC,CAAC;QACjB,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAE3B,QAAA,IAAA,CAAA,MAAM,GAA2B,aAAa,CAAC,UAAU,CAAC;;;;AAKlD,QAAA,IAAA,CAAA,YAAY,GAAa,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,GAAG,IAAK,aAAqC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5G,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAkCxB,KAAA;AAhCC,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,IAAY,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACxB,SAAA;KACF;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,CAAY,SAAA,EAAA,IAAI,CAAC,MAAM,EAAE,CAAC;KAClC;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,QAAQ,CAAC;KAC/C;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,UAAU,CAAC;KACjD;IAED,SAAS,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,aAAa,CAAC,OAAO,CAAC;KAC9C;AAED,IAAA,OAAO,CAAC,MAAc,EAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;KAC/C;AAED,IAAA,gBAAgB,CAAC,SAAiB,EAAA;AAChC,QAAA,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,IAAI,CAAC,YAAY,IAAI,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC;KACxG;;0GA3CU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACdX;;;;AAIG;MAYU,QAAQ,CAAA;IAMnB,WACsB,CAAA,gBAAkC,EAClC,aAA4B,EAC5B,gBAAkC,EAC9C,QAAmB,EACnB,EAAc,EAAA;QAJF,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAC9C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QARhB,IAAU,CAAA,UAAA,GAAG,IAAI,CAAC;QAClB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAQvC;AAEJ,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC;KACnE;IAED,QAAQ,GAAA;;AAEN,QAAA,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAClD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AACpE,SAAA;;QAED,IACE,IAAI,CAAC,UAAU;AACf,YAAA,IAAI,CAAC,aAAa;AAClB,YAAA,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE;YAChC,IAAI,CAAC,EAAE,CAAC,aAAa;AACrB,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,EACtD;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAA,WAAA,EAAc,IAAI,CAAC,aAAa,CAAC,SAAS,CAAA,CAAE,CAAC,CAAC;AAC7F,SAAA;QACD,IAAI,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9F,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;;qGA7CU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yFAAR,QAAQ,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,KAAA,EAAA,SAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,OAAO;AAClB,iBAAA,CAAA;;0BAQI,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;6FAR4B,OAAO,EAAA,CAAA;sBAA7C,KAAK;uBAAC,KAAK,CAAA;;sBAAG,WAAW;uBAAC,UAAU,CAAA;;;ACjBvC;;;;AAIG;AAgBG,MAAO,iBAAkB,SAAQ,kBAAkB,CAAA;IAGvD,WACiC,CAAA,gBAAkC,EAClC,kBAAsC,EAAA;AAErE,QAAA,KAAK,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAHb,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;AAJ9D,QAAA,IAAA,CAAA,eAAe,GAAG,cAAc,CAAC,OAAO,CAAC;KAOjD;;8GARU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,0JANlB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAM1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,WAAW,EAAE,IAAI;AAClB,qBAAA;AACF,iBAAA,CAAA;;0BAKI,QAAQ;;0BACR,QAAQ;;;ACzBb;;;;AAIG;AAOH,MAAM,WAAW,GAAG,WAAW,CAAC;AAChC,MAAM,aAAa,GAAG,aAAa,CAAC;MAGvB,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAgC,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAF5D,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KAEiD;AAEhE,IAAA,YAAY,CAAC,KAAA,GAAuB,aAAa,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,EAAE,UAAU,GAAG,EAAE,EAAA;QACnF,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAEpD,QAAA,QAAQ,KAAK;YACX,KAAK,aAAa,CAAC,KAAK;AACtB,gBAAA,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACnC,MAAM;YACR,KAAK,aAAa,CAAC,OAAO;AACxB,gBAAA,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACjC,MAAM;AACT,SAAA;AAED,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAC1E,YAAA,cAAc,CAAC,IAAI,CAAC,CAAc,WAAA,EAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAA,WAAA,CAAa,CAAC,CAAC;AAChH,SAAA;QACD,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;KACxC;;IAGD,gBAAgB,CAAC,QAAmB,EAAE,OAAoB,EAAA;AACxD,QAAA,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;AAChC,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACnC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAC7C,YAAA,OAAO,CAAC,OAAO,CAAC,KAAK,IAAG;AACtB,gBAAA,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;AAC/B,oBAAA,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;AACtC,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;gHAlCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAI,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;0BAII,QAAQ;;;AClBvB;;;;AAIG;MAiBmB,oBAAoB,CAAA;AAaxC,IAAA,WAAA,CACY,qBAA4C,EAChC,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAAA;QAHlC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAChC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QACxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAV9C,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEP,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAU3C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAoB,KAAI;AAC1E,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAG;AACvD,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB,CAAC,CACH,CAAC;KACH;AAED;;;;;;;;AAQG;AACH,IAAA,IAAI,UAAU,GAAA;;AAEZ,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,KAAK,KAAK,EAAE;AAC3C,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED;;QAEE,CAAC,CAAC,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,IAAI,CAAC;;AAEtF,aAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,CAAC;;AAEhF,aAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,OAAO,CAAC,EAChF;KACH;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC;KAC7F;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;KAC7F;AAED,IAAA,IAAY,OAAO,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;KAC9B;IAED,kBAAkB,GAAA;AAChB;;;;AAIG;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;KACxE;IAED,YAAY,GAAA;AACV;;;;AAIG;AACH,QAAA,IAAI,CAAC,CAAC,IAAI,CAAC,uBAAuB,IAAI,IAAI,CAAC,KAAK,KAAK,aAAa,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE;AAC1F,YAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AAClF,SAAA;AACD;;AAEG;AACH,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAC1E;IAED,OAAO,GAAA;QACL,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;KAC/D;IAEO,aAAa,GAAA;QACnB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC;gBAC/B,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS;gBAC3D,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;AAC1B,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;;iHA/GmB,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,6DAC1B,QAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACR,iBAAiB,EACjB,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,eAAe,yFACf,gBAAgB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAJV,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADzC,SAAS;;0BAgBL,QAAQ;uGAdgC,KAAK,EAAA,CAAA;sBAA/C,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;gBACR,uBAAuB,EAAA,CAAA;sBAAvD,YAAY;uBAAC,iBAAiB,CAAA;gBACA,qBAAqB,EAAA,CAAA;sBAAnD,YAAY;uBAAC,eAAe,CAAA;gBACG,sBAAsB,EAAA,CAAA;sBAArD,YAAY;uBAAC,gBAAgB,CAAA;;;ACzBhC;;;;AAIG;AA6CG,MAAO,mBAAoB,SAAQ,oBAAoB,CAAA;;gHAAhD,mBAAmB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAFnB,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EA/BjF,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAQU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAnC/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AAC5F,iBAAA,CAAA;;;AChDD;;;;AAIG;AAeH;;;;AAIG;MACU,WAAW,CAAA;AAGtB,IAAA,WAAA,CAAY,aAAsB,EAAE,GAAqB,EAAE,KAAK,GAAG,CAAC,EAAA;AAClE,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;;QAE7B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE;YAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACxD,MAAM,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;;YAGzC,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAwB,GAAG,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;;;;YAIhF,MAAM,OAAO,GAAG,EAAE,CAAC;YACnB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;;;AAGpC,YAAA,MAAM,YAAY,GAAG,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;;AAEjF,YAAA,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;AAGd,YAAA,YAAY,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;;AAGtC,YAAA,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;AACvC,SAAA;KACF;IAED,GAAG,CAAI,KAAkC,EAAE,aAAiB,EAAA;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;KAChD;AACF;;AC3DD;;;;AAIG;MAMU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;AASxC,KAAA;AAPC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;;+GATU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACTX;;;;AAIG;IAgCS,YAGX;AAHD,CAAA,UAAY,WAAW,EAAA;AACrB,IAAA,WAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACb,IAAA,WAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EAHW,WAAW,KAAX,WAAW,GAGtB,EAAA,CAAA,CAAA,CAAA;MAGY,kBAAkB,CAAA;;;IAoB7B,WACY,CAAA,GAAqB,EACrB,WAAoB,EAC9B,QAAkB,EACV,SAAoB,EAC5B,QAAmB,EACnB,EAAc,EAAA;QALJ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;QACrB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAS;QAEtB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QAjBpB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QACV,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAoB3C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AAEb,QAAA,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;YAC7D,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,GAAG,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;YACvE,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,GAAG,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;YACnE,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;YACjE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;AACpD,SAAA;QAED,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;AACvE,SAAA;QACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,SAAS,CAAC,MAAK;gBACnD,IAAI,CAAC,aAAa,EAAE,CAAC;aACtB,CAAC,CACH,CAAC;AACH,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAc,KAAI;AAC/D,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAChC,CAAC,CACH,CAAC;AACH,SAAA;AAED,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;AACrD,SAAA;KACF;AAED,IAAA,IAEI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QACjB,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,KAAK,CAAC;AAClC,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAClF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEtE;;AAEG;AACH,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAEhF,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AACrC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;AACrC,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAClD,SAAA;KACF;IAED,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,OAAO,CAAC,kBAAkB,CAAC,MAAM,IAAG;AAClC,oBAAA,IACE,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,KAAK,WAAW,CAAC,KAAK;AACpE,wBAAA,MAAM,CAAC,YAAY,KAAK,MAAM,CAAC,aAAa,EAC5C;wBACA,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAGD,iBAAiB,GAAA;QACf,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,EAAE,CAAC;AAClD,SAAA;KACF;;;;;IAMS,wBAAwB,CAAI,KAAkC,EAAE,aAAiB,EAAA;QACzF,IAAI;YACF,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAC1D,SAAA;AAAC,QAAA,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,aAAa,CAAC;AACtB,SAAA;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;KACjD;AAEO,IAAA,kBAAkB,CAAC,OAAgB,EAAA;QACzC,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,MAAM,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,eAAe,KAAK,IAAI,EAAE;AAC5B,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,EAAE,eAAe,CAAC,CAAC;gBACvF,OAAO;AACR,aAAA;AACF,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;KAC1E;AAEO,IAAA,oBAAoB,CAAC,OAAgB,EAAA;AAC3C,QAAA,IAAI,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;QAEnC,IAAI,OAAO,CAAC,WAAW,EAAE;AACvB,YAAA,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC;AAC/B,SAAA;aAAM,IAAI,OAAO,CAAC,SAAS,EAAE;AAC5B,YAAA,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC;AACjC,SAAA;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3B,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACvD,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACrD,SAAA;AAED;;;AAGG;AACH,QAAA,OAAO,IAAI,CAAC;KACb;;+GA7KU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,SAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,SAAS;0NAkEJ,EAAE,EAAA,CAAA;sBAFL,KAAK;;sBACL,WAAW;gBAoDZ,iBAAiB,EAAA,CAAA;sBADhB,YAAY;uBAAC,MAAM,CAAA;;;AC7JtB;;;;AAIG;AAYG,MAAO,UAAW,SAAQ,kBAAuC,CAAA;IAGrE,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EAAA;AAEd,QAAA,KAAK,CAAC,GAAG,EAAE,mBAAmB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAXhD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAY5B;;uGAbU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE;AACtC,iBAAA,CAAA;;0BAOI,IAAI;;0BACJ,QAAQ;;;ACvBb;;;;AAIG;MAiBU,OAAO,CAAA;IAGlB,WAAmB,CAAA,aAA4B,EAAU,kBAAsC,EAAA;QAA5E,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAU,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;KAAI;IAEnG,IACI,SAAS,CAAC,IAAqB,EAAA;QACjC,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAc,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,UAAU,CAAC;KAC3C;IAGD,YAAY,GAAA;QACV,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;;IAGD,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC;KACzC;;oGAnBU,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAP,OAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,6SAPP,CAAC,aAAa,EAAE,kBAAkB,CAAC,iDAQ7B,QAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FADd,OAAO,EAAA,UAAA,EAAA,CAAA;kBATnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC;AAC9C,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,6BAA6B,EAAE,8BAA8B;AAC7D,wBAAA,0BAA0B,EAAE,2BAA2B;AACxD,qBAAA;AACF,iBAAA,CAAA;+HAEmD,MAAM,EAAA,CAAA;sBAAvD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAK5C,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,cAAc,CAAA;gBAOrB,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,QAAQ,CAAA;;;AChCxB;;;;AAIG;MAUmB,eAAe,CAAA;IAKnC,WACwB,CAAA,qBAA4C,EAC5C,gBAAkC,EAAA;QADlC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QANhD,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QACnC,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAOjC,QAAA,IAAI,gBAAgB,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAG;AACvD,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;aACxB,CAAC,CACH,CAAC;AACH,SAAA;AAED,QAAA,IAAI,qBAAqB,EAAE;AACzB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,KAAoB,KAAI;AAC1E,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACzB,CAAC,CACH,CAAC;AACH,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;AAES,IAAA,WAAW,CAAC,MAAqB,EAAA;;KAE1C;;4GAhCmB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;;0BAOL,QAAQ;;0BACR,QAAQ;;;ACrBb;;;;AAIG;AAWG,MAAO,UAAW,SAAQ,eAAe,CAAA;AAK7C,IAAA,WAAA,CACc,qBAA4C,EAC5C,gBAAkC,EACtC,QAA0B,EAC1B,SAA2B,EAAA;AAEnC,QAAA,KAAK,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;QAHvC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;AAInC,QAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,8FAA8F,CAAC,CAAC;AACjH,SAAA;KACF;AACD;;AAEG;AACgB,IAAA,WAAW,CAAC,KAAoB,EAAA;AACjD,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;AACpD,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,OAAgB,EAAA;;AAEnC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;AACnC,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACtE,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzC,iBAAA,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC9B,aAAA;iBAAM,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE;;AAE/D,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxE,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC/B,SAAA;KACF;;uGA/CU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,YAAA,EAAA,OAAA,CAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAHtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA,CAAA;;0BAOI,QAAQ;;0BACR,QAAQ;qGANU,KAAK,EAAA,CAAA;sBAAzB,KAAK;uBAAC,YAAY,CAAA;;;AChBrB;;;;AAIG;AAWG,MAAO,YAAa,SAAQ,eAAe,CAAA;AAC/C,IAAA,WAAA,CACc,qBAA4C,EAC5C,gBAAkC,EACtC,QAA0B,EAC1B,SAA2B,EAAA;AAEnC,QAAA,KAAK,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;QAHvC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAkB;QAC1B,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAInC,IAAI,CAAC,qBAAqB,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,gGAAgG,CAAC,CAAC;AACnH,SAAA;KACF;AAED;;AAEG;AACgB,IAAA,WAAW,CAAC,KAAoB,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,KAAK,KAAK,CAAC;AAE9C,QAAA,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACrC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAClD,SAAA;AAAM,aAAA,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;KACjC;;yGA1BU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAAZ,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA,CAAA;;0BAGI,QAAQ;;0BACR,QAAQ;;;AClBb;;;;AAIG;MASU,SAAS,CAAA;AAGpB,IAAA,WAAA,CAAmB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAAI;IAEnD,QAAQ,GAAA;;AAEN,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC1D,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;AACzC,SAAA;KACF;;sGAVU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0FAAT,SAAS,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAHrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AACjC,iBAAA,CAAA;iGAEqB,MAAM,EAAA,CAAA;sBAAzB,KAAK;uBAAC,WAAW,CAAA;;;ACdpB;;;;AAIG;MA6CU,oBAAoB,CAAA;AAC/B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC/D;;iHAHU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAxB7B,QAAQ;QACR,eAAe;QACf,iBAAiB;QACjB,gBAAgB;QAChB,UAAU;QACV,YAAY;QACZ,OAAO;QACP,SAAS;QACT,mBAAmB;AACnB,QAAA,UAAU,CAXF,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,aAcnC,QAAQ;QACR,eAAe;QACf,iBAAiB;QACjB,gBAAgB;QAChB,UAAU;QACV,YAAY;QACZ,OAAO;QACP,SAAS;QACT,mBAAmB;QACnB,UAAU,CAAA,EAAA,CAAA,CAAA;kHAGD,oBAAoB,EAAA,OAAA,EAAA,CA1BrB,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FA0B1B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA3BhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;AACtC,oBAAA,YAAY,EAAE;wBACZ,QAAQ;wBACR,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,UAAU;wBACV,YAAY;wBACZ,OAAO;wBACP,SAAS;wBACT,mBAAmB;wBACnB,UAAU;AACX,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,QAAQ;wBACR,eAAe;wBACf,iBAAiB;wBACjB,gBAAgB;wBAChB,UAAU;wBACV,YAAY;wBACZ,OAAO;wBACP,SAAS;wBACT,mBAAmB;wBACnB,UAAU;AACX,qBAAA;AACF,iBAAA,CAAA;;;AChDD;;;;AAIG;MASU,SAAS,GAAG,IAAI,cAAc,CAA2B,WAAW,EAAE;SACnE,eAAe,GAAA;AAC7B,IAAA,OAAO,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC7C,CAAC;AACM,MAAM,kBAAkB,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,GAAG;MAezE,kBAAkB,CAAA;AAS7B,IAAA,WAAA,CAA+B,aAAuC,EAAA;;;;QALtE,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEjB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;QACP,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAGzC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,aAAa,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACrB,CAAC,CACH,CAAC;KACH;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC1B,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;AAzBU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,kBAST,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGATlB,kBAAkB,EAAA,QAAA,EAAA,yCAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,SAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,SAAA,EAFlB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOnC,QAAQ,EAhBZ,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAOU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAb9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yCAAyC;AACnD,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,8BAA8B,EAAE,SAAS;AACzC,wBAAA,4BAA4B,EAAE,QAAQ;AACvC,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;AAClD,iBAAA,CAAA;;0BAUc,MAAM;2BAAC,SAAS,CAAA;4CAJa,KAAK,EAAA,CAAA;sBAA9C,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ACrC1C;;;;AAIG;AASH;;;;;AAKG;AAIG,MAAO,WAAY,SAAQ,kBAAsC,CAAA;IACrE,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EACkB,MAAc,EAAA;AAE9C,QAAA,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAFhC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KAG/C;IAEQ,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;QAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAA2B,SAAS,EAAE,IAAI,CAAC,CAAC;AAE/F,QAAA,IAAI,aAAa,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;AACzC,YAAA,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,SAAA;KACF;;AAtBU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kLAST,WAAW,EAAA,SAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FATb,WAAW,EAAA,QAAA,EAAA,2BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACtC,iBAAA,CAAA;;0BAKI,IAAI;;0BACJ,QAAQ;;0BAIR,SAAS;2BAAC,WAAW,CAAA;;;AC/B1B;;;;AAIG;AAgDG,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;AAO5D,IAAA,WAAA,CACiC,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAClC,qBAA4C,EAAA;QAE/D,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QALpD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QACxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QANzD,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;KAStB;AAED;;;;;AAKG;AACH,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,SAAS,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;AAChD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;AACvB,SAAA;KACF;IAEQ,kBAAkB,GAAA;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;KACrD;;iHAxCU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAFpB,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAK5E,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAW,EArClB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FASU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBApChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6CAA6C;AACvD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;AAC9F,iBAAA,CAAA;;0BASI,QAAQ;wIAL0C,UAAU,EAAA,CAAA;sBAA9D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAoB/C,SAAS,EAAA,CAAA;sBADZ,KAAK;;;AC1ER;;;;AAIG;MAkBU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC/D;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAHb,WAAW,EAAE,oBAAoB,EAAE,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAD1D,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,CAExE,EAAA,OAAA,EAAA,CAAA,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;+GAE1E,iBAAiB,EAAA,OAAA,EAAA,CAJlB,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,EAExE,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAEnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,qBAAqB,CAAC;AACnF,oBAAA,YAAY,EAAE,CAAC,WAAW,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;oBACrE,OAAO,EAAE,CAAC,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,EAAE,kBAAkB,CAAC;AACvF,iBAAA,CAAA;;;ACrBD;;;;AAIG;AAEG,SAAU,qBAAqB,CAAC,KAAuB,EAAA;;IAE3D,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACD,IAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;;AAE7B,QAAA,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;AAC1B,KAAA;;AAED,IAAA,OAAO,OAAO,KAAK,KAAK,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AACpD;;ACjBA;;;;AAIG;MAaU,UAAU,CAAA;AAMrB;;AAEG;AACH,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,IACI,SAAS,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IACI,UAAU,CAAC,KAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC9C;AAED,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,IACI,QAAQ,CAAC,KAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED;;;;;;;;;;AAUG;AACH,IAAA,IACI,WAAW,GAAA;QACb,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,IACI,SAAS,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC7C;;uGAlEU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,kaALX,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAK1B,UAAU,EAAA,UAAA,EAAA,CAAA;kBAPtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,MAAM;AAC3B,qBAAA;AACF,iBAAA,CAAA;8BAWK,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,eAAe,CAAA;gBAMxB,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,sBAAsB,CAAA;gBAM/B,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW,CAAA;gBAMd,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,uBAAuB,CAAA;gBAMhC,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,YAAY,CAAA;gBAMf,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,kBAAkB,CAAA;gBAM3B,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,UAAU,CAAA;gBAiBb,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,kBAAkB,CAAA;gBAS3B,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW,CAAA;;;AChFpB;;;;AAIG;AAOU,MAAA,sBAAsB,GAAgB,CAAC,UAAU,EAAE;MAOnD,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAPuB,YAAA,EAAA,CAAA,UAAU,CAGlD,EAAA,OAAA,EAAA,CAAA,YAAY,aAH4B,UAAU,CAAA,EAAA,CAAA,CAAA;AAOjD,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,YAJjB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,sBAAsB,CAAC;oBACtC,OAAO,EAAE,CAAC,sBAAsB,CAAC;AAClC,iBAAA,CAAA;;;ACjBD;;;;AAIG;AAEH,IAAY,iBAIX,CAAA;AAJD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACrB,IAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,iBAAA,CAAA,MAAA,CAAA,GAAA,MAAa,CAAA;AACf,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,GAI5B,EAAA,CAAA,CAAA;;ACVD;;;;AAIG;MAQU,eAAe,CAAA;IAC1B,WAAoB,CAAA,UAAsB,EAA+B,UAAe,EAAA;QAApE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAA+B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;KAAI;AAE5F,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;KACtC;IAED,KAAK,GAAA;AACH,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACvC,SAAA;KACF;;AAXU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,4CAC0B,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGADpD,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA,CAAA;;0BAE8C,MAAM;2BAAC,WAAW,CAAA;;;ACbjE;;;;AAIG;MAwBU,WAAW,CAAA;AAatB,IAAA,WAAA,CAAoB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAZnB,QAAA,IAAA,CAAA,SAAS,GAA+B,iBAAiB,CAAC,QAAQ,CAAC;QACjE,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAInC,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAEX,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;QAEnE,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;KAGyB;AAE9C;;;AAGG;AACH,IAAA,IACI,cAAc,GAAA;QAChB,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO,IAAI,CAAC,eAAe,CAAC;AAC7B,SAAA;aAAM,IAAI,IAAI,CAAC,gBAAgB,EAAE;AAChC,YAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC;AACxC,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IACD,IAAI,cAAc,CAAC,QAAoC,EAAA;;;;QAIrD,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,EAAE;AAC9C,YAAA,IAAI,CAAC,eAAe,GAAG,QAAgC,CAAC;YACxD,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;KACF;AAED,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;KACtC;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC3C;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,GAAI,IAAI,CAAC,WAA2B,CAAC;KAC5G;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAClD;AAGD,IAAA,mBAAmB,CAAC,KAAoB,EAAA;;AAEtC,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,KAAK,CAAC,MAAM,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAqB,CAAC,CAAC;AACnE,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;AAClC,gBAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;AACzB,aAAA;AACF,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;YACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/B,SAAA;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;YACzE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/B,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAChB,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7C,SAAA;QAED,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC9B;AAGD,IAAA,qBAAqB,CAAC,KAAU,EAAA;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAEpD,QAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtC;AAED,IAAA,MAAM,CAAC,QAAgB,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;AAClC,YAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;YACxB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;KACF;AAES,IAAA,eAAe,CAAC,QAAgB,EAAA;QACxC,OAAO,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;KAC/D;IAES,0BAA0B,GAAA;AAClC,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,CAAC;KAC/B;IAES,yBAAyB,GAAA;QACjC,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;KACvD;IAES,eAAe,GAAA;QACvB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;;;;YAIrD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AAChD,aAAA;YAED,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACzB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;AACzB,aAAA;AACF,SAAA;KACF;AAES,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,QAAQ,IAAI,CAAC,SAAS;YACpB,KAAK,iBAAiB,CAAC,QAAQ;AAC7B,gBAAA,OAAO,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC;YAChC,KAAK,iBAAiB,CAAC,UAAU;AAC/B,gBAAA,OAAO,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC;YACjC,KAAK,iBAAiB,CAAC,IAAI;gBACzB,OAAO,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC;AAC3D,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACF;AAES,IAAA,cAAc,CAAC,KAAoB,EAAA;QAC3C,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,QAAQ,IAAI,CAAC,SAAS;YACpB,KAAK,iBAAiB,CAAC,QAAQ;AAC7B,gBAAA,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,CAAC;YAC9B,KAAK,iBAAiB,CAAC,UAAU;AAC/B,gBAAA,OAAO,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC;YAChC,KAAK,iBAAiB,CAAC,IAAI;gBACzB,OAAO,GAAG,KAAK,IAAI,CAAC,OAAO,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC;AACxD,YAAA;AACE,gBAAA,OAAO,KAAK,CAAC;AAChB,SAAA;KACF;AAEO,IAAA,eAAe,CAAC,IAAiB,EAAA;QACvC,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5E,SAAA;KACF;IAEO,oBAAoB,GAAA;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YAClD,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;;wGAtLU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,WAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,cAAA,EAAA,CAAA,aAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,+BAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAIL,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EANtB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAE1B,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,2BAA2B;AACtC,iBAAA,CAAA;iGAEwB,SAAS,EAAA,CAAA;sBAA/B,KAAK;uBAAC,cAAc,CAAA;gBACI,WAAW,EAAA,CAAA;sBAAnC,KAAK;uBAAC,gBAAgB,CAAA;gBAE4C,gBAAgB,EAAA,CAAA;sBAAlF,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAIrB,WAAW,EAAA,CAAA;sBAA5C,MAAM;uBAAC,gBAAgB,CAAA;gBAYpB,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,aAAa,CAAA;gBAkDpB,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAwBnC,qBAAqB,EAAA,CAAA;sBADpB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACvHnC;;;;AAIG;AAYG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;IAGhD,WAAY,CAAA,UAAsB,EAAU,QAAmB,EAAA;QAC7D,KAAK,CAAC,UAAU,CAAC,CAAC;QADwB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAFvD,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KAIxB;;AAGD,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,gBAAgB,CAAC,QAAuC,EAAA;AAC1D,QAAA,IAAI,CAAC,cAAc,GAAG,QAAgC,CAAC;KACxD;IAED,IACI,sBAAsB,CAAC,QAAiB,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AACvD,SAAA;KACF;AAEQ,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QAC/C,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;YACnE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACvC,SAAA;aAAM,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,yBAAyB,EAAE,EAAE;YACzE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AACnC,YAAA,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACxB,SAAA;AAAM,aAAA,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,EAAE;YAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACrD,SAAA;AACD,QAAA,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;KAClC;AAEQ,IAAA,qBAAqB,CAAC,KAAU,EAAA;AACvC,QAAA,IAAI,QAAgB,CAAC;QAErB,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;YACxC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtF,SAAA;AAAM,aAAA;YACL,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtD,SAAA;AAED,QAAA,IAAI,QAAQ,GAAG,CAAC,CAAC,EAAE;AACjB,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AAC/B,SAAA;AACD,QAAA,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;KACpC;IAEkB,eAAe,GAAA;QAChC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;AACrD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAG;gBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7B,aAAC,CAAC,CAAC;;;;YAKH,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;gBAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AAC/C,aAAA;YACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,WAAW,EAAE;gBACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AACvC,aAAA;AACF,SAAA;QACD,KAAK,CAAC,eAAe,EAAE,CAAC;KACzB;AAEO,IAAA,cAAc,CAAC,QAAgB,EAAA;QACrC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;AACvC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;IAEO,WAAW,CAAC,IAAmB,EAAE,KAAa,EAAA;QACpD,IAAI,IAAI,YAAY,WAAW,EAAE;AAC/B,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC9E,SAAA;KACF;;8GAlFU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,4OAFlB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAE1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,2BAA2B;AACtC,iBAAA,CAAA;yHAUK,gBAAgB,EAAA,CAAA;sBADnB,KAAK;uBAAC,mBAAmB,CAAA;gBAStB,sBAAsB,EAAA,CAAA;sBADzB,KAAK;uBAAC,2BAA2B,CAAA;;;AChCpC;;;;AAIG;AASH,MAAM,oBAAoB,GAAgB,CAAC,WAAW,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;MAO/E,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAPa,YAAA,EAAA,CAAA,WAAW,EAAE,iBAAiB,EAAE,eAAe,CAG9E,EAAA,OAAA,EAAA,CAAA,YAAY,CAHmB,EAAA,OAAA,EAAA,CAAA,WAAW,EAAE,iBAAiB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;AAO7E,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAJlB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;ACnBD;;;;AAIG;MAKU,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;QAEE,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAEjB,KAAA;;qHAHY,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAAxB,wBAAwB,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;ACRX;;;;AAIG;AA8CG,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;IAG5D,WACE,CAAA,qBAA4C,EAChC,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAC1B,gBAA0C,EAC1C,EAAc,EAAA;QAEtB,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAH3E,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA0B;QAC1C,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;KAGvB;IAEQ,kBAAkB,GAAA;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AACxD,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,CAAC,WAAW;AAC/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC;KACzF;;iHAvBU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAX,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAU,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAFpB,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,EA9B3G,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FASU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;AAuBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,MAAM;AAC3C,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,wBAAwB,CAAC;AACtH,iBAAA,CAAA;;0BAMI,QAAQ;oKAJoB,gBAAgB,EAAA,CAAA;sBAA9C,SAAS;uBAAC,kBAAkB,CAAA;;;ACnD/B;;;;AAIG;MAIU,wBAAwB,CAAA;AAGnC,IAAA,YAAY,CAAC,IAAO,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KACvD;AAED,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB;AAED,IAAA,QAAQ,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvB;IAED,OAAO,GAAA;AACL,QAAA,OAAO,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;KAC/C;IAED,GAAG,GAAA;AACD,QAAA,IAAI,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACvC,YAAA,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,YAAqB,EAAE,KAAK,GAAG,CAAC,CAAC,EAAA;QACxC,IAAI,aAAa,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,KAAK,EAAE;;AAEd,YAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;AACd,gBAAA,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;oBAErB,IAAI,YAAY,IAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAS,CAAC,YAAY,CAAC,EAAE;wBAC5D,aAAa,IAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAS,CAAC,YAAY,CAAC,CAAC;AAC3D,qBAAA;AAAM,yBAAA;;;wBAGL,aAAa,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC/C,qBAAA;AACF,iBAAA;AACF,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,KAAQ,KAAI;;AAE9B,oBAAA,IAAI,YAAY,IAAK,KAAa,CAAC,YAAY,CAAC,EAAE;AAChD,wBAAA,aAAa,IAAK,KAAa,CAAC,YAAY,CAAC,CAAC;AAC/C,qBAAA;AAAM,yBAAA;;;AAGL,wBAAA,aAAa,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;AACnC,qBAAA;oBACD,aAAa,IAAI,GAAG,CAAC;AACvB,iBAAC,CAAC,CAAC;AACJ,aAAA;AACF,SAAA;AAED,QAAA,OAAO,aAAa,CAAC,IAAI,EAAE,CAAC;KAC7B;AAEO,IAAA,OAAO,CAAC,IAAO,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AAC9B,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,IAAO,EAAA;QACxB,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;YACnD,OAAO;AACR,SAAA;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvC,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAC7B,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,SAAA;KACF;AACF;;AC7FD;;;;AAIG;MAIU,yBAAyB,CAAA;AAGpC,IAAA,YAAY,CAAC,IAAO,EAAA;AAClB,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC;KAC5B;AAED,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAED,IAAA,QAAQ,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,SAAA;KACF;IAED,OAAO,GAAA;AACL,QAAA,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;KACpB;IAED,GAAG,GAAA;AACD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,YAAqB,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;QACD,IAAI,YAAY,IAAK,IAAI,CAAC,KAAa,CAAC,YAAY,CAAC,EAAE;AACrD,YAAA,OAAQ,IAAI,CAAC,KAAa,CAAC,YAAY,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC9B,SAAA;KACF;AACF;;AC7CD;;;;AAIG;MAOU,iBAAiB,CAAA;AAG5B,IAAA,WAAA,CAAmB,QAAuC,EAAA;QAAvC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA+B;KAAI;;8GAHnD,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAChC,iBAAA,CAAA;kGAE6B,QAAQ,EAAA,CAAA;sBAAnC,KAAK;uBAAC,mBAAmB,CAAA;;;ACZ5B;;;;AAIG;MAImB,aAAa,CAAA;AAYlC;;ACpBD;;;;AAIG;AAMG,SAAU,2BAA2B,CAAI,cAAuB,EAAA;IACpE,OAAO;QACL,cAAc;AACd,QAAA;AACE,YAAA,OAAO,EAAE,aAAa;AACtB,YAAA,WAAW,EAAE,cAAc;AAC5B,SAAA;KACF,CAAC;AACJ;;AClBA;;;;AAIG;AAMG,MAAO,gBAAoB,SAAQ,yBAA4B,CAAA;AAArE,IAAA,WAAA,GAAA;;AACU,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAI,IAAI,CAAC,CAAC;KAWtD;AAVC,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;AAEQ,IAAA,MAAM,CAAC,IAAO,EAAA;AACrB,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/B,SAAA;KACF;AACF;;ACtBD;;;;AAIG;MASU,sBAAsB,CAAA;AAcjC,IAAA,WAAA,GAAA;QAbA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;;;QAOhB,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QAEd,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;AACnB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;AACxC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,aAAa,CAAmB,CAAC,CAAC,CAAC;QAGjE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KACvD;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAK,EAAA;;QAEpB,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;;;AAID,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,cAAc,YAAY,wBAAwB,CAAC;KAChE;AAED,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YACjF,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;AAED,IAAA,MAAM,CAAC,IAAO,EAAA;AACZ,QAAA,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,EAAE;YACvC,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;AAC1C,YAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACpC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;QACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;AAED,IAAA,QAAQ,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAClF,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;;AAGD,IAAA,iBAAiB,CAAC,KAAc,EAAA;;;;;QAM9B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,EAAE;YACzG,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAClD;;mHAjFU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;ACZX;;;;AAIG;MAeU,oBAAoB,CAAA;AAY/B,IAAA,WAAA,CACE,eAAiC,EACzB,aAAsC,EACtC,gBAA2C,EACtB,UAAe,EAAA;QAFpC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA2B;QACtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;AAZ9C,QAAA,IAAA,CAAA,WAAW,GAAoC,IAAI,gBAAgB,EAAiB,CAAC;QAM7E,IAAU,CAAA,UAAA,GAAoB,EAAE,CAAC;QAQvC,IAAI,CAAC,uBAAuB,EAAE,CAAC;;QAE/B,IAAI,CAAC,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,EAAe,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;KACjC;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,EAAe,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;KACjC;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,EAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;KACjC;IAED,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACxD,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;AACxB,SAAA;KACF;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,IAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;AAClD,gBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,WAAc,CAAC;AACnB,gBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;oBACzC,WAAW,GAAI,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAa,CAAC,CAAC,CAAC,CAAC;AACtE,iBAAA;AAAM,qBAAA;oBACL,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,KAAU,CAAC;AAC/D,iBAAA;AACD,gBAAA,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;AACjF,gBAAA,IAAI,WAAW,EAAE;;AAEf,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACtC,iBAAA;AAAM,qBAAA;;AAEL,oBAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,iBAAA;AACD,gBAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACtC,aAAA;AACF,SAAA;KACF;AAED,IAAA,eAAe,CAAC,OAAwB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;KAC3B;IAEO,uBAAuB,GAAA;QAC7B,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;YAC7C,IAAI,CAAC,IAAI,EAAE;AACT,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;AAC/B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,WAAW,CAAC,SAA4B,EAAA;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AACvF,QAAA,IAAI,SAAS,KAAK,iBAAiB,CAAC,EAAE,EAAE;YACtC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;gBAC/B,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACpC,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,EAAE,CAAC;AACT,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,SAAS,KAAK,iBAAiB,CAAC,IAAI,EAAE;AAC/C,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxD,KAAK,GAAG,CAAC,CAAC;AACX,aAAA;AAAM,iBAAA;AACL,gBAAA,KAAK,EAAE,CAAC;AACT,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAEO,IAAA,aAAa,CAAC,SAA4B,EAAA;AAChD,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;AAC3D,gBAAA,IAAI,IAAI,EAAE;AACR,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC7B,iBAAA;AACH,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;AAChC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;AAC7B,SAAA;KACF;;AAGO,IAAA,eAAe,CAAC,KAAoB,EAAA;QAC1C,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,QAAQ,GAAG;gBACT,KAAK,IAAI,CAAC,KAAK;oBACb,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACrD,wBAAA,IAAI,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE;AACzC,4BAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,yBAAA;AAAM,6BAAA;AACL,4BAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAC5D,yBAAA;wBACD,cAAc,GAAG,IAAI,CAAC;AACvB,qBAAA;oBACD,MAAM;gBACR,KAAK,IAAI,CAAC,KAAK;AACb,oBAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC5B,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;wBAC/B,cAAc,GAAG,IAAI,CAAC;AACvB,qBAAA;oBACD,MAAM;gBACR,KAAK,IAAI,CAAC,OAAO;AACf,oBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;oBACzC,cAAc,GAAG,IAAI,CAAC;oBACtB,MAAM;gBACR,KAAK,IAAI,CAAC,SAAS;AACjB,oBAAA,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AACrC,oBAAA,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;oBAC3C,cAAc,GAAG,IAAI,CAAC;oBACtB,MAAM;AACR,gBAAA;;AAEE,oBAAA,IACE,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG;AACtB,wBAAA,EAAE,IAAI,CAAC,gBAAgB,CAAC,eAAe,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC;wBACxE,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC;AAC5B,wBAAA,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EACxB;AACA,wBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;AAChC,qBAAA;oBACD,MAAM;AACT,aAAA;AACF,SAAA;AACD,QAAA,OAAO,cAAc,CAAC;KACvB;IAEO,uBAAuB,CAAC,WAA2B,QAAQ,EAAA;AACjE,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE;YACvD,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5F,SAAA;KACF;AAEO,IAAA,wBAAwB,CAAC,KAAoB,EAAA;QACnD,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,KAAK,CAAC,wBAAwB,EAAE,CAAC;KAClC;AAEO,IAAA,sBAAsB,CAAC,EAAe,EAAA;AAC5C,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,IAAG;AACvC,gBAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;AACnC,oBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;;oBAEhC,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,wBAAA,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AACrC,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,KAAiB,EAAA;;;QAG3C,MAAM,MAAM,IAAI,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAS,CAAC;AACvE,QAAA,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;KAC7G;;AAxMU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,yHAgBrB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAhBV,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;0BAiBN,MAAM;2BAAC,WAAW,CAAA;;AA2LhB,MAAM,+BAA+B,GAAG,2BAA2B,CAAC,oBAAoB,CAAC,CAAC;MAEpF,UAAU,CAAA;IAIrB,WAAY,CAAA,EAAU,EAAE,KAAQ,EAAA;AAC9B,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AACD,IAAA,MAAM,CAAC,KAAoB,EAAA;QACzB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;KAC3D;AACF;;AC9OD;;;;AAIG;MAsBU,SAAS,CAAA;AAOpB,IAAA,WAAA,CACS,KAAiB,EACjB,aAAsC,EACrC,YAAqC,EACrC,sBAAiD,EAAA;QAHlD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QACjB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;QACrC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA2B;;QAT3D,IAAW,CAAA,WAAA,GAAmB,IAAIC,UAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAWxD,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;KAChD;AAED,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,QAAQ,CAAC,EAAU,EAAA;AACrB,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;KAChC;AAED,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;KAChC;AAED,IAAA,IACI,QAAQ,GAAA;QACV,QACE,IAAI,CAAC,sBAAsB,CAAC,cAAc,IAAI,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,EACjH;KACH;AAED,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;AACb,YAAA,IAAI,CAAC,GAAG,GAAG,aAAa,GAAG,eAAe,EAAE,CAAC;YAC7C,IAAI,CAAC,WAAW,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;AAChC,SAAA;KACF;IAGD,OAAO,GAAA;AACL,QAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE;YAC/C,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChD,SAAA;;;;;AAKD,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;KAChC;;sGAjEU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA7D,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA8D,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAZV,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,IAAA,EAAA,UAAA,CAAA,EAAA,KAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,WAAA,EAAA,EAAA,UAAA,EAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,WAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,SAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5D,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FASU,SAAS,EAAA,UAAA,EAAA,CAAA;kBAdrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,CAAA;;;AAGT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,6BAA6B,EAAE,MAAM;AACrC,wBAAA,aAAa,EAAE,UAAU;;AAEzB,wBAAA,iBAAiB,EAAE,IAAI;AACvB,wBAAA,WAAW,EAAE,UAAU;AACxB,qBAAA;AACF,iBAAA,CAAA;sMAkBK,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,IAAI,CAAA;gBAUP,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,UAAU,CAAA;gBAUb,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,cAAc,CAAA;gBAQvB,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,iBAAiB,CAAA;gBAa9B,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,OAAO,CAAA;;;AC/EvB;;;;AAIG;AA0BH,IAAI,mBAAmB,GAAG,CAAC,CAAC;MA+Bf,UAAU,CAAA;AAQrB,IAAA,WAAA,CACS,sBAAiD,EAC3B,EAAU,EAC/B,EAAc,EACf,aAAsC,EACrC,YAAqC,EACrC,aAAsC,EAG9C,UAAsB,EACI,QAAa,EAAA;QAThC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA2B;QAC3B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAC/B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACf,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;QACrC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAIpB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAfzC,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAGR,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAczC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;AAC7E,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,mBAAmB,EAAE,CAAC;AACzD,SAAA;KACF;AAED,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAA8B,EAAA;AACtC,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;KAClF;AAED;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;KACxE;IAED,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QAElD,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AACtE,YAAA,IACE,IAAI,CAAC,aAAa,CAAC,IAAI;AACtB,gBAAA,KAAe,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,CAAC,aAAa;gBAChD,KAAe,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,EACvD;AACA,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,EACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAG;YACnC,IAAI,KAAK,CAAC,MAAM,EAAE;gBAChB,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;AACvC,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AACrC,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;KAC9F;AAED,IAAA,kBAAkB,CAAC,KAAsB,EAAA;QACvC,IAAI,CAAC,OAAO,GAAG,KAAK,KAAK,eAAe,CAAC,OAAO,CAAC;KAClD;;AAhFU,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAU,EAUX,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA6D,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,YAAY,EAMZ,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,mBAAmB,6BAEnB,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAlBP,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EAPV,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAoCjD,SAAS,EAxDhB,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAQU,UAAU,EAAA,UAAA,EAAA,CAAA;kBA7BtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAY,UAAA,EAAE,CAAC;AAClE,oBAAA,IAAI,EAAE;AACJ,wBAAA,8BAA8B,EAAE,MAAM;AACtC,wBAAA,aAAa,EAAE,WAAW;AAC1B,wBAAA,MAAM,EAAE,WAAW;AACpB,qBAAA;AACF,iBAAA,CAAA;;0BAWI,MAAM;2BAAC,YAAY,CAAA;;0BAKnB,QAAQ;;0BACR,MAAM;2BAAC,mBAAmB,CAAA;;0BAE1B,MAAM;2BAAC,QAAQ,CAAA;4CAjBL,SAAS,EAAA,CAAA;sBAArB,KAAK;uBAAC,IAAI,CAAA;gBA6BP,KAAK,EAAA,CAAA;sBADR,eAAe;uBAAC,SAAS,CAAA;;;AC1F5B;;;;AAIG;AAkEG,MAAO,WACX,SAAQ,kBAAwC,CAAA;IAoChD,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGX,OAAkB,EACN,QAAmB,EACnB,EAAc,EAC1B,sBAAiD,EACjD,aAAsC,EACrC,aAAsC,EACtC,eAA0C,EAC9B,mBAA0C,EAC1C,gBAA0C,EACjC,UAAe,EACpC,YAAqC,EACrC,GAAsB,EAAA;AAE9B,QAAA,KAAK,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAb3D,IAAO,CAAA,OAAA,GAAP,OAAO,CAAW;QACN,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAC1B,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAA2B;QACjD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAe,CAAA,eAAA,GAAf,eAAe,CAA2B;QAC9B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAuB;QAC1C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAA0B;QACjC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QACpC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;QACrC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAjDV,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAEb,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAS,KAAK,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;AAEvE;;AAEG;AAC2B,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC;QAMhG,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAGhB,QAAA,IAAA,CAAA,aAAa,GAAuB;YAClC,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,IAAI,EAAE,OAAO,CAAC,KAAK;YACnB,MAAM,EAAE,YAAY,CAAC,KAAK;YAC1B,OAAO,EAAE,YAAY,CAAC,KAAK;SAC5B,CAAC;QAEiB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QAIrB,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAuBvB,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAC9B,SAAA;;QAED,IAAI,CAAC,sBAAsB,CAAC,cAAc,GAAG,IAAI,yBAAyB,EAAK,CAAC;QAChF,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;AAED,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC;KACpD;IACD,IAAI,WAAW,CAAC,KAAuB,EAAA;AACrC,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,sBAAsB,CAAC,cAAc,GAAG,IAAI,wBAAwB,EAAK,CAAC;AAChF,SAAA;AAAM,aAAA;;;YAGL,IAAI,CAAC,sBAAsB,CAAC,cAAc,GAAG,IAAI,yBAAyB,EAAK,CAAC;AACjF,SAAA;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;;;AAID,IAAA,IAAa,EAAE,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,GAAG,WAAW,CAAC;KAC/C;IACD,IAAa,EAAE,CAAC,EAAU,EAAA;AACxB,QAAA,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;KACf;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,IAAY,EAAA;;AAEzB,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE;AAC7B,YAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AAC3B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,GAAG,KAAK,CAAC;AACpD,aAAA;AACD,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3C,SAAA;;;;QAID,IAAI,CAAC,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;KAC5D;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;KAChC;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAC9E,SAAA;AACD,QAAA,OAAQ,IAAI,CAAC,sBAAsB,CAAC,cAA8C,CAAC,KAAK,CAAC;KAC1F;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;KAChC;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC;KAChC;AAED,IAAA,IAAI,wBAAwB,GAAA;AAC1B,QAAA,OAAO,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC;KAC/B;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC;KACjD;AAED,IAAA,IAAY,QAAQ,GAAA;QAClB,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9C;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,uBAAuB,EAAE,CAAC;;QAG/B,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE;YACzD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;AACnE,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC;QAC5C,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;QACzD,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;;;AAIvD,QAAA,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC;KACxB;AAGD,IAAA,OAAO,CAAC,KAAoB,EAAA;;AAE1B,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;YACrF,MAAM,UAAU,GAAQ,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAY,CAAC;AAChF,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,MAAM,QAAQ,GAAM,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;AACrC,gBAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChD,aAAA;AACF,SAAA;KACF;IAED,OAAO,GAAA;AACL,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;KACjC;AAED,IAAA,kBAAkB,CAAC,KAAsB,EAAA;QACvC,IAAI,CAAC,sBAAsB,CAAC,OAAO,GAAG,KAAK,KAAK,eAAe,CAAC,OAAO,CAAC;AACxE,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAC/B,QAAA,IAAI,KAAK,KAAK,eAAe,CAAC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC5C,SAAA;KACF;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;AAC5C,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,CAAC;AAC/C,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;;;AAIpB,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;KAC1B;IAED,qBAAqB,GAAA;QACnB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;AAC5D,YAAA,OAAO,CAAG,EAAA,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAA,CAAA,EAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1F,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC;KAClD;IAED,gBAAgB,GAAA;QACd,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;AACvC,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,KAAc,EAAA;QACvB,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,GAAG,KAAK,CAAC;QACzD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;KACnE;AAED,IAAA,iBAAiB,CAAC,SAAc,EAAA;AAC9B,QAAA,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;KACpC;AAED,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;KAClC;IAED,mBAAmB,GAAA;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC;QAClD,OAAO,KAAK,GAAG,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC;KAChC;IAED,gBAAgB,GAAA;;KAEf;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC;KAChC;IAEO,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,YAA8B,KAAI;AACxF,YAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAChC,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,YAAY,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,EAAE;AAChE,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AACjC,aAAA;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;AAC7C,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,sBAAsB,CAAC,cAAc,GAAG,IAAI,CAAC;AACnD,aAAA;YACD,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACtB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACnG,aAAA;SACF,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,WAAW,IAAG;;AAExD,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;gBAC1B,OAAO;AACR,aAAA;YACD,MAAM,OAAO,GAAgB,WAA0B,CAAC;;AAExD,YAAA,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC,GAAG,EAAE;gBAC3F,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,EAAE,CAAA,EAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAI,EAAA,CAAA,CAAC,CAAC;AAC1G,aAAA;SACF,CAAC,CACH,CAAC;QAEF,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,IAAG;gBACzD,IAAI,CAAC,OAAO,GAAG,OAAO,KAAK,aAAa,CAAC,OAAO,CAAC;aAClD,CAAC,CACH,CAAC;AACH,SAAA;KACF;AAEO,IAAA,gBAAgB,CAAC,KAAuB,EAAA;AAC9C,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YAC1E,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,sBAAsB,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5D,aAAA;AACF,SAAA;KACF;IAEO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AACzE,SAAA;KACF;AAEO,IAAA,eAAe,CAAC,KAAc,EAAA;QACpC,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AACzB,gBAAA,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;AACjB,aAAA;YACD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,GAAI,IAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC5E,SAAA;QACD,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC3D;;AA7TU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,0aAmDZ,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnDV,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAdX,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,CAAA,UAAA,EAAA,aAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;QACT,sBAAsB;AACtB,QAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,WAAW,EAAE;QACtD,qBAAqB;QACrB,sBAAsB;QACtB,+BAA+B;AAChC,KAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwBa,iBAAiB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAejB,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,SAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrG1B,o7GA8FA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDxBa,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjBvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEb,SAAA,EAAA;wBACT,sBAAsB;AACtB,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,aAAa,EAAE;wBACtD,qBAAqB;wBACrB,sBAAsB;wBACtB,+BAA+B;qBAChC,EACe,cAAA,EAAA,CAAC,uBAAuB,CAAC,EACnC,IAAA,EAAA;AACJ,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,+BAA+B,EAAE,mBAAmB;AACrD,qBAAA,EAAA,QAAA,EAAA,o7GAAA,EAAA,CAAA;;0BA0CE,IAAI;;0BACJ,QAAQ;;0BAQR,QAAQ;;0BACR,QAAQ;;0BACR,MAAM;2BAAC,WAAW,CAAA;4GA/CC,WAAW,EAAA,CAAA;sBAAhC,KAAK;uBAAC,aAAa,CAAA;gBAEM,cAAc,EAAA,CAAA;sBAAvC,MAAM;uBAAC,gBAAgB,CAAA;gBACC,aAAa,EAAA,CAAA;sBAArC,MAAM;uBAAC,eAAe,CAAA;gBAKO,kBAAkB,EAAA,CAAA;sBAA/C,MAAM;uBAAC,oBAAoB,CAAA;gBAED,OAAO,EAAA,CAAA;sBAAjC,SAAS;uBAAC,cAAc,CAAA;gBACH,OAAO,EAAA,CAAA;sBAA5B,SAAS;uBAAC,SAAS,CAAA;gBACa,cAAc,EAAA,CAAA;sBAA9C,YAAY;uBAAC,iBAAiB,CAAA;gBAeG,OAAO,EAAA,CAAA;sBAAxC,YAAY;uBAAC,UAAU,CAAA;gBAkCpB,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,UAAU,CAAA;gBA6FjB,OAAO,EAAA,CAAA;sBADN,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AElOrC;;;;AAIG;MAsBU,cAAc,CAAA;IASzB,WACS,CAAA,QAAwC,EACvC,OAAwB,EACxB,aAAwC,EACxC,eAA0C,EAC1C,GAAqB,EAAA;QAJtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAgC;QACvC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QACxB,IAAa,CAAA,aAAA,GAAb,aAAa,CAA2B;QACxC,IAAe,CAAA,eAAA,GAAf,eAAe,CAA2B;QAC1C,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;QAVvB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QACnC,IAAM,CAAA,MAAA,GAAG,EAAE,CAAC;QAEZ,IAAM,CAAA,MAAA,GAA6B,IAAI,CAAC;AAS9C,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAG;AAC5C,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB,CAAC,CACH,CAAC;KACH;IAED,IACI,QAAQ,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;QACpC,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;IAED,IACI,OAAO,CAAC,KAAyB,EAAA;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;KACzC;IAED,IACI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;KACzC;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AAC7F,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACrD,YAAA,IAAI,OAAO,EAAE;AACX,gBAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;AAC/B,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;AAChC,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACxE,OAAO;AACR,SAAA;QAED,MAAM,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAE1D,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE;AACrC,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;AACrC,SAAA;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAG;gBAChD,MAAM,QAAQ,GAAI,IAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAClD,gBAAA,OAAO,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;AACrF,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAG;AAChD,gBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;oBAC5B,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;AAC7D,iBAAA;AACD,gBAAA,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,IAAG;oBACnD,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,GAAG,KAAK,CAAC;AAC/G,iBAAC,CAAC,CAAC;AACH,gBAAA,OAAO,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,aAAC,CAAC,CAAC;AACJ,SAAA;QACD,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;KACjD;;2GAtFU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAd,cAAc,EAAA,QAAA,EAAA,oCAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,CAAA,qBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oCAAoC;AAC/C,iBAAA,CAAA;sOA2BK,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,kBAAkB,CAAA;gBAOrB,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,uBAAuB,CAAA;gBAM1B,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,qBAAqB,CAAA;;AAqD9B,SAAS,cAAc,CAAC,KAAU,EAAA;AAChC,IAAA,OAAO,KAAK;AACT,SAAA,QAAQ,EAAE;SACV,SAAS,CAAC,KAAK,CAAC;AAChB,SAAA,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;AAC9B,SAAA,WAAW,EAAE,CAAC;AACnB;;ACzHA;;;;AAIG;MA2CU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;QACE,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;KAC3F;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAZb,YAAA,EAAA,CAAA,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,aATxG,YAAY;QACZ,WAAW;QACX,aAAa;QACb,iBAAiB;QACjB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;AACpB,QAAA,gBAAgB,aAIhB,oBAAoB;QACpB,WAAW;QACX,oBAAoB;QACpB,UAAU;QACV,SAAS;QACT,iBAAiB;QACjB,oBAAoB;QACpB,cAAc,CAAA,EAAA,CAAA,CAAA;AAGL,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YArB1B,YAAY;QACZ,WAAW;QACX,aAAa;QACb,iBAAiB;QACjB,oBAAoB;QACpB,oBAAoB;QACpB,oBAAoB;AACpB,QAAA,gBAAgB,EAIhB,oBAAoB;QAMpB,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAIX,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAvB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,WAAW;wBACX,aAAa;wBACb,iBAAiB;wBACjB,oBAAoB;wBACpB,oBAAoB;wBACpB,oBAAoB;wBACpB,gBAAgB;AACjB,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,WAAW,EAAE,oBAAoB,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,CAAC;AAC3G,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,WAAW;wBACX,oBAAoB;wBACpB,UAAU;wBACV,SAAS;wBACT,iBAAiB;wBACjB,oBAAoB;wBACpB,cAAc;AACf,qBAAA;AACF,iBAAA,CAAA;;;AC9CD;;;;AAIG;AA6CG,MAAO,iBAAkB,SAAQ,oBAAoB,CAAA;;8GAA9C,iBAAiB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EA/BjF,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAzC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAQU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnC7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AAC5F,iBAAA,CAAA;;;AChDD;;;;AAIG;AAYG,MAAO,QAAS,SAAQ,kBAAqC,CAAA;IAGjE,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EAAA;AAEd,QAAA,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAX9C,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAY5B;;qGAbU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yFAAR,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE;AACtC,iBAAA,CAAA;;0BAOI,IAAI;;0BACJ,QAAQ;;;ACvBb;;;;AAIG;MAiBU,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CACnB,qBAAqB,EACrB,eAAe;SAChB,CAAC;KACH;;2GANU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAHV,QAAQ,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CADhC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAE9D,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;4GAEhD,cAAc,EAAA,OAAA,EAAA,CAJf,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAE9D,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAEnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;AACzE,oBAAA,YAAY,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC3C,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,CAAC;AAC7D,iBAAA,CAAA;;;ACpBD;;;;AAIG;AAKH,IAAI,OAAO,GAAG,CAAC,CAAC;MAGH,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,GAAG,GAAG,eAAe,GAAG,EAAE,OAAO,CAAC;QAClC,IAAS,CAAA,SAAA,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAanD,KAAA;AAXC,IAAA,IAAI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC;KACtC;;8GAdU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACXX;;;;AAIG;MAaU,WAAW,CAAA;AAKtB,IAAA,WAAA,CAAgC,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAF5D,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAE6B;IAExE,IACI,EAAE,CAAC,OAAe,EAAA;AACpB,QAAA,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,EAAE,GAAG,OAAO,CAAC;AACrC,SAAA;AAAM,aAAA,IAAI,OAAO,EAAE;AAClB,YAAA,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC;AAC3B,SAAA;KACF;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO;AACR,SAAA;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;KAClG;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;wGA1BU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA8B,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,YAAY;AACrB,qBAAA;AACF,iBAAA,CAAA;;0BAMc,QAAQ;4CAGjB,EAAE,EAAA,CAAA;sBADL,KAAK;;;ACxBR;;;;AAIG;MAMU,YAAY,CAAA;AADzB,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AAO/C,KAAA;AANC,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;IACD,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;yGAPU,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;ACTX;;;;AAIG;AA4DG,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;IAG5D,WACE,CAAA,mBAAwC,EAC5B,aAA4B,EACxC,gBAAkC,EAC1B,YAA0B,EACf,qBAA4C,EAAA;QAE/D,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAH3E,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QACf,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAPjE,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QAWZ,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;KACjG;;iHAbU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAtC,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAVpB,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAA;QACT,mBAAmB;QACnB,aAAa;QACb,gBAAgB;QAChB,YAAY;QACZ,gBAAgB;QAChB,iBAAiB;QACjB,qBAAqB;KACtB,EA3CS,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAgBU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBA/ChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,mBAAmB;wBACnB,aAAa;wBACb,gBAAgB;wBAChB,YAAY;wBACZ,gBAAgB;wBAChB,iBAAiB;wBACjB,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;0BAMI,QAAQ;;;ACrEb;;;;AAIG;AA2BG,MAAO,gBAAiB,SAAQ,kBAAwC,CAAA;AAG5E,IAAA,WAAA,CACsB,YAA0B,EAC9C,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EACN,iBAAoC,EAAA;AAE5C,QAAA,KAAK,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAV9C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAQtC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAI5C,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACnF,SAAA;KACF;IAED,kBAAkB,GAAA;;QAEhB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;KACjG;IAGD,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;AAClC,SAAA;KACF;IAGQ,iBAAiB,GAAA;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AACnC,SAAA;KACF;;6GAvCU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAyE,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,aAAa,EAAE,WAAW;AAC3B,qBAAA;AACF,iBAAA,CAAA;;0BAKI,QAAQ;;0BAGR,IAAI;;0BACJ,QAAQ;0HAmBX,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,CAAA;gBAQZ,iBAAiB,EAAA,CAAA;sBADzB,YAAY;uBAAC,MAAM,CAAA;;;AChEtB;;;;AAIG;MAiBU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC/D;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAHb,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,CADxD,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAE3C,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAElD,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJlB,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FAI1C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,aAAa,CAAC;AACtD,oBAAA,YAAY,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,CAAC;AACnE,oBAAA,OAAO,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,CAAC;AAC/D,iBAAA,CAAA;;;ACpBD;;;;AAIG;AAKH;;AAEG;AAIG,MAAO,+BAAgC,SAAQ,YAAY,CAAA;;4HAApD,+BAA+B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gHAA/B,+BAA+B,EAAA,QAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA/B,+BAA+B,EAAA,UAAA,EAAA,CAAA;kBAH3C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA,CAAA;;AAGD;;AAEG;MAKU,kBAAkB,CAAA;;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAlB,kBAAkB,EAAA,YAAA,EAAA,CATlB,+BAA+B,CAAA,EAAA,OAAA,EAAA,CAA/B,+BAA+B,CAAA,EAAA,CAAA,CAAA;gHAS/B,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,+BAA+B,CAAC;oBAC/C,OAAO,EAAE,CAAC,+BAA+B,CAAC;AAC3C,iBAAA,CAAA;;;ACvBD;;;;AAIG;AAEH;;AAEG;AACI,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAE/C;AACO,MAAM,mBAAmB,GAAG,aAAa,CAAC;AAC1C,MAAM,mBAAmB,GAAG,aAAa,CAAC;AACjD;AACA;AAEO,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC,MAAM,sBAAsB,GAAG,OAAO,CAAC;AAEvC,MAAM,SAAS,GAAG,SAAS,CAAC;AAE5B,MAAM,IAAI,GAAG,MAAM,CAAC;AACpB,MAAM,KAAK,GAAG,IAAI,CAAC;AACnB,MAAM,IAAI,GAAG,IAAI,CAAC;AASlB,MAAM,aAAa,GAA2B;AACnD,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;CAC5B,CAAC;AAEK,MAAM,aAAa,GAA2B;AACnD,IAAA,IAAI,EAAE,eAAe;AACrB,IAAA,MAAM,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;CAC5B,CAAC;AAEK,MAAM,UAAU,GAA2B;AAChD,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;CAC5B,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAAC,CAAC;AAC/B,MAAM,2BAA2B,GAAG,CAAC,CAAC;AACtC,MAAM,uBAAuB,GAAW,oBAAoB,GAAG,2BAA2B;;ACrDjG;;;;AAIG;AAIH;;AAEG;AACa,SAAA,yBAAyB,CAAC,IAAY,EAAE,KAAa,EAAA;;AAEnE,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;AAChD,CAAC;AAED;;AAEG;SACa,MAAM,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;AAC9D,IAAA,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;AAC9C,CAAC;AAED;;;;AAIG;AACG,SAAU,oBAAoB,CAAC,IAAY,EAAA;AAC/C,IAAA,IAAI,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,EAAE;QAC1D,OAAO,CAAC,CAAC,CAAC;AACX,KAAA;IACD,IAAI,IAAI,GAAG,GAAG,EAAE;AACd,QAAA,OAAO,IAAI,CAAC;AACb,KAAA;IACD,MAAM,QAAQ,GAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClD,IAAA,MAAM,OAAO,GAAW,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACzD,IAAA,IAAI,MAAM,GAAW,IAAI,GAAG,OAAO,CAAC;AACpC,IAAA,IAAI,MAAM,GAAG,QAAQ,GAAG,EAAE,EAAE;AAC1B,QAAA,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;AACvB,KAAA;AACD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;AAEe,SAAA,aAAa,CAAC,KAAW,EAAE,KAAW,EAAA;AACpD,IAAA,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,YAAY,IAAI,EAAE;QAClD,QACE,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,WAAW,EAAE;AAC3C,YAAA,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,CAAC,QAAQ,EAAE;YACrC,KAAK,CAAC,OAAO,EAAE,KAAK,KAAK,CAAC,OAAO,EAAE,EACnC;AACH,KAAA;AAAM,SAAA;AACL,QAAA,OAAO,KAAK,CAAC;AACd,KAAA;AACH;;ACtDA;;;;AAIG;MAIU,YAAY,CAAA;AACvB,IAAA,WAAA,CACS,QAAkB,EAClB,YAAwB,GAAA,KAAK,EAC7B,UAAsB,GAAA,KAAK,EAC3B,UAAA,GAAsB,KAAK,EAC3B,UAAA,GAAsB,KAAK,EAC3B,cAAuB,KAAK,EAAA;QAL5B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;QAClB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAiB;QAC7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiB;QAC3B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiB;QAC3B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAiB;QAC3B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;KACjC;AAEJ;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAClC;AACF;;ACxBD;;;;AAIG;MAEU,QAAQ,CAAA;AACnB,IAAA,WAAA,CAAqB,IAAY,EAAW,KAAa,EAAW,IAAY,EAAA;QAA3D,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAW,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAAW,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;KAAI;AAEpF;;AAEG;AACH,IAAA,OAAO,CAAC,GAAa,EAAA;AACnB,QAAA,IAAI,GAAG,EAAE;YACP,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC;AACrF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,KAAa,EAAA;;;;AAIvB,QAAA,MAAM,IAAI,GAAS,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;AACtE,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;KAC1E;AAED;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACvD;IAED,kBAAkB,GAAA;QAChB,OAAO,CAAA,EAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,CAAE,CAAC;KACpE;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,kBAAkB,EAAE,CAAC;KAC3C;AAEO,IAAA,GAAG,CAAC,GAAW,EAAA;AACrB,QAAA,OAAO,GAAG,GAAG,EAAE,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,GAAG,CAAG,EAAA,GAAG,EAAE,CAAC;KACxC;AACF;;ACpDD;;;;AAIG;MASU,iBAAiB,CAAA;IAI5B,WACS,CAAA,QAAuB,EACtB,WAAqB,EACrB,YAAsB,EACtB,KAAe,EAChB,cAAsB,EACrB,aAAwB,EAAA;QALzB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAe;QACtB,IAAW,CAAA,WAAA,GAAX,WAAW,CAAU;QACrB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAU;QACtB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAU;QAChB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAQ;QACrB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAW;QAT1B,IAAiB,CAAA,iBAAA,GAAmB,EAAE,CAAC;QAW7C,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAED;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;AAED;;AAEG;AACH,IAAA,kBAAkB,CAAC,GAAa,EAAA;QAC9B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAChD,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;KACzB;AAED;;;;;AAKG;IACK,sBAAsB,GAAA;;QAE5B,MAAM,iBAAiB,GAAkB,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;QACvE,MAAM,iBAAiB,GAAkB,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;;AAGnE,QAAA,MAAM,0BAA0B,GAAW,IAAI,CAAC,6BAA6B,CAC3E,IAAI,CAAC,QAAQ,CAAC,IAAI,EAClB,IAAI,CAAC,QAAQ,CAAC,KAAK,CACpB,CAAC;AACF,QAAA,MAAM,0BAA0B,GAC9B,uBAAuB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,CAAC;;QAGrF,IAAI,iBAAiB,GAAmB,EAAE,CAAC;QAC3C,IAAI,iBAAiB,GAAmB,EAAE,CAAC;QAE3C,IAAI,0BAA0B,GAAG,CAAC,EAAE;YAClC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAC5C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,EAC7D,IAAI,EACJ,KAAK,CACN,CAAC;AACH,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAErF,IAAI,0BAA0B,GAAG,CAAC,EAAE;YAClC,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAC5C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,EAC3D,IAAI,EACJ,KAAK,CACN,CAAC;AACH,SAAA;;AAGD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QAC7G,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;AAEO,IAAA,cAAc,CAAC,IAAc,EAAA;QACnC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAc,IAAI,CAAC,aAAa,CAAC;AAC3D,QAAA,MAAM,IAAI,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;AAC1C,QAAA,MAAM,EAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;AACxC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAExC,OAAO,EAAE,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC,CAAC;KACxC;AAED;;AAEG;AACK,IAAA,qBAAqB,CAAC,IAAgB,EAAE,UAAmB,EAAE,iBAA0B,EAAA;QAC7F,MAAM,QAAQ,GAAmB,IAAI,CAAC,GAAG,CAAC,GAAG,IAAG;YAC9C,OAAO,IAAI,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;AAC1F,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AAClE,YAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC;AACnD,SAAA;AACD,QAAA,OAAO,QAAQ,CAAC;KACjB;AAED;;;;;;;AAOG;IACK,6BAA6B,CAAC,WAAmB,EAAE,YAAoB,EAAA;QAC7E,MAAM,mBAAmB,GAAW,MAAM,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;AAEzE,QAAA,IAAI,mBAAmB,IAAI,IAAI,CAAC,cAAc,EAAE;AAC9C,YAAA,OAAO,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC;AAClD,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,oBAAoB,GAAG,mBAAmB,GAAG,IAAI,CAAC,cAAc,CAAC;AACzE,SAAA;KACF;AAED;;AAEG;AACK,IAAA,mBAAmB,CAAC,GAAa,EAAA;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;AACvC,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;;AAGG;AACK,IAAA,oBAAoB,CAAC,IAAoB,EAAE,IAAoB,EAAE,IAAoB,EAAA;AAC3F,QAAA,MAAM,cAAc,GAAmB,CAAC,GAAG,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAEnE,MAAM,YAAY,GAAqB,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,2BAA2B,EAAE,CAAC,EAAE,EAAE;YACpD,YAAY,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,oBAAoB,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,CAAC;AAClG,SAAA;AACD,QAAA,OAAO,YAAY,CAAC;KACrB;AAED;;AAEG;IACK,qBAAqB,GAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;AAClE,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC;AACrE,SAAA;KACF;AAED;;;;AAIG;IACK,sBAAsB,GAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACpE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YACzE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AAC9C,SAAA;aAAM,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC/C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;AACxC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAChD,SAAA;KACF;IAEO,gBAAgB,CAAC,GAAa,EAAE,IAAa,EAAA;AACnD,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC;AACzD,SAAA;KACF;AACF;;AC7LD;;;;AAIG;AAeH;;AAEG;MAEU,mBAAmB,CAAA;AAO9B,IAAA,WAAA,CAAsC,MAAc,EAAA;QAAd,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAN5C,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;QAO1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;;AAGD,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;KAChD;AAED,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,IAAI,CAAC,wBAAwB,CAAC;KACtC;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;AAED;;AAEG;IACK,oBAAoB,GAAA;;QAE1B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;AAED;;;AAGG;IACK,oBAAoB,GAAA;;QAE1B,MAAM,OAAO,GAAG,EAAE,CAAC;AACnB,QAAA,MAAM,WAAW,GAAa,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;AAClH,QAAA,MAAM,aAAa,GAAa,iBAAiB,CAC/C,IAAI,CAAC,MAAM,EACX,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,MAAM,CACxB,CAAC,KAAK,EAAE,CAAC;;AAEV,QAAA,MAAM,cAAc,GAAW,IAAI,CAAC,cAAc,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACjE,SAAA;;QAED,IAAI,cAAc,GAAG,CAAC,EAAE;YACtB,MAAM,QAAQ,GAAsC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;AACtF,YAAA,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;AAC3B,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;KAC5B;AAED;;;AAGG;IACK,iCAAiC,GAAA;QACvC,IAAI,CAAC,wBAAwB,GAAG,mBAAmB,CACjD,IAAI,CAAC,MAAM,EACX,SAAS,CAAC,UAAU,EACpB,gBAAgB,CAAC,WAAW,CAC7B,CAAC,KAAK,EAAE,CAAC;KACX;AAED;;;AAGG;IACK,0BAA0B,GAAA;QAChC,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,UAAU,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;KAChH;AAED;;AAEG;IACK,wBAAwB,GAAA;QAC9B,IAAI,CAAC,eAAe,GAAG,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC7D;IAEO,0BAA0B,GAAA;AAChC,QAAA,IAAI,CAAC,iBAAiB,GAAG,mBAAmB,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;KAC9E;;AAvGU,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,kBAOV,SAAS,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAPlB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;0BAQI,MAAM;2BAAC,SAAS,CAAA;;;AC9B/B;;;;AAIG;MAKU,aAAa,CAAA;IAGxB,WAAqB,CAAA,IAAY,EAAW,KAAa,EAAA;QAApC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAW,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACvD,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;AAED;;AAEG;AACH,IAAA,OAAO,CAAC,QAAuB,EAAA;AAC7B,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC;AACrE,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;AACH,IAAA,eAAe,CAAC,GAAa,EAAA;AAC3B,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,OAAO,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK,CAAC;AAC3D,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE;YACpB,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;AAC7C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrD,SAAA;KACF;AAED;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE,EAAE;YACrB,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACrD,SAAA;KACF;AAED;;AAEG;IACK,wBAAwB,GAAA;AAC9B,QAAA,MAAM,kBAAkB,GAAW,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC;aAClC,IAAI,CAAC,IAAI,CAAC;AACV,aAAA,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;AACpB,YAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;AACxD,SAAC,CAAC,CAAC;KACN;AACF;;ACrED;;;;AAIG;AASH;;;;;AAKG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,eAAe,GAAS,IAAI,IAAI,EAAE,CAAC;AAEnC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,OAAO,EAAY,CAAC;AAC7C,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC/C,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,OAAO,EAAQ,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAY,CAAC;AAmHrD,KAAA;AAjHC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC/C;AAED;;AAEG;AACH,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,IAAI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED;;;AAGG;AACH,IAAA,wBAAwB,CAAC,QAAkB,EAAA;AACzC,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;AAC5B,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACxC;AAED;;AAEG;IACH,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5F,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AAChF,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACnF;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC;KACnF;AAED;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,CAAC;KAChE;AAED;;AAEG;IACH,mBAAmB,GAAA;QACjB,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,CAAC,CAAC;KACpE;AAED;;AAEG;IACH,kBAAkB,GAAA;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;AACvD,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACjF,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;KACpC;AAED,IAAA,iBAAiB,CAAC,KAAa,EAAA;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YAC5D,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC9C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3F,SAAA;AACD,QAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;KACpC;;AAGO,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QAC/C,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AAChC,YAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,EAAE,CAAC;AACtC,SAAA;KACF;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,QAAQ,CACxB,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,EAClC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAC/B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAC/B,CAAC;KACH;;kHA5HU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;ACnBX;;;;AAIG;AAMH;;AAEG;MAEU,sBAAsB,CAAA;IACjC,WAAoB,CAAA,OAAe,EAA+B,UAAe,EAAA;QAA7D,IAAO,CAAA,OAAA,GAAP,OAAO,CAAQ;QAA+B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;KAAI;AAErF,IAAA,SAAS,CAAC,KAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,MAAK;gBAC5C,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;AACpE,gBAAA,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,KAAK,EAAE,CAAC;AACjB,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,OAAyB,EAAA;QAClC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;KACvG;AAED,IAAA,gBAAgB,CAAC,OAAyB,EAAA;AACxC,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,aAAa,KAAK,OAAO,CAAC;KACjF;IAEO,uBAAuB,GAAA;;QAE7B,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI,CAC9C,KAAK,EAAE,EACP,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CACjD,CAAC;KACH;;AA5BU,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,wCACY,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAD7C,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;0BAE6B,MAAM;2BAAC,WAAW,CAAA;;;ACf1D;;;;AAIG;MAsBU,aAAa,CAAA;AAcxB,IAAA,WAAA,CAAoB,oBAAyC,EAAA;QAAzC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAqB;AAb7D,QAAA,IAAA,CAAA,aAAa,GAAc;;;;YAIzB,OAAO,EAAE,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9B,OAAO,EAAE,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC;SACpC,CAAC;QAEF,IAAoB,CAAA,oBAAA,GAAW,qBAAqB,CAAC;QAE7C,IAAmB,CAAA,mBAAA,GAA2B,aAAa,CAAC;AAC5D,QAAA,IAAA,CAAA,UAAU,GAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAGhD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;QACvE,IAAI,CAAC,6BAA6B,EAAE,CAAC;KACtC;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,MAAM,GAA6B,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;AACzE,QAAA,OAAO,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;KACpF;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;;;QAGrB,IAAI,CAAC,IAAI,EAAE;;AAET,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACjE,SAAA;KACF;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;;;QAGrB,IAAI,CAAC,IAAI,EAAE;;AAET,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AACzD,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACjE,SAAA;KACF;AAED,IAAA,2BAA2B,CAAC,IAAU,EAAA;AACpC,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;AACzB,gBAAA,OAAO,EAAE,CAAC;AACX,aAAA;AACD,YAAA,MAAM,MAAM,GAAW,IAAI,CAAC,OAAO,EAAE,CAAC;YACtC,MAAM,OAAO,GAAW,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC5C,YAAA,MAAM,OAAO,GAAW,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;AACtE,YAAA,MAAM,QAAQ,GAAW,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,OAAO,CAAC;AAC1E,YAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;gBAC9C,OAAO,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1F,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;gBACrD,OAAO,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;AAC1F,aAAA;AAAM,iBAAA;gBACL,OAAO,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;AAC1F,aAAA;AACF,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;AAED,IAAA,0BAA0B,CAAC,IAAY,EAAA;AACrC,QAAA,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACrC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,MAAM,SAAS,GAAa,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AACxC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;AACrD,QAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;;YAE9C,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,aAAa,EAAE;;YAErD,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA;;YAEL,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAClE,SAAA;KACF;IAEO,6BAA6B,GAAA;QACnC,MAAM,MAAM,GAAW,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC;AACrE,QAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;AAC1C,SAAA;AAAM,aAAA,IAAI,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;AAC3C,YAAA,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC;AAC1C,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,mBAAmB,GAAG,UAAU,CAAC;AACvC,SAAA;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAEO,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,oBAAoB,EAAE;;;AAG7B,YAAA,MAAM,YAAY,GAAW,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YAC9E,MAAM,UAAU,GAAa,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;;;;;AAMjE,YAAA,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AACzC,gBAAA,IAAI,CAAC,UAAU,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAClD,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,KAAK,CAAC,yDAAyD,EAAE,UAAU,CAAC,CAAC;AACtF,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;AACK,IAAA,YAAY,CAAC,KAAa,EAAA;QAChC,OAAO,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;KACjC;AAED;;AAEG;AACK,IAAA,WAAW,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;AAC3D,QAAA,OAAO,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACnE;AAED;;;;;AAKG;AACK,IAAA,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,IAAY,EAAA;;;;;AAKlE;;;;AAIM;;AAGN,QAAA,MAAM,CAAC,GAAW,CAAC,IAAI,CAAC;QACxB,MAAM,CAAC,GAAW,CAAC,KAAK,GAAG,CAAC,CAAC;AAC7B,QAAA,MAAM,CAAC,GAAW,CAAC,IAAI,CAAC;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE;AACvD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,MAAM,MAAM,GAAW,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC/C,OAAO,MAAM,KAAK,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;KACtD;;0GAlKU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACzBX;;;;AAIG;MAMU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAQ,CAAC;AACrC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ,CAAC;AAsB5C,KAAA;AApBC,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC3C;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC1B;;AAGD,IAAA,WAAW,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;;mHAzBU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;ACTX;;;;AAIG;MAiCU,MAAM,CAAA;AAGjB,IAAA,WAAA,CACU,sBAA6C,EAC7C,cAAuC,EACvC,sBAA8C,EAC9C,aAAsC,EAAA;QAHtC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAuB;QAC7C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAyB;QACvC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAC9C,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;KAC5C;AAEJ;;AAEG;AAEH,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,GAAiB,EAAA;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;KACrB;AAED,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;AAC5B,cAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE;gBACxE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE;aACjD,CAAC;cACF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KAC3C;AAED;;AAEG;IACH,cAAc,GAAA;QACZ,IAAI,CAAC,sBAAsB,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;KAChE;AAED;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,MAAM,GAAG,GAAa,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC5C,QAAA,IAAI,CAAC,sBAAsB,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,KAAK,CAAC;KAClC;;mGA7CU,MAAM,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAApE,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqE,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAN,MAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAM,EApBP,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,SAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAGU,MAAM,EAAA,UAAA,EAAA,CAAA;kBAtBlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE;AAChC,iBAAA,CAAA;iNAgBK,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,YAAY,CAAA;;;ACnDrB;;;;AAIG;MAqBU,WAAW,CAAA;IAQtB,WACU,CAAA,oBAAyC,EACzC,sBAA6C,EAC7C,uBAA+C,EAC/C,cAA6B,EAC7B,MAAkB,EAAA;QAJlB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAqB;QACzC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAuB;QAC7C,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAwB;QAC/C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAe;QAC7B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QAPpB,IAAK,CAAA,KAAA,GAAmB,EAAE,CAAC;QASjC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;AAED;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;KAC7C;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC;KACtD;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC;KAChD;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;KAC/C;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;KAC1C;AAED;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAiB,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAC9D;AAED;;AAEG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE;AAC5B,YAAA,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;gBAC7B,KAAK,IAAI,CAAC,OAAO;oBACf,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC;oBACzE,MAAM;gBACR,KAAK,IAAI,CAAC,SAAS;oBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC;oBACpE,MAAM;gBACR,KAAK,IAAI,CAAC,SAAS;oBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;oBACvB,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,MAAM;gBACR,KAAK,IAAI,CAAC,UAAU;oBAClB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,oBAAA,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;oBACjD,MAAM;AACR,gBAAA;AACE,oBAAA,MAAM;AACT,aAAA;AACF,SAAA;KACF;AAED;;;;;AAKG;IACK,uBAAuB,GAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,sBAAsB,CAAC,uBAAuB,CAAC,SAAS,CAAC,MAAK;YACjE,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,UAAoB,KAAI;AAC9E,YAAA,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC;SACvD,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CACb,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,SAAS,CAAC,MAAK;YAC/D,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACrD,CAAC,CACH,CAAC;KACH;AAED;;AAEG;IACK,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAC5C,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,oBAAoB,CAAC,cAAc,EACxC,IAAI,CAAC,cAAc,CAAC,aAAa,CAClC,CAAC;KACH;;wGA3HU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,6GCzBxB,sdAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDaa,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,sdAAA,EAAA,CAAA;4NA+DxB,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AEpFrC;;;;AAIG;AAEH;;;;;;;;;AASG;AAEH;AACA;AACO,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAC9B,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAC7B,MAAM,sBAAsB,GAAG,IAAI;;ACvB1C;;;;AAIG;MASU,wBAAwB,CAAA;AAInC,IAAA,WAAA,CAAsC,SAAc,EAAA;QAAd,IAAS,CAAA,SAAA,GAAT,SAAS,CAAK;QAH5C,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;QAIjC,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YACjG,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC;AACrD,SAAA;KACF;AAED;;;;AAIG;AACH,IAAA,IAAI,SAAS,GAAA;;;;;QAKX,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,IAAI,CAAC,WAAW,GAAG,4BAA4B,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC9E,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;;AA3BU,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAIf,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAJjB,wBAAwB,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;0BAKI,MAAM;2BAAC,QAAQ,CAAA;;;ACjB9B;;;;AAIG;AAaH;;AAEG;MAEU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,QAAQ,GAAuB,mBAAmB,CAAC,aAAa,CAAC,CAAC;AAE1D,QAAA,IAAA,CAAA,YAAY,GAAkD,SAAA,kCAAA;AAyBvE,KAAA;AAvBC,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,YAAY,KAAA,SAAA,kCAAgC;KACzD;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,YAAY,KAAA,UAAA,mCAAiC;KAC1D;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,KAAA,WAAA,oCAAkC;KAC3D;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,YAAY,GAAA,WAAA,oCAAgC;KAClD;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,YAAY,GAAA,UAAA,mCAA+B;KACjD;IAED,eAAe,GAAA;QACb,IAAI,CAAC,YAAY,GAAA,SAAA,kCAA8B;KAChD;;+GA3BU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACpBX;;;;AAIG;MA6BU,cAAc,CAAA;IAMzB,WACU,CAAA,mBAAuC,EACvC,oBAAyC,EACzC,sBAA6C,EAC7C,uBAA+C,EAC/C,MAAkB,EAAA;QAJlB,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAoB;QACvC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAqB;QACzC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAuB;QAC7C,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAwB;QAC/C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;AAE1B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;KACnD;AAED;;;AAGG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;KACnD;AAED;;AAEG;AACH,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC;KAC5D;AAED;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;AAEG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;AAI5B,QAAA,IAAI,KAAK,EAAE;YACT,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE;gBACvD,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,aAAA;iBAAM,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,GAAG,EAAE,EAAE;gBACjE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,aAAA;iBAAM,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE;gBACjE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,aAAA;iBAAM,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE;gBAChE,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;gBACtD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrD,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,UAAkB,EAAA;AAC5B,QAAA,OAAO,UAAU,KAAK,IAAI,CAAC,kBAAkB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KACxD;;2GAlFU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAhBf,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAKU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAlB1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC9B,qBAAA;AACF,iBAAA,CAAA;iOA2CC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC1ErC;;;;AAIG;AAEH,MAAM,gBAAgB,GAAG,EAAE,CAAC;MAEf,cAAc,CAAA;AAGzB,IAAA,WAAA,CAA6B,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAFzC,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;QAGvB,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;KAC9D;AAED;;AAEG;IACH,UAAU,GAAA;QACR,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;KAC3C;AAED;;AAEG;IACH,cAAc,GAAA;QACZ,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;KAC3C;AAED;;AAEG;IACH,aAAa,GAAA;QACX,OAAO,IAAI,cAAc,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;KACrD;AAED;;AAEG;AACH,IAAA,OAAO,CAAC,KAAa,EAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KAC3C;AAED;;;AAGG;IACK,iBAAiB,GAAA;AACvB,QAAA,MAAM,SAAS,GAAW,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;AACvD,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AAC5C,QAAA,MAAM,IAAI,GAAW,KAAK,GAAG,gBAAgB,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KAClD;AAED;;AAEG;IACK,aAAa,CAAC,KAAa,EAAE,IAAY,EAAA;QAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC;KACnE;AACF;;ACnED;;;;AAIG;MA0DU,aAAa,CAAA;IAWxB,WACU,CAAA,sBAA6C,EAC7C,mBAAuC,EACvC,uBAA+C,EAC/C,MAAkB,EACnB,aAAsC,EAAA;QAJrC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAuB;QAC7C,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAoB;QACvC,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAwB;QAC/C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAY;QACnB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAE7C,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;KACvC;AAED;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC;KAC3D;AAED;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;AAEG;AAEH,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;AAI5B,QAAA,IAAI,KAAK,EAAE;YACT,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AACpC,YAAA,IAAI,GAAG,KAAK,IAAI,CAAC,OAAO,EAAE;gBACxB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAA;AAAM,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,UAAU,EAAE;gBAClC,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAC9B,aAAA;AAAM,iBAAA,IAAI,GAAG,KAAK,IAAI,CAAC,SAAS,EAAE;gBACjC,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/B,aAAA;AACF,SAAA;KACF;AAED;;;AAGG;AACH,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7C,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;KAC5C;AAED;;AAEG;IACH,cAAc,GAAA;QACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;;;KAG5D;AAED;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACxE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;AAC3D,SAAA;QACD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;AAED;;AAEG;IACH,UAAU,GAAA;QACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;;;KAGxD;AAED;;AAEG;AACH,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACnD,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;AAClD,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AACvC,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACpD,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,YAAY,KAAK,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAC5C;AAED;;;AAGG;AACK,IAAA,oBAAoB,CAAC,KAAa,EAAA;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACnD,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;AACxD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;AAC5D,aAAA;AACF,SAAA;QACD,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;;0GA/HU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAP,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EA5Cd,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,SAAA,EAAA,mBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAKU,aAAa,EAAA,UAAA,EAAA,CAAA;kBA9CzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,oBAAoB,EAAE,MAAM;AAC7B,qBAAA;AACF,iBAAA,CAAA;qOAyCC,SAAS,EAAA,CAAA;sBADR,YAAY;uBAAC,SAAS,EAAE,CAAC,QAAQ,CAAC,CAAA;;;ACrGrC;;;;AAIG;MAcU,YAAY,CAAA;AACvB,IAAA,WAAA,CACU,mBAAuC,EACvC,sBAA6C,EAC7C,oBAAyC,EAC1C,aAAsC,EAAA;QAHrC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAoB;QACvC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAuB;QAC7C,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAqB;QAC1C,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;KAC3C;AAEJ,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjF,cAAc,EAAE,IAAI,CAAC,aAAa;AACnC,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAChF,YAAA,aAAa,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AAC5C,SAAA,CAAC,CAAC;KACJ;AAED;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;KAC/G;AAED;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,iBAAiB,CAAC,IAAI,CAAC;KAC3D;AAED;;AAEG;IACH,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE,CAAC;KAC9C;AAED;;AAEG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;KAC7C;AAED;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,sBAAsB,CAAC,eAAe,EAAE,CAAC;KAC/C;AAED;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,CAAC;KACnD;AAED;;AAEG;IACH,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE,CAAC;KAClD;;yGAnEU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,0GClBzB,gvDAmDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnF,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8F,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDjCa,YAAY,EAAA,UAAA,EAAA,CAAA;kBALxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAEnB,IAAA,EAAA,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,gvDAAA,EAAA,CAAA;;;AEhBvC;;;;AAIG;MAmBU,wBAAwB,CAAA;IACnC,WAAmB,CAAA,aAAsC,EAAU,kBAAsC,EAAA;QAAtF,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAAU,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;KAAI;AAE7G;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC;KAC3C;AAED;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC;KAC1C;;qHAtBU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlG,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAgG,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,wBAAwB,EARxB,QAAA,EAAA,6BAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,iBAAA,EAAA,0CAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,sBAAsB,CAAC,0BCfrC,mYASA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAG,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDca,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAXpC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,EAE5B,SAAA,EAAA,CAAC,sBAAsB,CAAC,EAC7B,IAAA,EAAA;AACJ,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,mBAAmB,EAAE,0CAA0C;AAC/D,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA,EAAA,QAAA,EAAA,mYAAA,EAAA,CAAA;;;AErBH;;;;AAIG;AA0FG,MAAO,gBAAiB,SAAQ,oBAAoB,CAAA;IAKxD,WACY,CAAA,QAAmB,EACrB,aAAsC,EACtC,qBAA4C,EAC5C,wBAAkD,EAClD,sBAA8C,EAC9C,aAA4B,EAC7B,aAAsC,EACrC,YAA0B,EAC1B,kBAAsC,EAC3B,mBAAwC,EAC5B,aAA4B,EACxC,gBAAkC,EAClC,qBAA4C,EAAA;QAE/D,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAdzE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACrB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QAC9C,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC7B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAoB;QAC3B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QAC5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QACxC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAjBjE,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAqBZ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;AAC3C,YAAA,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,CAAC;SAC7C,CAAC,CACH,CAAC;KACH;IAED,IACI,WAAW,CAAC,QAAgB,EAAA;AAC9B,QAAA,IAAI,QAAQ,IAAK,mBAA2C,CAAC,QAAQ,CAAC,EAAE;YACtE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,GAAI,mBAA2C,CAAC,QAAQ,CAAC,CAAC;AAC3F,SAAA;KACF;IAED,IACI,YAAY,CAAC,MAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;KAC5B;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;KACzC;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;KAChC;AAED;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;KAChD;AAED;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;;QAErB,QACE,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,MAAM,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,EAChH;KACH;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;AAC7C,YAAA,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC3B,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACzC,aAAA;SACF,CAAC,CACH,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACtD;AAED;;;AAGG;AACK,IAAA,oBAAoB,CAAC,GAAa,EAAA;AACxC,QAAA,IAAI,GAAG,EAAE;AACP,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAEnF,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA+B,EAAE;AACvF,gBAAA,aAAa,EAAE,aAAa;AAC7B,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,+BAA+B,CAAC;KAChE;IAEO,oBAAoB,GAAA;;;;AAI1B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB;aAChD,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;aACvD,SAAS,CAAC,GAAG,IAAG;YACf,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC7C,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC;gBACjD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC1D,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACtD,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAED;;AAEG;IACK,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,qBAAqB,CAAC,kBAAkB,EAAE,CAAC;KACjD;;6GA1HU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAjF,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmE,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EArBhB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,qBAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAA;QACT,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,YAAY;QACZ,gBAAgB;QAChB,aAAa;QACb,qBAAqB;QACrB,wBAAwB;QACxB,sBAAsB;QACtB,kBAAkB;QAClB,qBAAqB;KACtB,EAtDS,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,wBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAsBU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAjE5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCT,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE;wBACT,gBAAgB;wBAChB,mBAAmB;wBACnB,mBAAmB;wBACnB,YAAY;wBACZ,gBAAgB;wBAChB,aAAa;wBACb,qBAAqB;wBACrB,wBAAwB;wBACxB,sBAAsB;wBACtB,kBAAkB;wBAClB,qBAAqB;AACtB,qBAAA;oBACD,cAAc,EAAE,CAAC,uBAAuB,CAAC;AACzC,oBAAA,IAAI,EAAE;AACJ,wBAAA,4BAA4B,EAAE,MAAM;AACpC,wBAAA,mCAAmC,EAAE,qBAAqB;AAC1D,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;AACF,iBAAA,CAAA;;0BAiBI,QAAQ;yGAoBP,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,aAAa,CAAA;gBAQhB,YAAY,EAAA,CAAA;sBADf,SAAS;uBAAC,cAAc,CAAA;;;ACxI3B;;;;AAIG;AAsCH;AACA;AACA;AACA;AACA;AASM,MAAO,YAAa,SAAQ,kBAAoC,CAAA;IAWpE,WACE,CAAA,gBAAkC,EAClC,QAAkB,EACC,EAAc,EACd,QAAmB,EAG5B,OAAkB,EACR,SAA2B,EAC3B,aAA4B,EAC5B,qBAA4C,EAC5C,wBAAkD,EAClD,sBAA8C,EACrC,UAAe,EACxB,YAA0B,EACtC,sBAA8C,EAAA;AAEtD,QAAA,KAAK,CAAC,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAdxD,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAG5B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAW;QACR,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAC3B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QAC5C,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;QAClD,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;QACrC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QACxB,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QACtC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAwB;AAtB/B,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAO,KAAK,CAAC,CAAC;QAEjD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAuB5B;IAED,IACI,IAAI,CAAC,IAAmB,EAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE;YACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,yBAAyB,CAAC,IAAY,CAAC,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;AAClC,YAAA,IAAI,CAAC,wBAAwB,GAAG,IAAY,CAAC;AAC9C,SAAA;KACF;IAED,IACI,GAAG,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAED,IACI,GAAG,CAAC,UAAkB,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,IAEI,QAAQ,CAAC,KAAuB,EAAA;QAClC,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,SAAA;KACF;AAED,IAAA,IACI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC;KACjF;AAED,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,qBAAqB,EAAE,GAAG,MAAM,GAAG,MAAM,CAAC;KAC7F;IAEQ,QAAQ,GAAA;QACf,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,sCAAsC,EAAE,CAAC;AAE9C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,+BAA+B,EAAE,EACtC,IAAI,CAAC,4BAA4B,EAAE,EACnC,IAAI,CAAC,qBAAqB,EAAE,EAC5B,IAAI,CAAC,qBAAqB,EAAE,EAC5B,IAAI,CAAC,qBAAqB,EAAE,CAC7B,CAAC;KACH;IAED,eAAe,GAAA;;;;;;;;QAQb,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAGD,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrB;IAGQ,iBAAiB,GAAA;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KACtB;AAGD,IAAA,aAAa,CAAC,MAAwB,EAAA;AACpC,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnF,QAAA,IAAI,IAAI,CAAC,sBAAsB,EAAE,IAAI,cAAc,EAAE;AACnD,YAAA,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;AACvC,YAAA,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;AAC1D,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAA;KACF;IAEO,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;KAChD;IAEO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC;KACjD;AAEO,IAAA,QAAQ,CAAC,KAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AACnC,SAAA;KACF;IAEO,wBAAwB,GAAA;AAC9B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;;AAEnC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,sBAAsB,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC9D,SAAA;KACF;IAEO,sCAAsC,GAAA;AAC5C,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,aAAa,CAAC,CAAC;YAClE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,qBAAqB,CAAC,CAAC;YAClF,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,CAAC,wBAAwB,CAAC,CAAC;YACxF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;AACrF,SAAA;KACF;IAEO,oBAAoB,GAAA;AAC1B,QAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,EAAE;AACnC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACpF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;AAChD,SAAA;KACF;AAEO,IAAA,UAAU,CAAC,KAAW,EAAE,oBAAoB,GAAG,KAAK,EAAA;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AAEnD,QAAA,IAAI,oBAAoB,EAAE;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC3B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,SAAA;QAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;AAC9B,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,IAAI;AAC3C,kBAAE,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;kBACjE,IAAI,CAAC;AACV,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KACxB;AAEO,IAAA,WAAW,CAAC,IAAU,EAAA;AAC5B,QAAA,IAAI,IAAI,EAAE;YACR,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;AACxE,YAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;;AAEhC,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC9D,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;AACvE,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,wBAAwB,EAAE,IAAI,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;gBAC/E,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AAC3C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;AACvE,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;AAC/D,SAAA;KACF;AAEO,IAAA,yBAAyB,CAAC,IAAU,EAAA;QAC1C,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;YACxE,OAAO,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;AAEO,IAAA,cAAc,CAAC,IAAU,EAAA;QAC/B,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,kBAAkB,CAAC,EAAE;AACjD,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,SAAA;AAAM,aAAA,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;AAC3C,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC3B,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,SAAA;KACF;IAEO,wBAAwB,GAAA;AAC9B,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;KACvB;IAEO,4BAA4B,GAAA;AAClC,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACvC,IAAI,CACH,MAAM,CAAC,UAAU,IAAI,UAAU,CAAC,EAChC,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;;AAE1C,QAAA,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CACnF;aACA,SAAS,CAAC,CAAC,KAAa,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxG;IAEO,+BAA+B,GAAA;QACrC,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;KACrH;IAEO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,aAAa;aAC7C,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;AACnD,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;KAC1D;IAEO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW;aAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC,CAAC;AACnD,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACxD;IAEO,qBAAqB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,iBAAiB;aAChD,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;AAC5B,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;KACnF;;AA/PU,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,maAwBb,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAd,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAxBV,YAAY,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,GAAA,EAAA,KAAA,EAAA,GAAA,EAAA,KAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAFZ,CAAC,sBAAsB,CAAC,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAExB,YAAY,EAAA,UAAA,EAAA,CAAA;kBAPxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC5B,qBAAA;oBACD,SAAS,EAAE,CAAC,sBAAsB,CAAC;AACpC,iBAAA,CAAA;;0BAiBI,IAAI;;0BACJ,QAAQ;;0BAER,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;;0BACR,QAAQ;;0BACR,MAAM;2BAAC,WAAW,CAAA;;0BAClB,QAAQ;8EAtBF,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACmB,UAAU,EAAA,CAAA;sBAAlC,MAAM;uBAAC,eAAe,CAAA;gBA4BnB,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,SAAS,CAAA;gBAYZ,GAAG,EAAA,CAAA;sBADN,KAAK;gBAOF,GAAG,EAAA,CAAA;sBADN,KAAK;gBAeF,QAAQ,EAAA,CAAA;sBAFX,KAAK;uBAAC,UAAU,CAAA;;sBAChB,WAAW;uBAAC,UAAU,CAAA;gBAQnB,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,kBAAkB,CAAA;gBAM3B,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,WAAW,CAAA;gBA8BxB,cAAc,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,CAAA;gBAMZ,iBAAiB,EAAA,CAAA;sBADzB,YAAY;uBAAC,MAAM,CAAA;gBAOpB,aAAa,EAAA,CAAA;sBADZ,YAAY;uBAAC,QAAQ,EAAE,CAAC,eAAe,CAAC,CAAA;;;ACzK3C;;;;AAIG;MAWU,qBAAqB,CAAA;AAChC,IAAA,WAAA,CAAgC,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAAI;AAEhE,IAAA,QAAQ,CAAC,OAAwB,EAAA;QAC/B,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,0BAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3E,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAClE,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;AAElE,YAAA,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AACtE,gBAAA,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAC3F,aAAA;AAAM,iBAAA,IAAI,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE;AAC7E,gBAAA,OAAO,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC;AAC3F,aAAA;AACF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACb;;kHAjBU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAFrB,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,qBAAqB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAE7E,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAA,qBAAuB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACzF,iBAAA,CAAA;;0BAEc,QAAQ;;;AChBvB;;;;AAIG;AA6BU,MAAA,yBAAyB,GAAgB;IACpD,MAAM;IACN,gBAAgB;IAChB,YAAY;IACZ,qBAAqB;IACrB,wBAAwB;IACxB,cAAc;IACd,aAAa;IACb,YAAY;IACZ,WAAW;EACX;MAeW,mBAAmB,CAAA;AAC9B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;KACnG;;gHAHU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAxB9B,MAAM;QACN,gBAAgB;QAChB,YAAY;QACZ,qBAAqB;QACrB,wBAAwB;QACxB,cAAc;QACd,aAAa;QACb,YAAY;AACZ,QAAA,WAAW,aAKT,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,oBAAoB;QACpB,oBAAoB;QACpB,aAAa;AACb,QAAA,oBAAoB,aAnBtB,MAAM;QACN,gBAAgB;QAChB,YAAY;QACZ,qBAAqB;QACrB,wBAAwB;QACxB,cAAc;QACd,aAAa;QACb,YAAY;QACZ,WAAW,CAAA,EAAA,CAAA,CAAA;AAgBA,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAX5B,YAAY;QACZ,kBAAkB;QAClB,qBAAqB;QACrB,oBAAoB;QACpB,oBAAoB;QACpB,aAAa;QACb,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAKX,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,kBAAkB;wBAClB,qBAAqB;wBACrB,oBAAoB;wBACpB,oBAAoB;wBACpB,aAAa;wBACb,oBAAoB;AACrB,qBAAA;oBACD,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;ACzDD;;;;AAIG;MAcU,cAAc,GAAG,IAAI,cAAc,CAA2B,SAAS,EAAE;SACtE,oBAAoB,GAAA;AAClC,IAAA,OAAO,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;AAC7C,CAAC;AACM,MAAM,uBAAuB,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,oBAAoB,GAAG;AA0D/F,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;AAM5D,IAAA,WAAA,CACE,qBAA4C,EAChC,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAC3B,YAA0B,EACD,aAAuC,EAChE,aAAsC,EAAA;QAE7C,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAJ5E,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QACD,IAAa,CAAA,aAAA,GAAb,aAAa,CAA0B;QAChE,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAZ/C,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QACb,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QAEN,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;;AAcrB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9C,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB,CAAC,CACH,CAAC;KACH;AAED,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IACD,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AACnB,SAAA;KACF;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACpC;AAED,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;KACzF;AAED,IAAA,gBAAgB,CAAC,KAAa,EAAA;QAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;KACzF;;AA/CU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,oLAYrB,cAAc,EAAA,EAAA,EAAA,KAAA,EAAAjB,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAZb,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EATpB,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAA;QACT,gBAAgB;QAChB,gBAAgB;QAChB,mBAAmB;QACnB,YAAY;QACZ,uBAAuB;QACvB,qBAAqB;KACtB,EApDS,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1E,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2F,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAeU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAxDhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;AACD,oBAAA,SAAS,EAAE;wBACT,gBAAgB;wBAChB,gBAAgB;wBAChB,mBAAmB;wBACnB,YAAY;wBACZ,uBAAuB;wBACvB,qBAAqB;AACtB,qBAAA;AACF,iBAAA,CAAA;;0BASI,QAAQ;;0BAIR,MAAM;2BAAC,cAAc,CAAA;+EAcpB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW,CAAA;;;ACzGpB;;;;AAIG;AA0BG,MAAO,WAAY,SAAQ,kBAAwC,CAAA;AAGvE,IAAA,WAAA,CACE,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EACM,YAA0B,EAGtC,aAAuC,EAAA;AAE/C,QAAA,KAAK,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAL9C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAGtC,IAAa,CAAA,aAAA,GAAb,aAAa,CAA0B;QAb9B,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AAiB3B,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACnF,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,IAAG;AACpC,YAAA,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;SAC9E,CAAC,CACH,CAAC;KACH;IAGD,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;AAClC,SAAA;KACF;IAGQ,iBAAiB,GAAA;QACxB,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AACnC,SAAA;KACF;;AA1CU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,2NAaZ,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAbb,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE;AACtC,iBAAA,CAAA;;0BAOI,IAAI;;0BACJ,QAAQ;;0BAIR,QAAQ;;0BACR,QAAQ;;0BACR,MAAM;2BAAC,cAAc,CAAA;4CAiBxB,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,CAAA;gBAQZ,iBAAiB,EAAA,CAAA;sBADzB,YAAY;uBAAC,MAAM,CAAA;;;AClEtB;;;;AAIG;MAiBU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;QACE,YAAY,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC;KACrF;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAHb,WAAW,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CADtC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAE9D,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;+GAEtD,iBAAiB,EAAA,OAAA,EAAA,CAJlB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAE9D,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAEnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;AACzE,oBAAA,YAAY,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC;AACjD,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,CAAC;AACnE,iBAAA,CAAA;;;ACpBD;;;;AAIG;MAoBU,eAAe,CAAA;AAZ5B,IAAA,WAAA,GAAA;;;;QAgBE,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAQlB,KAAA;IALC,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;AAC1B,SAAA;KACF;;4GAXU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,yGAFf,CAAC,gBAAgB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAOf,QAAQ,EAfZ,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvF,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAe,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAMU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAZ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,2BAA2B,EAAE,MAAM;AACpC,qBAAA;oBACD,SAAS,EAAE,CAAC,gBAAgB,CAAC;AAC9B,iBAAA,CAAA;8BAM2C,KAAK,EAAA,CAAA;sBAA9C,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;AC7B1C;;;;AAIG;AAWG,MAAO,QAAS,SAAQ,kBAAmC,CAAA;IAC/D,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EAAA;AAEd,QAAA,KAAK,CAAC,GAAG,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;KAC9D;;qGAXU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yFAAR,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAHpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA,CAAA;;0BAKI,IAAI;;0BACJ,QAAQ;;;ACpBb;;;;AAIG;AAgDG,MAAO,iBAAkB,SAAQ,oBAAoB,CAAA;AAOzD,IAAA,WAAA,CACiC,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAClC,qBAA4C,EAAA;QAE/D,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QALpD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QACxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QANzD,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;KAStB;AAED;;;;;AAKG;AACH,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,SAAS,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,KAAK,OAAO,GAAG,KAAK,GAAG,IAAI,CAAC;AAChD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;AACvB,SAAA;KACF;IAEQ,kBAAkB,GAAA;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;KACjD;;8GAxCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAFjB,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC,EAK5E,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,SAAA,EAAA,QAAQ,EArCf,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuE,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlE,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FASU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApC7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC9B,wBAAA,aAAa,EAAE,MAAM;AACtB,qBAAA;oBACD,SAAS,EAAE,CAAC,gBAAgB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,kBAAkB,CAAC;AAC9F,iBAAA,CAAA;;0BASI,QAAQ;wIALuC,MAAM,EAAA,CAAA;sBAAvD,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBAoB5C,SAAS,EAAA,CAAA;sBADZ,KAAK;;;AC1ER;;;;AAIG;MAkBU,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC/D;;2GAHU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,CAHV,QAAQ,EAAE,iBAAiB,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CADjD,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,CAExE,EAAA,OAAA,EAAA,CAAA,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;4GAEjE,cAAc,EAAA,OAAA,EAAA,CAJf,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAExE,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAEnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,CAAC;AACnF,oBAAA,YAAY,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,eAAe,CAAC;oBAC5D,OAAO,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,eAAe,CAAC;AAC9E,iBAAA,CAAA;;;ACrBD;;;;AAIG;AA+CG,MAAO,iBAAkB,SAAQ,oBAAoB,CAAA;IAIzD,WACc,CAAA,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAC1B,QAAmB,EACnB,SAA2B,EAChB,qBAA4C,EAAA;QAE/D,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QAJ3E,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAkB;QAChB,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QATzD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;KAY5B;AAED,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,GAAY,EAAA;AAC1B,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,YAAY,EAAE;AACjC,YAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;AAC7B,SAAA;KACF;IAED,yBAAyB,GAAA;AACvB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAExC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,IAAI,CAAC,0BAA0B,CAAC;AACxC,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC;AACrC,QAAA,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AACjC,QAAA,IAAI,aAAa,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAE/B,QAAA,IAAI,aAAa,KAAK,CAAC,IAAI,aAAa,KAAK,CAAC,EAAE;YAC9C,aAAa,GAAG,GAAG,CAAC;AACrB,SAAA;QAED,MAAM,WAAW,GAAG,CAAC,aAAa,GAAG,aAAa,IAAI,CAAC,CAAC;QACxD,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;AACzG,QAAA,MAAM,cAAc,GAAG,CAAC,CAAC,UAAU,GAAG,aAAa,IAAI,GAAG,KAAK,aAAa,GAAG,aAAa,CAAC,CAAC;AAE9F,QAAA,IAAI,CAAC,0BAA0B,GAAG,CAAC,cAAc,GAAG,UAAU,IAAI,GAAG,GAAG,IAAI,CAAC;QAE7E,OAAO,IAAI,CAAC,0BAA0B,CAAC;KACxC;IAEO,kBAAkB,GAAA;QACxB,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAC3E,SAAA;QAAC,MAAM;AACN,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;KACF;;8GAxDU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAf,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAmF,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA5C,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,qBAAA,EAAA,aAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAFjB,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAhCjF,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAF,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAQU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBApC7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AAC5F,iBAAA,CAAA;;0BAMI,QAAQ;4LAWP,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,qBAAqB,CAAA;;;AClE9B;;;;AAIG;AAYG,MAAO,QAAS,SAAQ,kBAAqC,CAAA;IACjE,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EAAA;AAEd,QAAA,KAAK,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;KAChE;;qGAXU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yFAAR,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,IAAI,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE;AACtC,iBAAA,CAAA;;0BAKI,IAAI;;0BACJ,QAAQ;;;ACrBb;;;;AAIG;MAiBU,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC/D;;2GAHU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,iBAHV,QAAQ,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CADhC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,CAAA,EAAA,OAAA,EAAA,CAExE,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;4GAEhD,cAAc,EAAA,OAAA,EAAA,CAJf,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAExE,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAEnB,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,CAAC;AACnF,oBAAA,YAAY,EAAE,CAAC,QAAQ,EAAE,iBAAiB,CAAC;AAC3C,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,QAAQ,EAAE,iBAAiB,CAAC;AAC7D,iBAAA,CAAA;;;ACpBD;;;;AAIG;AA+CG,MAAO,kBAAmB,SAAQ,oBAAoB,CAAA;AAI1D,IAAA,WAAA,CACiC,aAA4B,EACxC,mBAAwC,EACxC,gBAAkC,EAClC,qBAA4C,EAAA;QAE/D,KAAK,CAAC,qBAAqB,EAAE,aAAa,EAAE,mBAAmB,EAAE,gBAAgB,CAAC,CAAC;QALpD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QACxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACxC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAqB,CAAA,qBAAA,GAArB,qBAAqB,CAAuB;QANzD,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;KASrB;IAED,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAG;AACvD,YAAA,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,aAAa,YAAY,kCAAkC,CAAC;AACjF,gBAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACxB,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,YAAY,GAAA;QACV,OAAO,IAAI,CAAC,KAAK,GAAG,yBAAyB,GAAG,oBAAoB,CAAC;KACtE;;+GA3BU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAV,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAW,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAFlB,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAG7E,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,kCAAkC,EAlCtC,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAQU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAnC9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AAC5F,iBAAA,CAAA;;0BAMI,QAAQ;wIAJ0D,QAAQ,EAAA,CAAA;sBAA5E,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kCAAkC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;;;ACpDrE;;;;AAIG;AAYG,MAAO,SAAU,SAAQ,kBAAsC,CAAA;IAGnE,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EAAA;AAEd,QAAA,KAAK,CAAC,GAAG,EAAE,kBAAkB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAX/C,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAY5B;;sGAbU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0FAAT,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBAJrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,IAAI,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE;AACvC,iBAAA,CAAA;;0BAOI,IAAI;;0BACJ,QAAQ;;;ACvBb;;;;AAIG;MAiBU,eAAe,CAAA;AAC1B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC/D;;4GAHU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAHX,SAAS,EAAE,kBAAkB,CAAA,EAAA,OAAA,EAAA,CADlC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAE9D,oBAAoB,EAAE,SAAS,EAAE,kBAAkB,CAAA,EAAA,CAAA,CAAA;6GAElD,eAAe,EAAA,OAAA,EAAA,CAJhB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAE9D,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAEnB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;AACzE,oBAAA,YAAY,EAAE,CAAC,SAAS,EAAE,kBAAkB,CAAC;AAC7C,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,SAAS,EAAE,kBAAkB,CAAC;AAC/D,iBAAA,CAAA;;;ACpBD;;;;AAIG;AA6CG,MAAO,oBAAqB,SAAQ,oBAAoB,CAAA;;iHAAjD,oBAAoB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,WAAA,EAAA,EAAA,EAAA,SAAA,EAFpB,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EA/BjF,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAW,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAQU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAnChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,0BAA0B,EAAE,MAAM;AAClC,wBAAA,mCAAmC,EAAE,mBAAmB;AACxD,wBAAA,iBAAiB,EAAE,WAAW;AAC/B,qBAAA;oBACD,SAAS,EAAE,CAAC,qBAAqB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC;AAC5F,iBAAA,CAAA;;;AChDD;;;;AAIG;AAYG,MAAO,WAAY,SAAQ,kBAAwC,CAAA;IAGvE,WACE,CAAA,GAAqB,EACrB,QAAkB,EAGlB,OAAkB,EAClB,QAAmB,EACnB,EAAc,EAAA;AAEd,QAAA,KAAK,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QAXjD,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;KAY5B;;wGAbU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,IAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE;AACzC,iBAAA,CAAA;;0BAOI,IAAI;;0BACJ,QAAQ;;;ACvBb;;;;AAIG;MAiBU,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,qBAAqB,EAAE,eAAe,CAAC,CAAC;KAC/D;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAHb,WAAW,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CADtC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAA,EAAA,OAAA,EAAA,CAE9D,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;+GAEtD,iBAAiB,EAAA,OAAA,EAAA,CAJlB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,EAE9D,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAEnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,oBAAoB,CAAC;AACzE,oBAAA,YAAY,EAAE,CAAC,WAAW,EAAE,oBAAoB,CAAC;AACjD,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,WAAW,EAAE,oBAAoB,CAAC;AACnE,iBAAA,CAAA;;;ACpBD;;;;AAIG;MAiCU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,OAAA,EAAA,CAff,YAAY,CAAA,EAAA,OAAA,EAAA,CAEpB,oBAAoB;QACpB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,cAAc;QACd,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,cAAc;QACd,iBAAiB,CAAA,EAAA,CAAA,CAAA;4GAGR,cAAc,EAAA,OAAA,EAAA,CAff,YAAY,EAEpB,oBAAoB;QACpB,iBAAiB;QACjB,iBAAiB;QACjB,mBAAmB;QACnB,cAAc;QACd,iBAAiB;QACjB,cAAc;QACd,eAAe;QACf,iBAAiB;QACjB,cAAc;QACd,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAGR,cAAc,EAAA,UAAA,EAAA,CAAA;kBAhB1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;AACvB,oBAAA,OAAO,EAAE;wBACP,oBAAoB;wBACpB,iBAAiB;wBACjB,iBAAiB;wBACjB,mBAAmB;wBACnB,cAAc;wBACd,iBAAiB;wBACjB,cAAc;wBACd,eAAe;wBACf,iBAAiB;wBACjB,cAAc;wBACd,iBAAiB;AAClB,qBAAA;AACF,iBAAA,CAAA;;;ACpCD;;;;AAIG;MAYU,4BAA4B,CAAA;;yHAA5B,4BAA4B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAA5B,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,oDAJ7B,YAAY,CAAA,EAAA,OAAA,EAAA,CAAA8E,sBAAA,CAAA,EAAA,CAAA,CAAA;AAIX,4BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,4BAA4B,YAJ7B,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBALxC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,+BAA+B,CAAC;oBAC/C,OAAO,EAAE,CAAC,+BAA+B,CAAC;AAC3C,iBAAA,CAAA;;;ACfD;;;;AAIG;AAKH;;AAEG;AAIG,MAAO,qBAAsB,SAAQ,OAAO,CAAA;;kHAArC,qBAAqB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,WAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACtB,iBAAA,CAAA;;AAGD;;AAEG;MAKU,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;2GAAb,aAAa,EAAA,YAAA,EAAA,CATb,qBAAqB,CAAA,EAAA,OAAA,EAAA,CAArB,qBAAqB,CAAA,EAAA,CAAA,CAAA;2GASrB,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAJzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;ACvBD;;;;AAIG;MAOU,YAAY,CAAA;AAOvB,IAAA,WAAA,CAAY,IAA6B,EAAE,QAAmB,EAAE,MAAc,EAAA;QAN1D,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAER,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;AAKrE,QAAA,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC5B,YAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,KAAiB,KAAI;;;AAGtF,gBAAA,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,CAAC,MAAM,EAAE;oBACvC,OAAO;AACR,iBAAA;AAED,gBAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;oBAC5E,OAAO;AACR,iBAAA;;;AAID,gBAAA,MAAM,CAAC,GAAG,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;;yGA/BU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAAZ,YAAY,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA,CAAA;8IAEqB,MAAM,EAAA,CAAA;sBAAzB,KAAK;uBAAC,WAAW,CAAA;gBAES,YAAY,EAAA,CAAA;sBAAtC,MAAM;uBAAC,iBAAiB,CAAA;;;ACd3B;;;;AAIG;AAQI,MAAM,wBAAwB,GAAgB,CAAC,YAAY,CAAC;;ACZnE;;;;AAIG;MAYU,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,0CAJtB,YAAY,CAAA,EAAA,OAAA,EAAA,CAAAC,YAAA,CAAA,EAAA,CAAA,CAAA;AAIX,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,YAJtB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,wBAAwB,CAAC;oBACxC,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;ACfD;;;;AAIG;MAEmB,YAAY,CAAA;AAAG;;ACNrC;;;;AAIG;AAMH;;;AAGG;MAEU,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;AAEE;;AAEG;QACK,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AAEtB;;AAEG;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;AAgBvC,KAAA;;AAbC,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;IAED,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;IAED,UAAU,GAAA;AACR,QAAA,IAAI,EAAE,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,SAAA;KACF;;2GAxBU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACdX;;;;AAIG;MASU,IAAI,CAAA;AA+Bf,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QA9BlD,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAElB;;AAEG;QACK,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AAYlB;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AAErB;;AAEG;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAU,CAAC;QAEhC,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAU,CAAC;KAEU;AAEtD,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,IAAI,KAAK,OAAO,EAAE;AACpB,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,gBAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AACnC,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,IAAI,KAAK,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB,aAAA;AAAM,iBAAA;;;gBAGL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AACxE,aAAA;;;AAGD,YAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;AAClC,aAAA;AACF,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;KAC9B;IACD,IAAI,UAAU,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;;AAEzB,QAAA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,IAAI,CAAC,KAAK,CAAC;AACnB,SAAA;;QAED,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,SAAA;AACD,QAAA,OAAO,CAAC,CAAC;KACV;IACD,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;;AAGD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,IAAY,EAAA;AACtB,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC1B,YAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;AAClC,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;YAC1B,OAAO,CAAC,CAAC,CAAC;AACX,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;QACD,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC;KACvC;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE;YAC1B,OAAO,CAAC,CAAC,CAAC;AACX,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE;AACnB,YAAA,OAAO,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AAC5B,SAAA;QACD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;AACxD,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;YACpB,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;AAED;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE;YAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;AAED;;AAEG;IACH,aAAa,CAAC,WAAW,GAAG,KAAK,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;KACf;;iGAnKU,IAAI,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qGAAJ,IAAI,EAAA,CAAA,CAAA;2FAAJ,IAAI,EAAA,UAAA,EAAA,CAAA;kBADhB,UAAU;;;ACZX;;;;AAIG;MAWU,eAAe,CAAA;IAY1B,WAAoB,CAAA,KAAW,EAAU,cAA8B,EAAA;QAAnD,IAAK,CAAA,KAAA,GAAL,KAAK,CAAM;QAAU,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAXvE;;;AAGG;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAmC,CAAC;AAEjE;;AAEG;QACK,IAAI,CAAA,IAAA,GAAyD,EAAE,CAAC;KAEG;;AAG3E,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED;;AAEG;IACH,gBAAgB,GAAA;;;QAGd,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AAClC,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;AAC/B,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;IACH,gBAAgB,GAAA;QACd,MAAM,GAAG,GAAoC,EAAE,CAAC;QAChD,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AAClC,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;AAC/B,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClB,aAAA;AACF,SAAA;AACD,QAAA,OAAO,GAAG,CAAC;KACZ;AAED;;AAEG;AACH,IAAA,GAAG,CAA0C,MAAS,EAAA;QACpD,MAAM,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjG,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,gBAAgB,CAAC,MAAM,EAAE,MAAK;AACnD,YAAA,IAAI,eAAe,EAAE;gBACnB,OAAO;AACR,aAAA;YACD,YAAY,CAAC,WAAW,EAAE,CAAC;AAC3B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACvE,IAAI,UAAU,IAAI,CAAC,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;AACjC,aAAA;AACD,YAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;AACrB,gBAAA,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;AACvC,aAAA;YACD,eAAe,GAAG,IAAI,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3B,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE;AACrB,YAAA,IAAI,CAAC,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;AAEG;AACH,IAAA,OAAO,CAAC,IAAO,EAAA;QACb,KAAK,MAAM,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE;AAClC,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxD,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,4BAA4B,CAAC,OAAwC,EAAA;AAC3E,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;;;AAGlC,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;KAClC;;4GA5FU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;MAgGE,gBAAgB,CAAA;IAC3B,WAAmB,CAAA,MAAS,EAAS,UAAsB,EAAA;QAAxC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAG;QAAS,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;KAAI;AAChE;;AChHD;;;;AAIG;MAQmB,uBAAuB,CAAA;AAM3C,IAAA,WAAA,CAAoB,OAA2B,EAAA;QAA3B,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;KAAI;AAEnD,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;KAClD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,SAAS,CAAC,MAAkC,EAAA;;QAE1C,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,MAAM,YAAY,gBAAgB,EAAE;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AAC1B,SAAA;AAAM,aAAA,IAAI,MAAM,EAAE;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAC5C,SAAA;KACF;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC;AACxB,SAAA;KACF;;oHA/BmB,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAD5C,SAAS;;;ACXV;;;;AAIG;AA6BH;;;;AAIG;AA2CG,MAAO,iBACX,SAAQ,uBAAyD,CAAA;IAsBjE,WACE,CAAA,QAA4B,EACrB,aAAsC,EACrC,kBAA2C,EACtB,UAAe,EACpC,UAAmC,EAAA;QAE3C,KAAK,CAAC,QAAQ,CAAC,CAAC;QALT,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;QACtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QACpC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;AAxBZ,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAE/E,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAS,CAAA,SAAA,GAAG,eAAe,EAAE,CAAC;;AAI9B,QAAA,IAAA,CAAA,aAAa,GAAuB;YAClC,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,IAAI,EAAE,OAAO,CAAC,KAAK;YACnB,MAAM,EAAE,YAAY,CAAC,GAAG;YACxB,OAAO,EAAE,YAAY,CAAC,GAAG;SAC1B,CAAC;QAIM,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAI,CAAA,IAAA,GAAmB,EAAE,CAAC;AAUhC,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CACZ,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAG;AAC/C,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;SAC5B,CAAC,CACH,CAAC;KACH;AAED,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,IAAa,EAAA;AACpB,QAAA,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;AACd,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,IAAI,CAAC;AACpC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAC/C,gBAAA,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACnC,aAAA;;AAED,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AACnB,SAAA;KACF;IAED,IACI,YAAY,CAAC,MAA0F,EAAA;AACzG,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;KACxB;AAED;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;KAChD;IAED,WAAW,GAAA;QACT,IAAI,CAAC,wBAAwB,EAAE,CAAC;KACjC;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAC7C;AAED;;;AAGG;IACK,wBAAwB,GAAA;AAC9B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QAC9E,MAAM,kBAAkB,GAAG,aAAa,EAAE,aAAa,CAAC,wBAAwB,CAAC,CAAC;QAElF,MAAM,WAAW,GAAG,kBAAkB,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC;AAE/E,QAAA,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACrG,MAAM,EAAE,WAAW,IAAI,EAAE;AAC1B,SAAA,CAAC,CAAC;KACJ;;AA1FU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,sHA2BlB,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA3BV,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAvCjB,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,iBAAA,EAAA,MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,aAAA,EAAA,cAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,QAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAyDzC,UAAU,EAxD7B,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,+BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjI,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkI,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,gCAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBA1C7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;;oBAEzB,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAmB,iBAAA,EAAE,CAAC;AACtE,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCT,EAAA,CAAA;AACF,iBAAA,CAAA;;0BA4BI,MAAM;2BAAC,WAAW,CAAA;qEAvBY,UAAU,EAAA,CAAA;sBAA1C,MAAM;uBAAC,uBAAuB,CAAA;gBAcY,MAAM,EAAA,CAAA;sBAAhD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAsBrC,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,iBAAiB,CAAA;gBAkBpB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,aAAa,CAAA;;;ACxItB;;;;AAIG;AAEH;;;AAGG;MACU,cAAc,CAAA;AAGzB,IAAA,WAAA,CAAoB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAC9B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAClC,SAAA;KACF;;;AAID,IAAA,YAAY,CAAC,IAAO,EAAA;QAClB,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,KAAK,GAAG,IAAI,CAAC;AACjB,YAAA,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;gBACvC,IACE,KAAK,KAAK,IAAI;oBACd,OAAO,KAAK,KAAK,WAAW;AAC5B,oBAAA,OAAQ,KAA6B,CAAC,UAAU,CAAC,KAAK,WAAW,EACjE;AACA,oBAAA,OAAO,SAAS,CAAC;AAClB,iBAAA;AACD,gBAAA,KAAK,GAAI,KAA6B,CAAC,UAAU,CAAC,CAAC;AACpD,aAAA;AACD,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAAM,aAAA;AACL,YAAA,OAAQ,IAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,SAAA;KACF;AACF;;ACvCD;;;;AAIG;MAKU,6BAA6B,CAAA;IAGxC,WAAmB,CAAA,IAAY,EAAS,KAAA,GAAQ,KAAK,EAAA;QAAlC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;KAC5C;AAED,IAAA,OAAO,CAAC,IAAO,EAAE,GAAW,EAAE,IAAY,EAAA;QACxC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrD,IAAI,SAAS,KAAK,SAAS,EAAE;AAC3B,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,IAAI,GAAG,KAAK,IAAI,KAAK,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,GAAG,CAAC,EAAE;AACtE,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,IAAI,IAAI,KAAK,IAAI,KAAK,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC,EAAE;AACxE,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AACF;;AC7BD;;;;AAIG;MAQU,yBAAyB,CAAA;AAYpC,IAAA,WAAA,CAAmB,QAA8C,EAAA;QAA9C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAsC;AAXjE;;AAEG;AACK,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAoB,CAAC;AAEnD;;AAEG;QACK,IAAI,CAAA,IAAA,GAAkB,IAAI,CAAC;QAC3B,IAAK,CAAA,KAAA,GAAkB,IAAI,CAAC;KAEiC;;AAGrE,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;IACD,IAAI,KAAK,CAAC,IAAsB,EAAA;AAC9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACrB,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;AAC5C,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAA;KACF;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;IACD,IAAI,GAAG,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,IAAI,KAAK,IAAI,CAAC,KAAK,EAAE;AACvB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,SAAA;KACF;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,YAAY,6BAA6B,EAAE;YAC1D,OAAO;AACL,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAC5B,GAAG,EAAE,IAAI,CAAC,IAAI;gBACd,IAAI,EAAE,IAAI,CAAC,KAAK;aACjB,CAAC;AACH,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED;;AAEG;IACH,QAAQ,GAAA;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;KACjD;AAED;;AAEG;AACH,IAAA,OAAO,CAAC,IAAO,EAAA;;;AAGb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3D;AAED,IAAA,MAAM,CAAC,KAAyC,EAAA;QAC9C,IAAI,KAAK,YAAY,yBAAyB,EAAE;AAC9C,YAAA,IAAI,KAAK,CAAC,QAAQ,YAAY,6BAA6B,EAAE;AAC3D,gBAAA,QACE,IAAI,CAAC,QAAQ,YAAY,6BAA6B;oBACtD,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC1C,oBAAA,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,IAAI;AACvB,oBAAA,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,EACzB;AACH,aAAA;YACD,OAAO,KAAK,KAAK,IAAI,CAAC;AACvB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AACF;;ACzGD;;;;AAIG;AA4CG,MAAO,qBACX,SAAQ,uBAAwD,CAAA;IA0BhE,WACE,CAAA,OAA2B,EACnB,UAAsB,EACvB,aAAsC,EACrC,oBAA6C,EAC7C,MAAc,EAAA;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QALP,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;QAC7C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAzBQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEvE;;AAEG;QACH,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QAaL,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAU1C;AAED;;AAEG;AACH,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC5C;IACD,IAAI,KAAK,CAAC,MAAwB,EAAA;QAChC,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACxC,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AAC/E,gBAAA,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC7B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;AACxB,iBAAA;AACD,gBAAA,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;oBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAC9B,iBAAA;AAAM,qBAAA;AACL,oBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACzB,iBAAA;AACD,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrC,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;AAChC,SAAA;KACF;AAED;;AAEG;IACH,IACI,mBAAmB,CACrB,KAA+F,EAAA;QAE/F,IAAI,KAAK,YAAY,gBAAgB,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,KAAK,CAAC,CAAC,CAAC;AACtD,SAAA;QACD,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;;;;YAInC,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;KAChE;AAED,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;KAChE;AAED,IAAA,IAAI,GAAG,GAAA;AACL,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;AACpE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;AACxB,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;IACD,IAAI,GAAG,CAAC,GAAoB,EAAA;AAC1B,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;AACtD,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;AACtB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAClC,YAAA,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC;AACvB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,SAAA;KACF;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;AACtE,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;AACzB,SAAA;AAAM,aAAA;;AAEL,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;IACD,IAAI,IAAI,CAAC,IAAqB,EAAA;AAC5B,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;AACzD,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,SAAA;AAAM,aAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AACnC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAClE,SAAA;KACF;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,IAAG;AAC1D,YAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;;;AAGvB,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;;;;;gBAKjC,qBAAqB,CAAC,MAAK;oBACzB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAClD,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;KACH;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAG;YAC/B,GAAG,CAAC,WAAW,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;;kHAzJU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA7G,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EA3BrB,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,yBAAA,EAAA,gBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,yBAAA,EAAA,gBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,mBAAA,EAAA,CAAA,oBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAiD/D,iBAAiB,EAhDlB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwE,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,iGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBA7BjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;oBACjC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAuB,qBAAA,EAAE,CAAC;AAC1E,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAwBT,EAAA,CAAA;AACF,iBAAA,CAAA;oNAKmC,cAAc,EAAA,CAAA;sBAA/C,KAAK;uBAAC,yBAAyB,CAAA;gBACE,cAAc,EAAA,CAAA;sBAA/C,KAAK;uBAAC,yBAAyB,CAAA;gBAEA,iBAAiB,EAAA,CAAA;sBAAhD,MAAM;uBAAC,sBAAsB,CAAA;gBAUN,KAAK,EAAA,CAAA;sBAA5B,SAAS;uBAAC,WAAW,CAAA;gBAKQ,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB,CAAA;gBAmBxB,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,gBAAgB,CAAA;gBA4BnB,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,oBAAoB,CAAA;;;ACnH7B;;;;AAIG;MAKU,4BAA4B,CAAA;IAGvC,WAAmB,CAAA,IAAY,EAAS,KAAA,GAAQ,KAAK,EAAA;QAAlC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAAS,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QACnD,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;KAC5C;IAED,OAAO,CAAC,IAAO,EAAE,MAAc,EAAA;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AACrD,QAAA,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;AACpC,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;aAAM,IAAI,IAAI,CAAC,KAAK,EAAE;YACrB,OAAO,CAAC,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,KAAK,MAAM,CAAC;AAClD,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,CAAC,EAAE,GAAG,SAAS,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5D,SAAA;KACF;AACF;;AC1BD;;;;AAIG;MAQU,wBAAwB,CAAA;AAgBnC,IAAA,WAAA,CAAmB,QAA6C,EAAA;QAA7C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAqC;AAfhE;;AAEG;AACK,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAU,CAAC;AAEzC;;AAEG;QACK,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;AAE7B;;AAEG;QACK,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;KAE6C;;AAGpE,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,QAAQ,YAAY,4BAA4B,EAAE;YACzD,OAAO;AACL,gBAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;gBAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;AACH,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AACD;;AAEG;IACH,IAAI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,EAAE,CAAC;AACZ,SAAA;AACD,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;AAClD,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3B,SAAA;KACF;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KACrB;AAED;;AAEG;AACH,IAAA,OAAO,CAAC,IAAO,EAAA;;AAEb,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;KACzD;AAED,IAAA,MAAM,CAAC,KAAyC,EAAA;QAC9C,IAAI,KAAK,YAAY,wBAAwB,EAAE;AAC7C,YAAA,IAAI,KAAK,CAAC,QAAQ,YAAY,4BAA4B,EAAE;AAC1D,gBAAA,QACE,IAAI,CAAC,QAAQ,YAAY,4BAA4B;oBACrD,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI;AAC1C,oBAAA,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAC1B;AACH,aAAA;YACD,OAAO,KAAK,KAAK,IAAI,CAAC;AACvB,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AACF;;AC9FD;;;;AAIG;AA2CG,MAAO,oBACX,SAAQ,uBAAuD,CAAA;IA4B/D,WACE,CAAA,OAA2B,EACnB,UAAsB,EACvB,aAAsC,EACrC,kBAA2C,EAC3C,MAAc,EAAA;QAEtB,KAAK,CAAC,OAAO,CAAC,CAAC;QALP,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;QAC3C,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAzBQ,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;AAEvE;;AAEG;QACH,IAAI,CAAA,IAAA,GAAG,KAAK,CAAC;QAaL,IAAI,CAAA,IAAA,GAAmB,EAAE,CAAC;KAUjC;AAED;;AAEG;IACH,IACI,kBAAkB,CACpB,KAA6F,EAAA;QAE7F,IAAI,KAAK,YAAY,gBAAgB,EAAE;AACrC,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,SAAA;QACD,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;;;;YAIlC,OAAO,IAAI,CAAC,eAAe,CAAC;AAC7B,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IACI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;KAC1B;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;QACrB,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC5C,IAAI,CAAC,KAAK,EAAE;gBACV,KAAK,GAAG,EAAE,CAAC;AACZ,aAAA;AACD,YAAA,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAC/B,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpC,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC;KAChE;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CACZ,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,UAAU,IAAG;AACxD,YAAA,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;;;AAGvB,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;;;;;gBAKjC,qBAAqB,CAAC,MAAK;oBACzB,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;AAClD,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;SACJ,CAAC,CACH,CAAC;KACH;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAC7C;;iHA3GU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA7G,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAsC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EAhBpB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,sBAAA,EAAA,aAAA,CAAA,EAAA,kBAAA,EAAA,CAAA,mBAAA,EAAA,oBAAA,CAAA,EAAA,KAAA,EAAA,CAAA,gBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,OAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAwC9D,iBAAiB,EAvClB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwE,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;oBAChC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,oBAAA,EAAE,CAAC;AACzE,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;AAaT,EAAA,CAAA;AACF,iBAAA,CAAA;oNAQgC,WAAW,EAAA,CAAA;sBAAzC,KAAK;uBAAC,sBAAsB,CAAA;gBAEG,iBAAiB,EAAA,CAAA;sBAAhD,MAAM;uBAAC,sBAAsB,CAAA;gBAUV,KAAK,EAAA,CAAA;sBAAxB,SAAS;uBAAC,OAAO,CAAA;gBAKY,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB,CAAA;gBAmBxB,kBAAkB,EAAA,CAAA;sBADrB,KAAK;uBAAC,mBAAmB,CAAA;gBAsBtB,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,gBAAgB,CAAA;;;AC9GzB;;;;AAIG;AASG,MAAO,kBAAmB,SAAQ,UAAU,CAAA;;+GAArC,kBAAkB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,cAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACzB,iBAAA,CAAA;;;ACZD;;;;AAIG;MAKU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;QAEU,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;AAgB7B,KAAA;AAdC;;AAEG;AACH,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;KACjC;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;6GAhBU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACRX;;;;AAIG;AAWG,MAAO,qBAAsB,SAAQ,WAAW,CAAA;AAGpD,IAAA,WAAA,CAAY,GAAsB,EAAc,UAA8B,EAAE,UAA4B,EAAA;QAC1G,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC5E,SAAA;AACD,QAAA,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;KAC9B;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;KACzC;;kHAbU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACrC,iBAAA,CAAA;;0BAIsC,QAAQ;;;AClB/C;;;;AAIG;MAaU,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CAAkD,UAAmB,EAAA;QAAnB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAS;QAHpD,IAAU,CAAA,UAAA,GAAe,EAAE,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAEW;AAEzE,IAAA,cAAc,CAAC,WAAqB,EAAA;QAClC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,KAAK,EAAE;AACnD,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AAClE,SAAA;KACF;AAED,IAAA,eAAe,CAAC,WAAqB,EAAA;QACnC,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;AAE9D,QAAA,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE;YACzB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AAC7C,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACrE,SAAA;KACF;AAEO,IAAA,OAAO,CAAC,KAAoB,EAAA;AAClC,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;;;AAGpE,YAAA,QAAQ,CAAC,aAA6B,CAAC,IAAI,EAAE,CAAC;YAE/C,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5B,SAAA;KACF;;AApCU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBAIR,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAJpB,iBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,cADJ,MAAM,EAAA,CAAA,CAAA;2FACnB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;0BAKnB,MAAM;2BAAC,WAAW,CAAA;;;ACrBjC;;;;AAIG;MAQU,aAAa,CAAA;AASxB,IAAA,WAAA,CAA6B,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QANzD,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QAGpB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAM,CAAA,MAAA,GAAG,IAAI,eAAe,CAAiB,IAAI,CAAC,WAAW,CAAC,CAAC;KAEF;AAErE,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;KACnC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC;KAClC;IAED,IAAI,CAAC,IAAS,EAAE,MAA0B,EAAA;AACxC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7C;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACpB,SAAA;KACF;IAED,MAAM,CAAC,IAAS,EAAE,MAA0B,EAAA;QAC1C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACjC,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACzB,SAAA;KACF;AAED,IAAA,SAAS,CAAC,IAAS,EAAA;AACjB,QAAA,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;KACpD;;0GA1DU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACXX;;;;AAIG;MAOU,mBAAmB,CAAA;AAG9B,IAAA,WAAA,CAAoB,aAA4B,EAAA;QAA5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAFxC,IAAe,CAAA,eAAA,GAAG,CAAC,CAAC;KAEwB;AAEpD;;;AAGG;AACH,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;KAChE;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;IAED,UAAU,GAAA;QACR,IAAI,CAAC,eAAe,EAAE,CAAC;KACxB;;gHAnBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACVX;;;;AAIG;AAWG,MAAO,qBAAsB,SAAQ,WAAW,CAAA;AAGpD,IAAA,WAAA,CACE,GAAsB,EACV,UAA8B,EAC1C,eAAoC,EAAA;QAEpC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;AAC5E,SAAA;AACD,QAAA,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;KACxC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC;KAC9C;;kHAjBU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,0BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACrC,iBAAA,CAAA;;0BAMI,QAAQ;;;ACpBb;;;;AAIG;MAKU,0BAA0B,CAAA;AAGrC,IAAA,WAAA,CAAmB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;KAC5C;IAED,OAAO,CAAC,CAAI,EAAE,CAAI,EAAA;QAChB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;AAE5C,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;AAC7B,SAAA;QAED,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE;YAClD,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE;AAClD,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AACF,SAAA;AAAM,aAAA;YACL,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,EAAE;gBAClD,OAAO,CAAC,CAAC,CAAC;AACX,aAAA;iBAAM,IAAI,KAAK,GAAG,KAAK,EAAE;gBACxB,OAAO,CAAC,CAAC,CAAC;AACX,aAAA;iBAAM,IAAI,KAAK,GAAG,KAAK,EAAE;AACxB,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,CAAC,CAAC;AACV,aAAA;AACF,SAAA;KACF;AACF;;AC9CD;;;;AAIG;AAEH;;;;;;AAMG;IACS,qBAIX;AAJD,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,oBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAY,CAAA;AACZ,IAAA,oBAAA,CAAA,oBAAA,CAAA,KAAA,CAAA,GAAA,CAAA,CAAA,GAAA,KAAO,CAAA;AACP,IAAA,oBAAA,CAAA,oBAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,CAAA,GAAA,MAAS,CAAA;AACX,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,GAI/B,EAAA,CAAA,CAAA;;ACjBD;;;;AAIG;MAcU,aAAa,CAAA;AAR1B,IAAA,WAAA,GAAA;QASE,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAalB,KAAA;IARC,eAAe,GAAA;;QAEb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KAC7D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;KAC3B;;0GAbU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EANd,QAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBARzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACF,iBAAA,CAAA;8BAI4B,WAAW,EAAA,CAAA;sBAArC,SAAS;uBAAC,cAAc,CAAA;;;ACrB3B;;;;AAIG;MAUU,IAAI,CAAA;AAgBf,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAVlD;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEzB;;AAEG;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAW,CAAC;KAEa;AAEtD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,KAAwC,EAAA;AACrD,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;KAClC;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;KAClC;;AAGD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED;;;;;;AAMG;IACH,MAAM,CAAC,MAAyC,EAAE,YAAsB,EAAA;AACtE,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;;AAElC,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,MAAM,EAAE;YAC9B,IAAI,CAAC,QAAQ,GAAG,OAAO,YAAY,KAAK,WAAW,GAAG,YAAY,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AACvG,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;AAC1B,YAAA,IAAI,CAAC,QAAQ,GAAG,OAAO,YAAY,KAAK,WAAW,GAAG,YAAY,GAAG,KAAK,CAAC;AAC5E,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAC;KAClC;AAED;;AAEG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;AAED;;AAEG;IACH,OAAO,CAAC,CAAI,EAAE,CAAI,EAAA;QAChB,OAAO,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KAChE;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACzB;;iGA/EU,IAAI,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhB,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qGAAJ,IAAI,EAAA,CAAA,CAAA;2FAAJ,IAAI,EAAA,UAAA,EAAA,CAAA;kBADhB,UAAU;;;ACbX;;;;AAIG;AAEH,IAAY,kBAMX,CAAA;AAND,CAAA,UAAY,kBAAkB,EAAA;AAC5B,IAAA,kBAAA,CAAA,kBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACb,IAAA,kBAAA,CAAA,kBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAiB,CAAA;AACjB,IAAA,kBAAA,CAAA,kBAAA,CAAA,oBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,oBAAkB,CAAA;AAClB,IAAA,kBAAA,CAAA,kBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ,IAAA,kBAAA,CAAA,kBAAA,CAAA,uBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,uBAAqB,CAAA;AACvB,CAAC,EANW,kBAAkB,KAAlB,kBAAkB,GAM7B,EAAA,CAAA,CAAA;;ACZD;;;;AAIG;MASU,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAEY,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAsB,CAAC;QAElD,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAoB9B,KAAA;AAlBC,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED,IAAA,iBAAiB,CAAC,IAAwB,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC;KACpE;IAED,MAAM,GAAA;QACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;QAC5D,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;AACxD,SAAA;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;KAC9D;;oHAtBU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACZX;;;;AAIG;AAOH,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAE5B;AACA;MAGa,oBAAoB,CAAA;AAO/B,IAAA,WAAA,CAAoB,EAAc,EAAU,UAAsB,EAAU,SAAkC,EAAA;QAA1F,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAAU,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyB;QAFtG,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;KAE2F;AAElH,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,gBAAgB,CAAC;KAC5E;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,cAAc,CAAC;KACrD;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC;KACjD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC;KAClF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;KACzB;AAED,IAAA,eAAe,CAAC,SAAiB,EAAA;;AAE/B,QAAA,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE;AACpC,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;AACvC,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;AACrC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACpC,SAAA;KACF;;iHA5CU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAxG,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAyH,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAApB,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;AChBX;;;;AAIG;AAKH;;;AAGG;MAEU,gBAAgB,CAAA;AAG3B,IAAA,WAAA,CAAyC,UAAe,EAAA;QAAf,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;KAAI;AAE5D,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,OAAoB,EAAA;AAC/B,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;KAC1B;IAED,IAAI,KAAK,CAAC,KAAiB,EAAA;QACzB,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,aAAa,EAAE;YAC7D,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACtE,SAAA;KACF;;IAGD,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC;KAC1C;;AAxBU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAGP,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAHpB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;0BAII,MAAM;2BAAC,WAAW,CAAA;;;ACjBjC;;;;AAIG;AAYH;AACA,MAAM,sBAAsB,GAAG,EAAE,CAAC;MA0BrB,0BAA0B,CAAA;IAUrC,WACU,CAAA,oBAA0C,EAC1C,QAAmB,EACnB,MAAc,EACd,gBAAkC,EACnC,YAAqC,EAClB,QAAa,EAAA;QAL/B,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACnC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAyB;QAClB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAfzC,IAAiB,CAAA,iBAAA,GAAG,eAAe,EAAE,CAAC;QAE9B,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;QAE/B,IAAW,CAAA,WAAA,GAAmB,EAAE,CAAC;KAYrC;AAEJ,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,OAAO,CAAG,EAAA,IAAI,CAAC,iBAAiB,mBAAmB,CAAC;KACrD;AAED,IAAA,IAAY,eAAe,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;KAC5C;AAED,IAAA,IAAY,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC;KAC3C;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,EAAE,KAAK,IAAG;AAC3D,gBAAA,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;AACtC,gBAAA,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;aAClC,CAAC,CACH,CAAC;AACF,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,IAAG;AACzD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;aAChC,CAAC,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,UAAU,IAAI,UAAU,EAAE,CAAC,CAAC;KACtD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;KAClE;AAED,IAAA,WAAW,CAAC,OAAe,EAAA;AACzB,QAAA,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,CAAA,WAAA,EAAc,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAA,GAAA,CAAK,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,EAAE,CAAA,eAAA,CAAiB,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,CAAA,eAAA,CAAiB,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC9D;AAEO,IAAA,yBAAyB,CAAC,KAAoB,EAAA;QACpD,IAAI,CAAC,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;AACzG,YAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;AAEO,IAAA,oBAAoB,CAAC,KAAoB,EAAA;AAC/C,QAAA,IAAI,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;YACnC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,sBAAsB,CAAC,CAAC;AAChF,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE;YAC3C,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,sBAAsB,CAAC,CAAC;AAChF,SAAA;KACF;AAEO,IAAA,kBAAkB,CAAC,KAAoB,EAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE;AACxG,YAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;YACpC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,qBAAqB,CAAC,CAAC;YACvE,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC7B,SAAA;KACF;IAEO,cAAc,GAAA;QACpB,IAAI,IAAI,CAAC,sBAAsB,KAAK,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,EAAE;YACpF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,CAAC;AAC/E,YAAA,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;gBAChC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AAC9D,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;AACjE,aAAA;AACF,SAAA;KACF;AAEO,IAAA,mBAAmB,CAAC,KAAoB,EAAA;QAC9C,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC;KACnD;AAEO,IAAA,oBAAoB,CAAC,KAAoB,EAAA;QAC/C,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC;KACpD;;AArHU,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,mKAgB3B,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAhBP,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,EAtB3B,QAAA,EAAA,yBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAKU,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAxBtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,mCAAmC,EAAE,MAAM;AAC5C,qBAAA;AACF,iBAAA,CAAA;;0BAiBI,MAAM;2BAAC,QAAQ,CAAA;4CATkB,gBAAgB,EAAA,CAAA;sBAAnD,SAAS;uBAAC,eAAe,CAAA;gBACS,eAAe,EAAA,CAAA;sBAAjD,SAAS;uBAAC,cAAc,CAAA;;;ACnD3B;;;;AAIG;AAuFG,MAAO,iBACX,SAAQ,uBAAyD,CAAA;IAsDjE,WACU,CAAA,KAAc,EACtB,OAA2B,EACnB,GAAqB,EACrB,aAA4B,EAC5B,iBAAoC,EAAA;QAE5C,KAAK,CAAC,OAAO,CAAC,CAAC;QANP,IAAK,CAAA,KAAA,GAAL,KAAK,CAAS;QAEd,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;QACrB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AApDd,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAwB,CAAC;AAC3D,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAE,CAAC;QAEvE,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AAErB;;AAEG;QACH,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAErB;;;;AAIG;QACK,IAAQ,CAAA,QAAA,GAAwB,QAAQ,CAAC;AAajD;;AAEG;AACK,QAAA,IAAA,CAAA,UAAU,GAAyB,oBAAoB,CAAC,QAAQ,CAAC;AAWzE;;AAEG;QACK,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAUzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;KAC5D;;AAGD,IAAA,IACI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAA0B,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;KACvB;AAED,IAAA,IACI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IACD,IAAI,KAAK,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AAEpB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,CAAC,KAAK,CAAC,CAAC;AACtD,aAAA;AACF,SAAA;KACF;AAED,IAAA,IACI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IACD,IAAI,MAAM,CAAC,UAAsD,EAAA;AAC/D,QAAA,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,CAAC,UAAU,CAAC,CAAC;AAC3D,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,UAAU,EAAE;AACd,gBAAA,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;AAC3B,aAAA;AAAM,iBAAA;gBACL,IAAI,IAAI,CAAC,KAAK,EAAE;oBACd,IAAI,CAAC,OAAO,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC3D,iBAAA;AAAM,qBAAA;oBACL,OAAO,IAAI,CAAC,OAAO,CAAC;AACrB,iBAAA;AACF,aAAA;AACF,SAAA;KACF;AAED,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,KAA2B,EAAA;AACvC,QAAA,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;YAC7B,OAAO;AACR,SAAA;AAED,QAAA,QAAQ,KAAK;;YAEX,QAAQ;YACR,KAAK,oBAAoB,CAAC,QAAQ;AAChC,gBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACnB,MAAM;YACR,KAAK,oBAAoB,CAAC,GAAG;AAC3B,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACjB,MAAM;YACR,KAAK,oBAAoB,CAAC,IAAI;AAC5B,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,MAAM;AACT,SAAA;KACF;IAED,IACI,iBAAiB,CAAC,QAAmC,EAAA;QACvD,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,IAAI,CAAC,MAAM,YAAY,wBAAwB,EAAE;AACnD,gBAAA,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;oBAC7C,QAAQ,GAAG,EAAE,CAAC;AACf,iBAAA;AACD,gBAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AAClC,oBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC9B,iBAAA;AACF,aAAA;AAAM,iBAAA,IAAI,IAAI,CAAC,MAAM,YAAY,yBAAyB,EAAE;gBAC3D,IAAI,CAAC,QAAQ,IAAI,EAAE,QAAQ,YAAY,KAAK,CAAC,EAAE;AAC7C,oBAAA,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACzB,iBAAA;AACD,gBAAA,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;AAC3G,oBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;AAC9B,iBAAA;AACF,aAAA;AACF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;AACjC,SAAA;KACF;IAED,IACI,eAAe,CAAC,MAAW,EAAA;AAC7B,QAAA,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC1B,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,QAAQ,IAAI,CAAC,UAAU;YACrB,QAAQ;YACR,KAAK,oBAAoB,CAAC,QAAQ;AAChC,gBAAA,OAAO,MAAM,CAAC;YAChB,KAAK,oBAAoB,CAAC,GAAG;AAC3B,gBAAA,OAAO,WAAW,CAAC;YACrB,KAAK,oBAAoB,CAAC,IAAI;AAC5B,gBAAA,OAAO,YAAY,CAAC;AACvB,SAAA;KACF;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,IAAI,CAAC,MAAM,YAAY,wBAAwB,IAAI,IAAI,CAAC,MAAM,YAAY,yBAAyB,EAAE;AACvG,YAAA,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC1B,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IACD,IAAI,WAAW,CAAC,QAAa,EAAA;QAC3B,IAAI,IAAI,CAAC,MAAM,YAAY,wBAAwB,IAAI,IAAI,CAAC,MAAM,YAAY,yBAAyB,EAAE;AACvG,YAAA,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;YAClC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChD,SAAA;KACF;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC;KACrE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KACjE;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;QAChC,IACE,OAAO,CAAC,OAAO;YACf,OAAO,CAAC,OAAO,CAAC,YAAY;YAC5B,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,aAAa,EAC9D;AACA,YAAA,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE;gBACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,aAAA;AACF,SAAA;QACD,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,KAAK,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE;YAC7G,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,EAAE;gBACtC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACnD,aAAA;AACF,SAAA;KACF;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAClD;AAED;;AAEG;AACH,IAAA,IAAI,CAAC,OAAiB,EAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;QAGzC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,oBAAoB,CAAC,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC;;AAE5F,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,KAAK,oBAAoB,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;QACpF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC5C;IAEO,0BAA0B,GAAA;QAChC,OAAO,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAG;AACtD,YAAA,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,KAAK,EAAE;AACjC,gBAAA,IAAI,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC;;AAE5B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;AACvC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,uBAAuB,GAAA;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,IAAG;;;AAGxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;;AAEtC,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,oBAAoB,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,EAAE;AACxF,gBAAA,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC;gBAChD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAC3C,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC5B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,kBAAkB,CAAC,KAAa,EAAE,OAA4B,EAAA;QACpE,IAAI,OAAO,KAAK,QAAQ,EAAE;AACxB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,yBAAyB,CAAC,IAAI,6BAA6B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACzF,SAAA;aAAM,IAAI,OAAO,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,wBAAwB,CAAC,IAAI,4BAA4B,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACvF,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;;;;YAI9C,OAAO,IAAI,CAAC,eAAe,CAAC;AAC7B,SAAA;KACF;;8GA1SU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,uBAAA,EAAA,CAAA,4BAAA,EAAA,yBAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,+BAAA,EAAA,4BAAA,CAAA,EAAA,0BAAA,EAAA,CAAA,+BAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,KAAA,EAAA,CAAA,YAAA,EAAA,OAAA,CAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,QAAA,CAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,gBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,sBAAA,EAAA,iBAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,cAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAkKd,YAAY,EAnNhB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,aAAA,EAAA,IAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhG,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiG,0BAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,yBAAA,EAAA,gBAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;2FASU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnD7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCT,EAAA,CAAA;oBACD,cAAc,EAAE,CAAC,uBAAuB,CAAC;AACzC,oBAAA,IAAI,EAAE;AACJ,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,IAAI,EAAE,cAAc;AACrB,qBAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAChD,iBAAA,CAAA;2MAKsC,uBAAuB,EAAA,CAAA;sBAA3D,KAAK;uBAAC,4BAA4B,CAAA;gBACK,0BAA0B,EAAA,CAAA;sBAAjE,KAAK;uBAAC,+BAA+B,CAAA;gBACE,0BAA0B,EAAA,CAAA;sBAAjE,KAAK;uBAAC,+BAA+B,CAAA;gBAEN,eAAe,EAAA,CAAA;sBAA9C,MAAM;uBAAC,sBAAsB,CAAA;gBACE,iBAAiB,EAAA,CAAA;sBAAhD,MAAM;uBAAC,sBAAsB,CAAA;gBA4D1B,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,cAAc,CAAA;gBASjB,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,YAAY,CAAA;gBAef,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,aAAa,CAAA;gBAqBhB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,gBAAgB,CAAA;gBA8BnB,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,gBAAgB,CAAA;gBAwBnB,eAAe,EAAA,CAAA;sBADlB,YAAY;uBAAC,YAAY,CAAA;;;AC7P5B;;;;AAIG;MAcU,KAAK,CAAA;AA8ChB,IAAA,WAAA,CAAoB,QAA4B,EAAU,KAAc,EAAU,KAAW,EAAA;QAAzE,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoB;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAS;QAAU,IAAK,CAAA,KAAA,GAAL,KAAK,CAAM;AA7C7F;;AAEG;QACH,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAchB;;;AAGG;QACK,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAYvB;;AAEG;QACK,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;AAE7B;;AAEG;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAO,CAAC;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAO,CAAC;AA2CzC;;;;AAIG;QACH,IAAe,CAAA,eAAA,GAAuB,CAAC,MAAM,EAAE,IAAI,KAAK,IAAI,CAAC;KA9CoC;AAEjG,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;AAED,IAAA,IAAI,GAAG,GAAA;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;KAClB;IACD,IAAI,GAAG,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;AAED,IAAA,IAAI,SAAS,GAAA;;QAEX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;;AAGD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED;;AAEG;AACH,IAAA,IAAY,aAAa,GAAA;AACvB,QAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KACnB;AASD;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;AAChC,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC7B,SAAA;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAC7B,SAAA;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;AACnB;;;AAGG;AACH,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;;;AAG/C,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;KACvE;AAED;;AAEG;IACH,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;KACF;IAED,UAAU,GAAA;;AAER,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1D;IAED,OAAO,CAAC,IAAO,EAAE,KAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AACnC,SAAA;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAClC,KAAK,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACxC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;AACnD,SAAA;KACF;IAEO,UAAU,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACnC;AAEO,IAAA,cAAc,CAAC,KAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED;;AAEG;IACK,YAAY,GAAA;QAClB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,EAAE;YACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxE,SAAA;AAAM,aAAA;;YAEL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;AACpC,SAAA;QACD,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED;;AAEG;IACK,UAAU,GAAA;QAChB,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,SAAA;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;KACpB;AAED;;AAEG;IACK,WAAW,GAAA;;AAEjB,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE;YACzE,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACvF,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;AAClC,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;kGA7MU,KAAK,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtB,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sGAAL,KAAK,EAAA,CAAA,CAAA;2FAAL,KAAK,EAAA,UAAA,EAAA,CAAA;kBADjB,UAAU;;;ACjBX;;;;AAIG;MAqBU,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CACS,QAAwC,EACvC,OAAwB,EACxB,KAAY,EACZ,GAAqB,EAAA;QAHtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAgC;QACvC,IAAO,CAAA,OAAA,GAAP,OAAO,CAAiB;QACxB,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;QAPvB,IAAM,CAAA,MAAA,GAA6B,IAAI,CAAC;QACxC,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAQzC,KAAK,CAAC,SAAS,EAAE,CAAC;AAClB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3E,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,IAAG;AAChC,YAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,QAAQ,CAAC;AACtC,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC;SAChC,CAAC,CACH,CAAC;KACH;IAED,IACI,QAAQ,CAAC,KAAU,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,CAAC;KACrC;IAED,IACI,OAAO,CAAC,KAAyB,EAAA;AACnC,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,KAAK,CAAC;KACzC;AAED;;;;;;AAMG;AACH,IAAA,OAAO,sBAAsB,CAAI,IAAyB,EAAE,IAAa,EAAA;AACvE,QAAA,OAAO,IAAI,CAAC;KACb;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;AACzF,SAAA;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,YAAA,IAAI,OAAO,EAAE;;;gBAGX,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;AACjC,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;6GA5DU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,KAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,4BAA4B;AACvC,iBAAA,CAAA;gLAwBK,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,cAAc,CAAA;gBAMjB,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,mBAAmB,CAAA;;;ACpD5B;;;;AAIG;MAgBU,sBAAsB,CAAA;AACjC,IAAA,WAAA,CAAoB,KAAe,EAAA;QAAf,IAAK,CAAA,KAAA,GAAL,KAAK,CAAU;KAAI;AAEvC;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;KAC5F;;mHARU,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,KAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EARvB,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnJ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAVlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,wCAAwC,EAAE,MAAM,EAAE;AAC3D,iBAAA,CAAA;;;ACnBD;;;;AAIG;MAKU,oBAAoB,CAAA;IAG/B,IAAI,SAAS,CAAC,KAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;AACzB,SAAA;KACF;;iHAXU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAApB,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;ACRX;;;;AAIG;MAOU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,OAAO,EAAU,CAAC;AASrC,KAAA;AAPC,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAChC;AAED,IAAA,KAAK,CAAC,EAAU,EAAA;AACd,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnB;;8GATU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACVX;;;;AAIG;AAqBH;;;;;;AAMG;MACU,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,CACU,aAAsC,EACtC,EAAc,EACf,aAAsC,EACrC,iBAAoC,EACpC,oBAA0C,EAChC,QAAa,EACF,UAAe,EAAA;QANpC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACf,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAErB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QAd9C,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAKb,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAWzC,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;AAC5D,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;AAC1D,YAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;AAE3B,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;AAC/B,YAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;;;AAKrB,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE;gBAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,aAAA;SACF,CAAC,EACF,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAC/E,CAAC;QACF,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;KACjD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAiB,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtE;AAED;;;;AAIG;AAEH,IAAA,sBAAsB,CAAC,KAAY,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KAC3C;AAEO,IAAA,mBAAmB,CAAC,EAAe,EAAA;AACzC,QAAA,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,EAAE;AAClC,YAAA,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACvE,SAAA;KACF;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACvC,OAAO;AACR,SAAA;;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACtE,YAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAA;KACF;;+GAtEU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAW,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA4C,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA6F,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAcnB,QAAQ,EAAA,EAAA,EAAA,KAAA,EACR,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAfV,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,QAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAjB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,sBAAsB,EAAE,cAAc;AACtC,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,gBAAgB,EAAE,QAAQ;AAC3B,qBAAA;AACF,iBAAA,CAAA;;0BAuBI,MAAM;2BAAC,QAAQ,CAAA;;0BACf,MAAM;2BAAC,WAAW,CAAA;4CAoCrB,sBAAsB,EAAA,CAAA;sBADrB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AClFnC;;;;AAIG;AA0BH;;;;;;;;AAQG;MACU,WAAW,CAAA;AAUtB,IAAA,WAAA,CAAmB,aAAsC,EAAA;QAAtC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;AATzD;;;;;;AAMG;QACH,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;KAEoC;AAE7D;;;;;;AAMG;IACH,IACI,aAAa,CAAC,OAA2B,EAAA;AAC3C,QAAA,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,OAAO,CAAC;KACnC;;wGAtBU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/J,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAbX,CAAC,oBAAoB,EAAE,iBAAiB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAgCtC,kBAAkB,EA1CtB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAgK,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7D,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8D,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAeU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAzBvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;AAQT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE;AACpC,oBAAA,SAAS,EAAE,CAAC,oBAAoB,EAAE,iBAAiB,CAAC;oBACpD,cAAc,EAAE,CAAC,uBAAuB,CAAC;AAC1C,iBAAA,CAAA;2GA+BK,aAAa,EAAA,CAAA;sBADhB,YAAY;uBAAC,kBAAkB,CAAA;;;AC1DlC;;;;AAIG;MAcU,WAAW,CAAA;AARxB,IAAA,WAAA,GAAA;QASE,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAWlB,KAAA;IAPC,eAAe,GAAA;QACb,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KAC3D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;KACzB;;wGAXU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EANZ,QAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAEU,WAAW,EAAA,UAAA,EAAA,CAAA;kBARvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACF,iBAAA,CAAA;8BAG0B,WAAW,EAAA,CAAA;sBAAnC,SAAS;uBAAC,YAAY,CAAA;;;ACpBzB;;;;AAIG;MAiBU,eAAe,CAAA;AAa1B,IAAA,WAAA,CAAoB,GAAqB,EAAA;QAArB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;KAAI;AAE7C,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;KACjE;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;KAC/D;;4GArBU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,aAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,iCAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,SAAA,EAST,WAAW,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAhBlB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAO1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,mCAAmC,EAAE,qBAAqB;AAC1D,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;AACF,iBAAA,CAAA;uGAU+B,QAAQ,EAAA,CAAA;sBAArC,eAAe;uBAAC,WAAW,CAAA;;;AC9B9B;;;;AAIG;AAQH,IAAIC,OAAK,GAAG,CAAC,CAAC;AAGR,MAAO,uBAAwB,SAAQ,eAAe,CAAA;AAM1D,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;QANV,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAEV,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;AAIxC,QAAAA,OAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,YAAY,GAAG,wBAAwB,GAAGA,OAAK,CAAC;KACtD;;AAED,IAAA,IAAa,QAAQ,GAAA;QACnB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAa,QAAQ,CAAC,KAAc,EAAA;AAClC,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;KACF;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;AAEQ,IAAA,kBAAkB,CAAC,KAAsB,EAAA;AAChD,QAAA,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChC,QAAA,IAAI,KAAK,KAAK,eAAe,CAAC,OAAO,EAAE;AACrC,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACtB,SAAA;KACF;AAED,IAAA,UAAU,CAAC,YAAqB,EAAA;AAC9B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAClC;;oHAzCU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACdX;;;;AAIG;AAEH,IAAY,mBAGX,CAAA;AAHD,CAAA,UAAY,mBAAmB,EAAA;AAC7B,IAAA,mBAAA,CAAA,mBAAA,CAAA,SAAA,CAAA,GAAA,CAAA,CAAA,GAAA,SAAO,CAAA;AACP,IAAA,mBAAA,CAAA,mBAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACX,CAAC,EAHW,mBAAmB,KAAnB,mBAAmB,GAG9B,EAAA,CAAA,CAAA;;ACTD;;;;AAIG;AAEH,IAAY,aAIX,CAAA;AAJD,CAAA,UAAY,aAAa,EAAA;AACvB,IAAA,aAAA,CAAA,aAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,GAAA,MAAI,CAAA;AACJ,IAAA,aAAA,CAAA,aAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACN,IAAA,aAAA,CAAA,aAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACP,CAAC,EAJW,aAAa,KAAb,aAAa,GAIxB,EAAA,CAAA,CAAA;;ACVD;;;;AAIG;MAcU,UAAU,CAAA;AARvB,IAAA,WAAA,GAAA;QASE,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAalB,KAAA;IARC,eAAe,GAAA;;QAEb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;KAC1D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;KACxB;;uGAbU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,EANX,QAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,WAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAEU,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACF,iBAAA,CAAA;8BAIyB,WAAW,EAAA,CAAA;sBAAlC,SAAS;uBAAC,WAAW,CAAA;;;ACrBxB;;;;AAIG;AAUH,IAAI,WAAW,GAAG,CAAC,CAAC;MAGP,SAAS,CAAA;IA2CpB,WAAoB,CAAA,MAAgB,EAAU,QAA4B,EAAA;QAAtD,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAoB;QAzC1E,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAO1B;;AAEG;QACH,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;;QAGrB,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEjB,QAAA,IAAA,CAAA,iBAAiB,GAAQ,EAAE,CAAC;AAE5B,QAAA,IAAA,CAAA,UAAU,GAAQ,EAAE,CAAC;AACrB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAO,CAAC;AACpC,QAAA,IAAA,CAAA,cAAc,GAAkB,aAAa,CAAC,IAAI,CAAC;AAY3D;;AAEG;AACK,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAW,CAAC;AAEzC;;AAEG;QACK,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAGzC,QAAA,IAAI,CAAC,EAAE,GAAG,kBAAkB,GAAG,WAAW,EAAE,CAAC;AAE7C,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBAC/C,OAAO;AACR,aAAA;YACD,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,YAAY,IAAG;;YAE9C,MAAM,eAAe,GAAQ,EAAE,CAAC;YAEhC,QAAQ,IAAI,CAAC,aAAa;AACxB,gBAAA,KAAK,aAAa,CAAC,IAAI,EAAE;oBACvB,MAAM;AACP,iBAAA;AAED,gBAAA,KAAK,aAAa,CAAC,MAAM,EAAE;AACzB,oBAAA,IAAI,SAAc,CAAC;oBACnB,IAAI,gBAAgB,GAAG,KAAK,CAAC;;oBAG7B,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE;AACtD,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;AAC5B,4BAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvE,yBAAA;AACF,qBAAA;oBAED,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACnC,wBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;AAE7C,wBAAA,IAAI,IAAI,CAAC,sBAAsB,KAAK,GAAG,EAAE;4BACvC,SAAS,GAAG,IAAI,CAAC;4BACjB,gBAAgB,GAAG,IAAI,CAAC;AACzB,yBAAA;wBACD,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AACrC,4BAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,yBAAA;AACH,qBAAC,CAAC,CAAC;;;;;oBAMH,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE;wBACnC,gBAAgB,GAAG,IAAI,CAAC;AACzB,qBAAA;;;;;oBAMD,UAAU,CAAC,MAAK;AACd,wBAAA,IAAI,gBAAgB,EAAE;AACpB,4BAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAChC,yBAAA;qBACF,EAAE,CAAC,CAAC,CAAC;oBACN,MAAM;AACP,iBAAA;AAED,gBAAA,KAAK,aAAa,CAAC,KAAK,EAAE;oBACxB,IAAI,QAAQ,GAAU,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC3C,IAAI,gBAAgB,GAAG,KAAK,CAAC;;AAG7B,oBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;AACpF,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;AAC5B,4BAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC5B,4BAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,gCAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACzD,6BAAC,CAAC,CAAC;AACJ,yBAAA;AACF,qBAAA;;;;;;oBAOD,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACnC,wBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;wBAC7C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AACrC,4BAAA,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,yBAAA;AACH,qBAAC,CAAC,CAAC;;;;AAKH,oBAAA,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;wBACvB,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AACnC,4BAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;;4BAE7C,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AAC1D,4BAAA,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE;AACtB,gCAAA,QAAQ,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC;gCAC/B,gBAAgB,GAAG,IAAI,CAAC;AACzB,6BAAA;AACH,yBAAC,CAAC,CAAC;;;AAIH,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;AACrB,4BAAA,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BAC5E,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,EAAE;gCAC3C,gBAAgB,GAAG,IAAI,CAAC;AACzB,6BAAA;AACF,yBAAA;;;;;wBAMD,UAAU,CAAC,MAAK;AACd,4BAAA,IAAI,gBAAgB,EAAE;AACpB,gCAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;AACzB,6BAAA;yBACF,EAAE,CAAC,CAAC,CAAC;AACP,qBAAA;oBACD,MAAM;AACP,iBAAA;AAED,gBAAA,SAAS;oBACP,MAAM;AACP,iBAAA;AACF,aAAA;;AAED,YAAA,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC;SACnC,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;KACvG;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,aAAa,CAAC,KAAoB,EAAA;AACpC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,aAAa,EAAE;YAChC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;AAC5B,QAAA,IAAI,KAAK,KAAK,aAAa,CAAC,IAAI,EAAE;YAChC,OAAO,IAAI,CAAC,OAAO,CAAC;AACrB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AAC/B,SAAA;KACF;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAU,EAAA;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;KACjC;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IACD,IAAI,aAAa,CAAC,KAAQ,EAAA;AACxB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,cAAc,EAAE;YACjC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,IAAI,KAAK,EAAE;YACrC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1D,SAAA;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;;AAGD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAY,WAAW,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,MAAM,CAAC;KACpG;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;AACnC,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED;;AAEG;IACH,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAED,aAAa,CAAC,KAAU,EAAE,IAAa,EAAA;AACrC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;KACF;AAED;;AAEG;AACH,IAAA,UAAU,CAAC,IAAO,EAAA;AAChB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,MAAM,EAAE;AAChD,YAAA,OAAO,IAAI,CAAC,aAAa,KAAK,IAAI,CAAC;AACpC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,KAAK,EAAE;YACtD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACxC,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;IACH,WAAW,CAAC,IAAO,EAAE,QAAiB,EAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE7D,QAAQ,IAAI,CAAC,cAAc;YACzB,KAAK,aAAa,CAAC,IAAI;gBACrB,MAAM;YACR,KAAK,aAAa,CAAC,MAAM;;gBAEvB,MAAM;YACR,KAAK,aAAa,CAAC,KAAK;AACtB,gBAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC3B,oBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC1B,iBAAA;AAAM,qBAAA,IAAI,KAAK,GAAG,CAAC,IAAI,QAAQ,EAAE;AAChC,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;gBACD,MAAM;AACR,YAAA;gBACE,MAAM;AACT,SAAA;KACF;AAED;;AAEG;IACH,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;AACzE,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;;AAED,QAAA,MAAM,cAAc,GAAQ,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAG;YAC9D,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACvC,SAAC,CAAC,CAAC;AAEH,QAAA,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC;QAC1C,IAAI,WAAW,GAAG,CAAC,EAAE;AACnB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,MAAM,IAAI,GAAQ,cAAc,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACjF,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAAC;KAC9C;AAED;;AAEG;IACH,QAAQ,CAAC,IAAO,EAAE,IAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,IAAI,KAAK,IAAI,EAAE;;AAEjB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC3B,aAAA;AAAM,iBAAA;;AAEL,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,IAAI,GAAG,KAAK,UAAU,CAAC,CAAC;AAC5E,aAAA;AACF,SAAA;KACF;AAED;;AAEG;AACH,IAAA,QAAQ,CAAC,IAAO,EAAA;AACd;;;AAGG;AACH,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;AAEG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,MAAM,EAAE;YAC9F,OAAO;AACR,SAAA;AACD;;;AAGG;AACH,QAAA,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;gBACnC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAChD,gBAAA,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;AACtD,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;AACjC,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAG;AACnC,gBAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE;AACnE,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACvB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;AAEG;AACK,IAAA,UAAU,CAAC,IAAO,EAAA;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACzC,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE;;AAE5B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AACxD,SAAA;KACF;AAED;;AAEG;AACK,IAAA,YAAY,CAAC,WAAmB,EAAA;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9F,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;;AAE/C,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;;YAEnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;AAChF,SAAA;KACF;AAED;;AAEG;IACK,aAAa,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;KAC/E;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,MAAM,EAAE;YAChD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;AACvC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,cAAc,KAAK,aAAa,CAAC,KAAK,EAAE;YACtD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,SAAA;KACF;;sGAnZU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAN,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAR,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;0GAAT,SAAS,EAAA,CAAA,CAAA;2FAAT,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;;;AChBX;;;;AAIG;MAUU,kBAAkB,CAAA;AAK7B,IAAA,WAAA,CAAY,eAAwC,EAAA;QAJ1C,IAAK,CAAA,KAAA,GAAG,IAAI,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QAE3D,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAGzC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,eAAe;AACZ,aAAA,iBAAiB,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;AACvD,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CACnE,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,eAAe;AACZ,aAAA,iBAAiB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC;AACxD,aAAA,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CACjE,CAAC;KACH;AAED,IAAA,IAAI,IAAI,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;KAClC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;+GAzBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAe,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACbX;;;;AAIG;MASU,iCAAiC,CAAA;AAC5C,IAAA,WAAA,CAA6B,SAAoB,EAAA;QAApB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;KAAI;AAG7C,IAAA,oBAAoB,CAAC,KAA2C,EAAA;;;AAItE,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE;YACnC,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE;YACxE,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAC7C,SAAA;KACF;;8HAhBU,iCAAiC,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kHAAjC,iCAAiC,EAAA,QAAA,EAAA,kBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,8BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjC,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAH7C,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;6FAKS,oBAAoB,EAAA,CAAA;sBAD3B,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AChBnC;;;;AAIG;AAsCH,IAAI,KAAK,GAAG,CAAC,CAAC;MAiBD,cAAc,CAAA;IA8CzB,WACS,CAAA,SAAuB,EACvB,gBAAkC,EAClC,gBAAqC,EACrC,MAA+B,EAC/B,aAA4B,EAC3B,WAA+B,EAC/B,GAAqB,EACrB,QAAmB,EACnB,EAAc,EACf,aAAsC,EACrC,KAAY,EACM,QAAa,EAAA;QAXhC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QACvB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QACrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAyB;QAC/B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC3B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;QACrB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACf,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACM,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;AAzDV,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;AACnD,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAOjF,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QACrB,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;;QAG/B,IAAc,CAAA,cAAA,GAAG,aAAa,CAAC;AAE/B;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,aAAa,CAAI,CAAC,CAAC,CAAC;QAkB9B,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAgB,CAAA,gBAAA,GAAG,EAAE,CAAC;QACtB,IAAiB,CAAA,iBAAA,GAAG,EAAE,CAAC;QACvB,IAAa,CAAA,aAAA,GAAG,EAAE,CAAC;QAEnB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;;QAGnC,IAAW,CAAA,WAAA,GAAqB,IAAI,CAAC;AAgB3C,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,EAAE,GAAG,YAAY,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,eAAe,GAAG,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,UAAU,GAAG,eAAe,GAAG,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAExC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CACpE,CAAC,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,KAAI;YAC1C,IAAI,kBAAkB,IAAI,iBAAiB,EAAE;;AAE3C,gBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;AACxE,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;;;AAGtB,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC;AAC3E,aAAA;SACF,CACF,CACF,CAAC;KACH;AAED;;AAEG;AACH,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,IAAO,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC;KACzC;AAED,IAAA,IACI,eAAe,GAAA;QACjB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5C;IACD,IAAI,eAAe,CAAC,KAAuB,EAAA;QACzC,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC;AAC1E,SAAA;;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;KAC1B;AAED;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,aAAa,CAAC,IAAI,EAAE;YACvD,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7C,SAAA;KACF;IACD,IAAI,QAAQ,CAAC,KAAuB,EAAA;QAClC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,aAAa,CAAC,IAAI,EAAE;AACvD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAgB,CAAC;AACnC,SAAA;AAAM,aAAA;YACL,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,aAAa,CAAC,KAAK,EAAE;gBACjE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC;AAClC,aAAA;YACD,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,KAAgB,CAAC,CAAC;AACzD,SAAA;KACF;AAED,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;KAC7B;IACD,IAAI,QAAQ,CAAC,KAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAgB,CAAC;KACzC;AAED,IAAA,IACI,oBAAoB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;KACrF;IACD,IAAI,oBAAoB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC/B;AAED,IAAA,IACI,qBAAqB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;KACxF;IACD,IAAI,qBAAqB,CAAC,KAAa,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;;AAGD,IAAA,IACI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;KACjF;IACD,IAAI,iBAAiB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC;KAC/D;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;AAC7D,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,KAAK,KAAK,CAAC,CAAC;KACpE;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAClC,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;oBACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAG;;;AAG3C,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAChC,aAAA;;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAChC,aAAA;AACD,YAAA,IAAI,UAAU,KAAK,mBAAmB,CAAC,SAAS,EAAE;AAChD,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;wBACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AACzB,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAG;AAC1B,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;wBACzB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1C,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;SACF,CAAC,EACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,sBAAsB,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;SAC5D,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,GAAiB,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtE;AAED,IAAA,MAAM,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAA;AAC9B,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC9B,YAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACrC,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;AACzC,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,SAAA;KACF;AAED;;;;;AAKG;AACH,IAAA,WAAW,CAAC,KAAiB,EAAA;QAC3B,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;;;;AAI/C,YAAA,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;gBACxD,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACnB,aAAA;AACF,SAAA;KACF;AAED;;AAEG;IACO,SAAS,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAA;;;AAGnD,QAAA,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE;YACrC,OAAO;AACR,SAAA;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YAC/D,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvB,SAAA;KACF;IAEO,WAAW,GAAA;AACjB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACnC,IAAI,CAAC,KAAK,EAAE;YACV,OAAO;AACR,SAAA;AACD,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;AACzD,QAAA,IACE,IAAI,CAAC,SAAS,CAAC,UAAU;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;YAC1D,IAAI,CAAC,SAAS,CAAC,YAAY;YAC3B,OAAO,KAAK,CAAC,CAAC,EACd;YACA,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;AAEvC,YAAA,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CACnG,CAAC;AACF,YAAA,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;AAC9C,SAAA;AAAM,aAAA;;;;YAIL,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;AACvC,SAAA;KACF;;AA1SU,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,2UA0Df,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA1DP,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EANd,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,WAAA,EAAA,MAAA,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,yBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAAA;QACT,uBAAuB;AACvB,QAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;AAClE,QAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;KACnE,EA6BgB,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAAA,eAAe,EAErB,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,sBAAsB,EAEC,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,8GACZ,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5FxD,i2NAgKA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,WAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,yBAAA,EAAA,QAAA,EAAA,8FAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,iBAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDrGa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAf1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEhB,IAAA,EAAA;AACJ,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,2BAA2B,EAAE,UAAU;AACvC,wBAAA,kBAAkB,EAAE,IAAI;AACxB,wBAAA,IAAI,EAAE,UAAU;qBACjB,EACU,SAAA,EAAA;wBACT,uBAAuB;AACvB,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;AAClE,wBAAA,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,uBAAuB,EAAE;AACnE,qBAAA,EAAA,QAAA,EAAA,i2NAAA,EAAA,CAAA;;0BA4DE,MAAM;2BAAC,QAAQ,CAAA;4CAzDa,eAAe,EAAA,CAAA;sBAA7C,MAAM;uBAAC,qBAAqB,CAAA;gBACE,cAAc,EAAA,CAAA;sBAA5C,MAAM;uBAAC,qBAAqB,CAAA;gBAyBK,OAAO,EAAA,CAAA;sBAAxC,eAAe;uBAAC,eAAe,CAAA;gBAEG,eAAe,EAAA,CAAA;sBAAjD,SAAS;uBAAC,sBAAsB,CAAA;gBACN,YAAY,EAAA,CAAA;sBAAtC,SAAS;uBAAC,cAAc,CAAA;gBAC6B,YAAY,EAAA,CAAA;sBAAjE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACM,gBAAgB,EAAA,CAAA;sBAAzE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACE,gBAAgB,EAAA,CAAA;sBAAzE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBAuDpD,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,WAAW,CAAA;gBAWd,eAAe,EAAA,CAAA;sBADlB,KAAK;uBAAC,iBAAiB,CAAA;gBAgBpB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,eAAe,CAAA;gBAsBlB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,eAAe,CAAA;gBASlB,oBAAoB,EAAA,CAAA;sBADvB,KAAK;gBASF,qBAAqB,EAAA,CAAA;sBADxB,KAAK;gBAUF,iBAAiB,EAAA,CAAA;sBADpB,KAAK;;;AEzNR;;;;AAIG;AAEH,IAAY,qBAGX,CAAA;AAHD,CAAA,UAAY,qBAAqB,EAAA;AAC/B,IAAA,qBAAA,CAAA,qBAAA,CAAA,OAAA,CAAA,GAAA,CAAA,CAAA,GAAA,OAAK,CAAA;AACL,IAAA,qBAAA,CAAA,qBAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAM,CAAA;AACR,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,GAGhC,EAAA,CAAA,CAAA,CAAA;AAEM,MAAM,kBAAkB,GAA4B,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC;KAC1F,GAAG,CAAC,GAAG,IAAK,qBAA6C,CAAC,GAAG,CAAC,CAAC;AAC/D,KAAA,MAAM,CAAC,GAAG,IAAI,GAAG,KAAK,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;;ACb5C;;;;AAIG;MASU,cAAc,CAAA;AAD3B,IAAA,WAAA,GAAA;QAEE,IAAO,CAAA,OAAA,GAAmC,EAAE,CAAC;QAErC,IAAM,CAAA,MAAA,GAAkB,EAAE,CAAC;AAyCpC,KAAA;AAvCC,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;KACjD;AAED,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;KACrE;IAED,KAAK,GAAA;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAG;YACvC,MAAM,KAAK,GAAG,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;YACnC,OAAO,KAAK,CAAC,OAAO,CAAC;AACrB,YAAA,OAAO,KAAK,CAAC;AACf,SAAC,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;KAC7B;IAED,gBAAgB,GAAA;QACd,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,KAAI;;AAEnC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,CAAC;AACtE,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;KAClB;;IAGD,iBAAiB,CAAC,WAAmB,EAAE,IAAqB,EAAA;AAC1D,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC9B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;KACvD;IAED,eAAe,CAAC,MAAoC,EAAE,IAAqB,EAAA;AACzE,QAAA,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;KAC3C;;2GA3CU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACZX;;;;AAIG;AAaH;;AAEG;MAEU,aAAa,CAAA;AAMxB,IAAA,WAAA,CACU,OAA2B,EAC3B,IAAa,EACb,IAAU,EACV,SAAyB,EAAA;QAHzB,IAAO,CAAA,OAAA,GAAP,OAAO,CAAoB;QAC3B,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAS;QACb,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;QACV,IAAS,CAAA,SAAA,GAAT,SAAS,CAAgB;AATnC;;AAEG;AACH,QAAA,IAAA,CAAA,MAAM,GAA6C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;KAOjG;AAEJ;;;AAGG;AACH,IAAA,IAAI,KAAK,GAAA;QACP,MAAM,KAAK,GAAiC,EAAE,CAAC;AAC/C,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACtB,KAAK,CAAC,IAAI,GAAG;AACX,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AACzB,gBAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AACtB,gBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,gBAAA,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO;aAC3B,CAAC;AACH,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,YAAY,0BAA0B,EAAE;AAC9D;;;AAGG;gBACH,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,EAAG,IAAI,CAAC,IAAI,CAAC,UAA4C,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AAC/G,aAAA;AAAM,iBAAA;gBACL,KAAK,CAAC,IAAI,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACvE,aAAA;AACF,SAAA;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;AACtD,QAAA,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5B,YAAA,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,YAAA,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE;gBAClC,IAAI,MAAM,CAAC,KAAK,EAAE;oBAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,iBAAA;AAAM,qBAAA;AACL,oBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;0GAnDU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5C,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAuB,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;ACpBX;;;;AAIG;AAMG,SAAU,eAAe,CAAC,EAAe,EAAA;AAC7C,IAAA,MAAM,eAAe,GAAG;QACtB,SAAS;QACT,YAAY;QACZ,uBAAuB;QACvB,wBAAwB;QACxB,wBAAwB;QACxB,0BAA0B;QAC1B,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,aAAa;QACb,yBAAyB;QACzB,+BAA+B;AAChC,KAAA,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAkB,CAAC;AAC3E,CAAC;MASY,2BAA2B,CAAA;AAMtC,IAAA,WAAA,CAAoB,IAAY,EAAA;QAAZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAHxB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;QAGrC,IAAI,CAAC,MAAM,GAAG;AACZ,YAAA,WAAW,EAAE,uCAAuC;AACpD,YAAA,YAAY,EACV,8LAA8L;AAChM,YAAA,OAAO,EAAE,aAAa;SACvB,CAAC;KACH;AAED,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACtD;AAED,IAAA,IAAY,IAAI,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAA4B,CAAC;KACxF;AAED,IAAA,IAAY,KAAK,GAAA;AACf,QAAA,OAAO,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAA4B,CAAC;KACzF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;AAC/B,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC;AAC9B,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,iBAAA,SAAS,CAAC,CAAC,CAAa,KAAI;;gBAE3B,IAAI,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE;AACjC,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK;AAC3B,0BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACzB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,KAAM,CAAC,CAAC,MAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CACzF;0BACD,IAAI,CAAC;AACT,oBAAA,IAAI,UAAU,EAAE;AACd,wBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAChC,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AAEL,YAAA,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC;AAC5B,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC9B,iBAAA,SAAS,CAAC,CAAC,CAAgB,KAAI;;gBAE9B,IACG,CAAC,CAAC,MAAsB,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC;AAC3D,qBAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY,CAAC,EACnD;oBACA,OAAO;AACR,iBAAA;AACD,gBAAA,IACE,CAAC,CAAC,IAAI,KAAK,SAAS;oBACpB,CAAC,CAAC,IAAI,KAAK,WAAW;oBACtB,CAAC,CAAC,IAAI,KAAK,WAAW;oBACtB,CAAC,CAAC,IAAI,KAAK,YAAY;oBACvB,CAAC,CAAC,IAAI,KAAK,KAAK;oBAChB,CAAC,CAAC,IAAI,KAAK,MAAM;oBACjB,CAAC,CAAC,IAAI,KAAK,QAAQ;AACnB,oBAAA,CAAC,CAAC,IAAI,KAAK,UAAU,EACrB;AACA,oBAAA,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;AAC/C,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI;0BACvB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAiB;0BACvF,IAAI,CAAC;AACT,oBAAA,IAAI,UAAU,EAAE;AACd,wBAAA,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;AAChC,qBAAA;oBACD,CAAC,CAAC,cAAc,EAAE,CAAC;AACpB,iBAAA;AACH,aAAC,CAAC,CAAC;AACP,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;AAED,IAAA,iBAAiB,CAAC,IAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAc,KAAK,CAAC,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;AAC1E,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;AACpD,QAAA,SAAS,EAAE,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;KAC1C;AAEO,IAAA,aAAa,CAAC,UAAuB,EAAA;AAC3C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;AAEvG,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;AACtC,SAAA;AAED,QAAA,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAEzC,QAAA,MAAM,KAAK,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,cAAc,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;QACpG,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAEO,IAAA,qBAAqB,CAAC,CAAM,EAAA;AAClC,QAAA,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC;AAC3G,QAAA,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;AACpB,YAAA,WAAW,GAAG,QAAQ,CAAC,aAA4B,CAAC;AACrD,SAAA;AACD,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,IAAI,CAAC;AAC9G,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;AAE/E,QAAA,IAAI,CAAC,GACH,UAAU,IAAI,WAAW;cACrB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;cACtF,CAAC,CAAC;AACR,QAAA,IAAI,CAAC,GAAG,UAAU,IAAI,WAAW,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;AAE/F,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,MAAM,WAAW,GAAG,GAAG,KAAK,KAAK,GAAG,YAAY,GAAG,WAAW,CAAC;AAC/D,QAAA,MAAM,SAAS,GAAG,GAAG,KAAK,KAAK,GAAG,WAAW,GAAG,YAAY,CAAC;AAE7D,QAAA,MAAM,YAAY,GAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEtG,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,EAAE;AACnC,YAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACX,SAAA;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,GAAG,SAAS,EAAE;AAClD,YAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACX,SAAA;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,KAAK,CAAC,EAAE;AAC5C,YAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACX,SAAA;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,GAAG,YAAY,EAAE;AACnD,YAAA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACX,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,KAAK,EAAE;YAC3B,CAAC,GAAG,YAAY,CAAC;YAEjB,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,CAAC,GAAG,SAAS,CAAC;AACf,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;YAC5B,CAAC,GAAG,CAAC,CAAC;YAEN,IAAI,CAAC,CAAC,OAAO,EAAE;gBACb,CAAC,GAAG,CAAC,CAAC;AACP,aAAA;AACF,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC9B,YAAA,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;AAChC,YAAA,CAAC,GAAG,CAAC,GAAG,YAAY,GAAG,SAAS,GAAG,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC;AACjE,SAAA;AAED,QAAA,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;KACjB;;wHAnKU,2BAA2B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4HAA3B,2BAA2B,EAAA,CAAA,CAAA;2FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;;;AClCX;;;;AAIG;MA0EU,WAAW,CAAA;AAuDtB,IAAA,WAAA,CACU,SAAkC,EACnC,KAAe,EACf,cAAmC,EACnC,SAAuB,EACvB,gBAAkC,EACjC,aAA+B,EAC/B,WAA+B,EAC/B,QAAmB,EACpB,aAA4B,EACT,QAAa,EAC/B,EAAc,EACd,IAAU,EACX,aAAsC,EACrC,cAA8B,EAC9B,aAA0C,EAC1C,IAAY,EAAA;QAfZ,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyB;QACnC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAU;QACf,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqB;QACnC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QACvB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACjC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACpB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QACT,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAK;QAC/B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACd,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;QACX,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAA6B;QAC1C,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QAtEb,IAA6B,CAAA,6BAAA,GAAW,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,wBAAwB,CAAC;QACzF,IAA8B,CAAA,8BAAA,GAAW,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;QAC3F,IAA4B,CAAA,4BAAA,GAAW,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;;QAGzF,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAER,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;AACzC,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,CAAI,KAAK,CAAC,CAAC;AAExF;;AAEG;AACqB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,CAA+B,KAAK,CAAC,CAAC;;QAkCxF,IAAc,CAAA,cAAA,GAAG,aAAa,CAAC;AAE/B;;AAEG;QACK,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;AAoB1C,QAAA,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;AAErC,QAAA,IAAI,CAAC,WAAW,GAAG,oBAAoB,GAAG,UAAU,CAAC;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,UAAU,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,IACI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;KAC3B;IACD,IAAI,OAAO,CAAC,KAAc,EAAA;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;KAC5B;AAED;;AAEG;IACH,IACI,QAAQ,CAAC,KAAsB,EAAA;AACjC,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC;AACpD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC,IAAI,CAAC;AACnD,SAAA;QACD,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC5C;AAED;;AAEG;IACH,IACI,cAAc,CAAC,KAAQ,EAAA;QACzB,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC;;;;AAIpD,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,KAAK,CAAC;AACtC,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;AACvC,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,GAAG,IAAI,CAAC;AACrC,SAAA;KACF;IAED,IACI,sBAAsB,CAAC,KAAc,EAAA;AACvC,QAAA,IAAI,CAAC,SAAS,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAC1C;AAED;;;;AAIG;IACH,IACI,gBAAgB,CAAC,KAAc,EAAA;AACjC,QAAA,IAAI,CAAC,SAAS,CAAC,gBAAgB,GAAG,KAAK,CAAC;KACzC;IAED,IACI,OAAO,CAAC,KAAyC,EAAA;AACnD,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC;KACpC;AAED;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;KACvC;IACD,IAAI,WAAW,CAAC,MAAe,EAAA;AAC7B;;;;AAIG;AACH,QAAA,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;KAC5B;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAsB,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAC5C,SAAS,CAAC,CAAC,IAAyB,KAClC,KAAK;;AAEH,QAAA,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;;QAE7B,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CACtE,CACF,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,eAAe,CAAC,SAAS,CAAC,GAAG,IAAG;AAC9B,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AACrB,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;AACtB,aAAA;SACF,CAAC,EACF,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;;;AAG/B,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;gBACxD,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;AACxC,oBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC/B,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;gBACtB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC,aAAC,CAAC,CAAC;;YAGH,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;AACzD,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;AACjC,sBAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;sBACpG,SAAS,CAAC;AAEd;;AAEG;AACH,gBAAA,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AACtG,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAED;;AAEG;IACH,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;;QAG5D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACtE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,IAAG;YAClC,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,aAAa,CAAC,MAAM,EAAE;AACzD,gBAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAM,CAAC,CAAC;AACzC,aAAA;iBAAM,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,KAAK,aAAa,CAAC,KAAK,EAAE;AAC/D,gBAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAQ,CAAC,CAAC;AACrC,aAAA;AACH,SAAC,CAAC;;QAEF,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAK;AAC9B,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;AAClC,YAAA,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC/B,gBAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC1C,aAAA;AACH,SAAC,CAAC;;AAEF,QAAA,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;;QAE9F,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,IAAG;;AAE3C,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC7D,gBAAA,IAAI,CAAC,wBAAwB,CAAC,MAAM,EAAE,CAAC;AACxC,aAAA;;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACjE,gBAAA,IAAI,CAAC,4BAA4B,CAAC,MAAM,EAAE,CAAC;AAC5C,aAAA;;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACrD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;AAChC,aAAA;;AAED,YAAA,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AACnD,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;AAC9B,aAAA;AACD,YAAA,IAAI,UAAU,KAAK,mBAAmB,CAAC,OAAO,EAAE;;AAE9C,gBAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;AAC5E,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;oBAC5B,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACrD,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;oBACtB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACxC,iBAAC,CAAC,CAAC;AACJ,aAAA;AAAM,iBAAA;;AAEL,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAC;AACzE,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;oBAC5B,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzD,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAG;oBACtB,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC1C,iBAAC,CAAC,CAAC;AACJ,aAAA;SACF,CAAC,CACH,CAAC;;;AAIF,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAK;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,KAAoB,KAAI;AAC1E,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACzB,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC;AACpC,iBAAA;AACH,aAAC,CAAC,EACF,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,KAAoB,KAAI;AACxE,gBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;AACzB,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,KAAK,CAAC;AACrC,iBAAA;aACF,CAAC,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAiB,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACvE;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;KACzB;AAED;;AAEG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;KACtB;;AA5SU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,uQAiEZ,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjEP,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAtBX,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,6BAAA,EAAA,+BAAA,EAAA,8BAAA,EAAA,gCAAA,EAAA,4BAAA,EAAA,8BAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,cAAA,EAAA,CAAA,qBAAA,EAAA,gBAAA,CAAA,EAAA,sBAAA,EAAA,wBAAA,EAAA,gBAAA,EAAA,CAAA,mBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,2BAAA,EAAA,OAAA,EAAA,cAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,4BAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,SAAA,EAAA;QACT,SAAS;QACT,IAAI;QACJ,eAAe;QACf,IAAI;QACJ,KAAK;QACL,uBAAuB;QACvB,gBAAgB;QAChB,mBAAmB;QACnB,cAAc;QACd,aAAa;QACb,aAAa;QACb,gBAAgB;QAChB,cAAc;QACd,kBAAkB;QAClB,2BAA2B;KAC5B,EAyBa,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,gBAAgB,8EAKhB,sBAAsB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAKnB,iBAAiB,EAOjB,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAAA,cAAc,wHAEK,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EACN,gBAAgB,EACV,EAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,sIACZ,gBAAgB,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAC9B,gBAAgB,EACd,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,gBAAgB,6BCzHxD,k5JAgGA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iCAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDlBa,WAAW,EAAA,UAAA,EAAA,CAAA;kBAzBvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAEb,SAAA,EAAA;wBACT,SAAS;wBACT,IAAI;wBACJ,eAAe;wBACf,IAAI;wBACJ,KAAK;wBACL,uBAAuB;wBACvB,gBAAgB;wBAChB,mBAAmB;wBACnB,cAAc;wBACd,aAAa;wBACb,aAAa;wBACb,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,2BAA2B;qBAC5B,EACK,IAAA,EAAA;AACJ,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,8BAA8B,EAAE,sBAAsB;AACvD,qBAAA,EAAA,QAAA,EAAA,k5JAAA,EAAA,CAAA;;0BAmEE,MAAM;2BAAC,QAAQ,CAAA;8MAhET,6BAA6B,EAAA,CAAA;sBAArC,KAAK;gBACG,8BAA8B,EAAA,CAAA;sBAAtC,KAAK;gBACG,4BAA4B,EAAA,CAAA;sBAApC,KAAK;gBAGG,qBAAqB,EAAA,CAAA;sBAA7B,KAAK;gBAEyB,eAAe,EAAA,CAAA;sBAA7C,MAAM;uBAAC,qBAAqB,CAAA;gBACQ,qBAAqB,EAAA,CAAA;sBAAzD,MAAM;uBAAC,2BAA2B,CAAA;gBAKX,OAAO,EAAA,CAAA;sBAA9B,MAAM;uBAAC,cAAc,CAAA;gBAKU,QAAQ,EAAA,CAAA;sBAAvC,YAAY;uBAAC,gBAAgB,CAAA;gBAKQ,WAAW,EAAA,CAAA;sBAAhD,YAAY;uBAAC,sBAAsB,CAAA;gBAKA,OAAO,EAAA,CAAA;sBAA1C,eAAe;uBAAC,iBAAiB,CAAA;gBAOD,IAAI,EAAA,CAAA;sBAApC,eAAe;uBAAC,cAAc,CAAA;gBAEmB,aAAa,EAAA,CAAA;sBAA9D,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBACY,iBAAiB,EAAA,CAAA;sBAA5E,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACQ,wBAAwB,EAAA,CAAA;sBAAzF,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,yBAAyB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACM,4BAA4B,EAAA,CAAA;sBAAjG,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,6BAA6B,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACZ,cAAc,EAAA,CAAA;sBAArE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBACI,gBAAgB,EAAA,CAAA;sBAAzE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,iBAAiB,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;gBAwCpD,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,cAAc,CAAA;gBAYjB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,eAAe,CAAA;gBAclB,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,qBAAqB,CAAA;gBAcxB,sBAAsB,EAAA,CAAA;sBADzB,KAAK;gBAWF,gBAAgB,EAAA,CAAA;sBADnB,KAAK;uBAAC,mBAAmB,CAAA;gBAMtB,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,mBAAmB,CAAA;;;AEpN5B;;;;AAIG;MASU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,wHAHrB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG1B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE,EAAE,6BAA6B,EAAE,MAAM,EAAE;AAChD,iBAAA,CAAA;;;ACZD;;;;AAIG;;ACJH;;;;AAIG;AA2BH,IAAI,aAAa,GAAG,CAAC,CAAC;MAmCT,yBAAyB,CAAA;IAmBpC,WACU,CAAA,gBAAkC,EACnC,aAAsC,EAChB,UAAe,EACpC,IAAY,EACZ,kBAA2C,EAAA;QAJ3C,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QACnC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAChB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QACpC,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAQ;QACZ,IAAkB,CAAA,kBAAA,GAAlB,kBAAkB,CAAyB;AArBZ,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAEvF,IAAS,CAAA,SAAA,GAAG,eAAe,EAAE,CAAC;AAE9B,QAAA,IAAA,CAAA,aAAa,GAAuB;YAClC,IAAI,EAAE,OAAO,CAAC,UAAU;YACxB,IAAI,EAAE,OAAO,CAAC,KAAK;YACnB,MAAM,EAAE,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,YAAY,CAAC,MAAM;SAC7B,CAAC;QAIM,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AASzC,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,SAAS,CAAC,SAAS,IAAG;AACvD,YAAA,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;AACxB,SAAC,CAAC,EACF,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,SAAS,CAAC,OAAO,IAAG;AACzD,YAAA,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAA;SACF,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,GAAG,iBAAiB,GAAG,aAAa,EAAE,CAAC;KACtD;AAED,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,IAAa,EAAA;AACpB,QAAA,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC;AACzB,QAAA,IAAI,CAAC,CAAC,SAAS,KAAK,IAAI,CAAC,IAAI,EAAE;;AAE7B,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,GAAG,SAAS,CAAC;AACzC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;AACxB,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;AAED,IAAA,oBAAoB,CAAC,KAAY,EAAA;AAC/B,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KAChD;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAoB,oBAAoB,CAAC,CAAC,CAAC;YAE/F,IAAI,OAAO,CAAC,MAAM,EAAE;AAClB,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAC;AAC1B,gBAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,GAAG,OAAO,CAAC;AAEvC,gBAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC9B,aAAA;AACF,SAAA;KACF;;AA1EU,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,mFAsB1B,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAvK,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAtBV,yBAAyB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,gCAAA,EAAA,aAAA,CAAA,EAAA,IAAA,EAAA,CAAA,yBAAA,EAAA,MAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,+BAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAczB,WAAW,EA5CZ,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAmI,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqC,+BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArI,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsI,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArD,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqD,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAjCrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;oBAClC,cAAc,EAAE,CAAC,uBAAuB,CAAC;AACzC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BT,EAAA,CAAA;AACF,iBAAA,CAAA;;0BAuBI,MAAM;2BAAC,WAAW,CAAA;oGArBoB,WAAW,EAAA,CAAA;sBAAnD,KAAK;uBAAC,gCAAgC,CAAA;gBAEE,UAAU,EAAA,CAAA;sBAAlD,MAAM;uBAAC,+BAA+B,CAAA;gBAWE,QAAQ,EAAA,CAAA;sBAAhD,SAAS;uBAAC,WAAW,CAAA;gBA2BlB,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,yBAAyB,CAAA;;;AC1GlC;;;;AAIG;AAUI,MAAM,qBAAqB,GAAiC,KAAK,IAAI,KAAK;;ACdjF;;;;AAIG;MAUU,uBAAuB,CAAA;AAClC,IAAA,WAAA,CAAgC,MAAgB,EAAA;QAAhB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAU;KAAI;IAEpD,IACI,OAAO,CAAC,KAAyB,EAAA;AACnC;;;;;;AAMG;QACH,IAAI,KAAK,KAAK,qBAAqB,EAAE;YACnC,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,eAAe,GAAG,KAAK,CAAC;AACrC,SAAA;KACF;;oHAnBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjC,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA,CAAA;;0BAEc,QAAQ;4CAGjB,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,cAAc,CAAA;;;ACjBvB;;;;AAIG;MAuBU,6BAA6B,CAAA;IAGxC,WAAmB,CAAA,aAAsC,EAAU,cAA8B,EAAA;QAA9E,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAAU,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;AAFzF,QAAA,IAAA,CAAA,WAAW,GAAqB,IAAI,YAAY,EAAE,CAAC;KAE0C;AAErG,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;KAClF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,cAAc,IAC3C,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,EAAE;AAClD,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACxC,SAAA,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;IAEO,eAAe,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC5E;;0HA1BU,6BAA6B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7J,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA+L,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA7B,6BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,6BAA6B,EAX9B,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;AAST,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAEU,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBAbzC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,6BAA6B;AACvC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;AAST,EAAA,CAAA;AACF,iBAAA,CAAA;qIAOK,cAAc,EAAA,CAAA;sBADjB,MAAM;uBAAC,gBAAgB,CAAA;;;AChC1B;;;;AAIG;MA8EU,uBAAuB,CAAA;AAqBlC,IAAA,WAAA,CACS,aAAsC,EACrC,cAA8B,EACtC,oBAA6C,EAAA;QAFtC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAtBxC,IAAS,CAAA,SAAA,GAAG,eAAe,EAAE,CAAC;;AAI9B,QAAA,IAAA,CAAA,aAAa,GAAuB;YAClC,IAAI,EAAE,OAAO,CAAC,QAAQ;YACtB,IAAI,EAAE,OAAO,CAAC,MAAM;YACpB,MAAM,EAAE,YAAY,CAAC,KAAK;YAC1B,OAAO,EAAE,YAAY,CAAC,KAAK;SAC5B,CAAC;;;QAIO,IAAS,CAAA,SAAA,GAAG,qBAAqB,CAAC;QAYzC,IAAI,CAAC,YAAY,GAAG,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC;KACpG;AAED,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IACD,IAAI,iBAAiB,CAAC,KAAc,EAAA;AAClC,QAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;KACjC;AAED,IAAA,IAAI,oBAAoB,GAAA;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACtF,QAAA,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;KAC9C;AAED,IAAA,IAAI,uBAAuB,GAAA;AACzB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;;QAEnG,QACE,oBAAoB,KAAK,CAAC,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAC/G;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;IAED,iBAAiB,CAAC,WAAwB,EAAE,KAAc,EAAA;QACxD,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACrG,QAAA,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,EAAE;AAClD,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACxC,SAAA,CAAC,CAAC;KACJ;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC/C;;oHAnEU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/L,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA+L,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA3K,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAmBA,UAAU,EA7ElC,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAmI,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyC,+BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArI,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAqI,WAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,yBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,EAAA,sCAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,6BAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAIU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBA5DnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDT,EAAA,CAAA;oBACD,IAAI,EAAE,EAAE,+BAA+B,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE;oBAChF,cAAc,EAAE,CAAC,uBAAuB,CAAC;AAC1C,iBAAA,CAAA;wKAoByD,kBAAkB,EAAA,CAAA;sBAAzE,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;;;ACrGhD;;;;AAIG;MA4BU,uBAAuB,CAAA;IAClC,WAAmB,CAAA,aAA4B,EAAS,aAAsC,EAAA;QAA3E,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;KAAI;AAElG,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,QAAQ,CAAC;KACzC;;oHALU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAzD,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA/E,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,uBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,EAhBxB,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyI,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBArBnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE;AACJ,wBAAA,gCAAgC,EAAE,MAAM;AACzC,qBAAA;AACD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACF,iBAAA,CAAA;;;AC/BD;;;;AAIG;MAgCU,iBAAiB,CAAA;IAG5B,WAAmB,CAAA,aAA4B,EAAS,aAAsC,EAAA;QAA3E,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAAS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;KAAI;IAElG,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;KAC5B;;8GAPU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA1D,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA/E,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACd,uBAAuB,EAlB3B,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkC,+BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAxB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,IAAI,EAAE;AACJ,wBAAA,8BAA8B,EAAE,MAAM;AACvC,qBAAA;;;AAGD,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;AAeT,EAAA,CAAA;AACF,iBAAA,CAAA;oIAEwC,MAAM,EAAA,CAAA;sBAA5C,YAAY;uBAAC,uBAAuB,CAAA;;;ACrCvC;;;;AAIG;MAeU,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EATtB,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,4BAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAKU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAXjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,8BAA8B,EAAE,MAAM;AACvC,qBAAA;AACF,iBAAA,CAAA;;;AClBD;;;;AAIG;AAMH;;;AAGG;MAIU,wBAAwB,CAAA;AACnC,IAAA,WAAA,CAAgC,mBAAwC,EAAA;QAAxC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACtE,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,CAAC;AACrC,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,CAAC;AACvC,SAAA;KACF;;qHAXU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAsE,mBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yGAAxB,wBAAwB,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBAHpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC5B,iBAAA,CAAA;;0BAEc,QAAQ;;;AClBvB;;;;AAIG;MAkCU,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CACS,SAAuB,EACvB,aAA4B,EAC3B,cAA8B,EAC/B,aAAsC,EAAA;QAHtC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;QACvB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC3B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC/B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;;QAN/C,IAAc,CAAA,cAAA,GAAG,aAAa,CAAC;KAO3B;AAEJ,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;KAC/C;;8GAbU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtC,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAuC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAtH,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAtBlB,QAAA,EAAA,eAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiF,WAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,yCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAKU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAxB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;AAiBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,yBAAyB,EAAE,MAAM;AAClC,qBAAA;AACF,iBAAA,CAAA;;;ACrCD;;;;AAIG;AAOI,MAAM,YAAY,GAAG,IAAI,cAAc,CAAc,cAAc,CAAC,CAAC;SAE5D,kBAAkB,GAAA;IAChC,OAAO,IAAI,eAAe,CAAc;AACtC,QAAA,OAAO,EAAE,EAAE;AACZ,KAAA,CAAC,CAAC;AACL,CAAC;AAEM,MAAM,qBAAqB,GAAG;AACnC,IAAA,OAAO,EAAE,YAAY;AACrB,IAAA,UAAU,EAAE,kBAAkB;CAC/B;;ACtBD;;;;AAIG;AAwBH;;;;;;;;;;;;;;AAcG;MACU,yBAAyB,CAAA;AAapC,IAAA,WAAA,CACU,gBAAkC,EAClC,gBAAkC,EAClC,cAA8B,EAG9B,WAAyC,EAAA;QALzC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAG9B,IAAW,CAAA,WAAA,GAAX,WAAW,CAA8B;AAlBtB,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAW,CAAC;QAUhE,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAUzC,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEhE,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,MAAM,IAAI,KAAK,CAAC,0FAA0F,CAAC,CAAC;AAC7G,SAAA;KACF;AAED;;;;;;;;;;;;AAYG;IACH,IACI,mBAAmB,CAAC,KAAmC,EAAA;AACzD,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;KACjE;IAED,IACI,WAAW,CAAC,MAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE;YACpD,MAAM,EAAE,IAAI,CAAC,OAAO;AACpB,YAAA,OAAO,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACxC,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE;AACpD,YAAA,QAAQ,EAAE,IAAI;YACd,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,MAAM,EAAE,IAAI,CAAC,OAAO;AACpB,YAAA,OAAO,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACxC,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,KAAkB,KAAI;AAChD,YAAA,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC7E,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACtC,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;AA9EU,yBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,wGAkB1B,YAAY,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAlBX,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAnBrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,uBAAuB;AAClC,iBAAA,CAAA;;0BAkCI,QAAQ;;0BACR,MAAM;2BAAC,YAAY,CAAA;4CAjBO,YAAY,EAAA,CAAA;sBAAxC,MAAM;uBAAC,mBAAmB,CAAA;gBAyCvB,mBAAmB,EAAA,CAAA;sBADtB,KAAK;uBAAC,qBAAqB,CAAA;gBAUxB,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,aAAa,CAAA;;;AC7FtB;;;;AAIG;MAoBU,WAAW,CAAA;AAOtB,IAAA,WAAA,CACU,WAA6B,EAC7B,aAA+B,EAC/B,aAA4B,EAAA;QAF5B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAkB;QAC7B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AATT,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,CAAM,IAAI,CAAC,CAAC;QAE/D,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AACnC,QAAA,IAAA,CAAA,IAAI,GAAG,KAAK,CAAC;AAQnB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;KACnC;IAED,IACI,KAAK,CAAC,KAAU,EAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClC,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;KACnB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAG;YAC/C,IAAI,KAAK,KAAK,IAAI,EAAE;AAClB,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AACxB,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,aAAA;SACF,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;AAEO,IAAA,WAAW,CAAC,SAAkB,EAAA;QACpC,IAAI,iBAAiB,GAAG,IAAI,CAAC;QAE7B,IAAI,SAAS,KAAK,IAAI,EAAE;YACtB,MAAM,mBAAmB,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAEpE,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,mBAAmB,CAAC;AACpD,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;AACrG,aAAA;AAED,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACjB,YAAA,iBAAiB,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC9C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;AAC7B,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC1C;;wGA3DU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAhE,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,aAAA,EAAA,OAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AAC1B,iBAAA,CAAA;0JAE8B,WAAW,EAAA,CAAA;sBAAvC,MAAM;uBAAC,mBAAmB,CAAA;gBAevB,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,aAAa,CAAA;;;ACvCtB;;;;AAIG;MAkBU,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAAmB,IAAU,EAAA;QAAV,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;QAFE,IAAiB,CAAA,iBAAA,GAAG,eAAe,EAAE,CAAC;KAEpC;IAEjC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9D,IAAI,CAAC,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzC,SAAA;KACF;;gHAVU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EATpB,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,eAAA,EAAA,CAAA,oBAAA,EAAA,iBAAA,CAAA,EAAA,iBAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxH,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuC,QAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA9C,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,0BAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,MAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAX/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,EAAA,CAAA;AACF,iBAAA,CAAA;wFAE8B,eAAe,EAAA,CAAA;sBAA3C,KAAK;uBAAC,oBAAoB,CAAA;gBACI,iBAAiB,EAAA,CAAA;sBAA/C,KAAK;uBAAC,sBAAsB,CAAA;;;ACxB/B;;;;AAIG;MAwHU,qBAAqB,CAAA;AAchC,IAAA,WAAA,CAAmB,IAAU,EAAS,aAAsC,EAAS,aAA4B,EAAA;QAA9F,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;QAAS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAAS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAXtF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAS,KAAK,CAAC,CAAC;AAY1E,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,IAAY,EAAA;;AAEvB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;KAC7B;IACD,IAAI,UAAU,CAAC,KAAa,EAAA;;AAE1B,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AAC9B,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,IAAY,EAAA;;AAEvB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;AACvB,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,IAAY,EAAA;;AAE1B,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1B,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;KAC5B;AAED;;AAEG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC3B;AAED;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,WAAW,GAAa,EAAE,CAAC;AACjC,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE;YACzB,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACzC,SAAA;QACD,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACtC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AACzC,SAAA;AACD,QAAA,OAAO,WAAW,CAAC;KACpB;AAED;;;AAGG;IACH,QAAQ,GAAA;AACN;;;;AAIG;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AACrB,SAAA;QACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;KACnG;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;AACtC,SAAA;KACF;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;KACtB;AAED;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;KAClB;AAED,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAChD,QAAA,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAChC,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACxC,SAAA;KACF;AAED;;AAEG;AACH,IAAA,iBAAiB,CAAC,KAAU,EAAA;AAC1B,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;;AAGhD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YAClB,IAAI,MAAM,GAAG,CAAC,EAAE;AACd,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;AACvB,aAAA;AAAM,iBAAA,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAClC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACpC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AAC5B,aAAA;AACF,SAAA;AAED;;;AAGG;AACH,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KAClE;;kHAzKU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA+H,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAjE,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAqF,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,uBAAA,EAAA,CAAA,wBAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,WAAA,EAAA,CAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAKlB,mBAAmB,EAvGvB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnJ,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBApGjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+FT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,oBAAoB,EAAE,MAAM,EAAE;AACvC,iBAAA,CAAA;oJAEkC,uBAAuB,EAAA,CAAA;sBAAvD,KAAK;uBAAC,wBAAwB,CAAA;gBAEJ,cAAc,EAAA,CAAA;sBAAxC,MAAM;uBAAC,iBAAiB,CAAA;gBAEU,kBAAkB,EAAA,CAAA;sBAApD,YAAY;uBAAC,mBAAmB,CAAA;gBAEF,mBAAmB,EAAA,CAAA;sBAAjD,SAAS;uBAAC,kBAAkB,CAAA;gBAezB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,eAAe,CAAA;gBAelB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,iBAAiB,CAAA;gBAepB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,eAAe,CAAA;gBAelB,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,WAAW,CAAA;;;AC3LpB;;;;AAIG;AAaH;;;AAGG;MAmBU,oBAAoB,CAAA;IAa/B,WACS,CAAA,SAAoB,EACpB,gBAAkC,EAClC,MAA+B,EAC/B,cAAmC,EACnC,aAAsC,EAAA;QAJtC,IAAS,CAAA,SAAA,GAAT,SAAS,CAAW;QACpB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAyB;QAC/B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAqB;QACnC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAd/C,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;;QAGpB,IAAc,CAAA,cAAA,GAAG,aAAa,CAAC;QAIvB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAQvC;IAEJ,IACI,OAAO,CAAC,KAAc,EAAA;QACxB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;KACjC;AAED,IAAA,IAAI,oCAAoC,GAAA;QACtC,QACE,IAAI,CAAC,qCAAqC;AAC1C,YAAA,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,6BAA6B,CAAA;QACtD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAA,CAAE,EACxD;KACH;AAED,IAAA,IAAI,8BAA8B,GAAA;QAChC,QACE,IAAI,CAAC,+BAA+B;AACpC,YAAA,CAAA,EAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,CAAA;QAChD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,4BAA4B,CAAA,CAAE,EACxD;KACH;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,aAAa,IAAG;AAC5C,YAAA,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;SAClC,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;iHApDU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAiK,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAvB,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmE,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,qCAAA,EAAA,CAAA,+BAAA,EAAA,uCAAA,CAAA,EAAA,+BAAA,EAAA,CAAA,yBAAA,EAAA,iCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,SAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,0BAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,qBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EASd,eAAe,EAzBtB,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;AAOT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FASU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAlBhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;AAOT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,2BAA2B,EAAE,MAAM;AACnC,wBAAA,6BAA6B,EAAE,MAAM;AACrC,wBAAA,4BAA4B,EAAE,oBAAoB;AAClD,wBAAA,WAAW,EAAE,qBAAqB;AAClC,wBAAA,IAAI,EAAE,UAAU;AACjB,qBAAA;AACF,iBAAA,CAAA;8NAEyC,qCAAqC,EAAA,CAAA;sBAA5E,KAAK;uBAAC,+BAA+B,CAAA;gBACJ,+BAA+B,EAAA,CAAA;sBAAhE,KAAK;uBAAC,yBAAyB,CAAA;gBAOE,KAAK,EAAA,CAAA;sBAAtC,eAAe;uBAAC,eAAe,CAAA;gBAa5B,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,cAAc,CAAA;;;AC5DvB;;;;AAIG;AAEH;AACA;AACO,MAAM,eAAe,GAAG,oBAAoB,CAAC;AAC7C,MAAM,mBAAmB,GAAG,kCAAkC,CAAC;AAC/D,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAClD,MAAM,mBAAmB,GAAG,wBAAwB;;ACX3D;;;;AAIG;MAcU,oBAAoB,CAAA;AAK/B,IAAA,WAAA,CAAoB,EAAc,EAAU,QAAmB,EAAE,SAAkC,EAAA;QAA/E,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QAAU,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAFvD,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAGzC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,SAAS,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAChG,CAAC;KACH;;IAGD,IAAI,WAAW,CAAC,WAAyC,EAAA;QACvD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,kBAAkB,CAAC;AACxC,QAAA,IAAI,CAAC,iBAAiB,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;KACnF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC;AACtC,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,KAAkB,EAAA;QACrC,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;YACnC,OAAO,IAAI,CAAC,aAAa,CAAC;AAC3B,SAAA;QACD,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AACzC,YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC7B,gBAAA,QAAQ,MAAM;oBACZ,KAAK,qBAAqB,CAAC,KAAK;AAC9B,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACrB,MAAM;oBACR,KAAK,qBAAqB,CAAC,MAAM;AAC/B,wBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACtB,MAAM;AACR,oBAAA;wBACE,MAAM;AACT,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEO,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACrE,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KAC9D;AAEO,IAAA,QAAQ,CAAC,KAAkB,EAAA;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACnE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACtE,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;KAC5E;AAEO,IAAA,SAAS,CAAC,KAAkB,EAAA;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AACpE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AACvE,SAAA;KACF;;iHArEU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA/C,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;;;ACjBD;;;;AAIG;MAmBU,sBAAsB,CAAA;AAUjC,IAAA,WAAA,CACU,EAAc,EACd,QAAmB,EACnB,SAAkC,EAClC,UAAsB,EACtB,oBAA0C,EAC1C,cAA8B,EACR,WAAyC,EAAA;QAN/D,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyB;QAClC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QAC1C,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QACR,IAAW,CAAA,WAAA,GAAX,WAAW,CAA8B;AAhB5C,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAU,CAAC;AAExE;;AAEG;QACK,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACjB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAWzC,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CACrG,CAAC;QAEF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACnF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAED,mBAAmB,GAAA;AACjB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,OAAO;AACL,YAAA,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;AACrC,YAAA,WAAW,EAAE,WAAW;SACzB,CAAC;KACH;AAED,IAAA,cAAc,CAAC,KAAa,EAAA;QAC1B,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;KACvD;AAEO,IAAA,YAAY,CAAC,KAAkB,EAAA;QACrC,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;AACzC,YAAA,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AAC7B,gBAAA,QAAQ,MAAM;oBACZ,KAAK,qBAAqB,CAAC,KAAK;AAC9B,wBAAA,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACrB,MAAM;oBACR,KAAK,qBAAqB,CAAC,MAAM;AAC/B,wBAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBACtB,MAAM;AACR,oBAAA;wBACE,MAAM;AACT,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEO,UAAU,GAAA;;QAEhB,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;AACzD,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC9D,SAAA;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACtE,SAAA;KACF;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;AACnD,SAAA;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;AACvB,YAAA,OAAO,CAAC,CAAC;AACV,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAChE,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,WAAmB,EAAA;QACtC,IAAI,KAAK,GAAW,WAAW,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAC5D,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAEO,IAAA,QAAQ,CAAC,KAAkB,EAAA;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,IAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE;gBACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;AACrC,gBAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAC3E,gBAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,aAAA;;AAED,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAClE,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACtB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AACrE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;AAC3E,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACrB,SAAA;KACF;AAEO,IAAA,SAAS,CAAC,KAAkB,EAAA;QAClC,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AACpE,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;AACvE,SAAA;KACF;;AA/GU,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,4LAiBvB,YAAY,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAjBX,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,EAFtB,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,mBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAE7C,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAJlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;AACzB,oBAAA,SAAS,EAAE,CAAC,oBAAoB,EAAE,qBAAqB,CAAC;AACzD,iBAAA,CAAA;;0BAkBI,MAAM;2BAAC,YAAY,CAAA;4CAhBO,aAAa,EAAA,CAAA;sBAAzC,MAAM;uBAAC,mBAAmB,CAAA;;;ACxB7B;;;;AAIG;MAYU,cAAc,CAAA;AACzB,IAAA,gBAAgB,CAAC,QAAa,EAAA;AAC5B,QAAA,OAAO,CAAC,CAAC;KACV;AAED,IAAA,cAAc,CAAC,QAAa,EAAA;AAC1B,QAAA,OAAO,CAAC,CAAC;KACV;AAED,IAAA,WAAW,CAAC,QAAa,EAAA;AACvB,QAAA,OAAO,CAAC,CAAC;KACV;AAED,IAAA,cAAc,CAAC,QAAa,EAAA;AAC1B,QAAA,OAAO,CAAC,CAAC;KACV;AAED,IAAA,UAAU,CAAC,QAAa,EAAA;QACtB,OAAO;AACL,YAAA,GAAG,EAAE,CAAC;AACN,YAAA,MAAM,EAAE,CAAC;AACT,YAAA,IAAI,EAAE,CAAC;AACP,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,KAAK,EAAE,CAAC;AACR,YAAA,MAAM,EAAE,CAAC;SACC,CAAC;KACd;AAED,IAAA,QAAQ,CAAC,QAAa,EAAA;AACpB,QAAA,OAAO,CAAC,CAAC;KACV;AAED,IAAA,KAAK,CAAC,QAAa,EAAA;;KAElB;;2GAlCU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;+GAAd,cAAc,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B,UAAU;;;ACfX;;;;AAIG;MAWU,mBAAmB,CAAA;AAK9B,IAAA,WAAA,CAAoB,cAA8B,EAAA;QAA9B,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAF1C,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAEW;IAEtD,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAChC,YAAA,IAAI,CAAC,cAAc,EAAE,CAAC;;;;;;;SAOvB,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAED,cAAc,GAAA;;;;;;;;;;AAUZ,QAAA,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,EAAE;YAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;gBACjC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACvD,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;;gHA3CU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAgD,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,2FACb,oBAAoB,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAD1B,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AAC1C,iBAAA,CAAA;kGAEgD,KAAK,EAAA,CAAA;sBAAnD,eAAe;uBAAC,oBAAoB,CAAA;;;AChBvC;;;;AAIG;AAgCH;AACA;AACO,MAAM,iBAAiB,GAAG,CAAC,UAAe,KAAI;AACnD,IAAA,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;QACjC,OAAO,IAAI,UAAU,EAAE,CAAC;AACzB,KAAA;AAAM,SAAA;QACL,OAAO,IAAI,cAAc,EAAE,CAAC;AAC7B,KAAA;AACH,CAAC,CAAC;AAEF;AACA;MAKa,oBAAoB,CAAA;AAe/B,IAAA,WAAA,CACU,SAAkC,EAClC,KAAY,EACZ,IAAU,EACV,UAAsB,EACtB,EAAc,EACd,QAAmB,EACnB,aAA4B,EAC5B,gBAAkC,EAClC,cAA8B,EAC9B,MAAc,EAAA;QATd,IAAS,CAAA,SAAA,GAAT,SAAS,CAAyB;QAClC,IAAK,CAAA,KAAA,GAAL,KAAK,CAAO;QACZ,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAM;QACV,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACd,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACnB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAC9B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QArBhB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAsB,CAAA,sBAAA,GAAG,IAAI,CAAC;QAC9B,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAE3C;;;;AAIG;QACK,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAcjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,SAAS;AACX,aAAA,iBAAiB,CAAC,kBAAkB,CAAC,qBAAqB,CAAC;aAC3D,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAC/C,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAClC,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC5B,aAAA;SACF,CAAC,CACH,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KAClG;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AAEpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;;;YAGlC,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB,CAAC,CACH,CAAC;KACH;;IAGD,eAAe,GAAA;QACb,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC;KACvC;IAED,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;gBACjC,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC/B,iBAAC,CAAC,CAAC;AACL,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;AAED,IAAA,gBAAgB,CAAC,KAAc,EAAA;QAC7B,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE;AAC5C,gBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,KAAI;oBACtC,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,wBAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE;AAC3C,4BAAA,OAAO,EAAE,CAAC,qBAAqB,CAAC,MAAM,CAAC;AACvC,4BAAA,MAAM,EAAE,KAAK;AACd,yBAAA,CAAC,CAAC;AACJ,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;iBAAM,IAAI,CAAC,KAAK,EAAE;AACjB,gBAAA,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,CAAC;AACxC,aAAA;AACF,SAAA;KACF;IAEO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAK,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;KAChD;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;AAC1C,YAAA,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AAClD,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;;;;;AASG;IACK,qBAAqB,GAAA;;AAE3B,QAAA,MAAM,KAAK,GAAW,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC;AAC/E,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;AAED;;AAEG;IACK,mBAAmB,GAAA;AACzB,QAAA,MAAM,SAAS,GAAW,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9C,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,KAAK,KAAI;;;;;AAKrC,YAAA,MAAM,KAAK,GAAoB;AAC7B,gBAAA,OAAO,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC;gBACtC,GAAG,MAAM,CAAC,mBAAmB,EAAE;aAChC,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBACtB,SAAS,GAAG,KAAK,CAAC;AACnB,aAAA;AAED,YAAA,IAAI,SAAS,KAAK,KAAK,GAAG,CAAC,IAAI,SAAS,EAAE;AACxC,gBAAA,KAAK,CAAC,WAAW,GAAG,CAAC,CAAC;AACvB,aAAA;YAED,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtD,SAAC,CAAC,CAAC;KACJ;AAED;;AAEG;IACK,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,IAAI,CAAC,kBAAkB,EAAE;;YAE3B,OAAO;AACR,SAAA;;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;AACxB,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AAChC,SAAA;KACF;;iHAjLU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhD,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiD,KAAA,EAAA,EAAA,EAAA,KAAA,EAAAzD,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA0D,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,SAAA,EAFpB,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,SAAA,EAGvE,sBAAsB,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EACtB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAFzB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAJhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;AACzF,iBAAA,CAAA;uTAEkD,OAAO,EAAA,CAAA;sBAAvD,eAAe;uBAAC,sBAAsB,CAAA;gBAC8B,IAAI,EAAA,CAAA;sBAAxE,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,mBAAmB,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;;;ACtD7D;;;;AAIG;AAkEU,MAAA,uBAAuB,GAAgB;;IAElD,WAAW;IACX,oBAAoB;IACpB,yBAAyB;IACzB,eAAe;IACf,iBAAiB;IACjB,0BAA0B;IAC1B,iBAAiB;IACjB,qBAAqB;IACrB,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,yBAAyB;IACzB,gBAAgB;IAChB,uBAAuB;IACvB,mBAAmB;IACnB,qBAAqB;IACrB,sBAAsB;IACtB,cAAc;IACd,oBAAoB;IACpB,iCAAiC;IACjC,WAAW;IACX,wBAAwB;IACxB,WAAW;IACX,aAAa;IACb,UAAU;;IAGV,oBAAoB;IACpB,sBAAsB;IACtB,oBAAoB;IACpB,mBAAmB;;IAGnB,qBAAqB;IACrB,kBAAkB;IAClB,qBAAqB;;IAGrB,qBAAqB;IACrB,oBAAoB;EACpB;AAEF,MAAM,gCAAgC,GAAG,CAAC,uBAAuB,EAAE,6BAA6B,CAAC,CAAC;MAqBrF,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;QACE,YAAY,CAAC,QAAQ,CACnB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,CACf,CAAC;KACH;;8GAbU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA;;QA/D5B,WAAW;QACX,oBAAoB;QACpB,yBAAyB;QACzB,eAAe;QACf,iBAAiB;QACjB,0BAA0B;QAC1B,iBAAiB;QACjB,qBAAqB;QACrB,uBAAuB;QACvB,iBAAiB;QACjB,iBAAiB;QACjB,yBAAyB;QACzB,gBAAgB;QAChB,uBAAuB;QACvB,mBAAmB;QACnB,qBAAqB;QACrB,sBAAsB;QACtB,cAAc;QACd,oBAAoB;QACpB,iCAAiC;QACjC,WAAW;QACX,wBAAwB;QACxB,WAAW;QACX,aAAa;QACb,UAAU;;QAGV,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;;QAGnB,qBAAqB;QACrB,kBAAkB;QAClB,qBAAqB;;QAGrB,qBAAqB;AACrB,QAAA,oBAAoB,EAGoB,uBAAuB,EAAE,6BAA6B,aAI5F,YAAY;QACZ,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,cAAc;QACd,WAAW;QACX,gBAAgB;QAChB,oBAAoB;QACpB,qBAAqB;QACrB,4BAA4B;QAC5B,gBAAgB;QAChB,oBAAoB;QACpB,iBAAiB,CAAA,EAAA,OAAA,EAAA;;QA1DnB,WAAW;QACX,oBAAoB;QACpB,yBAAyB;QACzB,eAAe;QACf,iBAAiB;QACjB,0BAA0B;QAC1B,iBAAiB;QACjB,qBAAqB;QACrB,uBAAuB;QACvB,iBAAiB;QACjB,iBAAiB;QACjB,yBAAyB;QACzB,gBAAgB;QAChB,uBAAuB;QACvB,mBAAmB;QACnB,qBAAqB;QACrB,sBAAsB;QACtB,cAAc;QACd,oBAAoB;QACpB,iCAAiC;QACjC,WAAW;QACX,wBAAwB;QACxB,WAAW;QACX,aAAa;QACb,UAAU;;QAGV,oBAAoB;QACpB,sBAAsB;QACtB,oBAAoB;QACpB,mBAAmB;;QAGnB,qBAAqB;QACrB,kBAAkB;QAClB,qBAAqB;;QAGrB,qBAAqB;QACrB,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAwBT,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAjB1B,YAAY;QACZ,aAAa;QACb,kBAAkB;QAClB,aAAa;QACb,cAAc;QACd,WAAW;QACX,gBAAgB;QAChB,oBAAoB;QACpB,qBAAqB;QACrB,4BAA4B;QAC5B,gBAAgB;QAChB,oBAAoB;QACpB,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAKR,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAnB7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,WAAW;wBACX,gBAAgB;wBAChB,oBAAoB;wBACpB,qBAAqB;wBACrB,4BAA4B;wBAC5B,gBAAgB;wBAChB,oBAAoB;wBACpB,iBAAiB;AAClB,qBAAA;AACD,oBAAA,YAAY,EAAE,CAAC,uBAAuB,EAAE,gCAAgC,CAAC;oBACzE,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;ACtID;;;;AAIG;MASU,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA,CAAA;;MAaY,iBAAiB,CAAA;AAP9B,IAAA,WAAA,GAAA;QAQU,IAAY,CAAA,YAAA,GAAW,IAAI,CAAC;QAE5B,IAAG,CAAA,GAAA,GAAW,IAAI,CAAC;AAqB5B,KAAA;AAnBC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,GAAW,EAAA;QAChB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE;AACzC,YAAA,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AAChB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACnC,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,kBAAkB,GAAG,eAAe,EAAE,CAAC;AAE3D,QAAA,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACZ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACnC,SAAA;KACF;;8GAvBU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,wHALlB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAK1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,WAAW,EAAE,IAAI;AAClB,qBAAA;AACF,iBAAA,CAAA;8BAOK,EAAE,EAAA,CAAA;sBADL,KAAK;;;AC9BR;;;;AAIG;MA4EU,aAAa,CAAA;AAoBxB;;;;AAIG;IACH,WAGU,CAAA,MAAqB,EACtB,aAAsC,EAAA;QADrC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAe;QACtB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QA5BoB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QACb,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAO3D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAIjF,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAChB,IAAQ,CAAA,QAAA,GAAG,eAAe,EAAE,CAAC;QAErB,IAAgB,CAAA,gBAAA,GAAG,CAAC,CAAC;QACrB,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAavB,QAAA,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,QAAQ,EAAE,CAAC;AACnB,SAAA;KACF;IAED,IACI,eAAe,CAAC,KAAc,EAAA;AAChC,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AAEtB,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,iBAAiB,EAAE;AACzC,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAChC,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;AAChC,aAAA;AACF,SAAA;KACF;AAED,IAAA,IACI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACvE;AAED,IAAA,IACI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC;KAC1D;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;KAChC;AAED,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,OAAO,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AAC5B,SAAA;QAED,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC;KAChC;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;KACzC;AAED,IAAA,IAAI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,UAAU,GAAG,QAAQ,GAAG,IAAI,CAAC;KAC1C;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC;KACrC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AACzC,SAAA;KACF;IAED,QAAQ,GAAA;;;AAGN,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;KAC/B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;YAC/B,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzC,SAAA;KACF;IAED,kBAAkB,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,QAAQ,GAAG,CAAA,mBAAA,EAAsB,IAAI,CAAC,QAAQ,CAAE,CAAA,GAAG,IAAI,CAAC;KACrE;AAES,IAAA,6BAA6B,CAAC,KAAY,EAAA;AAClD,QAAA,IAAI,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAC5B,OAAO;AACR,SAAA;QAED,KAAK,CAAC,cAAc,EAAE,CAAC;KACxB;;0GA1HU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAzN,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAb,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,eAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,iBAAA,EAAA,YAAA,CAAA,EAAA,SAAA,EAAA,CAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,eAAA,EAAA,CAAA,mBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,qBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,4BAAA,EAAA,eAAA,EAAA,8BAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,gBAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWV,iBAAiB,EAnErB,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgM,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,sBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAgBU,aAAa,EAAA,UAAA,EAAA,CAAA;kBA1DzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EACjB,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCT,EAUK,IAAA,EAAA;AACJ,wBAAA,qBAAqB,EAAE,MAAM;AAC7B,wBAAA,aAAa,EAAE,WAAW;AAC1B,wBAAA,mBAAmB,EAAE,cAAc;AACpC,qBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;0BA4BE,QAAQ;;0BACR,QAAQ;+EA1BwD,QAAQ,EAAA,CAAA;sBAA1E,KAAK;uBAAC,eAAe,CAAA;;sBAAG,WAAW;uBAAC,4BAA4B,CAAA;gBACM,UAAU,EAAA,CAAA;sBAAhF,KAAK;uBAAC,iBAAiB,CAAA;;sBAAG,WAAW;uBAAC,8BAA8B,CAAA;gBAKzC,SAAS,EAAA,CAAA;sBAApC,KAAK;uBAAC,mBAAmB,CAAA;gBAEK,cAAc,EAAA,CAAA;sBAA5C,MAAM;uBAAC,qBAAqB,CAAA;gBAEI,eAAe,EAAA,CAAA;sBAA/C,YAAY;uBAAC,iBAAiB,CAAA;gBA0B3B,eAAe,EAAA,CAAA;sBADlB,KAAK;uBAAC,mBAAmB,CAAA;gBActB,eAAe,EAAA,CAAA;sBADlB,WAAW;uBAAC,2BAA2B,CAAA;gBAMpC,iBAAiB,EAAA,CAAA;sBADpB,WAAW;uBAAC,gBAAgB,CAAA;;AAuE/B,SAAS,iBAAiB,CAAC,KAAa,EAAA;AACtC,IAAA,MAAM,aAAa,GAAG,KAAK,EAAE,MAAqB,CAAC;AAEnD,IAAA,OAAO,aAAa,EAAE,OAAO,KAAK,OAAO,CAAC;AAC5C;;ACjNA;;;;AAIG;MAaU,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;QAQE,IAAQ,CAAA,QAAA,GAAG,eAAe,EAAE,CAAC;AAC9B,KAAA;;iHAFY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,sBAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,IAAI,EAAE;AACJ,wBAAA,mBAAmB,EAAE,MAAM;AAC3B,wBAAA,wBAAwB,EAAE,UAAU;AACrC,qBAAA;AACF,iBAAA,CAAA;;;AChBD;;;;AAIG;MAmBU,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAbb,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;2FAUU,YAAY,EAAA,UAAA,EAAA,CAAA;kBAfxB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,CAAA;;;AAGT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;;ACbH;;;;AAIG;MA0BU,cAAc,CAAA;AACzB,IAAA,WAAA,CAAmB,SAAuB,EAAA;QAAvB,IAAS,CAAA,SAAA,GAAT,SAAS,CAAc;KAAI;;2GADnC,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EAlBf,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA,CAAA;2FAUU,cAAc,EAAA,UAAA,EAAA,CAAA;kBApB1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAClB,QAAA,EAAA,CAAA;;;;;;;;AAQT,EAAA,CAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;;ACpBH;;;;AAIG;AAeU,MAAA,yBAAyB,GAAgB;IACpD,YAAY;IACZ,cAAc;IACd,aAAa;IACb,oBAAoB;IACpB,iBAAiB;IACjB,sBAAsB;EACtB;MAOW,kBAAkB,CAAA;AAC7B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KAClC;;+GAHU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAb7B,YAAY;QACZ,cAAc;QACd,aAAa;QACb,oBAAoB;QACpB,iBAAiB;QACjB,sBAAsB,CAAA,EAAA,OAAA,EAAA,CAIZ,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,4BAA4B,CAAA,EAAA,OAAA,EAAA,CAThF,YAAY;QACZ,cAAc;QACd,aAAa;QACb,oBAAoB;QACpB,iBAAiB;QACjB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAQX,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAJnB,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,4BAA4B,CAAA,EAAA,CAAA,CAAA;2FAIrE,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAL9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,aAAa,EAAE,4BAA4B,CAAC;oBACjF,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;AChCD;;;;AAIG;MASU,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;QAEE,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAK,CAAA,KAAA,GAAG,IAAI,CAAC;AAKb,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ,CAAC;AACvC,KAAA;;gHARY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;AAWL,SAAU,mBAAmB,CAAI,QAAgC,EAAA;AACrE,IAAA,OAAO,QAAQ,IAAI,IAAI,mBAAmB,EAAE,CAAC;AAC/C,CAAC;AAEM,MAAM,sBAAsB,GAAG;AACpC,IAAA,OAAO,EAAE,mBAAmB;AAC5B,IAAA,UAAU,EAAE,mBAAmB;AAC/B;;;;;;;AAOG;AACH,IAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;CAC9D;;ACvCD;;;;AAIG;AAwBH;;;AAGG;MACU,iBAAiB,CAAA;IAQ5B,WAAmB,CAAA,eAAuC,EAAsB,aAA8B,EAAA;QAA3F,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QAAsB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAiB;AAC5G,QAAA,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;AACpE,gBAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;;;;AAIzF,oBAAA,IAAI,CAAC,MAAoC,CAAC,aAAa,EAAE,CAAC;AAC5D,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAED,YAAY,GAAA;AACV,QAAA,QACE,IAAI,CAAC,eAAe,CAAC,SAAS;;;;AAI9B,aAAC,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAClF;KACH;AAED,IAAA,UAAU,CAAC,IAAsB,EAAA;QAC/B,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,KAAK;AACrB,YAAA,QAAQ,EAAE,IAAI;SACf,CAAC;KACH;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;KACF;;8GA1CU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAApN,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,EAflB,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2F,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FASU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAjB7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;wBACJ,aAAa,EAAE,SAAS;AACzB,qBAAA;AACF,iBAAA,CAAA;;0BAa8D,QAAQ;4CALpD,MAAM,EAAA,CAAA;sBAAtB,KAAK;uBAAC,QAAQ,CAAA;gBACI,QAAQ,EAAA,CAAA;sBAA1B,KAAK;uBAAC,UAAU,CAAA;;;ACpCnB;;;;AAIG;AAYG,SAAU,SAAS,CAAI,CAAgB,EAAA;;IAE3C,OAAO,CAAC,IAAI,OAAQ,CAAS,CAAC,IAAI,KAAK,UAAU,CAAC;AACpD;;ACnBA;;;;AAIG;AAEH;IACY,iBAOX;AAPD,CAAA,UAAY,gBAAgB,EAAA;;;;AAI1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAc,CAAA;AACd,IAAA,gBAAA,CAAA,gBAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,gBAAA,CAAA,gBAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACf,CAAC,EAPW,gBAAgB,KAAhB,gBAAgB,GAO3B,EAAA,CAAA,CAAA;;ACdD;;;;AAIG;MAMmB,aAAa,CAAA;AAAnC,IAAA,WAAA,GAAA;AAKE,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;QACtC,IAAQ,CAAA,QAAA,GAAG,IAAI,eAAe,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAE5D;;;;AAIG;QACK,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KA8F1B;AAlFC,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,SAAkB,EAAA;AAC5B,QAAA,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;AAC1B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC/B;IAED,OAAO,GAAA;;AAEL,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;KAC1B;;AAGD,IAAA,WAAW,CAAC,KAAuB,EAAE,WAAoB,EAAE,aAAsB,EAAA;AAC/E,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACjC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,aAAa,IAAI,KAAK,KAAK,gBAAgB,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,EAAE;YAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACvE,SAAA;AACD,QAAA,IAAI,WAAW,IAAI,IAAI,CAAC,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;AAC5C,SAAA;KACF;AAED,IAAA,eAAe,CAAC,SAAkB,EAAA;;QAEhC,MAAM,QAAQ,GACZ,IAAI,CAAC,QAAQ,CAAC,KAAK,KAAK,gBAAgB,CAAC,QAAQ,GAAG,gBAAgB,CAAC,UAAU,GAAG,gBAAgB,CAAC,QAAQ,CAAC;;;QAG9G,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;KAC7C;AAED;;AAEG;IACH,4BAA4B,GAAA;AAC1B,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,iCAAiC,EAAE,CAAC;AAC1D,QAAA,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;YACpC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,4BAA4B,EAAE,CAAC;AAC5C,SAAA;KACF;IAEO,iCAAiC,GAAA;QACvC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,aAAa,GAAG,KAAK,CAAC;;AAE1B,QAAA,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjC,YAAA,QAAQ,KAAK,CAAC,QAAQ,CAAC,KAAK;gBAC1B,KAAK,gBAAgB,CAAC,aAAa;oBACjC,OAAO,gBAAgB,CAAC,aAAa,CAAC;gBACxC,KAAK,gBAAgB,CAAC,QAAQ;oBAC5B,WAAW,GAAG,IAAI,CAAC;AACnB,oBAAA,IAAI,aAAa,EAAE;wBACjB,OAAO,gBAAgB,CAAC,aAAa,CAAC;AACvC,qBAAA;oBACD,MAAM;gBACR,KAAK,gBAAgB,CAAC,UAAU,CAAC;AACjC,gBAAA;;oBAEE,aAAa,GAAG,IAAI,CAAC;AACrB,oBAAA,IAAI,WAAW,EAAE;wBACf,OAAO,gBAAgB,CAAC,aAAa,CAAC;AACvC,qBAAA;oBACD,MAAM;AACT,aAAA;AACF,SAAA;QACD,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,gBAAgB,CAAC,UAAU,CAAC;AACpC,SAAA;aAAM,IAAI,CAAC,aAAa,EAAE;YACzB,OAAO,gBAAgB,CAAC,QAAQ,CAAC;AAClC,SAAA;AAAM,aAAA;YACL,OAAO,gBAAgB,CAAC,UAAU,CAAC;AACpC,SAAA;KACF;AACF;;ACrHD;;;;AAIG;AAQH;;;AAGG;AACG,MAAO,sBAA0B,SAAQ,aAAgB,CAAA;AAO7D,IAAA,WAAA,CACE,KAAQ,EACR,MAAwC,EAChC,WAAmD,EACnD,eAAmD,EAAA;AAE3D,QAAA,KAAK,EAAE,CAAC;QAHA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAwC;QACnD,IAAe,CAAA,eAAA,GAAf,eAAe,CAAoC;QAPrD,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAS,CAAA,SAAA,GAAgC,EAAE,CAAC;AASlD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;KACtB;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAkC,EAAA;AAC7C,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;IAEQ,OAAO,GAAA;QACd,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;QACD,KAAK,CAAC,OAAO,EAAE,CAAC;KACjB;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjD,OAAO,IAAI,CAAC,SAAS,CAAC;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,OAAO;AACR,SAAA;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACnD,QAAA,IAAI,SAAS,CAAC,aAAa,CAAC,EAAE;AAC5B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,aAAa,CAAC,IAAI,CAAC,GAAG,IAAG;gBACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,IAAG;gBAChD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACvB,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA,IAAI,aAAa,EAAE;;YAExB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;AACrB,SAAA;AACD,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC7C,SAAA;KACF;AAEO,IAAA,YAAY,CAAC,SAAc,EAAA;QACjC,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,sBAAsB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;KACxG;AACF;;ACxFD;;;;AAIG;MAmBU,iBAAiB,CAAA;AAS5B,IAAA,WAAA,CACU,QAAkD,EAClD,eAAuC,EACvC,GAAsB,EAAA;QAFtB,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0C;QAClD,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QACvC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;KAC5B;;IAGJ,WAAW,GAAA;AACT,QAAA,IAAI,OAAoC,CAAC;QACzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7B,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAClH,SAAA;AAAM,aAAA;YACL,OAAO,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;AAClG,SAAA;AACD,QAAA,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACnC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACzG,gBAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC3B,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,eAAe,CAAC,SAAS,GAAG;YAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;AACvB,YAAA,IAAI,EAAE,OAAO;SACd,CAAC;KACH;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,yBAAyB,EAAE;AAClC,YAAA,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,CAAC;AAC9C,SAAA;KACF;;8GAvCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAyH,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,mBAAA,EAAA,OAAA,CAAA,EAAA,WAAA,EAAA,CAAA,4BAAA,EAAA,aAAA,CAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sCAAsC;AACjD,iBAAA,CAAA;iKAG6B,KAAK,EAAA,CAAA;sBAAhC,KAAK;uBAAC,mBAAmB,CAAA;gBAGW,WAAW,EAAA,CAAA;sBAA/C,KAAK;uBAAC,4BAA4B,CAAA;;;AC5BrC;;;;AAIG;MAQU,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAKU,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAU,CAAC;AACtC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAU,CAAC;AA0M9C,KAAA;AAxMC,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KACzC;AAED,IAAA,SAAS,CAAC,KAAuB,EAAA;AAC/B,QAAA,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AACvC,SAAA;KACF;AAED,IAAA,oBAAoB,CAAC,MAAc,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE;AACjC,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAChC,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9B,SAAA;KACF;IAED,qBAAqB,GAAA;AACnB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AACjE,QAAA,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;KAC5B;IAED,oBAAoB,GAAA;QAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;KAC9C;AAED,IAAA,cAAc,CAAC,KAAuB,EAAA;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3C;AAED,IAAA,cAAc,CAAC,KAAuB,EAAA;QACpC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;KAC3C;IAED,mBAAmB,CAAC,YAAoB,EAAE,KAAuB,EAAA;AAC/D,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;KACrE;AAEO,IAAA,YAAY,CAAC,KAAuB,EAAA;;QAE1C,IAAI,KAAK,CAAC,MAAM,EAAE;AAChB,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC9B,SAAA;AAAM,aAAA;YACL,OAAO,IAAI,CAAC,cAAc,CAAC;AAC5B,SAAA;KACF;AAEO,IAAA,qBAAqB,CAAC,KAAuB,EAAA;;QAEnD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAChD,YAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;AAC9C,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;KACF;AAEO,IAAA,iBAAiB,CAAC,KAAuB,EAAA;QAC/C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAE1C,QAAA,IAAI,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACnC,YAAA,OAAO,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;AAChC,SAAA;AAAM,aAAA,IAAI,SAAS,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,qBAAqB,GAAA;QAC3B,MAAM,YAAY,GAChB,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC3G,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;KACjD;AAEO,IAAA,aAAa,CAAC,KAAuB,EAAA;QAC3C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,SAAS,KAAK,CAAC,EAAE;YACnB,OAAO,KAAK,CAAC,MAAM,CAAC;AACrB,SAAA;aAAM,IAAI,SAAS,GAAG,CAAC,EAAE;YACxB,OAAO,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC;AAC5D,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAEO,IAAA,aAAa,CAAC,KAAuB,EAAA;QAC3C,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACtC,SAAA;KACF;IAEO,4BAA4B,CAAC,YAAoB,EAAE,KAAuB,EAAA;QAChF,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC/C,YAAA,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE;gBACvC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAChE,gBAAA,IAAI,KAAK,EAAE;AACT,oBAAA,OAAO,KAAK,CAAC;AACd,iBAAA;AACF,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,yBAAyB,CAAC,YAAoB,EAAE,KAAuB,EAAA;QAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;AAG1C,QAAA,KAAK,IAAI,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,YAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AAClE,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,sBAAsB,CAAC,YAAoB,EAAE,KAAuB,EAAA;AAC1E,QAAA,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,cAAc,EAAE;;YAE3C,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC9C,SAAS;AACV,aAAA;YAED,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAC/D,YAAA,IAAI,KAAK,EAAE;AACT,gBAAA,OAAO,KAAK,CAAC;AACd,aAAA;AACF,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAEO,kBAAkB,CAAC,YAAoB,EAAE,KAAuB,EAAA;QACtE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE;AAC9C,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,OAAO,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;KAC/D;IAEO,yBAAyB,CAAC,YAAoB,EAAE,KAAuB,EAAA;QAC7E,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAEpF,QAAA,IAAI,oBAAoB,EAAE;AACxB,YAAA,OAAO,oBAAoB,CAAC;AAC7B,SAAA;QAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,yBAAyB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAE9E,QAAA,IAAI,iBAAiB,EAAE;AACrB,YAAA,OAAO,iBAAiB,CAAC;AAC1B,SAAA;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAE5E,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,OAAO,kBAAkB,CAAC;AAC3B,SAAA;;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;KAC5D;;oHA9MU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACXX;;;;AAIG;AAIH;;;AAGG;AACG,MAAO,wBAA4B,SAAQ,aAAgB,CAAA;AAK/D,IAAA,WAAA,CAAY,MAA0C,EAAA;AACpD,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACrB,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;IAEQ,OAAO,GAAA;QACd,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAChC,SAAA;QACD,KAAK,CAAC,OAAO,EAAE,CAAC;KACjB;AAED,IAAA,SAAS,CAAC,KAAkC,EAAA;AAC1C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;AAED,IAAA,YAAY,CAAC,KAAkC,EAAA;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC3C,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChC,SAAA;KACF;AACF;;AC3CD;;;;AAIG;MAOU,eAAe,CAAA;AAC1B,IAAA,WAAA,CAAoB,EAA2B,EAAA;QAA3B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAyB;KAAI;AAEnD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC3D;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;AACxD,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAA;KACF;;4GAXU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA,CAAA;;;ACVD;;;;AAIG;AAuCH,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;AACA;AACA,MAAM,uBAAuB,GAAG,GAAG,CAAC;MAkBvB,WAAW,CAAA;AAyBtB,IAAA,WAAA,CAC+B,UAAe,EAG5C,MAAsB,EACf,eAAuC,EACvC,aAA8B,EAC9B,aAAsC,EACrC,YAAwC,EACxC,UAAmC,EAC3C,QAAkB,EAAA;QATW,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QAIrC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QACvC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAiB;QAC9B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA4B;QACxC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;AA7BhB,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAmB,KAAK,CAAC,CAAC;AAC3D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,EAAW,CAAC;QAE1E,IAAM,CAAA,MAAA,GAAG,gBAAgB,CAAC;QAC1B,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAM,CAAA,MAAA,GAAG,eAAe,EAAE,CAAC;QAC3B,IAAwB,CAAA,wBAAA,GAAG,CAAC,CAAC,CAAC;QAGtB,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;QACvB,IAAkB,CAAA,kBAAA,GAAG,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAU,CAAC;QAC1C,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAoBzC,QAAA,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE;;;;;YAKlC,IAAK,QAAgB,CAAC,IAAI,EAAE;gBAC1B,IAAI,CAAC,MAAM,GAAI,QAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;AACvD,aAAA;AAAM,iBAAA;;gBAEL,IAAI,CAAC,MAAM,GAAI,QAAgB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC;AACtE,aAAA;AACF,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,wBAAwB,CAAC,MAAM,GAAI,MAAM,CAAC,MAAsC,GAAG,IAAI,CAAC,CAAC;AAC5G,SAAA;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;KAClC;AAED,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;KACnC;IACD,IAAI,QAAQ,CAAC,KAAiC,EAAA;AAC5C,QAAA,IAAI,CAAC,eAAe,CAAC,UAAU,GAAG,IAAI,CAAC;;;QAGvC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AAClD,YAAA,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC;AACrC,SAAA;;AAED,QAAA,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE;AAC9B,YAAA,KAAK,GAAG,KAAK,GAAG,gBAAgB,CAAC,QAAQ,GAAG,gBAAgB,CAAC,UAAU,CAAC;AACzE,SAAA;;;AAGD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACvF,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;;;;AAKD,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;KACpC;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;KACrC;IAED,IACI,eAAe,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;KAChG;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;YACvB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,KAAK,gBAAgB,CAAC,QAAQ,CAAC;AACjE,SAAA;AAAM,aAAA,IAAI,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE;AACpC,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;KACF;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;KAC7D;AAED,IAAA,IAAY,QAAQ,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;KAChE;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9E,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;AAChD,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;SAC9B,CAAC,CACH,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAG;AAChD,YAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,EACF,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,IAAG;AAC/C,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAC5B,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CACrG,CAAC;KACH;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,YAAoB,KAAI;YACpG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;;AAEjE,YAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;SAC9B,CAAC,CACH,CAAC;KACH;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AAC5B,YAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;AACvF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAED,YAAY,GAAA;AACV,QAAA,IAAI,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW,EAAE;YAC1C,OAAO,IAAI,CAAC,UAAU,CAAC;AACxB,SAAA;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC;KACzD;IAED,YAAY,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC;KACxC;IAED,aAAa,GAAA;AACX,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC;AACxD,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,aAAa,KAAK,WAAW,EAAE;AAChF,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpB,WAAW,CAAC,KAAK,EAAE,CAAC;AACpB,YAAA,WAAW,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACrE,SAAA;KACF;IAED,yBAAyB,GAAA;QACvB,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KACrD;AAED,IAAA,SAAS,CAAC,KAAoB,EAAA;;;;;QAK5B,qBAAqB,CAAC,KAAK,CAAC,CAAC;;AAG7B,QAAA,QAAQ,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC;YAC7B,KAAK,IAAI,CAAC,OAAO;gBACf,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,IAAI,CAAC,SAAS;gBACjB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM;YACR,KAAK,IAAI,CAAC,UAAU;gBAClB,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,MAAM;YACR,KAAK,IAAI,CAAC,SAAS;gBACjB,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBAC7B,MAAM;YACR,KAAK,IAAI,CAAC,IAAI;gBACZ,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;gBAC1C,MAAM;YACR,KAAK,IAAI,CAAC,GAAG;gBACX,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,gBAAA,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;gBACzC,MAAM;YACR,KAAK,IAAI,CAAC,KAAK;gBACb,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACpC,MAAM;YACR,KAAK,IAAI,CAAC,KAAK,CAAC;YAChB,KAAK,IAAI,CAAC,QAAQ;;gBAEhB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,IAAI,CAAC,4BAA4B,EAAE,CAAC;gBACpC,MAAM;AACR,YAAA;gBACE,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,yBAAyB,CAAC,KAAK,CAAC,EAAE;AAC/D,oBAAA,IAAI,CAAC,kBAAkB,IAAI,KAAK,CAAC,GAAG,CAAC;oBACrC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACrD,OAAO;AACR,iBAAA;gBACD,MAAM;AACT,SAAA;;AAGD,QAAA,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;KAC9B;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KACrE;AAEO,IAAA,aAAa,CAAC,MAAc,EAAA;AAClC,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,wBAAwB,KAAK,CAAC,CAAC,EAAE;AACxG,YAAA,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;AACtB,SAAA;KACF;IAEO,4BAA4B,GAAA;QAClC,IAAI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;AAC9C,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,oBAAoB,EAAE,CAAC;AAC7B,SAAA;KACF;IAEO,uBAAuB,GAAA;QAC7B,IAAI,IAAI,CAAC,QAAQ,EAAE;;YAEjB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/C,aAAA;AACF,SAAA;AAAM,aAAA;;;AAGL,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;AACvB,gBAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC;AACpC,aAAA;AACF,SAAA;KACF;IAEO,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,KAAK,CAAC;AACrC,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5C,SAAA;KACF;IAEO,oBAAoB,GAAA;QAC1B,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;AAC9B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;gBACvB,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;AACzD,aAAA;AACF,SAAA;KACF;;AA9RU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBA0BZ,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAApN,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAgM,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FA1BV,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,SAAA,EAbX,CAAC,sBAAsB,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAoC/F,eAAe,EAJO,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,ECpFnD,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,8nFAuEA,EDlBc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAtK,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuK,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,oBAAoB,EAAE;YAC5B,UAAU,CAAC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACjG,UAAU,CAAC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjG,YAAA,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;YAClE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;SACzC,CAAC;AACH,KAAA,EAAA,CAAA,CAAA;2FAKU,WAAW,EAAA,UAAA,EAAA,CAAA;kBAhBvB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,aAEd,CAAC,sBAAsB,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,CAAC,EACpG,UAAA,EAAA;wBACV,OAAO,CAAC,oBAAoB,EAAE;4BAC5B,UAAU,CAAC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BACjG,UAAU,CAAC,uBAAuB,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACjG,4BAAA,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;4BAClE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;yBACzC,CAAC;qBACH,EACK,IAAA,EAAA;AACJ,wBAAA,uBAAuB,EAAE,MAAM;AAChC,qBAAA,EAAA,QAAA,EAAA,8nFAAA,EAAA,CAAA;;0BA4BE,MAAM;2BAAC,WAAW,CAAA;;0BAClB,QAAQ;;0BACR,QAAQ;4NAzBa,UAAU,EAAA,CAAA;sBAAjC,KAAK;uBAAC,eAAe,CAAA;gBAEO,cAAc,EAAA,CAAA;sBAA1C,MAAM;uBAAC,mBAAmB,CAAA;gBACE,cAAc,EAAA,CAAA;sBAA1C,MAAM;uBAAC,mBAAmB,CAAA;gBAagD,gBAAgB,EAAA,CAAA;sBAA1F,SAAS;uBAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAIC,gBAAgB,EAAA,CAAA;sBAAjF,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,eAAe,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;gBAiCpD,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,aAAa,CAAA;gBA0BhB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,aAAa,CAAA;gBAShB,eAAe,EAAA,CAAA;sBADlB,KAAK;uBAAC,iBAAiB,CAAA;;AAyM1B,SAAS,gBAAgB,CAAC,KAAa,EAAA;AACrC,IAAA,OAAO,KAAK,CAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,CAAC;AAC1C;;AEpWA;;;;AAIG;MAmCU,OAAO,CAAA;IAKlB,WACS,CAAA,eAAuC,EACtC,mBAA+C,EACvD,EAAE,aAAa,EAA2B,EAC1C,QAAmB,EACnB,MAAc,EAAA;QAJP,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QACtC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAA4B;QAJjD,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QASzC,MAAM,YAAY,GAAG,MAAM,CAAC,iBAAiB,CAAC,MAC5C,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC,KAAiB,KAAI;AAClE,YAAA,IAAI,KAAK,CAAC,MAAM,KAAK,aAAa,EAAE;;;AAGlC,gBAAA,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,EAAE,CAAC;;;AAGjD,gBAAA,QAAQ,CAAC,eAAe,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACrD,aAAA;SACF,CAAC,CACH,CAAC;AAEF,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACvC;IAED,IACI,IAAI,CAAC,KAAc,EAAA;AACrB,QAAA,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;KACrC;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;KACrE;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACpC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAEO,YAAY,GAAA;;;;AAIlB,QAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAChH;;oGAvDU,OAAO,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wFAAP,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,SAAA,EAPP,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAQ3C,WAAW,EAflB,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;AAMT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5H,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6H,iBAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAQU,OAAO,EAAA,UAAA,EAAA,CAAA;kBAhBnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAAA;;;;;;AAMT,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE,CAAC,sBAAsB,EAAE,uBAAuB,CAAC;AAC5D,oBAAA,IAAI,EAAE;AACJ,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,aAAa,EAAE,QAAQ;AACvB,wBAAA,6BAA6B,EAAE,mBAAmB;AACnD,qBAAA;AACF,iBAAA,CAAA;gNAEuC,SAAS,EAAA,CAAA;sBAA9C,eAAe;uBAAC,WAAW,CAAA;gBA4BxB,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,SAAS,CAAA;;;ACnElB;;;;AAIG;AAcI,MAAM,wBAAwB,GAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAE;MAOnG,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;KAClC;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAPwB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAInE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CADhD,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAHH,EAAA,OAAA,EAAA,CAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;AAOjG,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJlB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAI5C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;AACxD,oBAAA,YAAY,EAAE,CAAC,wBAAwB,EAAE,iBAAiB,CAAC;oBAC3D,OAAO,EAAE,CAAC,wBAAwB,CAAC;AACpC,iBAAA,CAAA;;;ACxBD;;;;AAIG;MAWU,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAFd,OAAA,EAAA,CAAA,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAEvD,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,EAFd,OAAA,EAAA,CAAA,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAEvD,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,CAAC;AACpE,iBAAA,CAAA;;;ACdD;;;;AAIG;SAIa,cAAc,CAC5B,UAAyB,EACzB,WAA6C,EAC7C,aAA+C,EAAA;AAE/C,IAAA,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,QAAqB,KAAI;QACjD,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtB,MAAM,YAAY,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACpD,QAAA,OAAO,MAAK;YACV,YAAY,CAAC,WAAW,EAAE,CAAC;AAC3B,YAAA,IAAI,aAAa,EAAE;gBACjB,aAAa,CAAC,QAAQ,CAAC,CAAC;AACzB,aAAA;AACH,SAAC,CAAC;AACJ,KAAC,CAAC,CAAC;AACL;;ACvBA;;;;AAIG;MAiBU,oBAAoB,CAAA;IAa/B,WACU,CAAA,QAAmB,EAGnB,MAA4B,EAC5B,aAAsC,EACtC,YAA0B,EACL,UAAe,EAAA;QANpC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAGnB,IAAM,CAAA,MAAA,GAAN,MAAM,CAAsB;QAC5B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QACL,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QAnB9C,IAAE,CAAA,EAAA,GAAG,eAAe,EAAE,CAAC;QACvB,IAA4B,CAAA,4BAAA,GAAG,KAAK,CAAC;QAS7B,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;QAW1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,uBAAuB,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChB,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,SAAA;KACF;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,EAAe,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CACnG,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,iBAAiB,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAChG,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAClG,CAAC;AACF,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACzC,SAAA;KACF;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,EAAe,EAAA;AAC3B,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;;AAGrB,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,aAAa,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAC5F,CAAC;QAEF,IAAI,IAAI,CAAC,MAAM,EAAE;;;;AAIf,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,IAAG;gBACjD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC/C,KAAK,CAAC,eAAe,EAAE,CAAC;aACzB,CAAC,CACH,CAAC;AACH,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;;AAGxC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,EAAE,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAC/F,CAAC;;AAGF,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,IAAG;;AAEvC,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;;;gBAKnF,MAAM,MAAM,GAAG,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,aAAa,CAAC;;;;gBAK7D,IAAI,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAChD,oBAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,EAAE;wBAClD,OAAO;AACR,qBAAA;AACF,iBAAA;;AAED,gBAAA,IAAI,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAC1C,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;aACjC,CAAC,CACH,CAAC;AACH,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,QAAoB,KAAK,QAAQ,EAAE,CAAC,CAAC;AAClE,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;KACrC;AAED;;AAEG;IACH,uBAAuB,GAAA;AACrB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;AAClE,YAAA,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE;;;gBAG5C,UAAU,CAAC,MAAK;AACd,oBAAA,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;wBACf,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACjD,qBAAA;AAAM,yBAAA;wBACL,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAChD,qBAAA;AACH,iBAAC,CAAC,CAAC;AACJ,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;AAED;;AAEG;IACH,eAAe,GAAA;AACb,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,IAAG;YAClE,IAAI,CAAC,IAAI,EAAE;;AAET,gBAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;gBAE9B,IAAI,IAAI,CAAC,4BAA4B,EAAE;oBACrC,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,iBAAA;AACF,aAAA;AACD,YAAA,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC;AAC3C,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;KAC5D;IAED,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACtB,SAAA;KACF;IAED,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtD,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;AACrB,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;AACtB,SAAA;KACF;IAED,aAAa,GAAA;QACX,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAkB,CAAC,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACjE,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3E,SAAA;KACF;AAED,IAAA,WAAW,CAAC,QAAyB,EAAA;AACnC,QAAA,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAC9E,SAAA;AACD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC9B;IAEO,kBAAkB,GAAA;AACxB,QAAA,OAAO,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC;KAC9E;IAEO,eAAe,GAAA;QACrB,OAAO,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC;KAC1E;;AAnMU,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,2KAoBrB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHApBV,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;0BAgBN,QAAQ;;0BACR,QAAQ;;0BAIR,MAAM;2BAAC,WAAW,CAAA;;AAkLhB,MAAM,+BAA+B,GAAG,2BAA2B,CAAC,oBAAoB,CAAC;;AC3NhG;;;;AAIG;MAOU,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAW,CAAC;AAS3C,KAAA;AAPC,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACrC;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3B;;gHATU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;AAaL,SAAU,sBAAsB,CAAC,QAA6B,EAAA;AAClE,IAAA,OAAO,QAAQ,IAAI,IAAI,mBAAmB,EAAE,CAAC;AAC/C,CAAC;AAEM,MAAM,sBAAsB,GAAG;AACpC,IAAA,OAAO,EAAE,mBAAmB;AAC5B,IAAA,UAAU,EAAE,sBAAsB;AAClC,IAAA,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;CAC9D;;AC/BD;;;;AAIG;MAqBU,WAAW,CAAA;IAKtB,WAGS,CAAA,MAAmB,EACnB,aAAsC,EACtC,YAAkC,EACjC,GAAsB,EAC9B,eAAoC,EAAA;QAJ7B,IAAM,CAAA,MAAA,GAAN,MAAM,CAAa;QACnB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAsB;QACjC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QAVE,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QAEhD,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAWzC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;KAC5F;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;;wGApBU,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA3M,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA4M,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAX,WAAW,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,CAAA,yBAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,YAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,SAAA,EAHX,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,+BAA+B,CAAC,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA3E,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALlF,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAQ1B,WAAW,EAAA,UAAA,EAAA,CAAA;kBAVvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,cAAc,EAAE,oBAAoB;AACrC,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,sBAAsB,EAAE,sBAAsB,EAAE,+BAA+B,CAAC;oBAC5F,cAAc,EAAE,CAAC,uBAAuB,CAAC;AAC1C,iBAAA,CAAA;;0BAOI,QAAQ;;0BACR,QAAQ;8KANuB,cAAc,EAAA,CAAA;sBAA/C,KAAK;uBAAC,yBAAyB,CAAA;;;AC1BlC;;;;AAIG;MASU,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CACU,EAA2B,EAC3B,QAAmB,EACE,UAAe,EAAA;QAFpC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAyB;QAC3B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QACE,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QAN9C,IAAE,CAAA,EAAA,GAAG,eAAe,EAAE,CAAC;QACvB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAOf,QAAA,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;KAC3D;IAED,KAAK,GAAA;AACH,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;AACnE,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AAClG,SAAA;KACF;IACD,IAAI,GAAA;AACF,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;AACpE,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC9B,SAAA;KACF;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AACtC,YAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;AAC/B,SAAA;KACF;;AA/BU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,qEAOnB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAPV,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;0BAQN,MAAM;2BAAC,WAAW,CAAA;;AA2BhB,MAAM,6BAA6B,GAAG;AAC3C,IAAA;AACE,QAAA,OAAO,EAAE,aAAa;AACtB,QAAA,QAAQ,EAAE,kBAAkB;AAC7B,KAAA;CACF;;ACpDD;;;;AAIG;MAoBU,eAAe,CAAA;AAC1B,IAAA,WAAA,CACU,QAAqB,EACrB,gBAAqC,EACrC,aAA4B,EAAA;QAF5B,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAa;QACrB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAqB;QACrC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAClC;AAEJ,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;KACpC;IACD,IAAI,QAAQ,CAAC,KAAuB,EAAA;;AAElC,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC;KACvD;AAED;;AAEG;AACH,IAAA,IACI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC;KAC9B;IACD,IAAI,cAAc,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,KAAK,CAAC;KAC/B;IAGO,mBAAmB,GAAA;;;AAGzB,QAAA,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE;AACtF,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAE7C,YAAA,YAAY,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;;;AAGlC,YAAA,YAAY,CAAC,YAAY,CAAC,4BAA4B,GAAG,KAAK,CAAC;AAChE,SAAA;;QAGD,UAAU,CAAC,MAAK;YACd,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClD,gBAAA,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;AACpC,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAGO,IAAA,cAAc,CAAC,MAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;KACjD;AAGO,IAAA,cAAc,CAAC,MAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,kCAAkC,CAAC,MAAM,CAAC,CAAC;KACjD;AAEO,IAAA,kCAAkC,CAAC,MAAa,EAAA;QACtD,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,CAAC,wBAAwB,EAAE,CAAC;AACnC,SAAA;KACF;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEjC,OAAO,YAAY,CAAC,MAAM,EAAE;AAC1B,YAAA,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC;AACpC,SAAA;AAED,QAAA,OAAO,YAAY,CAAC;KACrB;;4GAzEU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA4E,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,cAAA,EAAA,CAAA,IAAA,EAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,uBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,eAAA,EAAA,wBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,SAAA,EAFf,CAAC,6BAA6B,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAE/B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,IAAI,EAAE;AACJ,wBAAA,kBAAkB,EAAE,UAAU;AAC9B,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,aAAa,EAAE,YAAY;AAC3B,wBAAA,sBAAsB,EAAE,UAAU;AAClC,wBAAA,WAAW,EAAE,gBAAgB;AAC9B,qBAAA;oBACD,SAAS,EAAE,CAAC,6BAA6B,CAAC;AAC3C,iBAAA,CAAA;uJASK,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,aAAa,CAAA;gBAahB,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,IAAI,CAAA;gBASH,mBAAmB,EAAA,CAAA;sBAD1B,YAAY;uBAAC,OAAO,CAAA;gBAsBb,cAAc,EAAA,CAAA;sBADrB,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAMjC,cAAc,EAAA,CAAA;sBADrB,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC7E3C;;;;AAIG;AAWH,IAAY,KAaX,CAAA;AAbD,CAAA,UAAY,KAAK,EAAA;AACf,IAAA,KAAA,CAAA,KAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ,IAAA,KAAA,CAAA,KAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,KAAA,CAAA,KAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ,IAAA,KAAA,CAAA,KAAA,CAAA,YAAA,CAAA,GAAA,CAAA,CAAA,GAAA,YAAU,CAAA;AACV,IAAA,KAAA,CAAA,KAAA,CAAA,WAAA,CAAA,GAAA,CAAA,CAAA,GAAA,WAAS,CAAA;AACT,IAAA,KAAA,CAAA,KAAA,CAAA,UAAA,CAAA,GAAA,CAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,KAAA,CAAA,KAAA,CAAA,eAAA,CAAA,GAAA,CAAA,CAAA,GAAA,eAAa,CAAA;AACb,IAAA,KAAA,CAAA,KAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY,CAAA;AACZ,IAAA,KAAA,CAAA,KAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,KAAA,CAAA,KAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAW,CAAA;AACX,IAAA,KAAA,CAAA,KAAA,CAAA,UAAA,CAAA,GAAA,EAAA,CAAA,GAAA,UAAQ,CAAA;AACR,IAAA,KAAA,CAAA,KAAA,CAAA,aAAA,CAAA,GAAA,EAAA,CAAA,GAAA,aAAW,CAAA;AACb,CAAC,EAbW,KAAK,KAAL,KAAK,GAahB,EAAA,CAAA,CAAA,CAAA;AAED,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,MAAM,iBAAiB,GAAG,UAAU,CAAC;AACrC,MAAM,cAAc,GAAG,OAAO,CAAC;AAE/B,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,MAAM,aAAa,GAAG,MAAM,CAAC;MAEhB,OAAO,CAAA;AASlB,IAAA,WAAA,CAAoB,OAAY,EAAA;QAAZ,IAAO,CAAA,OAAA,GAAP,OAAO,CAAK;QAPxB,IAAqB,CAAA,qBAAA,GAAQ,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAErE;;AAEG;QACK,IAAkB,CAAA,kBAAA,GAAkB,EAAE,CAAC;;AAI7C,QAAA,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,iBAAiB,CAAC;AAC3C,QAAA,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;AACtB,QAAA,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;AAC9B,QAAA,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;AACvB,QAAA,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;KAC9B;;IAGD,MAAM,CACJ,MAAW,EACX,WAAkB,EAClB,YAAmB,EACnB,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,eAAe,GAAG,KAAK,KAAqB,EAAE,EAAA;;;AAK1E,QAAA,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;AACrC,QAAA,IAAI,eAAe,EAAE;AACnB,YAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,SAAA;;AAED,QAAA,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAEjC,QAAA,MAAM,UAAU,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;;QAGzD,IAAI,QAAQ,GAAW,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC;QACpE,IAAI,OAAO,GAAW,UAAU,CAAC,GAAG,GAAG,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC;;AAGjE,QAAA,QAAQ,WAAW;YACjB,KAAK,KAAK,CAAC,QAAQ,CAAC;YACpB,KAAK,KAAK,CAAC,QAAQ;gBACjB,MAAM;YACR,KAAK,KAAK,CAAC,UAAU;AACnB,gBAAA,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,KAAK,CAAC,SAAS;AAClB,gBAAA,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK,CAAC,SAAS;AAClB,gBAAA,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK,CAAC,WAAW;AACpB,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK,CAAC,WAAW;AACpB,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK,CAAC,aAAa;AACtB,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;AAC7B,gBAAA,QAAQ,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;AACrB,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;AAC7B,gBAAA,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;AACrB,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC;AAC7B,gBAAA,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC;gBAC7B,MAAM;YACR,KAAK,KAAK,CAAC,WAAW;AACpB,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;AACrB,gBAAA,OAAO,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACjC,gBAAA,QAAQ,IAAI,UAAU,CAAC,KAAK,CAAC;gBAC7B,MAAM;YACR,QAAQ;AACT,SAAA;;AAGD,QAAA,QAAQ,YAAY;YAClB,KAAK,KAAK,CAAC,QAAQ,CAAC;YACpB,KAAK,KAAK,CAAC,QAAQ;gBACjB,MAAM;YACR,KAAK,KAAK,CAAC,UAAU;AACnB,gBAAA,QAAQ,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,KAAK,CAAC,SAAS;AAClB,gBAAA,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC;gBAC9B,MAAM;YACR,KAAK,KAAK,CAAC,SAAS;AAClB,gBAAA,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC;gBAC9B,MAAM;YACR,KAAK,KAAK,CAAC,WAAW;AACpB,gBAAA,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC;gBAC9B,MAAM;YACR,KAAK,KAAK,CAAC,WAAW;AACpB,gBAAA,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC;gBAC9B,MAAM;YACR,KAAK,KAAK,CAAC,aAAa;AACtB,gBAAA,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC;AAC9B,gBAAA,QAAQ,IAAI,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;AACrB,gBAAA,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC;AAC9B,gBAAA,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC;gBAC9B,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;AACrB,gBAAA,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC;AAC9B,gBAAA,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC;gBAC9B,MAAM;YACR,KAAK,KAAK,CAAC,WAAW;AACpB,gBAAA,OAAO,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;AACrB,gBAAA,OAAO,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;AAClC,gBAAA,QAAQ,IAAI,WAAW,CAAC,KAAK,CAAC;gBAC9B,MAAM;YACR,QAAQ;AACT,SAAA;;;;;;;;;;;QAaD,MAAM,oBAAoB,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,QAAQ,CAAC,oBAAoB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,QAAQ,CAAC,oBAAoB,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,QAAQ,CAAC,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,QAAQ,CAAC,oBAAoB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAErE,QAAA,QAAQ,WAAW;YACjB,KAAK,KAAK,CAAC,QAAQ,CAAC;YACpB,KAAK,KAAK,CAAC,QAAQ,CAAC;YACpB,KAAK,KAAK,CAAC,SAAS,CAAC;YACrB,KAAK,KAAK,CAAC,SAAS;gBAClB,IAAI,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE;oBAC9E,OAAO,IAAI,YAAY,CAAC;oBACxB,QAAQ,IAAI,WAAW,CAAC;AACzB,iBAAA;gBACD,IAAI,YAAY,KAAK,KAAK,CAAC,WAAW,IAAI,YAAY,KAAK,KAAK,CAAC,WAAW,EAAE;oBAC5E,OAAO,IAAI,SAAS,CAAC;oBACrB,QAAQ,IAAI,UAAU,CAAC;AACxB,iBAAA;gBACD,IAAI,YAAY,KAAK,KAAK,CAAC,QAAQ,IAAI,YAAY,KAAK,KAAK,CAAC,QAAQ,EAAE;oBACtE,OAAO,IAAI,SAAS,CAAC;oBACrB,QAAQ,IAAI,UAAU,CAAC;AACxB,iBAAA;gBACD,IAAI,YAAY,KAAK,KAAK,CAAC,SAAS,IAAI,YAAY,KAAK,KAAK,CAAC,SAAS,EAAE;oBACxE,OAAO,IAAI,SAAS,CAAC;oBACrB,QAAQ,IAAI,WAAW,CAAC;AACzB,iBAAA;gBACD,MAAM;YACR,KAAK,KAAK,CAAC,WAAW,CAAC;YACvB,KAAK,KAAK,CAAC,WAAW,CAAC;YACvB,KAAK,KAAK,CAAC,YAAY,CAAC;YACxB,KAAK,KAAK,CAAC,YAAY;gBACrB,IAAI,YAAY,KAAK,KAAK,CAAC,WAAW,IAAI,YAAY,KAAK,KAAK,CAAC,WAAW,EAAE;oBAC5E,OAAO,IAAI,YAAY,CAAC;oBACxB,QAAQ,IAAI,UAAU,CAAC;AACxB,iBAAA;gBACD,IAAI,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,YAAY,KAAK,KAAK,CAAC,YAAY,EAAE;oBAC9E,OAAO,IAAI,YAAY,CAAC;oBACxB,QAAQ,IAAI,WAAW,CAAC;AACzB,iBAAA;gBACD,IAAI,YAAY,KAAK,KAAK,CAAC,QAAQ,IAAI,YAAY,KAAK,KAAK,CAAC,QAAQ,EAAE;oBACtE,OAAO,IAAI,SAAS,CAAC;oBACrB,QAAQ,IAAI,UAAU,CAAC;AACxB,iBAAA;gBACD,IAAI,YAAY,KAAK,KAAK,CAAC,SAAS,IAAI,YAAY,KAAK,KAAK,CAAC,SAAS,EAAE;oBACxE,OAAO,IAAI,SAAS,CAAC;oBACrB,QAAQ,IAAI,WAAW,CAAC;AACzB,iBAAA;gBACD,MAAM;YACR,KAAK,KAAK,CAAC,UAAU;gBACnB,OAAO,IAAI,YAAY,CAAC;gBACxB,QAAQ,IAAI,UAAU,CAAC;gBACvB,QAAQ,IAAI,WAAW,CAAC;gBACxB,MAAM;YACR,KAAK,KAAK,CAAC,aAAa;gBACtB,OAAO,IAAI,SAAS,CAAC;gBACrB,QAAQ,IAAI,UAAU,CAAC;gBACvB,QAAQ,IAAI,WAAW,CAAC;gBACxB,MAAM;YACR,KAAK,KAAK,CAAC,WAAW;gBACpB,OAAO,IAAI,SAAS,CAAC;gBACrB,OAAO,IAAI,YAAY,CAAC;gBACxB,QAAQ,IAAI,WAAW,CAAC;gBACxB,MAAM;YACR,KAAK,KAAK,CAAC,YAAY;gBACrB,OAAO,IAAI,SAAS,CAAC;gBACrB,OAAO,IAAI,YAAY,CAAC;gBACxB,QAAQ,IAAI,UAAU,CAAC;gBACvB,MAAM;YACR,QAAQ;AACT,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,CAAc,WAAA,EAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA,GAAA,CAAK,CAAC;AAC5G,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;IAED,OAAO,GAAA;QACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,0BAA0B,EAAE,CAAC;KACnC;AAEO,IAAA,YAAY,CAAC,SAAc,EAAA;QACjC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;QACtD,OAAO,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,KAAK,iBAAiB,IAAI,QAAQ,KAAK,cAAc,CAAC;KACxG;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;AAEO,IAAA,uBAAuB,CAAC,CAAM,EAAA;AACpC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAAQ,CAAC;QACnC,MAAM,MAAM,GAAQ,CAAC,CAAC;QACtB,IAAI,OAAO,GAAQ,CAAC,CAAC;AACrB,QAAA,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,EAAE;AACtC,YAAA,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACzB,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAC/D,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACvC,aAAA;YACD,IAAI,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;gBACpD,MAAM;AACP,aAAA;AACD,YAAA,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;AAC9B,SAAA;KACF;IAEO,0BAA0B,GAAA;AAChC,QAAA,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC1C,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;AAChE,SAAA;AACD,QAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,OAAO,CAAC;AACrB,SAAA;KACF;AAEO,IAAA,OAAO,CAAC,SAAc,EAAA;AAC5B,QAAA,MAAM,cAAc,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;AACnD,QAAA,QACE,cAAc,CAAC,SAAS,KAAK,eAAe;YAC5C,cAAc,CAAC,SAAS,KAAK,aAAa;YAC1C,cAAc,CAAC,SAAS,KAAK,eAAe;AAC5C,YAAA,cAAc,CAAC,SAAS,KAAK,aAAa,EAC1C;KACH;AACF;;AC5SD;;;;AAIG;MAuBmB,eAAe,CAAA;IAuBnC,WAAY,CAAA,QAAkB,EAAwB,UAAsB,EAAA;QAAtB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAtB5E;;;AAGG;QACH,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;QAUlB,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;QAGtC,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;QAGrB,IAAmB,CAAA,mBAAA,GAAwB,IAAI,CAAC;QAyFhD,IAA2B,CAAA,2BAAA,GAAG,KAAK,IAAG;;YAE5C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;gBAC1C,OAAO;AACR,aAAA;AACD,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AAClC,SAAC,CAAC;QA5FA,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;;AAE3C,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC;AAE3C,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAC1D,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,IAAG;AACnE,YAAA,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;KAC/C;IAED,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe;AACjB,iBAAA,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC;iBACjF,SAAS,CAAC,MAAK;;AAEd,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AAClC,aAAC,CAAC,CAAC;YACL,IAAI,CAAC,0BAA0B,EAAE,CAAC;AACnC,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;IAES,MAAM,GAAA;AACd,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;KAC1B;IAES,OAAO,GAAA;QACf,IAAI,CAAC,0BAA0B,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;KAChC;IAEO,iBAAiB,GAAA;AACvB,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE;YAC/C,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;AACjC,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,IAAG;AAC7E,gBAAA,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,EAAE;oBACtB,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE;AAC3C,wBAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAK;AACnB,4BAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AAChC,4BAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;AAC1B,yBAAC,CAAC,CAAC;AACJ,qBAAA;AACF,iBAAA;AACH,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAEO,iBAAiB,GAAA;QACvB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AACjC,SAAA;KACF;IAUO,0BAA0B,GAAA;QAChC,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;AACvD,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,EAAE;;;gBAGzC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;AAC5E,aAAA;AACF,SAAA;KACF;IAEO,0BAA0B,GAAA;QAChC,IAAI,IAAI,CAAC,mBAAmB,EAAE;AAC5B,YAAA,IAAI,QAAQ,IAAI,QAAQ,CAAC,mBAAmB,EAAE;gBAC5C,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,CAAC;AAC/E,aAAA;AACF,SAAA;KACF;;4GAtImB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBADpC,SAAS;;0BAwByB,QAAQ;4CA6BrC,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,qBAAqB,CAAA;;;AC9EpC;;;;AAIG;AA8BG,MAAO,eAAgB,SAAQ,eAAe,CAAA;AAKlD,IAAA,WAAA,CACE,QAAkB,EAGlB,UAAmC,EAGnC,MAAuB,EACvB,YAAkC,EAAA;QAElC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;AACnF,SAAA;AACD,QAAA,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5B,IAAI,CAAC,MAAM,EAAE;;AAEX,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACrC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;AACpC,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;AACnC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;AACpC,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,uBAAuB,GAAG,IAAI,CAAC;AACnD,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KAClC;IAED,IACI,QAAQ,CAAC,QAAgB,EAAA;;AAE3B,QAAA,QAAQ,QAAQ;AACd,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;AACnC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBACvC,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;AAClC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;gBACtC,MAAM;AACR,YAAA,KAAK,cAAc;AACjB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;AACtC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;gBACpC,MAAM;AACR,YAAA,KAAK,aAAa;AAChB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACrC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACnC,MAAM;AACR,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC;AACnC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACnC,MAAM;AACR,YAAA,KAAK,cAAc;AACjB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;AACtC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;gBACtC,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;AAClC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;gBACpC,MAAM;AACR,YAAA,KAAK,aAAa;AAChB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACrC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBACvC,MAAM;AACR,YAAA;AACE,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACrC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACnC,MAAM;AACT,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;;AAExF,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;KAC9B;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;AACpB,QAAA,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC;KACnC;;AAvFU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,0CAQhB,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;gGARlB,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,WAAA,EAAA,UAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EACT,aAAa,EAAA,CAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAPpB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAM1B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAR3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,uBAAuB,EAAE,MAAM;AAC/B,wBAAA,aAAa,EAAE,QAAQ;AACxB,qBAAA;AACF,iBAAA,CAAA;;0BAQI,QAAQ;;0BACR,MAAM;2BAAC,mBAAmB,CAAA;;0BAE1B,QAAQ;;0BACR,QAAQ;4EAVqB,KAAK,EAAA,CAAA;sBAApC,eAAe;uBAAC,aAAa,CAAA;gBAkC1B,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,aAAa,CAAA;;;ACpEtB;;;;AAIG;MAoBU,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CACE,QAAqB,EACb,aAAsC,EAC9C,EAA2B,EAC3B,YAAkC,EAAA;QAF1B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAJhD,IAAiB,CAAA,iBAAA,GAAG,IAAI,CAAC;;QASvB,IAAI,QAAQ,CAAC,MAAM,EAAE;AACnB,YAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAChC,SAAA;AACD,QAAA,YAAY,CAAC,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC;KACzC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;KAChC;AAGD,IAAA,sBAAsB,CAAC,KAAU,EAAA;AAC/B,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;KAC3C;;+GAvBU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAlN,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAsN,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,0CAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,gCAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,cAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,0CAA0C;AACpD,oBAAA,IAAI,EAAE;AACJ,wBAAA,yBAAyB,EAAE,mBAAmB;AAC9C,wBAAA,uBAAuB,EAAE,oBAAoB;AAC7C,wBAAA,oBAAoB,EAAE,oBAAoB;AAC1C,wBAAA,gBAAgB,EAAE,QAAQ;AAC1B,wBAAA,sBAAsB,EAAE,QAAQ;AAChC,wBAAA,sBAAsB,EAAE,QAAQ;AACjC,qBAAA;AACF,iBAAA,CAAA;2LAsBC,sBAAsB,EAAA,CAAA;sBADrB,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;AC5CnC;;;;AAIG;AAYI,MAAM,uBAAuB,GAAgB,CAAC,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAAE;MAO3G,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAAjB,iBAAiB,EAAA,YAAA,EAAA,CAPuB,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,CAG1G,EAAA,OAAA,EAAA,CAAA,YAAY,aAH6B,WAAW,EAAE,eAAe,EAAE,kBAAkB,EAAE,eAAe,EAKjF,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;AAE3D,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,EAJlB,OAAA,EAAA,CAAA,YAAY,EAEa,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FAE3D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,aAAa,CAAC;AACxE,iBAAA,CAAA;;;ACtBD;;;;AAIG;AAEH;AACO,MAAM,WAAW,GAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC;;ACP7E;;;;AAIG;MASU,wBAAwB,CAAA;AAKnC,IAAA,WAAA,CAAoB,aAAsC,EAAA;QAAtC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAJlD,IAAgB,CAAA,gBAAA,GAAG,aAAa,CAAC;QACjC,IAAe,CAAA,eAAA,GAAG,EAAE,CAAC;QACrB,IAAU,CAAA,UAAA,GAAG,MAAM,CAAC;KAEkC;AAE9D,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,GAAW,EAAA;QACvB,IAAI,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AACvB,SAAA;KACF;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,IAAI,EAAE,KAAK,IAAI,CAAC,eAAe,EAAE;YAC/B,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;AACrD,SAAA;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,GAAW,EAAA;QAC5B,IAAI,CAAC,GAAG,EAAE;AACR,YAAA,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;AAC3B,SAAA;AAAM,aAAA,IAAI,GAAG,KAAK,IAAI,CAAC,eAAe,EAAE;AACvC,YAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;AAC5B,SAAA;KACF;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;KACrD;AAED,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAC3B,QAAA,MAAM,SAAS,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;AAEzD,QAAA,QAAQ,IAAI;AACV,YAAA,KAAK,SAAS;AACZ,gBAAA,SAAS,CAAC,KAAK,GAAG,sBAAsB,CAAC;AACzC,gBAAA,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;gBACrC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;gBAClD,MAAM;AACR,YAAA,KAAK,QAAQ;AACX,gBAAA,SAAS,CAAC,KAAK,GAAG,oBAAoB,CAAC;AACvC,gBAAA,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC;gBACpC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC;gBACjD,MAAM;AACR,YAAA,KAAK,SAAS;AACZ,gBAAA,SAAS,CAAC,KAAK,GAAG,cAAc,CAAC;AACjC,gBAAA,SAAS,CAAC,QAAQ,GAAG,eAAe,CAAC;gBACrC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;gBAClD,MAAM;AACR,YAAA;AACE,gBAAA,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC;AACxC,gBAAA,SAAS,CAAC,QAAQ,GAAG,YAAY,CAAC;gBAClC,SAAS,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC/C,MAAM;AACT,SAAA;AAED,QAAA,OAAO,SAAS,CAAC;KAClB;;qHA7DU,wBAAwB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvO,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAAxB,wBAAwB,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;;ACZX;;;;AAIG;MAQU,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;AAIU,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,OAAO,EAAU,CAAC;AA+FzC,KAAA;AA5FC;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;KACpC;AAED,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IACD,IAAI,OAAO,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACtB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACzE;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC7D;IACD,IAAI,YAAY,CAAC,KAAe,EAAA;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;KACjD;AAED,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC;KAC7D;AAED,IAAA,MAAM,CAAC,MAA2B,EAAA;QAChC,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;;;AAGxB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;;QAErE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAEhC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;YACxD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;AACzC,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvD,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,IAAI,GAAA;QACF,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,OAAO;AACR,SAAA;QACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;QACrF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,IAAI,GAAA;AACF,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnB,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;AAED,IAAA,KAAK,CAAC,cAAuB,EAAA;AAC3B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAClC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,cAAc,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;AAC/C,SAAA;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;AACjC,SAAA;KACF;;8GAjGU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;ACXX;;;;AAIG;MAeU,QAAQ,CAAA;AAanB,IAAA,WAAA,CACU,WAAqC,EACrC,GAAsB,EACV,iBAAoC,EAChD,aAAsC,EAAA;QAHtC,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0B;QACrC,IAAG,CAAA,GAAA,GAAH,GAAG,CAAmB;QACV,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAChD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAhBpB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QACjB,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QAChB,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACrC,IAAuB,CAAA,uBAAA,GAAW,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,yBAAyB,CAAC;AAE7D,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAElF,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;QAGR,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAOvC;AAEJ,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;KACnC;IACD,IAAI,SAAS,CAAC,GAAW,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,GAAG,CAAC;KAClC;IAED,IACI,cAAc,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC;KACzC;IAED,IACI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;AAAM,aAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;YACjC,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;KACF;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC;KAC/E;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IACD,IAAI,MAAM,CAAC,KAAc,EAAA;AACvB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;AAC1B,SAAA;KACF;IAED,QAAQ,GAAA;QACN,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;gBAC5C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,KAAK,IAAI,CAAC;aAC5D,CAAC,CACH,CAAC;AACH,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KACtD;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACjC;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;AACR,SAAA;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,EAAE,YAAY,KAAK,IAAI,CAAC;AACrE,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,IAAI,CAAC,iBAAiB,EAAE,YAAY,EAAE;AACxC,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;AAC9C,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;;qGAxFU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAwO,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA5M,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,QAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,EAJR,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,kBAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,CAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,SAAA,EAAA,CAAA,cAAA,EAAA,WAAA,CAAA,EAAA,cAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,CAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,SAAA,EAAA,CAAC,wBAAwB,CAAC,0BCfvC,8qBAqBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1B,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDFa,QAAQ,EAAA,UAAA,EAAA,CAAA;kBANpB,SAAS;+BACE,WAAW,EAAA,SAAA,EACV,CAAC,wBAAwB,CAAC,EAAA,QAAA,EAAA,8qBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;;0BAoBlC,QAAQ;+EAfiB,OAAO,EAAA,CAAA;sBAAlC,KAAK;uBAAC,mBAAmB,CAAA;gBACC,QAAQ,EAAA,CAAA;sBAAlC,KAAK;uBAAC,kBAAkB,CAAA;gBACE,UAAU,EAAA,CAAA;sBAApC,KAAK;uBAAC,kBAAkB,CAAA;gBAChB,uBAAuB,EAAA,CAAA;sBAA/B,KAAK;gBAE0B,cAAc,EAAA,CAAA;sBAA7C,MAAM;uBAAC,sBAAsB,CAAA;gBAe1B,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,cAAc,CAAA;gBASjB,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,cAAc,CAAA;gBAMjB,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,gBAAgB,CAAA;;;AEpDzB;;;;AAIG;MAqBU,YAAY,CAAA;AACvB,IAAA,WAAA,CAAmB,WAAqC,EAAA;QAArC,IAAW,CAAA,WAAA,GAAX,WAAW,CAA0B;KAAI;;yGADjD,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAoO,wBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAZ,YAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAY,EAbb,QAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;AAUT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxL,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,YAAY,EAAA,UAAA,EAAA,CAAA;kBAfxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;AAUT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;AAC9B,iBAAA,CAAA;;;ACxBD;;;;AAIG;AAIH;;;AAGG;MAIU,YAAY,CAAA;;yGAAZ,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAAZ,YAAY,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;;;ACdD;;;;AAIG;MAcU,cAAc,CAAA;IAMzB,WAAmB,CAAA,iBAAoC,EAAS,aAAsC,EAAA;QAAnF,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAAS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;AALrE,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,CAAW,KAAK,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,EAAU,CAAC;KAIe;AAE1G;;AAEG;AACH,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;KAC5C;IACD,IAAI,YAAY,CAAC,KAAe,EAAA;AAC9B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7C,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IACI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;KACvC;IACD,IAAI,iBAAiB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;KACxC;AAED,IAAA,IAAc,sBAAsB,GAAA;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,2BAA2B,EAAE;YACnF,OAAO,EAAE,CAAC,OAAO,KAAK,CAAC,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE;YAChF,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC/C,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,IAAc,kBAAkB,GAAA;AAC9B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;AAC3C,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,uBAAuB,EAAE;YAC/E,OAAO,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC,GAAG,OAAO,GAAG,CAAC,EAAE,QAAQ,EAAE;YAChF,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE;AAC/C,SAAA,CAAC,CAAC;KACJ;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAG;AAC/E,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzC,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3E,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;KAC7C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;KAC/B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;KACnC;;2GAjEU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA0L,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAzK,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,kWClB3B,s3BAmBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyI,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDDa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAEtB,IAAA,EAAA,EAAE,sBAAsB,EAAE,MAAM,EAAE,EAAA,QAAA,EAAA,s3BAAA,EAAA,CAAA;wIAGP,kBAAkB,EAAA,CAAA;sBAAlD,MAAM;uBAAC,uBAAuB,CAAA;gBACO,uBAAuB,EAAA,CAAA;sBAA5D,MAAM;uBAAC,4BAA4B,CAAA;gBAUhC,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,iBAAiB,CAAA;gBAcpB,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,sBAAsB,CAAA;;;AE1C/B;;;;AAIG;MA8BU,SAAS,CAAA;AAMpB,IAAA,WAAA,CAAmB,iBAAoC,EAAA;QAApC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AALtB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,CAAW,KAAK,CAAC,CAAC;AAClD,QAAA,IAAA,CAAA,uBAAuB,GAAG,IAAI,YAAY,CAAS,KAAK,CAAC,CAAC;QAExF,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAEgB;IAE3D,IACI,SAAS,CAAC,KAA0B,EAAA;QACtC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACtC;AAED;;AAEG;IACH,IACI,kBAAkB,CAAC,KAAa,EAAA;QAClC,IAAI,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;AACxC,SAAA;KACF;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC;KACvC;IACD,IAAI,iBAAiB,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC;KACxC;AAED;;AAEG;AACH,IAAA,IACI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;KAC5C;IACD,IAAI,YAAY,CAAC,KAAe,EAAA;AAC9B,QAAA,IAAI,KAAK,EAAE;AACT,YAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,GAAG,KAAK,CAAC;AAC7C,SAAA;KACF;AAED;;AAEG;AACH,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAG;AACnC,YAAA,OAAO,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC;AAChC,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE;AACvC,YAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,SAAS,CAAC;AACtD,SAAA;AACD,QAAA,OAAO,EAAE,CAAC;KACX;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,IAAG;AAC/C,YAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SACnE,CAAC,CACH,CAAC;KACH;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;KAClC;;sGAvEU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAgC,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,ujBAVT,CAAC,iBAAiB,CAAC,EAkBb,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,SAAA,EAAA,QAAQ,6BC1C3B,6YAQA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhO,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiO,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,uBAAA,EAAA,4BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD0Ba,SAAS,EAAA,UAAA,EAAA,CAAA;kBAbrB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEX,SAAA,EAAA,CAAC,iBAAiB,CAAC,EACxB,IAAA,EAAA;AACJ,wBAAA,gBAAgB,EAAE,MAAM;AACxB,wBAAA,sBAAsB,EAAE,mCAAmC;AAC3D,wBAAA,oBAAoB,EAAE,iCAAiC;AACvD,wBAAA,uBAAuB,EAAE,oCAAoC;AAC7D,wBAAA,uBAAuB,EAAE,oCAAoC;AAC9D,qBAAA,EAAA,QAAA,EAAA,6YAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,CAAA;qGAIgC,kBAAkB,EAAA,CAAA;sBAAlD,MAAM;uBAAC,uBAAuB,CAAA;gBACO,uBAAuB,EAAA,CAAA;sBAA5D,MAAM;uBAAC,4BAA4B,CAAA;gBAOhC,SAAS,EAAA,CAAA;sBADZ,eAAe;uBAAC,QAAQ,CAAA;gBASrB,kBAAkB,EAAA,CAAA;sBADrB,KAAK;uBAAC,sBAAsB,CAAA;gBAkBzB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,iBAAiB,CAAA;;;AEnE1B;;;;AAIG;AAqBI,MAAM,oBAAoB,GAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,EAAE;MAOtG,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CACnB,eAAe,EACf,cAAc,EACd,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,CAChB,CAAC;KACH;;2GATU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;4GAAd,cAAc,EAAA,YAAA,EAAA,CAPuB,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,CAGrG,EAAA,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAHR,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,YAAY,CAAA,EAAA,CAAA,CAAA;AAOpG,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAJf,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAI7C,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAC;oBACzD,YAAY,EAAE,CAAC,oBAAoB,CAAC;oBACpC,OAAO,EAAE,CAAC,oBAAoB,CAAC;AAChC,iBAAA,CAAA;;;AC/BD;;;;AAIG;MASU,iBAAiB,CAAA;;8GAAjB,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAFlB,cAAc,CAAA,EAAA,CAAA,CAAA;AAEb,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAFlB,cAAc,CAAA,EAAA,CAAA,CAAA;2FAEb,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,cAAc,CAAC;AAC1B,iBAAA,CAAA;;;ACZD;;;;AAIG;MAEU,kBAAkB,CAAA;;AACtB,kBAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAChB,kBAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAChB,kBAAa,CAAA,aAAA,GAAG,eAAe,CAAC;AAChC,kBAAQ,CAAA,QAAA,GAAG,UAAU,CAAC;AACtB,kBAAS,CAAA,SAAA,GAAG,WAAW,CAAC;AACxB,kBAAU,CAAA,UAAA,GAAG,YAAY,CAAC;AAC1B,kBAAwB,CAAA,wBAAA,GAAG,qBAAqB,CAAC;AACjD,kBAAuB,CAAA,uBAAA,GAAG,oBAAoB,CAAC;AAC/C,kBAAmB,CAAA,mBAAA,GAAG,0BAA0B,CAAC;AACjD,kBAAmB,CAAA,mBAAA,GAAG,yBAAyB,CAAC;AAChD,kBAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC;AACtC,kBAAiB,CAAA,iBAAA,GAAG,iBAAiB;;AClB9C;;;;AAIG;MAEU,2BAA2B,CAAA;IACtC,WAAoB,CAAA,YAAoB,EAAU,SAAiB,EAAA;QAA/C,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAQ;QAAU,IAAS,CAAA,SAAA,GAAT,SAAS,CAAQ;KAAI;AAEvE,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AACF;;AChBD;;;;AAIG;MAUU,2BAA2B,CAAA;AAMtC,IAAA,WAAA,GAAA;QALA,IAAiB,CAAA,iBAAA,GAAa,EAAE,CAAC;AAEzB,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,aAAa,EAAY,CAAC;AACnD,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAA+B,CAAC;AAGrE,QAAA,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAC/C;AAED,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC1B,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE;YAC/C,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KACtD;AAED,IAAA,eAAe,CAAC,QAAgB,EAAA;QAC9B,IAAI,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;YACjD,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,QAAQ,GAAG,0DAA0D,CAAC,CAAC;AACjH,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;AAED,IAAA,aAAa,CAAC,QAAgB,EAAA;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACvD,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACtD,SAAA;KACF;IAED,kBAAkB,CAAC,WAAmB,EAAE,QAAgB,EAAA;QACtD,MAAM,OAAO,GAAgC,IAAI,2BAA2B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AACpG,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtC;IAED,YAAY,GAAA;AACV,QAAA,MAAM,OAAO,GAAgC,IAAI,2BAA2B,CAC1E,kBAAkB,CAAC,aAAa,EAChC,CAAC,GAAG,CACL,CAAC;AACF,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACtC;;wHArDU,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;2FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;;;ACblC;;;;AAIG;MAaU,gBAAgB,CAAA;IAI3B,WAAoB,CAAA,KAAiB,EAAU,oBAAiD,EAAA;QAA5E,IAAK,CAAA,KAAA,GAAL,KAAK,CAAY;QAAU,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA6B;KAAI;IAEpG,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,SAAS,CAAC;AAClE,YAAA,IAAI,EAAE,CAAC,OAAoC,KAAI;AAC7C,gBAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;aAC9B;AACF,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,cAAc,CAAC,OAAoC,EAAA;AACjD,QAAA,IAAI,QAAQ,GAAW,kBAAkB,CAAC,wBAAwB,CAAC;AACnE,QAAA,IAAI,OAAO,CAAC,WAAW,KAAK,kBAAkB,CAAC,aAAa,EAAE;YAC5D,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;YACpE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;AACpE,SAAA;AAAM,aAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,kBAAkB,CAAC,WAAW,EAAE;YAC9D,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAChD,SAAA;AAAM,aAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,kBAAkB,CAAC,WAAW,EAAE;AAC9D,YAAA,QAAQ,GAAG,kBAAkB,CAAC,uBAAuB,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;AAChD,SAAA;KACF;IAED,UAAU,CAAC,WAAmB,EAAE,QAAgB,EAAA;AAC9C,QAAA,IAAI,WAAW,KAAK,kBAAkB,CAAC,QAAQ,EAAE;AAC/C,YAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AAC/B,SAAA;AAAM,aAAA,IAAI,WAAW,KAAK,kBAAkB,CAAC,SAAS,EAAE;AACvD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,SAAA;AAAM,aAAA,IAAI,WAAW,KAAK,kBAAkB,CAAC,UAAU,EAAE;AACxD,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAClC,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAClC;;6GAxCU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,IAAI,EAAE,EAAE,wBAAwB,EAAE,MAAM,EAAE;AAC3C,iBAAA,CAAA;;;AChBD;;;;AAIG;AAQU,MAAA,qBAAqB,GAAgB,CAAC,gBAAgB,EAAE;MAOxD,sBAAsB,CAAA;;mHAAtB,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAtB,sBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,iBAPgB,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAGvD,YAAY,EAAE,aAAa,aAHY,gBAAgB,CAAA,EAAA,CAAA,CAAA;oHAOtD,sBAAsB,EAAA,OAAA,EAAA,CAJvB,YAAY,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FAI1B,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBALlC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;oBACtC,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;AClBD;;;;AAIG;MAUU,kBAAkB,CAAA;AAI7B,IAAA,WAAA,CAAoB,GAAqB,EAAA;QAArB,IAAG,CAAA,GAAA,GAAH,GAAG,CAAkB;KAAI;IAE7C,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,IAAG;AAC/D,YAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AACnD,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;KACjC;;+GAdU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvM,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE,EAAE,qBAAqB,EAAE,aAAa,EAAE;AAC/C,iBAAA,CAAA;;;ACbD;;;;AAIG;AASG,MAAO,uBAAwB,SAAQ,UAAU,CAAA;;oHAA1C,uBAAuB,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC/B,iBAAA,CAAA;;;ACZD;;;;AAIG;AAWG,MAAO,uBAAwB,SAAQ,WAAW,CAAA;AAGtD,IAAA,WAAA,CACE,GAAsB,EACV,UAAmC,EAC/C,oBAAiD,EAAA;QAEjD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;AAClF,SAAA;AACD,QAAA,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;KAClD;;;AAID,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,QAAQ,KAAK,GAAG,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC;KACjG;;oHAnBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAwM,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;wGAAvB,uBAAuB,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACvB,iBAAA,CAAA;;0BAMI,QAAQ;;;ACpBb;;;;AAIG;MAoCU,SAAS,CAAA;IASpB,WACU,CAAA,oBAAiD,EAClD,aAAsC,EAAA;QADrC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA6B;QAClD,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAVZ,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;QAEnD,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;QAC1B,IAAY,CAAA,YAAA,GAAW,IAAI,CAAC;QAC5B,IAAkB,CAAA,kBAAA,GAAG,kBAAkB,CAAC;QAOtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,SAAS,CAAC;AACtE,YAAA,IAAI,EAAE,CAAC,YAAsB,KAAI;AAC/B,gBAAA,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;aAC1C;AACF,SAAA,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,IAAI,CAAC,oBAAoB,CAAC,UAAU;aACjC,IAAI,CACH,MAAM,CACJ,CAAC,EAAE,WAAW,EAAE,KACd,WAAW,KAAK,kBAAkB,CAAC,SAAS,IAAI,WAAW,KAAK,kBAAkB,CAAC,aAAa,CACnG,CACF;aACA,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B,CAAC,CACL,CAAC;KACH;AAED,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAChD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC7D,OAAO,eAAe,CAAC,uBAAuB,CAAC;AAChD,SAAA;AAAM,aAAA;YACL,OAAO,eAAe,CAAC,wBAAwB,CAAC;AACjD,SAAA;KACF;AAED,IAAA,IAAI,8BAA8B,GAAA;AAChC,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;QAChD,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;YAC7D,OAAO,eAAe,CAAC,yBAAyB,CAAC;AAClD,SAAA;AAAM,aAAA;YACL,OAAO,eAAe,CAAC,0BAA0B,CAAC;AACnD,SAAA;KACF;;IAGD,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;;AAGD,IAAA,qBAAqB,CAAC,OAAiB,EAAA;QACrC,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;AACtB,YAAA,OAAO,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;YAClD,OAAO;AACR,SAAA;AACD,QAAA,OAAO,CAAC,OAAO,CAAC,QAAQ,IAAG;AACzB,YAAA,IAAI,QAAQ,KAAK,kBAAkB,CAAC,WAAW,EAAE;AAC/C,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC/B,aAAA;AAAM,iBAAA,IAAI,QAAQ,KAAK,kBAAkB,CAAC,WAAW,EAAE;AACtD,gBAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAC/B,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;IAGD,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED;;;;AAIG;AACH,IAAA,SAAS,CAAC,QAAgB,EAAA;AACxB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,QAAQ,EAAE;YAClC,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACrF,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KACxB;AAED,IAAA,OAAO,CAAC,QAAgB,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;KACrF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAClC;;sGAnGU,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA3K,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAT,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,EAxBV,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,MAAA,EAAA,WAAA,EAAA,WAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkC,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,SAAS,EAAA,UAAA,EAAA,CAAA;kBA1BrB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;AAqBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE;AACnC,iBAAA,CAAA;kJAEoC,IAAI,EAAA,CAAA;sBAAtC,KAAK;;sBAAI,WAAW;uBAAC,WAAW,CAAA;;;ACzCnC;;;;AAIG;AAyBH,MAAM,oBAAoB,GAAG,CAAC,QAAkB,EAAE,SAAiB,KAAI;IACrE,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,2BAA2B,CAAC,CAAC;AAC3E,IAAA,cAAc,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;AAC/C,IAAA,cAAc,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AACrD,IAAA,cAAc,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AACnD,IAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9C;;AAEG;AACH,IAAA,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9C,IAAA,cAAc,CAAC,SAAS,GAAG,eAAe,CAAC;AAC3C,IAAA,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;MAMW,WAAW,CAAA;IAQtB,WACuB,CAAA,UAAe,EAC5B,YAAuC,EACvC,oBAAiD,EACjD,UAAmC,EACnC,QAAmB,EAC3B,QAAkB,EAAA;QAJV,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA2B;QACvC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA6B;QACjD,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QACnC,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QATrB,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAYtB,QAAA,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE;YACjC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC,SAAA;AAED,QAAA,IAAI,CAAC,aAAa,GAAG,oBAAoB,CAAC,UAAU;AACjD,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,KAAK,CAAC,EACtC,MAAM,CACJ,CAAC,EAAE,WAAW,EAAE,KACd,CAAC,WAAW,KAAK,kBAAkB,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM;aAC3D,WAAW,KAAK,kBAAkB,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,CAChE,CACF;AACA,aAAA,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,KAAI;AAC7B,YAAA,IAAI,WAAW,KAAK,kBAAkB,CAAC,QAAQ,EAAE;gBAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;gBACZ,OAAO;AACR,aAAA;YAED,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,SAAC,CAAC,CAAC;AAEL,QAAA,IAAI,CAAC,aAAa,CAAC,GAAG,CACpB,oBAAoB,CAAC,UAAU;AAC5B,aAAA,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,WAAW,KAAK,kBAAkB,CAAC,aAAa,CAAC,CAAC;aACnF,SAAS,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC,CACjC,CAAC;KACH;AAED,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;AAGD,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,kBAAkB,CAAC;KAC3B;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;AAElC,QAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC9B,YAAA,IAAI,CAAC,oBAAoB;AACvB,gBAAA,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,WAAW;sBAC1C,oBAAoB,CAAC,wBAAwB;AAC/C,sBAAE,oBAAoB,CAAC,0BAA0B,CAAC;AACvD,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,kBAAkB,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,KAAK,kBAAkB,CAAC,WAAW,EAAE;AAClG,YAAA,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YAC9C,OAAO;AACR,SAAA;QACD,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,eAAe,GAAA;AACb,QAAA,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAEjH,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE;AACtD;;;;;AAKG;YACH,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;IAED,WAAW,GAAA;QACT,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACpD,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;KAClC;AAGD,IAAA,QAAQ,CAAC,KAAY,EAAA;AACnB,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAgB,CAAC;QAEtC,IAAI,MAAM,CAAC,UAAU,GAAG,gBAAgB,IAAI,IAAI,CAAC,MAAM,EAAE;YACvD,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,OAAO;AACR,SAAA;QAED,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;;;;;AAOD,IAAA,YAAY,CAAC,MAAW,EAAA;AACtB,QAAA,IAAI,OAAO,GAAQ,MAAM,CAAC;QAC1B,MAAM,OAAO,GAAQ,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;;;AAInD,QAAA,OAAO,OAAO,EAAE;YACd,IAAI,OAAO,KAAK,OAAO,EAAE;gBACvB,OAAO;AACR,aAAA;AAAM,iBAAA,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,GAAG,gBAAgB,EAAE;gBACvG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACb,OAAO;AACR,aAAA;AACD,YAAA,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,WAAW,CAAC,KAAa,EAAA;QACvB,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC;AACjE,QAAA,IAAI,KAAK,KAAK,kBAAkB,CAAC,WAAW,EAAE;AAC5C,YAAA,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,SAAA;AAAM,aAAA,IAAI,KAAK,KAAK,kBAAkB,CAAC,WAAW,EAAE;AACnD,YAAA,gBAAgB,CAAC,GAAG,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;AAC5D,SAAA;KACF;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACvF;IAED,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,cAAc,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;KACxF;IAES,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;AACjF,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC7E;IAES,cAAc,GAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KACxE;IAES,eAAe,GAAA;AACvB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;KAC7G;IAES,eAAe,GAAA;QACvB,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AAClH,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;KACxG;;AA9KU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,kBASZ,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA4I,yBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,2BAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FATV,WAAW,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,QAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,gBAAA,EAAA,sBAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,eAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAAE,yBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAJvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;oBAC3B,cAAc,EAAE,CAAC,yBAAyB,CAAC;AAC5C,iBAAA,CAAA;;0BAUI,MAAM;2BAAC,WAAW,CAAA;gMARG,MAAM,EAAA,CAAA;sBAA7B,KAAK;uBAAC,eAAe,CAAA;gBACG,oBAAoB,EAAA,CAAA;sBAA5C,KAAK;uBAAC,gBAAgB,CAAA;gBAgGvB,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,eAAe,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAiBzC,YAAY,EAAA,CAAA;sBADX,YAAY;uBAAC,OAAO,EAAE,CAAC,eAAe,CAAC,CAAA;;;AChK1C;;;;AAIG;AAaU,MAAA,yBAAyB,GAAgB;IACpD,SAAS;IACT,WAAW;IACX,kBAAkB;IAClB,uBAAuB;IACvB,uBAAuB;EACvB;MAOW,mBAAmB,CAAA;;gHAAnB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,iBAZ9B,SAAS;QACT,WAAW;QACX,kBAAkB;QAClB,uBAAuB;AACvB,QAAA,uBAAuB,aAIb,YAAY,EAAE,aAAa,EAAE,iBAAiB,aARxD,SAAS;QACT,WAAW;QACX,kBAAkB;QAClB,uBAAuB;QACvB,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAQZ,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,EAJpB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAI7C,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,iBAAiB,CAAC;oBACzD,YAAY,EAAE,CAAC,yBAAyB,CAAC;oBACzC,OAAO,EAAE,CAAC,yBAAyB,CAAC;AACrC,iBAAA,CAAA;;;AC7BD;;;;AAIG;MAWU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACpB,WAAW,EAPZ,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;AAIT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAEU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,CAAA;;;;AAIT,EAAA,CAAA;AACF,iBAAA,CAAA;8BAEyB,QAAQ,EAAA,CAAA;sBAA/B,SAAS;uBAAC,WAAW,CAAA;;;AChBxB;;;;AAIG;AAQI,MAAM,uBAAuB,GAAgB,CAAC,oBAAoB,CAAC;;ACZ1E;;;;AAIG;MAYU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,kDAJrB,YAAY,CAAA,EAAA,OAAA,EAAA,CAAAC,oBAAA,CAAA,EAAA,CAAA,CAAA;AAIX,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJrB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,uBAAuB,CAAC;oBACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;AACnC,iBAAA,CAAA;;;ACfD;;;;AAIG;AASG,MAAO,cAAe,SAAQ,UAAU,CAAA;;2GAAjC,cAAc,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAd,cAAc,EAAA,QAAA,EAAA,UAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACrB,iBAAA,CAAA;;;ACZD;;;;AAIG;AAWG,MAAO,iBAAkB,SAAQ,WAAW,CAAA;AAIhD,IAAA,WAAA,CACE,GAAsB,EACV,UAA0B,EAChB,EAAU,EAChC,QAAyB,EAAA;QAEzB,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC5F,SAAA;AACD,QAAA,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACvB,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzB,QAAA,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;KACd;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;KAC1C;;AApBU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,8FAOlB,YAAY,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAPX,iBAAiB,EAAA,QAAA,EAAA,+BAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AAC1C,iBAAA,CAAA;;0BAOI,QAAQ;;0BACR,MAAM;2BAAC,YAAY,CAAA;;;ACtBxB;;;;AAIG;AAEH,IAAY,UAGX,CAAA;AAHD,CAAA,UAAY,UAAU,EAAA;AACpB,IAAA,UAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,UAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAHW,UAAU,KAAV,UAAU,GAGrB,EAAA,CAAA,CAAA;;ACTD;;;;AAIG;MAQU,WAAW,CAAA;AADxB,IAAA,WAAA,GAAA;AAEE,QAAA,IAAA,CAAA,MAAM,GAAwB,UAAU,CAAC,UAAU,CAAC;QAG5C,IAAS,CAAA,SAAA,GAAa,EAAE,CAAC;AA8BlC,KAAA;AA5BC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAW,KAAI;YACxC,OAAO,GAAG,CAAC,MAAM,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,QAAQ,EAAE;AACvC,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAW,KAAK,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC;AAC/E,SAAA;KACF;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC1B;AAED,IAAA,UAAU,CAAC,GAAW,EAAA;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACzC,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChC,SAAA;KACF;;wGAjCU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;4GAAX,WAAW,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB,UAAU;;;ACXX;;;;AAIG;AAOH,IAAI,sBAAsB,GAAG,CAAC,CAAC;MAoBlB,aAAa,CAAA;AAKxB,IAAA,WAAA,CACS,eAAgC,EACV,EAAU,EAC/B,WAAwB,EAAA;QAFzB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QACV,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAC/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAEhC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,IAAI,CAAC,YAAY,GAAG,kBAAkB,GAAG,sBAAsB,EAAE,CAAC;AACnE,SAAA;KACF;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;KACjD;AAED,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,KAAK,IAAI,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC;KAC3F;;;;IAKD,IACY,WAAW,CAAC,KAAiC,EAAA;AACvD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;KACnF;IAED,WAAW,GAAA;AACT,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC7E,QAAA,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACxD,SAAA;KACF;;AApCU,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,8CAOd,YAAY,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAPX,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,EAhBd,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,IAAA,EAAA,cAAA,CAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAEU,aAAa,EAAA,UAAA,EAAA,CAAA;kBAlBzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;AAcT,EAAA,CAAA;AACF,iBAAA,CAAA;;0BAQI,MAAM;2BAAC,YAAY,CAAA;mEANT,YAAY,EAAA,CAAA;sBAAxB,KAAK;uBAAC,IAAI,CAAA;gBA0BC,WAAW,EAAA,CAAA;sBADtB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,wBAAwB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ACzDvD;;;;AAIG;AAIH,IAAI,eAAe,GAAG,CAAC,CAAC;AAEjB,MAAM,OAAO,GAAG,IAAI,cAAc,CAAS,SAAS,CAAC,CAAC;SAE7C,YAAY,GAAA;AAC1B,IAAA,OAAO,WAAW,GAAG,eAAe,EAAE,CAAC;AACzC,CAAC;AAEM,MAAM,gBAAgB,GAAG;AAC9B,IAAA,OAAO,EAAE,OAAO;AAChB,IAAA,UAAU,EAAE,YAAY;CACzB;;ACnBD;;;;AAIG;AAmBH,IAAI,mBAAmB,GAAG,CAAC,CAAC;MAUf,UAAU,CAAA;AAOrB,IAAA,WAAA,CACS,eAAgC,EACT,EAAU,EACjC,EAAc,EACb,GAA6B,EAC7B,gBAAkC,EAClC,WAAwB,EACR,MAAc,EAAA;QAN/B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QACT,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QACjC,IAAE,CAAA,EAAA,GAAF,EAAE,CAAY;QACb,IAAG,CAAA,GAAA,GAAH,GAAG,CAA0B;QAC7B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACR,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;AAEtC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,YAAA,IAAI,CAAC,SAAS,GAAG,eAAe,GAAG,mBAAmB,EAAE,CAAC;AAC1D,SAAA;;;;QAKD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;AACvE,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE;AAC/F,YAAA,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;SACxB,CAAC,CAAC,QAAQ,CAAC;KACb;AAED,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,UAAU,CAAC,QAAQ,CAAC;KAC5E;IACD,IAAI,UAAU,CAAC,UAAU,EAAA;AACvB,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AAED,IAAA,IAEI,cAAc,GAAA;AAChB,QAAA,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;KACzB;AAED,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC;KAC9F;AAED,IAAA,IAEI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;KACjD;AAED,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;KAC7B;IAGD,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC;KACxC;;uGA9DU,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EASX,YAAY,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,WAAA,EAAA,EAAA,EAAA,KAAA,EAKZ,OAAO,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2FAdN,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,CAAA,IAAA,EAAA,WAAA,CAAA,EAAA,UAAA,EAAA,CAAA,sBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,KAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,EAAA,UAAA,EAAA,EAAA,WAAA,EAAA,MAAA,EAAA,IAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,aAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBARtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,IAAI,EAAE;AACJ,wBAAA,aAAa,EAAE,MAAM;AACrB,wBAAA,IAAI,EAAE,KAAK;AACX,wBAAA,IAAI,EAAE,QAAQ;AACf,qBAAA;AACF,iBAAA,CAAA;;0BAUI,MAAM;2BAAC,YAAY,CAAA;;0BAKnB,MAAM;2BAAC,OAAO,CAAA;4CAbe,SAAS,EAAA,CAAA;sBAAxC,KAAK;uBAAC,IAAI,CAAA;;sBAAG,WAAW;uBAAC,IAAI,CAAA;gBA6B1B,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,sBAAsB,CAAA;gBAUzB,cAAc,EAAA,CAAA;sBAFjB,WAAW;uBAAC,gBAAgB,CAAA;;sBAC5B,WAAW;uBAAC,gBAAgB,CAAA;gBAMzB,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,oBAAoB,CAAA;gBAO7B,MAAM,EAAA,CAAA;sBAFT,WAAW;uBAAC,cAAc,CAAA;;sBAC1B,WAAW;uBAAC,oBAAoB,CAAA;gBAM7B,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,eAAe,CAAA;gBAM5B,QAAQ,EAAA,CAAA;sBADP,YAAY;uBAAC,OAAO,CAAA;;;AC5FvB;;;;AAIG;MAcU,MAAM,CAAA;AAIjB,IAAA,WAAA,CACS,eAAgC,EACV,EAAU,EAC/B,WAAwB,EAAA;QAFzB,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QACV,IAAE,CAAA,EAAA,GAAF,EAAE,CAAQ;QAC/B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;AAEhC,QAAA,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,IAAI,CAAC,EAAE,CAAC;KACjD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACnC;;AAlBU,MAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAM,8CAMP,YAAY,EAAA,EAAA,EAAA,KAAA,EAAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uFANX,MAAM,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAFN,CAAC,qBAAqB,CAAC,+DAGpB,UAAU,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACV,aAAa,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALjB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG1B,MAAM,EAAA,UAAA,EAAA,CAAA;kBALlB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,SAAS;AACnB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;oBACrC,SAAS,EAAE,CAAC,qBAAqB,CAAC;AACnC,iBAAA,CAAA;;0BAOI,MAAM;2BAAC,YAAY,CAAA;mEALsB,OAAO,EAAA,CAAA;sBAAlD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,UAAU,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBACK,UAAU,EAAA,CAAA;sBAAxD,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;;;ACpB/C;;;;AAIG;MAWU,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,yHALtB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAK1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAPjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,uBAAuB,EAAE,MAAM;AAChC,qBAAA;AACF,iBAAA,CAAA;;;ACdD;;;;AAIG;MA8FU,OAAO,CAAA;IAelB,WACS,CAAA,eAAgC,EAChC,aAAsC,EACtC,WAAwB,EACP,MAAc,EAC/B,aAAsC,EAAA;QAJtC,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;QAChC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACP,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QAC/B,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QAnB/C,IAAe,CAAA,eAAA,GAAkB,EAAE,CAAC;;;QAIpC,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAMX,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;QAEnC,IAAkB,CAAA,kBAAA,GAAiB,EAAE,CAAC;KAQ1C;AAEJ,IAAA,IACI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;KAChC;IACD,IAAI,MAAM,CAAC,MAA2B,EAAA;AACpC,QAAA,IACE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;aACpB,GAAG,CAAC,GAAG,IAAG;AACT,YAAA,OAAQ,UAAkC,CAAC,GAAG,CAAC,CAAC;AAClD,SAAC,CAAC;AACD,aAAA,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB;AACA,YAAA,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;AAClC,SAAA;KACF;AAED,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;AAED,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;KAC/E;AAED,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;KAC/D;AAED,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,gBAAgB,CAAC;KACvD;AAED,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,QAAQ,CAAC;KAC5C;IAED,IACI,aAAa,CAAC,KAAiB,EAAA;QACjC,IAAI,CAAC,cAAc,GAAG,KAAK,IAAI,KAAK,CAAC,aAAa,CAAC;AACnD,QAAA,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,KAAK,EAAE;;;AAGpC,YAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC9B,SAAA;KACF;AAED,IAAA,IAAY,gBAAgB,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;KACxE;IAED,IACY,uBAAuB,CAAC,KAAuB,EAAA;AACzD,QAAA,IAAI,CAAC,WAAW,CAAC,uBAAuB,GAAG,KAAK,CAAC;KAClD;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;AAExD,QAAA,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,KAAK,WAAW,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE;YACpF,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtC,SAAA;;QAGD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;KAChD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,IAAG;YAC/B,GAAG,CAAC,WAAW,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,wBAAwB,CAAC,QAAgB,EAAA;;;QAGvC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,QAAQ,IAAI,IAAI,CAAC,gBAAgB,CAAC;KAC7D;AAED,IAAA,4BAA4B,CAAC,KAAiB,EAAA;AAC5C,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC,CAAC;AACvG,QAAA,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,KAAK,IAAI,CAAC,iBAAiB,EAAE;YAC9E,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAChD,SAAA;KACF;IAED,qBAAqB,GAAA;QACnB,IAAI,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YACvD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAC7C,SAAA;;;AAID,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KACzB;IAED,mBAAmB,GAAA;;;QAGjB,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;YAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9C,SAAA;KACF;AAED,IAAA,eAAe,CAAC,KAAiB,EAAA;QAC/B,IACE,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,aAA4B,CAAC;YACjE,IAAI,CAAC,aAAa,CAAC,IAAI;YACvB,CAAC,IAAI,CAAC,UAAU,EAChB;AACA,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;;;AAIhC,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,CAAC,aAAa,EAAE;gBACxE,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAChD,aAAA;AACF,SAAA;KACF;IAED,gBAAgB,GAAA;;QAEd,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;KACjD;IAED,mBAAmB,CAAC,KAAY,EAAE,kBAA+B,EAAA;;;;;AAK/D,QAAA,IAAI,KAAK,CAAC,MAAM,KAAK,kBAAkB,IAAI,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,EAAE;YACnG,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAqB,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC1F,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;AACjD,SAAA;KACF;IAEO,uBAAuB,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACzF,YAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;AAC5D,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;AAClF,SAAC,CAAC,CAAC;KACJ;;AA1KU,OAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,0GAmBR,OAAO,EAAA,EAAA,EAAA,KAAA,EAAA5J,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAnBN,OAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,OAAO,oJAHP,CAAC,eAAe,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,SAAA,EAY1C,MAAM,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAFZ,WAAW,EAqDX,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,2BAAU,UAAU,EAAA,EAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,IAAA,EAcQ,gBAAgB,EAxIlE,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA8J,uBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA3L,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2L,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAIU,OAAO,EAAA,UAAA,EAAA,CAAA;kBAhEnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DT,EAAA,CAAA;AACD,oBAAA,SAAS,EAAE,CAAC,eAAe,EAAE,WAAW,EAAE,gBAAgB,CAAC;oBAC3D,cAAc,EAAE,CAAC,uBAAuB,CAAC;AAC1C,iBAAA,CAAA;;0BAoBI,MAAM;2BAAC,OAAO,CAAA;+EAZyB,QAAQ,EAAA,CAAA;sBAAjD,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAEP,IAAI,EAAA,CAAA;sBAApC,eAAe;uBAAC,MAAM,CAAA;gBAenB,MAAM,EAAA,CAAA;sBADT,KAAK;uBAAC,WAAW,CAAA;gBAiCd,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,qBAAqB,CAAA;gBAM9B,aAAa,EAAA,CAAA;sBADhB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;gBAe1C,uBAAuB,EAAA,CAAA;sBADlC,SAAS;uBAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;;;AC5KhF;;;;AAIG;AAkBU,MAAA,mBAAmB,GAAgB;IAC9C,aAAa;IACb,MAAM;IACN,OAAO;IACP,qBAAqB;IACrB,UAAU;IACV,cAAc;IACd,iBAAiB;EACjB;MAOW,aAAa,CAAA;AACxB,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;KAC/C;;0GAHU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,iBAdxB,aAAa;QACb,MAAM;QACN,OAAO;QACP,qBAAqB;QACrB,UAAU;QACV,cAAc;QACd,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAIP,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,CAAA,EAAA,OAAA,EAAA,CAVpG,aAAa;QACb,MAAM;QACN,OAAO;QACP,qBAAqB;QACrB,UAAU;QACV,cAAc;AACd,QAAA,iBAAiB,EAMc,oBAAoB,CAAA,EAAA,CAAA,CAAA;2GAExC,aAAa,EAAA,OAAA,EAAA,CAJd,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAErE,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAExC,aAAa,EAAA,UAAA,EAAA,CAAA;kBALzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,CAAC;oBACrG,YAAY,EAAE,CAAC,mBAAmB,CAAC;AACnC,oBAAA,OAAO,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,CAAC;AACrD,iBAAA,CAAA;;;ACpCD;;;;AAIG;MAKU,mCAAmC,CAAA;AADhD,IAAA,WAAA,GAAA;QAEE,IAAa,CAAA,aAAA,GAAG,CAAC,CAAC;AASnB,KAAA;IAPC,gBAAgB,GAAA;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;;gIATU,mCAAmC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oIAAnC,mCAAmC,EAAA,CAAA,CAAA;2FAAnC,mCAAmC,EAAA,UAAA,EAAA,CAAA;kBAD/C,UAAU;;;ACRX;;;;AAIG;MAKU,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;QAEU,IAAM,CAAA,MAAA,GAAG,CAAC,CAAC;AAapB,KAAA;AAXC,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;KACxB;IAED,YAAY,GAAA;QACV,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;;mHAbU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;uHAAtB,sBAAsB,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,UAAU;;;ACRX;;;;AAIG;MAOU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAW,CAAC;AAC7C,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAW,CAAC;QAC3C,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QACnB,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAsC9B,KAAA;AApCC,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAChD;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IACD,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;QAChB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;AACjD,YAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpC,SAAA;KACF;AAED,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;IACD,IAAI,WAAW,CAAC,KAAc,EAAA;AAC5B,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,EAAE;AAC/B,YAAA,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,gBAAA,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACpC,aAAA;AACD,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;AAC3B,SAAA;KACF;AAEO,IAAA,sBAAsB,CAAC,KAAc,EAAA;AAC3C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACpC;;+GAzCU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;;;ACVX;;;;AAIG;MAqBU,cAAc,CAAA;AAKzB,IAAA,WAAA,CACU,WAA+B,EAC/B,eAAuC,EACvC,4BAAiE,EAClE,aAAsC,EAAA;QAHrC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAC/B,IAAe,CAAA,eAAA,GAAf,eAAe,CAAwB;QACvC,IAA4B,CAAA,4BAAA,GAA5B,4BAA4B,CAAqC;QAClE,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;AARE,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,CAAU,IAAI,CAAC,CAAC;AAUnG,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9D,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,IACI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC;KACrC;IACD,IAAI,WAAW,CAAC,KAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,KAAgB,CAAC;KACjD;AAED,IAAA,IACI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;KACnC;IACD,IAAI,SAAS,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAgB,CAAC;KAC/C;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,aAAa,GAAG,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC;KACtC;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,GAAG,OAAO,CAAC;KAC3C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;KACzB;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;KAClC;;2GArDU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,sBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mCAAA,EAAA,EAAA,EAAA,KAAA,EAAAnK,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAd,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,CAAA,2BAAA,EAAA,aAAA,CAAA,EAAA,SAAA,EAAA,CAAA,yBAAA,EAAA,WAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,+BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,SAAA,EARd,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,mCAAmC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB9F,m8BAiCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDRa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAX1B,SAAS;+BACE,kBAAkB,EAAA,SAAA,EAEjB,CAAC,kBAAkB,EAAE,sBAAsB,EAAE,mCAAmC,CAAC,EACtF,IAAA,EAAA;AACJ,wBAAA,KAAK,EAAE,kBAAkB;AACzB,wBAAA,sBAAsB,EAAE,WAAW;AACnC,wBAAA,wBAAwB,EAAE,cAAc;AACxC,wBAAA,mBAAmB,EAAE,UAAU;AAChC,qBAAA,EAAA,QAAA,EAAA,m8BAAA,EAAA,CAAA;0NAGgD,iBAAiB,EAAA,CAAA;sBAAjE,MAAM;uBAAC,+BAA+B,CAAA;gBAgBnC,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,2BAA2B,CAAA;gBAS9B,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,yBAAyB,CAAA;;;AEjDlC;;;;AAIG;MAOU,uBAAuB,CAAA;AADpC,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAW,CAAC;AAShD,KAAA;AAPC,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;IAED,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/B;;oHATU,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACVX;;;;AAIG;AAYH,MAAM,cAAc,GAAG,UAAU,CAAC;AAClC,MAAM,eAAe,GAAG,WAAW,CAAC;MAevB,mBAAmB,CAAA;IAO9B,WACU,CAAA,WAA4B,EAC5B,4BAAiE,EACjE,gBAAyC,EACzC,WAA+B,EAChC,aAAsC,EAAA;QAJrC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAiB;QAC5B,IAA4B,CAAA,4BAAA,GAA5B,4BAA4B,CAAqC;QACjE,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAyB;QACzC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;QAChC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;AAXF,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAU,IAAI,CAAC,CAAC;QAEtF,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAc,CAAA,cAAA,GAAmB,EAAE,CAAC;QACpC,IAAqB,CAAA,qBAAA,GAAW,eAAe,CAAC;AAStD,QAAA,IAAI,CAAC,4BAA4B,CAAC,gBAAgB,EAAE,CAAC;;;;;;;AAQrD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,IAAG;AAC9C,YAAA,IAAI,KAAK,IAAI,IAAI,CAAC,oBAAoB,KAAK,eAAe,EAAE;AAC1D,gBAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAC9B,oBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AACpC,iBAAA;AACD,gBAAA,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC;AAC5C,aAAA;iBAAM,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,oBAAoB,KAAK,cAAc,EAAE;AACjE,gBAAA,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC;AAC7C,aAAA;SACF,CAAC,CACH,CAAC;;;AAIF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,eAAwB,KAAI;AACzE,YAAA,IAAI,eAAe,IAAI,IAAI,CAAC,QAAQ,EAAE;AACpC,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,gBAAA,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC;AAC7C,aAAA;AAAM,iBAAA,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1B,aAAA;SACF,CAAC,CACH,CAAC;;AAGF,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACtB,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,MAAe,KAAI;AAC/D,YAAA,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,aAAA;SACF,CAAC,CACH,CAAC;KACH;AAED,IAAA,IACI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;KAClC;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,KAAK,KAAK,EAAE;AACvC,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC;AAClC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,SAAA;KACF;IAED,IACI,iBAAiB,CAAC,KAAuB,EAAA;AAC3C,QAAA,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;AAChB,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,EAAE;;;;YAI3B,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;KACF;AAED,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACnC;IACD,IAAI,oBAAoB,CAAC,KAAa,EAAA;AACpC,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,qBAAqB,EAAE;AACxC,YAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;AACpC,SAAA;KACF;IAED,kBAAkB,GAAA;;;QAGhB,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/C,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACxB,YAAA,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC;AAC7C,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,GAAiB,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;AACtE,QAAA,IAAI,CAAC,4BAA4B,CAAC,kBAAkB,EAAE,CAAC;KACxD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;;AAErB,QAAA,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC;KAC5C;IAED,aAAa,GAAA;;;AAGX,QAAA,IAAI,CAAC,oBAAoB,GAAG,eAAe,CAAC;KAC7C;;AAGD,IAAA,mBAAmB,CAAC,MAAsB,EAAA;AACxC,QAAA,IAAI,MAAM,CAAC,OAAO,KAAK,eAAe,EAAE;AACtC,YAAA,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;AACvB,SAAA;KACF;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;AAC9B,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AACpC,aAAA;;YAED,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;;gHAtIU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5B,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAgO,mCAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA1C,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,CAAA,6BAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,cAAA,EAAA,mCAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,EAAA,cAAA,EAAA,WAAA,EAAA,EAAA,SAAA,EAVnB,CAAC,eAAe,EAAE,uBAAuB,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBvD,uhCAoBA,EDGc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5J,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,OAAO,CAAC,WAAW,EAAE;YACnB,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7C,YAAA,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;YAClE,UAAU,CAAC,CAAG,EAAA,cAAc,CAAQ,KAAA,EAAA,eAAe,CAAE,CAAA,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;SACpF,CAAC;AACH,KAAA,EAAA,CAAA,CAAA;2FAGU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,aAEvB,CAAC,eAAe,EAAE,uBAAuB,CAAC,EACzC,UAAA,EAAA;wBACV,OAAO,CAAC,WAAW,EAAE;4BACnB,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AAC7C,4BAAA,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;4BAClE,UAAU,CAAC,CAAG,EAAA,cAAc,CAAQ,KAAA,EAAA,eAAe,CAAE,CAAA,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;yBACpF,CAAC;AACH,qBAAA,EAAA,IAAA,EACK,EAAE,KAAK,EAAE,WAAW,EAAE,EAAA,QAAA,EAAA,uhCAAA,EAAA,CAAA;sPAGiB,cAAc,EAAA,CAAA;sBAA1D,MAAM;uBAAC,mCAAmC,CAAA;gBA2DvC,QAAQ,EAAA,CAAA;sBADX,WAAW;uBAAC,mBAAmB,CAAA;gBAY5B,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,6BAA6B,CAAA;;;AEtGtC;;;;AAIG;MAQU,2BAA2B,CAAA;;wHAA3B,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA3B,2BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,2BAA2B,uEAF5B,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAE1B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAJvC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iCAAiC;AAC3C,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACtC,iBAAA,CAAA;;;ACXD;;;;AAIG;MAUU,kBAAkB,CAAA;AAC7B,IAAA,WAAA,CAAoB,uBAA+C,EAAA;QAA/C,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAwB;AACjE,QAAA,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,CAAC;KAC7C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,CAAC;KAC/C;;+GAPU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAuM,sBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAJ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE;AAC5B,iBAAA,CAAA;;;ACbD;;;;AAIG;MAoBU,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CACE,IAA6B,EAC7B,GAAsB,EACuB,eAA+C,EAAA;AALtF,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ,CAAC;;;QASrC,eAAe;AACb,YAAA,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC;AACnC,iBAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBAC9B,SAAS,CAAC,MAAK;gBACd,eAAe,CAAC,MAAM,EAAE,CAAC;gBACzB,GAAG,CAAC,YAAY,EAAE,CAAC;AACrB,aAAC,CAAC,CAAC;KACR;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;KACtB;;AArBU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,6EAMP,uBAAuB,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AANlC,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EAVnB,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;AAKT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAKU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAZ9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;AAKT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,KAAK,EAAE,UAAU;AAClB,qBAAA;AACF,iBAAA,CAAA;;0BAOI,QAAQ;;0BAAI,MAAM;2BAAC,uBAAuB,CAAA;;;AC9B/C;;;;AAIG;AAeU,MAAA,2BAA2B,GAAgB;IACtD,cAAc;IACd,kBAAkB;IAClB,mBAAmB;IACnB,2BAA2B;IAC3B,kBAAkB;EAClB;MAOW,oBAAoB,CAAA;AAC/B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;KACnD;;iHAHU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBAZ/B,cAAc;QACd,kBAAkB;QAClB,mBAAmB;QACnB,2BAA2B;QAC3B,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAIR,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,wBAAwB,CAAA,EAAA,OAAA,EAAA,CARrF,cAAc;QACd,kBAAkB;QAClB,mBAAmB;QACnB,2BAA2B;AAC3B,QAAA,kBAAkB,EAMqB,oBAAoB,EAAE,aAAa,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;AAEzF,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAJrB,OAAA,EAAA,CAAA,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,wBAAwB,EAE9C,oBAAoB,EAAE,aAAa,EAAE,wBAAwB,CAAA,EAAA,CAAA,CAAA;2FAEzF,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,wBAAwB,CAAC;oBACtF,YAAY,EAAE,CAAC,2BAA2B,CAAC;oBAC3C,OAAO,EAAE,CAAC,2BAA2B,EAAE,oBAAoB,EAAE,aAAa,EAAE,wBAAwB,CAAC;AACtG,iBAAA,CAAA;;;AC/BD;;;;AAIG;MAYU,eAAe,CAAA;;4GAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,sBAAsB,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAE/E,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,YAFhB,sBAAsB,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAE/E,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,sBAAsB,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,CAAC;AAC5F,iBAAA,CAAA;;;ACfD;;;;AAIG;MAMU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAsC,SAAc,EAAA;QAAd,IAAS,CAAA,SAAA,GAAT,SAAS,CAAK;KAAI;IAExD,aAAa,GAAA;QACX,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;KACnD;IAED,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YAC1D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;AACtD,SAAA;KACF;;AAXU,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBACP,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHADjB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;0BAEI,MAAM;2BAAC,QAAQ,CAAA;;;ACX9B;;;;AAIG;MAmCU,QAAQ,CAAA;AAoBnB,IAAA,WAAA,CACU,iBAAmC,EACpC,aAAsC,EACrC,iBAAoC,EAAA;QAFpC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAkB;QACpC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QAtB9C,IAAO,CAAA,OAAA,GAAG,eAAe,EAAE,CAAC;QAEsB,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAClC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;QAEnD,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;QACJ,IAAoB,CAAA,oBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC;QAE3D,IAAc,CAAA,cAAA,GAAG,IAAI,CAAC;QACvB,IAAa,CAAA,aAAA,GAAG,OAAO,CAAC;QAEzB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AACf,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;AAE/C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;;QAGjB,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;KAMhE;;AAGJ,IAAA,WAAW,CAAC,OAA6C,EAAA;AACvD,QAAA,IAAI,CAAC,IAAI,CAAC,mBAAmB,IAAI,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;AAClG,YAAA,IAAI,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE;AAC9B,gBAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE,CAAC;AACvC,gBAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AAC7C,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;AAC1C,aAAA;AACF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,CAAC;KAC1C;IAED,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,QAAA,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;KAC7C;IAED,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,OAAO;AACR,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACjC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;KACpB;AAED,IAAA,QAAQ,CAAC,CAAiB,EAAA;AACxB,QAAA,IAAI,CAAC,CAAC,OAAO,KAAK,MAAM,EAAE;;AAExB,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;AAC9C,SAAA;KACF;;qGApEU,QAAQ,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA9L,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA+L,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAR,QAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,QAAQ,ysBCvCrB,s7DAqDA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7P,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyL,+BAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArI,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EDrCiB,CAAC,gBAAgB,CAAC,EAYrB,UAAA,EAAA;QACV,OAAO,CAAC,UAAU,EAAE;YAClB,UAAU,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC/G,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;SAChH,CAAC;QACF,OAAO,CAAC,MAAM,EAAE;YACd,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvG,YAAA,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9E,CAAC;AACH,KAAA,EAAA,CAAA,CAAA;2FAEU,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAzBpB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,WAAW,EACN,aAAA,EAAA,CAAC,gBAAgB,CAAC,EAYrB,UAAA,EAAA;wBACV,OAAO,CAAC,UAAU,EAAE;4BAClB,UAAU,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;4BAC/G,UAAU,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC,CAAC,CAAC,CAAC;yBAChH,CAAC;wBACF,OAAO,CAAC,MAAM,EAAE;4BACd,UAAU,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACvG,4BAAA,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;yBAC9E,CAAC;AACH,qBAAA,EAAA,QAAA,EAAA,s7DAAA,EAAA,MAAA,EAAA,CAAA,iDAAA,CAAA,EAAA,CAAA;oKAKiD,KAAK,EAAA,CAAA;sBAAtD,KAAK;uBAAC,cAAc,CAAA;;sBAAG,WAAW;uBAAC,YAAY,CAAA;gBAClB,YAAY,EAAA,CAAA;sBAAzC,MAAM;uBAAC,oBAAoB,CAAA;gBAED,QAAQ,EAAA,CAAA;sBAAlC,KAAK;uBAAC,kBAAkB,CAAA;gBACc,oBAAoB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,8BAA8B,CAAA;gBACd,IAAI,EAAA,CAAA;sBAA1B,KAAK;uBAAC,cAAc,CAAA;gBACY,cAAc,EAAA,CAAA;sBAA9C,KAAK;uBAAC,wBAAwB,CAAA;gBACC,aAAa,EAAA,CAAA;sBAA5C,KAAK;uBAAC,uBAAuB,CAAA;gBAEC,SAAS,EAAA,CAAA;sBAAvC,KAAK;uBAAC,sBAAsB,CAAA;gBACK,QAAQ,EAAA,CAAA;sBAAzC,MAAM;uBAAC,wBAAwB,CAAA;gBAED,UAAU,EAAA,CAAA;sBAAxC,KAAK;uBAAC,sBAAsB,CAAA;gBAGW,mBAAmB,EAAA,CAAA;sBAA1D,KAAK;uBAAC,+BAA+B,CAAA;;;AEzDxC;;;;AAIG;AAIH;;;;;AAKG;MAIU,YAAY,CAAA;AAKvB,IAAA,WAAA,CAA6B,QAAmB,EAAmB,IAA6B,EAAE,MAAc,EAAA;QAAnF,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;QAAmB,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAyB;QAJxF,IAAQ,CAAA,QAAA,GAAG,GAAG,CAAC;QACf,IAAW,CAAA,WAAA,GAAmB,EAAE,CAAC;AAIvC,QAAA,MAAM,CAAC,iBAAiB,CAAC,MAAK;AAC5B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE/C,IAAI,CAAC,WAAW,CAAC,IAAI,CACnB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,MAAK;;gBAE5D,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,aAAC,CAAC,EACF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,MAAK;;;gBAG9D,IAAI,CAAC,cAAc,EAAE,CAAC;aACvB,CAAC,CACH,CAAC;AACJ,SAAC,CAAC,CAAC;KACJ;IAED,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;AAC9B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,CAAC;AAC1B,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;KACtB;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;KAChF;IAEO,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;KACpE;IAEO,mBAAmB,GAAA;QACzB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAExD,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,EAAE;YAChE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;;yGAjDU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;6FAAZ,YAAY,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACxB,iBAAA,CAAA;;;AChBD;;;;AAIG;MAWU,oBAAoB,GAAgB,CAAC,QAAQ,EAAE,YAAY,EAAE;MAO7D,cAAc,CAAA;AACzB,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;KACxC;;2GAHU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EAPuB,YAAA,EAAA,CAAA,QAAQ,EAAE,YAAY,aAG5D,YAAY,EAAE,kBAAkB,EAAE,aAAa,CAHT,EAAA,OAAA,EAAA,CAAA,QAAQ,EAAE,YAAY,EAKtC,aAAa,CAAA,EAAA,CAAA,CAAA;AAElC,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJf,YAAY,EAAE,kBAAkB,EAAE,aAAa,EAEzB,aAAa,CAAA,EAAA,CAAA,CAAA;2FAElC,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,kBAAkB,EAAE,aAAa,CAAC;oBAC1D,YAAY,EAAE,CAAC,oBAAoB,CAAC;AACpC,oBAAA,OAAO,EAAE,CAAC,oBAAoB,EAAE,aAAa,CAAC;AAC/C,iBAAA,CAAA;;;ACrBD;;;;AAIG;AAWI,MAAM,kBAAkB,GAAkC;IAC/D,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IACzG,YAAY,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IAC5G,WAAW,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,UAAU,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;IACzG,WAAW,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC1G,cAAc,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC7G,cAAc,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC3G,cAAc,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE;IAC3G,eAAe,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;IAC9G,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,aAAa,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE;IAC1G,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;IAC1G,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;IAC7G,UAAU,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;IAC1G,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,YAAY,EAAE,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;CACvG;;AC7BD;;;;AAIG;AAaH;AACA,MAAM0M,WAAS,GAAa;IAC1B,UAAU;IACV,YAAY;IACZ,WAAW;IACX,WAAW;IACX,cAAc;IACd,cAAc;IACd,cAAc;IACd,eAAe;IACf,aAAa;IACb,aAAa;IACb,aAAa;IACb,UAAU;CACX,CAAC;AAyBI,MAAO,kBAAmB,SAAQ,eAAe,CAAA;AAMrD,IAAA,WAAA,CACE,QAAkB,EAGlB,UAAsB,EACf,aAAsC,EACrC,iBAAoC,EACpC,oBAA0C,EACrB,UAAe,EAC1B,QAAa,EAAA;AAE/B,QAAA,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QANrB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACrC,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;QACpC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;QACrB,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QAb9C,IAAiB,CAAA,iBAAA,GAAG,eAAe,EAAE,CAAC;QAiBpC,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAC;AACtF,SAAA;;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC;AAC/B,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAErD,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;KAC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,QAAgB,EAAA;;AAE3B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChE,IAAI,QAAQ,IAAIA,WAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE;AAChD,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;AAC3B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;AACjC,SAAA;;AAED,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE7D,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;AAC3C,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;KACnD;AAED;;;;;AAKG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;KACjC;IAEQ,WAAW,GAAA;QAClB,KAAK,CAAC,WAAW,EAAE,CAAC;QAEpB,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACrG,YAAA,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;AAC1C,SAAA;KACF;;AAhGU,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,EASnB,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAA,mBAAmB,EAKnB,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAAjQ,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAkQ,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,WAAW,aACX,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAfP,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,EArBnB,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,aAAA,EAAA,UAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlG,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAvB9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;oBACD,IAAI,EAAE,EAAE,0BAA0B,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE;AAC1E,iBAAA,CAAA;;0BASI,QAAQ;;0BACR,MAAM;2BAAC,mBAAmB,CAAA;;0BAK1B,MAAM;2BAAC,WAAW,CAAA;;0BAClB,MAAM;2BAAC,QAAQ,CAAA;4CA4Cd,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,aAAa,CAAA;;;AClHtB;;;;AAIG;AAaU,MAAA,uBAAuB,GAAgB,CAAC,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAAE;MAO7F,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;KACxD;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAPuB,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,aAG5F,YAAY,EAAE,aAAa,EAAE,wBAAwB,aAHZ,WAAW,EAAE,kBAAkB,EAAE,kBAAkB,EAKnE,oBAAoB,CAAA,EAAA,CAAA,CAAA;AAE5C,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,YAJlB,YAAY,EAAE,aAAa,EAAE,wBAAwB,EAE5B,oBAAoB,CAAA,EAAA,CAAA,CAAA;2FAE5C,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,wBAAwB,CAAC;oBAChE,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACvC,oBAAA,OAAO,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,CAAC;AACzD,iBAAA,CAAA;;;ACvBD;;;;AAIG;MAMU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;AAEU,QAAA,IAAA,CAAA,GAAG,GAAG,IAAI,OAAO,EAAU,CAAC;AASrC,KAAA;AAPC,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAChC;AAED,IAAA,QAAQ,CAAC,EAAU,EAAA;AACjB,QAAA,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACnB;;6GATU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACTX;;;;AAIG;MAOU,mBAAmB,CAAA;AAI9B,IAAA,WAAA,CAA6B,aAAsC,EAAA;QAAtC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;KAAI;IAEvE,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;KAChC;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;KAC9B;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAEO,cAAc,GAAA;;;QAGpB,UAAU,CAAC,MAAK;YACd,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AACpD,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;AACjC,aAAA;SACF,EAAE,CAAC,CAAC,CAAC;KACP;;gHAjCU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA5I,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACVX;;;;AAIG;MAiBU,UAAU,CAAA;;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAV,UAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAU,yFAHV,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,oFAJxC,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAO1B,UAAU,EAAA,UAAA,EAAA,CAAA;kBATtB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,aAAa;AACvB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,iBAAiB,EAAE,MAAM;AAC1B,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;oBAClD,cAAc,EAAE,CAAC,uBAAuB,CAAC;AAC1C,iBAAA,CAAA;;;ACpBD;;;;AAIG;AAEG,SAAU,WAAW,CAAC,KAAY,EAAA;AACtC,IAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,KAAK,CAAA,CAAE,CAAC,CAAC;AAC/C;;ACRA;;;;AAIG;AAYH,MAAM,SAAS,GAAG,CAAC,aAAa,EAAE,cAAc,EAAE,UAAU,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGrG,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAEvC,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,WAAW,GAAG,IAAI,CAAC;AAYnB,MAAO,iBAAkB,SAAQ,eAAe,CAAA;AAKpD,IAAA,WAAA,CACE,QAAkB,EAGlB,UAAsB,EACd,gBAAkC,EAClC,mBAAwC,EAAA;AAEhD,QAAA,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAHpB,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QAIhD,IAAI,CAAC,UAAU,EAAE;AACf,YAAA,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;AACpF,SAAA;;AAGD,QAAA,IAAI,CAAC,EAAE,GAAG,eAAe,EAAE,CAAC;KAC7B;AAED,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,MAAM,EAAE,GAAG,KAAK,IAAI,EAAE,CAAC;AAEvB,QAAA,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;AACd,QAAA,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KACpC;AAED,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAa,EAAA;AACxB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;AACnC,QAAA,MAAM,WAAW,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAY,CAAC,GAAI,KAAkB,GAAG,eAAe,CAAC;AAE7F,QAAA,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;AAC7B,QAAA,IAAI,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAW,QAAA,EAAA,WAAW,CAAE,CAAA,EAAE,QAAQ,EAAE,CAAA,QAAA,EAAW,WAAW,CAAE,CAAA,EAAE,CAAC,CAAC;;AAGhG,QAAA,QAAQ,WAAW;AACjB,YAAA,KAAK,WAAW;AACd,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;AACpC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;gBACtC,MAAM;AACR,YAAA,KAAK,UAAU;AACb,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;AACpC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBACvC,MAAM;AACR,YAAA,KAAK,cAAc;AACjB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC;AACvC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACnC,MAAM;AACR,YAAA,KAAK,aAAa;AAChB,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,aAAa,CAAC;AACvC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;gBACpC,MAAM;AACR,YAAA,KAAK,OAAO;AACV,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;AACtC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACnC,MAAM;AACR,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;AACrC,gBAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,SAAS,CAAC;gBACpC,MAAM;AACR,YAAA;gBACE,WAAW,CAAC,WAAW,CAAC,CAAC;AAC5B,SAAA;KACF;AAED,IAAA,IACI,IAAI,GAAA;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IACD,IAAI,IAAI,CAAC,KAAa,EAAA;AACpB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;AAC3B,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,WAAW,CAAC;AAE5D,QAAA,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;AACrB,QAAA,IAAI,CAAC,cAAc,CAAC,EAAE,QAAQ,EAAE,CAAW,QAAA,EAAA,OAAO,CAAE,CAAA,EAAE,QAAQ,EAAE,CAAA,QAAA,EAAW,OAAO,CAAE,CAAA,EAAE,CAAC,CAAC;KACzF;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,eAAe,CAAC;KAClD;IAGO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;KAChD;IAGO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;KAChD;AAEO,IAAA,cAAc,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAA0C,EAAA;AACnF,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC3D,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;KACzD;;AA1GU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,0CAQlB,mBAAmB,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,KAAA,EAAA+O,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AARlB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,kXARlB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAQ1B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAV7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,iBAAiB,EAAE,GAAG;AACtB,wBAAA,aAAa,EAAE,WAAW;AAC1B,wBAAA,MAAM,EAAE,IAAI;AACb,qBAAA;AACF,iBAAA,CAAA;;0BAQI,QAAQ;;0BACR,MAAM;2BAAC,mBAAmB,CAAA;uGAgBzB,EAAE,EAAA,CAAA;sBADL,KAAK;gBAYF,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,aAAa,CAAA;gBA2ChB,IAAI,EAAA,CAAA;sBADP,KAAK;uBAAC,SAAS,CAAA;gBAkBR,YAAY,EAAA,CAAA;sBADnB,YAAY;uBAAC,YAAY,CAAA;gBAMlB,YAAY,EAAA,CAAA;sBADnB,YAAY;uBAAC,YAAY,CAAA;;;ACpI5B;;;;AAIG;MAkBU,iBAAiB,CAAA;AAI5B,IAAA,WAAA,CACU,aAAsC,EACtC,gBAAkC,EAClC,mBAAwC,EAAA;QAFxC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACtC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QAL1C,IAAI,CAAA,IAAA,GAAmB,EAAE,CAAC;;QAQhC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;KACrG;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAC7C;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;KAChC;IAGD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;KACjC;IAGO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;KAChD;IAGO,YAAY,GAAA;AAClB,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,CAAC;KAChD;;8GAnCU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhP,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAiP,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,UAAA,EAAA,GAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,MAAA,EAAA,eAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAT7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,IAAI,EAAE;AACJ,wBAAA,QAAQ,EAAE,GAAG;AACb,wBAAA,yBAAyB,EAAE,MAAM;AACjC,wBAAA,yBAAyB,EAAE,iBAAiB;AAC5C,wBAAA,aAAa,EAAE,UAAU;AAC1B,qBAAA;AACF,iBAAA,CAAA;sKAmBC,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,OAAO,CAAA;gBAMrB,WAAW,EAAA,CAAA;sBADV,YAAY;uBAAC,MAAM,CAAA;gBAMZ,YAAY,EAAA,CAAA;sBADnB,YAAY;uBAAC,YAAY,CAAA;gBAMlB,YAAY,EAAA,CAAA;sBADnB,YAAY;uBAAC,YAAY,CAAA;;;ACtD5B;;;;AAIG;AAWU,MAAA,sBAAsB,GAAgB,CAAC,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAAE;MAOzF,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,iBAPuB,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,CAGxF,EAAA,OAAA,EAAA,CAAA,YAAY,CAH4B,EAAA,OAAA,EAAA,CAAA,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,EAKhE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;AAE1D,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAJjB,OAAA,EAAA,CAAA,YAAY,EAEY,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;2FAE1D,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,sBAAsB,CAAC;AACtC,oBAAA,OAAO,EAAE,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,aAAa,CAAC;AACvE,iBAAA,CAAA;;;ACrBD;;;;AAIG;MAWU,gBAAgB,CAAA;;6GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAFjB,OAAA,EAAA,CAAA,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;AAErD,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,EAFjB,OAAA,EAAA,CAAA,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAErD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,gBAAgB,CAAC;AAClE,iBAAA,CAAA;;;ACdD;;;;AAIG;MAaU,cAAc,CAAA;AAP3B,IAAA,WAAA,GAAA;QAQmB,IAAG,CAAA,GAAA,GAAoB,GAAG,CAAC;AAG5C;;;;;;AAMG;QACgB,IAAK,CAAA,KAAA,GAAoB,CAAC,CAAC;QAEtB,IAAU,CAAA,UAAA,GAAG,EAAE,CAAC;AAmHzC,KAAA;AAxGC,IAAA,IACI,EAAE,GAAA;QACJ,OAAO,IAAI,CAAC,GAAG,CAAC;KACjB;IACD,IAAI,EAAE,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;AACjB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;KACxB;AAED,IAAA,IACI,aAAa,GAAA;AACf,QAAA,OAAO,IAAI,CAAC;KACb;IAED,IACI,UAAU,CAAC,KAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC9C;AAED,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;IAED,IACI,OAAO,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;IAED,IACI,OAAO,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC3C;AAED,IAAA,IACI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACnB;;IAGD,IACI,UAAU,CAAC,KAAuB,EAAA;AACpC,QAAA,IAAI,CAAC,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC9C;AAED,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;IAGD,IACI,SAAS,CAAC,KAAuB,EAAA;AACnC,QAAA,IAAI,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC7C;AAED,IAAA,IACI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACrB;IAED,IACI,QAAQ,CAAC,KAAuB,EAAA;AAClC,QAAA,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAC5C;AAED,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;;IAGD,IACI,cAAc,CAAC,KAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;KAClD;AAED,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;;AAGG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO,IAAI,CAAC,UAAU,CAAC;AACxB,SAAA;AACD,QAAA,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC;KAC9B;AAED;;AAEG;IACH,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC;KACtB;;2GA/HU,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,EALf,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,CAAA,QAAA,EAAA,KAAA,CAAA,EAAA,UAAA,EAAA,CAAA,eAAA,EAAA,YAAA,CAAA,EAAA,KAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,oBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,uBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;AAGT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAlO,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAEU,cAAc,EAAA,UAAA,EAAA,CAAA;kBAP1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC5B,oBAAA,QAAQ,EAAE,CAAA;;;AAGT,EAAA,CAAA;AACF,iBAAA,CAAA;8BAEkB,GAAG,EAAA,CAAA;sBAAnB,KAAK;uBAAC,QAAQ,CAAA;gBACS,UAAU,EAAA,CAAA;sBAAjC,KAAK;uBAAC,eAAe,CAAA;gBASH,KAAK,EAAA,CAAA;sBAAvB,KAAK;uBAAC,UAAU,CAAA;gBAEO,UAAU,EAAA,CAAA;sBAAjC,WAAW;uBAAC,SAAS,CAAA;gBAYlB,EAAE,EAAA,CAAA;sBADL,KAAK;gBAUF,aAAa,EAAA,CAAA;sBADhB,WAAW;uBAAC,gBAAgB,CAAA;gBAMzB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,YAAY,CAAA;gBAMf,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,eAAe,CAAA;gBAMxB,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,SAAS,CAAA;gBAMZ,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,qBAAqB,CAAA;gBAM9B,OAAO,EAAA,CAAA;sBADV,KAAK;uBAAC,SAAS,CAAA;gBAMZ,SAAS,EAAA,CAAA;sBADZ,WAAW;uBAAC,YAAY,CAAA;gBAOrB,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,YAAY,CAAA;gBAMf,YAAY,EAAA,CAAA;sBADf,WAAW;uBAAC,eAAe,CAAA;gBAOxB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW,CAAA;gBAMd,WAAW,EAAA,CAAA;sBADd,WAAW;uBAAC,cAAc,CAAA;gBAMvB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,UAAU,CAAA;gBAMb,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,aAAa,CAAA;gBAOtB,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,gBAAgB,CAAA;gBAMnB,gBAAgB,EAAA,CAAA;sBADnB,WAAW;uBAAC,oBAAoB,CAAA;;;AC3HnC;;;;AAIG;AAOU,MAAA,2BAA2B,GAAgB,CAAC,cAAc,EAAE;MAO5D,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAPwB,YAAA,EAAA,CAAA,cAAc,CAG3D,EAAA,OAAA,EAAA,CAAA,YAAY,aAHiC,cAAc,CAAA,EAAA,CAAA,CAAA;AAO1D,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,YAJrB,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIX,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,YAAY,EAAE,CAAC,2BAA2B,CAAC;oBAC3C,OAAO,EAAE,CAAC,2BAA2B,CAAC;AACvC,iBAAA,CAAA;;;ACjBD;;;;AAIG;IAES,kBAGX;AAHD,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,iBAAA,CAAA,UAAA,CAAA,GAAA,UAAqB,CAAA;AACvB,CAAC,EAHW,iBAAiB,KAAjB,iBAAiB,GAG5B,EAAA,CAAA,CAAA;;ACTD;;;;AAIG;IAES,qBAMX;AAND,CAAA,UAAY,oBAAoB,EAAA;AAC9B,IAAA,oBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B,CAAA;AAC3B,IAAA,oBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,oBAAA,CAAA,YAAA,CAAA,GAAA,YAAyB,CAAA;AACzB,IAAA,oBAAA,CAAA,SAAA,CAAA,GAAA,SAAmB,CAAA;AACnB,IAAA,oBAAA,CAAA,OAAA,CAAA,GAAA,OAAe,CAAA;AACjB,CAAC,EANW,oBAAoB,KAApB,oBAAoB,GAM/B,EAAA,CAAA,CAAA;;ACZD;;;;AAIG;MASU,4BAA4B,CAAA;AAGvC,IAAA,WAAA,CAAY,aAAsC,EAAA;AAF1C,QAAA,IAAA,CAAA,YAAY,GAA8C,IAAI,GAAG,EAAwC,CAAC;QAGhH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,WAAW,EAAE;AACtD,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,sBAAsB;AACrD,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE;AAClD,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,UAAU,EAAE,MAAM;AAClB,YAAA,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,mBAAmB;AAClD,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,UAAU,EAAE;AACrD,YAAA,SAAS,EAAE,SAAS;AACpB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,sBAAsB;AACrD,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,OAAO,EAAE;AAClD,YAAA,SAAS,EAAE,kBAAkB;AAC7B,YAAA,UAAU,EAAE,SAAS;AACrB,YAAA,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,mBAAmB;AAClD,SAAA,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,EAAE;AAChD,YAAA,SAAS,EAAE,gBAAgB;AAC3B,YAAA,UAAU,EAAE,QAAQ;AACpB,YAAA,SAAS,EAAE,aAAa,CAAC,IAAI,CAAC,iBAAiB;AAChD,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,IAA0B,EAAA;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;KAC9C;AAED,IAAA,YAAY,CAAC,IAA0B,EAAA;QACrC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;KAC9C;AAED,IAAA,aAAa,CAAC,IAA0B,EAAA;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;KAC/C;;yHAzCU,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAArC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6HAA5B,4BAA4B,EAAA,CAAA,CAAA;2FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC,UAAU;;;ACZX;;;;AAIG;MAaU,WAAW,CAAA;AANxB,IAAA,WAAA,GAAA;AAOsB,QAAA,IAAA,CAAA,MAAM,GAAsB,iBAAiB,CAAC,UAAU,CAAC;AAM9E,KAAA;AAJC,IAAA,IACI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,iBAAiB,CAAC,QAAQ,CAAC;KACnD;;wGANU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,WAAW,EAFX,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,6BAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,SAAA,EAAA,CAAC,4BAA4B,CAAC,0BAF/B,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAI1B,WAAW,EAAA,UAAA,EAAA,CAAA;kBANvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE;oBACxC,SAAS,EAAE,CAAC,4BAA4B,CAAC;AAC1C,iBAAA,CAAA;8BAEqB,MAAM,EAAA,CAAA;sBAAzB,KAAK;uBAAC,WAAW,CAAA;gBAGd,UAAU,EAAA,CAAA;sBADb,WAAW;uBAAC,6BAA6B,CAAA;;;ACpB5C;;;;AAIG;AAIH;;;;;;;;;AASG;MAMU,oBAAoB,CAAA;;iHAApB,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,8JAHrB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG1B,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;oBACrC,IAAI,EAAE,EAAE,iCAAiC,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,EAAE;AAClF,iBAAA,CAAA;;;ACtBD;;;;AAIG;MAiCU,eAAe,CAAA;IAO1B,WACU,CAAA,oBAAkD,EAC7B,UAAe,EAAA;QADpC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAA8B;QAC7B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;AAR3B,QAAA,IAAA,CAAA,KAAK,GAAyB,oBAAoB,CAAC,WAAW,CAAC;KAS9E;AAEJ,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3D;AAED,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC3D;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,oBAAoB,CAAC,UAAU,CAAC;KACvD;IAED,kBAAkB,GAAA;QAChB,IAAI,IAAI,CAAC,SAAS,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC;AAC7D,SAAA;KACF;;AAhCU,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,2DAShB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AATV,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAGZ,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,oBAAoB,EAAU,WAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAU,EAzB5C,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgM,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8D,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,YAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAxB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;AAmBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,2BAA2B,EAAE,MAAM,EAAE;AAC9C,iBAAA,CAAA;;0BAUI,MAAM;2BAAC,WAAW,CAAA;4CARF,KAAK,EAAA,CAAA;sBAAvB,KAAK;uBAAC,UAAU,CAAA;gBAEyC,SAAS,EAAA,CAAA;sBAAlE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAA;;;ACxC1D;;;;AAIG;MASU,0BAA0B,CAAA;;uHAA1B,0BAA0B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,8IAH3B,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBALtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,+BAA+B;AACzC,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE,EAAE,uCAAuC,EAAE,MAAM,EAAE;AAC1D,iBAAA,CAAA;;;ACZD;;;;AAIG;MASU,qBAAqB,CAAA;;kHAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,oIAHtB,CAA2B,yBAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAG1B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBALjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,CAA2B,yBAAA,CAAA;AACrC,oBAAA,IAAI,EAAE,EAAE,kCAAkC,EAAE,MAAM,EAAE;AACrD,iBAAA,CAAA;;;ACZD;;;;AAIG;AAcH,MAAM,uBAAuB,GAAgB;IAC3C,WAAW;IACX,eAAe;IACf,0BAA0B;IAC1B,qBAAqB;IACrB,oBAAoB;CACrB,CAAC;MAOW,iBAAiB,CAAA;AAC5B,IAAA,WAAA,GAAA;QACE,YAAY,CAAC,QAAQ,CAAC,UAAU,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;KAC1F;;8GAHU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,iBAZ5B,WAAW;QACX,eAAe;QACf,0BAA0B;QAC1B,qBAAqB;AACrB,QAAA,oBAAoB,aAIV,YAAY,EAAE,aAAa,EAAE,gBAAgB,aARvD,WAAW;QACX,eAAe;QACf,0BAA0B;QAC1B,qBAAqB;QACrB,oBAAoB,EAKkB,aAAa,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;+GAG1D,iBAAiB,EAAA,OAAA,EAAA,CAJlB,YAAY,EAAE,aAAa,EAAE,gBAAgB,EACjB,aAAa,EAAE,gBAAgB,CAAA,EAAA,CAAA,CAAA;2FAG1D,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAL7B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC;oBACxD,OAAO,EAAE,CAAC,GAAG,uBAAuB,EAAE,aAAa,EAAE,gBAAgB,CAAC;oBACtE,YAAY,EAAE,CAAC,uBAAuB,CAAC;AACxC,iBAAA,CAAA;;;AC9BD;;;;AAIG;MAOU,gBAAgB,CAAA;AAD7B,IAAA,WAAA,GAAA;QAEE,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAEb,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAO,CAAC;AACzC,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAO,CAAC;AACrC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO,CAAC;AACvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO,CAAC;AACvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO,CAAC;AACvC,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAO,CAAC;AAyChD,KAAA;AAvCC,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KAChD;AAED,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;KAC9C;AAED,IAAA,aAAa,CAAC,UAAkB,EAAA;QAC9B,IAAI,UAAU,KAAK,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AACjC,SAAA;aAAM,IAAI,MAAM,KAAK,UAAU,EAAE;AAChC,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAA;aAAM,IAAI,QAAQ,KAAK,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAA;aAAM,IAAI,QAAQ,KAAK,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAA;aAAM,IAAI,QAAQ,KAAK,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AAC/B,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzC,SAAA;KACF;;6GAhDU,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;;ACVX;;;;AAIG;AAQH;;;;;;;;;;;;;;;;;;;;;AAqBG;MAEU,qBAAqB,CAAA;AADlC,IAAA,WAAA,GAAA;AAWE;;;AAGG;AACK,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAW,CAAC;AA2W9C,KAAA;AAzWC;;;;;;AAMG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;KAC/C;AAED;;;;AAIG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;KAC3C;AAED;;;;;AAKG;AACH,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAElC,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;KACzC;AAED;;;;;AAKG;AACH,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;QAElC,IAAI,SAAS,GAAG,CAAC,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;KACzC;AAED;;;;;AAKG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KAC7B;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED;;;;;;;;;AASG;AACH,IAAA,WAAW,CAAC,EAAU,EAAA;AACpB,QAAA,MAAM,UAAU,GAAoB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAmB,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/F,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;KAC1C;AAED;;;;;AAKG;AACH,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;AAClC,QAAA,MAAM,cAAc,GAAW,SAAS,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC;QAEjE,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,GAAG,KAAK,CAAC,CAAC;AAChE,SAAA;QAED,IAAI,KAAK,GAAG,cAAc,EAAE;AAC1B,YAAA,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;AACtE,SAAA;AAED,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACjC;AAED;;;;;AAKG;AACH,IAAA,YAAY,CAAC,IAAmB,EAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE9C,IAAI,KAAK,GAAG,CAAC,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;AAC3E,SAAA;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AAED;;;;;AAKG;IACH,SAAS,CAAC,KAAa,EAAE,GAAW,EAAA;QAClC,IAAI,KAAK,GAAoB,EAAE,CAAC;AAEhC,QAAA,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE;AACxB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;AAClE,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;AAC5D,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AAED,QAAA,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AACvB,SAAA;AAED,QAAA,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;AAE1B,QAAA,IAAI,GAAG,GAAG,KAAK,KAAK,CAAC,EAAE;;YAErB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AACrC,SAAA;;;;AAKD,QAAA,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;;;QAId,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;KAChC;AAED;;;;;;AAMG;IACH,qBAAqB,CAAC,IAAmB,EAAE,SAAwB,EAAA;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;AACpD,QAAA,IAAI,UAAkB,CAAC;AACvB,QAAA,IAAI,QAAgB,CAAC;QAErB,IAAI,SAAS,IAAI,cAAc,EAAE;YAC/B,UAAU,GAAG,SAAS,CAAC;YACvB,QAAQ,GAAG,cAAc,CAAC;AAC3B,SAAA;AAAM,aAAA;YACL,UAAU,GAAG,cAAc,CAAC;YAC5B,QAAQ,GAAG,SAAS,CAAC;AACtB,SAAA;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;KAC7C;AAED;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,IAAmB,EAAA;QACjC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,MAAM,iBAAiB,GAAG,WAAW,GAAG,CAAC,CAAC;QAC1C,IAAI,iBAAiB,GAAG,CAAC,EAAE;AACzB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;KAC/C;AAED;;;;;AAKG;AACH,IAAA,uBAAuB,CAAC,IAAmB,EAAA;QACzC,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAEhD,IAAI,IAAI,KAAK,YAAY,EAAE;;AAEzB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO,YAAY,CAAC,SAAS,CAAC;KAC/B;AAED;;;;;;AAMG;AACH,IAAA,WAAW,CAAC,IAAmB,EAAA;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;AAC5C,QAAA,MAAM,aAAa,GAAG,WAAW,GAAG,CAAC,CAAC;AAEtC,QAAA,IAAI,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;AAC7C,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;KAC3C;AAED;;;;;AAKG;AACH,IAAA,oBAAoB,CAAC,IAAmB,EAAA;AACtC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;AAEhD,QAAA,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QACxB,OAAO,WAAW,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACxC;AAED;;;;;;;AAOG;AACH,IAAA,UAAU,CAAC,IAAmB,EAAA;QAC5B,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,cAAc,CAAC;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,gBAAgB,EAAE;;;YAGrB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC7B,SAAA;KACF;AAED;;;;;AAKG;IACH,KAAK,GAAA;QACH,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;AAChD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7B;AAED;;;;;;;AAOG;IACH,qBAAqB,GAAA;AACnB,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;QAEjE,IAAI,oBAAoB,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;;YAEzD,OAAO;AACR,SAAA;QAED,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAmB,EAAE,KAAa,KAAI;YAC/D,IAAI,KAAK,GAAG,oBAAoB,EAAE;AAChC,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;AAED;;;;AAIG;IACH,4BAA4B,GAAA;QAC1B,IAAI,WAAW,GAAW,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAmB,EAAE,KAAa,KAAI;YAC/D,IAAI,IAAI,KAAK,WAAW,IAAI,KAAK,KAAK,IAAI,CAAC,SAAS,EAAE;gBACpD,WAAW,GAAG,KAAK,CAAC;AACrB,aAAA;AACH,SAAC,CAAC,CAAC;;QAGH,IAAI,IAAI,KAAK,WAAW,EAAE;AACxB,YAAA,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACnC,SAAA;AAED,QAAA,OAAO,WAAW,CAAC;KACpB;IAED,uBAAuB,GAAA;AACrB,QAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,4BAA4B,EAAE,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC;KAC7C;AAED;;;;;AAKG;IACK,YAAY,CAAC,OAAwB,EAAE,eAAuB,EAAA;AACpE,QAAA,MAAM,eAAe,GAAW,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QAEpD,IAAI,eAAe,GAAG,CAAC,EAAE;YACvB,MAAM,IAAI,KAAK,CAAC,0CAA0C,GAAG,eAAe,GAAG,GAAG,CAAC,CAAC;AACrF,SAAA;aAAM,IAAI,eAAe,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,eAAe,GAAG,GAAG,CAAC,CAAC;AAC9E,SAAA;AAAM,aAAA;AACL,YAAA,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AACnB,SAAA;KACF;;kHAxXU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;sHAArB,qBAAqB,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;;;AClCX;;;;AAIG;AAUH;;;;;;;;;;;;;;;;;;AAkBG;MAEU,uBAAuB,CAAA;AAoJlC;;;;;;;AAOG;IACH,WAAmB,CAAA,cAAqC,EAAS,aAA+B,EAAA;QAA7E,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;QAAS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AApGhG;;;;;AAKG;QACH,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEzB;;;;;;;;;;AAUG;QACH,IAAsB,CAAA,sBAAA,GAAG,KAAK,CAAC;AAE/B;;;;;;;AAOG;QACH,IAAkB,CAAA,kBAAA,GAAG,KAAK,CAAC;AAE3B;;;;;;;AAOG;QACH,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AAEzB;;;;;;;;;AASG;QACH,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAE7B;;;;;AAKG;QACH,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAO7B;;;AAGG;AACK,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAiB,CAAC;AAEvD;;AAEG;AACK,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAW,CAAC;AAElD;;AAEG;AACK,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAW,CAAC;AAEjD;;AAEG;AACK,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAW,CAAC;AAEtD;;AAEG;AACK,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAO,CAAC;AAWzC,QAAA,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAK;AACrF,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;AACrC,YAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,WAAW,CAAC,oBAAoB,EAAE;gBAC/D,OAAO;AACR,aAAA;AACD,YAAA,WAAW,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACpD,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;gBAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;AACjB,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,SAAS,CAAC,MAAK;AAC7E,YAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACzC,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AACjF,YAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;AACjF,YAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC3C,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,IAAY,KAAI;AAC7F,YAAA,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;gBAC9B,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjD,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAK;YACjF,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,OAAO;AACR,aAAA;AAED,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE;gBACnC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACtD,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,MAAK;YAC1E,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;AAED;;;;;;AAMG;AACH,IAAA,IAAI,kBAAkB,GAAA;;;AAGpB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED;;AAEG;AACH,IAAA,IAAI,gBAAgB,GAAA;;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC/B;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,KAAK,IAAI,CAAC,WAAW,CAAC;KAC3D;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,iBAAiB,GAAA;QACnB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,KAAK,IAAI,CAAC,WAAW,CAAC;KAC1D;AAED;;;;AAIG;AACH,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACtB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;KAC1B;AAED;;;;;;;;;AASG;IACH,IAAI,WAAW,CAAC,IAAmB,EAAA;QACjC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AAC5D,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC1B,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjC,SAAA;KACF;AAED;;;;;;AAMG;AACH,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;KAC7C;AAED;;;;;;;;AAQG;AACH,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED;;;;;AAKG;AACH,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;KACjD;AAED;;;;AAIG;AACH,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;KAC1C;AAED;;;AAGG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,0BAA0B,CAAC,WAAW,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC1C,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC;KAC3C;AAED;;;;;;;;;;;AAWG;IACH,IAAI,GAAA;QACF,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC;AACxC,SAAA;KACF;AAED;;;;;;AAMG;IACH,SAAS,GAAA;AACP,QAAA,MAAM,WAAW,GAAkB,IAAI,CAAC,WAAW,CAAC;QACpD,MAAM,QAAQ,GAAkB,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;;QAG7E,IAAI,CAAC,QAAQ,EAAE;AACb,YAAA,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;AAC1D,SAAA;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;;AAE1B,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;KAC7B;AAED;;;;;;;AAOG;AACH,IAAA,yBAAyB,CAAC,UAAkB,EAAA;AAC1C,QAAA,MAAM,WAAW,GAAkB,IAAI,CAAC,WAAW,CAAC;QAEpD,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7D,OAAO;AACR,SAAA;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAE9C,QAAA,MAAM,MAAM,GAAG,UAAU,KAAK,MAAM,CAAC;AACrC,QAAA,MAAM,QAAQ,GAAG,UAAU,KAAK,QAAQ,CAAC;AACzC,QAAA,MAAM,YAAY,GAAG,QAAQ,IAAI,CAAC,cAAc,CAAC;AACjD,QAAA,MAAM,cAAc,GAAG,QAAQ,IAAI,cAAc,CAAC;AAClD,QAAA,MAAM,QAAQ,GAAG,UAAU,KAAK,QAAQ,IAAI,cAAc,CAAC;AAE3D,QAAA,IAAI,QAAQ,IAAI,CAAC,cAAc,EAAE;YAC/B,OAAO;AACR,SAAA;AAED,QAAA,WAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AAElD,QAAA,IAAI,QAAQ,EAAE;AACZ,YAAA,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACnD,SAAA;AAAM,aAAA,IAAI,QAAQ,EAAE;AACnB,YAAA,WAAW,CAAC,mBAAmB,CAAC,IAAI,EAAE,CAAC;AACxC,SAAA;AAAM,aAAA,IAAI,MAAM,EAAE;AACjB,YAAA,WAAW,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;AACtC,SAAA;AAED,QAAA,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,cAAc,EAAE;YACtD,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC1C,OAAO;AACR,SAAA;;AAGD,QAAA,IAAI,QAAQ,EAAE;;AAEZ,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,gBAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAC7C,aAAA;AACD,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;AAC7B,SAAA;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAE5C,IAAI,MAAM,IAAI,YAAY,EAAE;AAC1B,gBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,aAAA;;YAED,OAAO;AACR,SAAA;QAED,IAAI,MAAM,IAAI,YAAY,EAAE;YAC1B,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;AACxD,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAA;KACF;AAED;;;;;;;;;;;AAWG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;KAC1C;AAED;;;;;;;AAOG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YACxD,OAAO;AACR,SAAA;AAED,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3E,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,IAAI,CAAC,sBAAsB,EAAE;AAC/B,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,KAAK,CAAC;AACpC,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;KACjC;AAED;;;;;;;;;;;;;;AAcG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,IAAI,CAAC,cAAmB,EAAE,YAAY,GAAG,KAAK,EAAA;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;AACpC,QAAA,MAAM,UAAU,GAAG,OAAO,cAAc,KAAK,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;AAC7G,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;;;AAIrC,QAAA,IAAI,UAAU,KAAK,WAAW,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3D,OAAO;AACR,SAAA;QAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AACvD,QAAA,MAAM,YAAY,GAAG,aAAa,GAAG,gBAAgB,CAAC;AACtD,QAAA,MAAM,YAAY,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACjF,MAAM,UAAU,GAAG,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAE9D,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;AACR,SAAA;QAED,IAAI,YAAY,IAAI,YAAY,EAAE;AAChC,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;gBAC3C,IAAI,IAAI,KAAK,UAAU,EAAE;AACvB,oBAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACvB,iBAAA;AACH,aAAC,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,sBAAsB,EAAE;AACvD,YAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;AAC3C,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACzB,aAAC,CAAC,CAAC;AACJ,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AAED;;;;;AAKG;AACH,IAAA,OAAO,CAAC,YAA6B,EAAA;QACnC,IAAI,UAAU,GAAG,IAAI,CAAC;AACtB,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;;;AAIpC,QAAA,IAAI,kBAA2B,CAAC;QAEhC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;AAC5C,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;AAED,QAAA,YAAY,CAAC,OAAO,CAAC,CAAC,IAAmB,KAAI;YAC3C,IAAI,CAAC,UAAU,EAAE;gBACf,OAAO;AACR,aAAA;YAED,IAAI,IAAI,CAAC,SAAS,EAAE;;gBAElB,OAAO;AACR,aAAA;;YAGD,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;YAC3F,kBAAkB,GAAG,YAAY,KAAK,IAAI,IAAI,YAAY,CAAC,SAAS,KAAK,IAAI,CAAC;;;AAI9E,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,EAAE;gBACxC,UAAU,GAAG,KAAK,CAAC;AACpB,aAAA;;AAEH,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,UAAU,CAAC;KACnB;AAED;;;;;AAKG;IACH,yBAAyB,GAAA;AACvB,QAAA,MAAM,QAAQ,GAAoB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QACnE,IAAI,sBAAsB,GAAW,IAAI,CAAC;QAE1C,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAmB,EAAE,KAAa,KAAI;YACtD,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,sBAAsB,GAAG,KAAK,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,sBAAsB,KAAK,IAAI,EAAE;;YAEnC,sBAAsB,GAAG,CAAC,CAAC;AAC5B,SAAA;AAAM,aAAA,IAAI,sBAAsB,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE;AACvD,YAAA,sBAAsB,GAAG,sBAAsB,GAAG,CAAC,CAAC;AACrD,SAAA;AAED,QAAA,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,sBAAsB,CAAC,CAAC;KACrD;AAED;;;;;AAKG;IACH,mBAAmB,GAAA;QACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;KACxD;AAED;;;;;AAKG;IACH,gBAAgB,GAAA;AACd,QAAA,IAAI,YAA2B,CAAC;AAEhC,QAAA,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;AAE5C,QAAA,MAAM,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC1F,QAAA,IAAI,kBAAkB,EAAE;AACtB,YAAA,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;AACjC,SAAA;KACF;;oHA1pBU,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;wHAAvB,uBAAuB,EAAA,CAAA,CAAA;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC,UAAU;;;ACjCX;;;;AAIG;MAQU,mBAAmB,CAAA;AAM9B,IAAA,WAAA,CAAmB,UAAmC,EAAA;QAAnC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;KAAI;AAE1D,IAAA,IAAI,sBAAsB,GAAA;AACxB,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAClD,IAAI,CAAC,gBAAgB,EAAE;AACrB,YAAA,OAAO,KAAK,CAAC;AACd,SAAA;QACD,OAAO,gBAAgB,CAAC,OAAO,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;KAC9C;AAED,IAAA,IAAI,2BAA2B,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC3F;AAED,IAAA,IAAI,uBAAuB,GAAA;QACzB,OAAO,CAAC,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,sBAAsB,CAAC;KACzE;AAED,IAAA,IAAI,2BAA2B,GAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,sBAAsB,CAAC;KACxE;;gHA1BU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;ACXX;;;;AAIG;AAIH,IAAI,uBAAuB,GAAG,CAAC,CAAC;MAkBnB,qBAAqB,CAAA;AAhBlC,IAAA,WAAA,GAAA;;QAkBkB,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;;QAGd,IAAG,CAAA,GAAA,GAAW,CAAC,uBAAuB,EAAE,EAAE,QAAQ,EAAE,CAAC;QAE1B,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEhC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,CAAS,KAAK,CAAC,CAAC;AAiBhF,KAAA;AAfC,IAAA,IAAI,EAAE,GAAA;AACJ,QAAA,OAAO,CAA4B,yBAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAC;KAC/C;IAED,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO;AACR,SAAA;;;;;QAMD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACzC;;kHAzBU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,EAdtB,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,QAAA,EAAA,CAAA,+BAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,kCAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAGU,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAhBjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,0BAA0B;AACpC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,kCAAkC,EAAE;AACpD,iBAAA,CAAA;8BAGiB,KAAK,EAAA,CAAA;sBAApB,KAAK;uBAAC,OAAO,CAAA;gBAGD,GAAG,EAAA,CAAA;sBAAf,KAAK;uBAAC,IAAI,CAAA;gBAE6B,QAAQ,EAAA,CAAA;sBAA/C,KAAK;uBAAC,+BAA+B,CAAA;gBAEb,mBAAmB,EAAA,CAAA;sBAA3C,MAAM;uBAAC,eAAe,CAAA;;;ACnCzB;;;;AAIG;MAOU,oBAAoB,CAAA;AAC/B,IAAA,WAAA,CAAmB,sBAAwC,EAAA;QAAxC,IAAsB,CAAA,sBAAA,GAAtB,sBAAsB,CAAkB;KAAI;;iHADpD,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;qGAApB,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;;;ACVD;;;;AAIG;MAOU,0BAA0B,CAAA;AACrC,IAAA,WAAA,CAAmB,4BAA8C,EAAA;QAA9C,IAA4B,CAAA,4BAAA,GAA5B,4BAA4B,CAAkB;KAAI;;uHAD1D,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;2GAA1B,0BAA0B,EAAA,QAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAHtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,wBAAwB;AACnC,iBAAA,CAAA;;;ACVD;;;;AAIG;MAOU,qBAAqB,CAAA;AAChC,IAAA,WAAA,CAAmB,uBAAyC,EAAA;QAAzC,IAAuB,CAAA,uBAAA,GAAvB,uBAAuB,CAAkB;KAAI;;kHADrD,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC9B,iBAAA,CAAA;;;ACVD;;;;AAIG;MASU,kBAAkB,CAAA;AAG7B,IAAA,WAAA,CAAmB,oBAAsC,EAAA;QAAtC,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAkB;KAAI;;+GAHlD,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;AAC3B,iBAAA,CAAA;kGAE2B,YAAY,EAAA,CAAA;sBAArC,KAAK;uBAAC,iBAAiB,CAAA;;;ACd1B;;;;AAIG;AAYH,IAAI,eAAe,GAAG,CAAC,CAAC;AAExB;;;;;;;;;AASG;MAYU,aAAa,CAAA;AAqRxB;;;;AAIG;AACH,IAAA,WAAA,CACU,UAAmC,EACpC,cAAqC,EACrC,aAA+B,EAAA;QAF9B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QACpC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;QACrC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;AA5RxC;;;;;;;;;;AAUG;QACU,IAAG,CAAA,GAAA,GAAQ,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC;AAEvD;;;;;;;;AAQG;QACmC,IAAc,CAAA,cAAA,GAAqB,KAAK,CAAC;AAE/E;;;;;;AAMG;AACwC,QAAA,IAAA,CAAA,sBAAsB,GAAG,IAAI,YAAY,EAAW,CAAC;AAEhG;;;;;;AAMG;AAC4C,QAAA,IAAA,CAAA,0BAA0B,GAAG,IAAI,YAAY,EAAW,CAAC;AAExG;;;;AAIG;AACgD,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAW,CAAC;AAElG;;;;;;;;;;AAUG;AAC8B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,CAAS,KAAK,CAAC,CAAC;AAE5E;;;;;;AAMG;AAC4B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAU,CAAC;AAEnE;;;;;;;;;;;;;;AAcG;AAC8B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAiB,CAAC;AAElF;;;;;;;;;;;;;;;;AAgBG;AAC4B,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAiB,CAAC;AAEvF;;;;;;;;;;;;;;;;AAgBG;AAC8B,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,YAAY,EAAiB,CAAC;AAE3F;;;;;;;;;;;;;;;;AAgBG;AAC0B,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,YAAY,EAAiB,CAAC;AAEnF;;;;;;;;;;;;;;;;;;;;AAoBG;AAC4B,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAiB,CAAC;AAEvF;;;;;;;;;;;;;;;;;;;;AAoBG;AAC6B,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAU,CAAC;AAE7C,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAU,CAAC;AA2CtF;;;;AAIG;QACK,IAAiB,CAAA,iBAAA,GAAG,KAAK,CAAC;AAElC;;;;AAIG;QACK,IAAqB,CAAA,qBAAA,GAAG,KAAK,CAAC;AAEtC;;;;AAIG;QACK,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAE1B;;;;AAIG;QACK,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AAE5B;;;;AAIG;QACK,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAE1B;;;;AAIG;QACK,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAWtB;AAEJ;;;;;;;;;;;;;AAaG;AACH,IAAA,IACI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IACD,IAAI,gBAAgB,CAAC,GAAY,EAAA;AAC/B,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,iBAAiB,EAAE;AACtC,YAAA,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;AACjC,YAAA,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC3C,SAAA;KACF;AAED;;;;;;;;;;;;;AAaG;AACH,IAAA,IACI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;KACnC;IACD,IAAI,oBAAoB,CAAC,GAAY,EAAA;AACnC,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,qBAAqB,EAAE;AAC1C,YAAA,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;AACrC,YAAA,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC/C,SAAA;KACF;AAED;;;;;;;AAOG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,GAAY,EAAA;AACvB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;AAC1B,SAAA;KACF;AAED;;;;;;;;;;AAUG;AACH,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,GAAY,EAAA;AACzB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,WAAW,EAAE;AAChC,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;AAC3B,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACrC,SAAA;KACF;AAED;;;;;;;;;;;;AAYG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,GAAY,EAAA;AACvB,QAAA,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;AACtB,QAAA,IAAI,OAAO,KAAK,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;AAC1B,SAAA;KACF;AAED;;;;;;;;;;;AAWG;AACH,IAAA,IAAI,EAAE,GAAA;;;AAGJ,QAAA,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC;;;AAIrD,QAAA,IAAI,gBAAgB,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;;YAEpC,IAAI,CAAC,GAAG,GAAG,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,CAAC;AAC3C,SAAA;AACD,QAAA,OAAO,CAAmB,gBAAA,EAAA,IAAI,CAAC,GAAG,EAAE,CAAC;KACtC;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC;KAC/B;AAED;;;;;;;;;;;AAWG;AACH,IAAA,IAAI,SAAS,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,eAAe,CAAC;;;;;;KAO/C;AAED;;;;;;AAMG;IACH,IAAI,SAAS,CAAC,KAAc,EAAA;AAC1B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;KACxB;AAED;;;;;AAKG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,KAAK,IAAI,CAAC;KAC7C;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;KACtB;AAED;;;;;;;;;;AAUG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC;KACjE;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,iBAAiB,GAAA;QACnB,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE/D,IAAI,CAAC,YAAY,EAAE;AACjB,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,OAAO,YAAY,CAAC,SAAS,CAAC;KAC/B;AAED;;;;AAIG;AACH,IAAA,IAAI,KAAK,GAAA;AACP,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;KAC5C;AAED;;;;AAIG;AACH,IAAA,IAAI,QAAQ,GAAA;QACV,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;AAClD,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC;KAC5C;AAED;;;;AAIG;AACH,IAAA,IAAI,aAAa,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AACxB,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,4BAA4B,CAAC;KACzD;AAED;;;;AAIG;AACH,IAAA,IAAI,gBAAgB,GAAA;AAClB,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;KAC9B;AAED;;;;AAIG;AACH,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,YAAA,OAAO,SAAS,CAAC;AAClB,SAAA;AACD,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC;KAC7C;AAED;;;;;;;;AAQG;AACH,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KACvD;AAED;;;;;AAKG;IACH,QAAQ,GAAA;AACN,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE;YAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,YAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,IAAI,CAAC;AACzC,SAAA;KACF;AAED;;;;;;;;;;AAUG;IACH,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC;KACpC;;0GAtnBU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;8FAAb,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,KAAA,CAAA,EAAA,cAAA,EAAA,CAAA,6BAAA,EAAA,gBAAA,CAAA,EAAA,gBAAA,EAAA,CAAA,2BAAA,EAAA,kBAAA,CAAA,EAAA,oBAAA,EAAA,CAAA,+BAAA,EAAA,sBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,uBAAA,EAAA,UAAA,CAAA,EAAA,UAAA,EAAA,CAAA,mCAAA,EAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iCAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,sBAAA,EAAA,iCAAA,EAAA,0BAAA,EAAA,qCAAA,EAAA,gBAAA,EAAA,yCAAA,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAyMV,kBAAkB,EAYlB,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,qBAAqB,yFAUrB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUpB,0BAA0B,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAlP9B,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAS1B,aAAa,EAAA,UAAA,EAAA,CAAA;kBAXzB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,oBAAoB,EAAE,UAAU;AAChC,wBAAA,wBAAwB,EAAE,YAAY;AACtC,wBAAA,gBAAgB,EAAE,SAAS;AAC3B,wBAAA,yBAAyB,EAAE,MAAM;AAClC,qBAAA;AACF,iBAAA,CAAA;wKAac,GAAG,EAAA,CAAA;sBAAf,KAAK;uBAAC,IAAI,CAAA;gBAW2B,cAAc,EAAA,CAAA;sBAAnD,KAAK;uBAAC,6BAA6B,CAAA;gBASO,sBAAsB,EAAA,CAAA;sBAAhE,MAAM;uBAAC,iCAAiC,CAAA;gBASM,0BAA0B,EAAA,CAAA;sBAAxE,MAAM;uBAAC,qCAAqC,CAAA;gBAOM,gBAAgB,EAAA,CAAA;sBAAlE,MAAM;uBAAC,yCAAyC,CAAA;gBAahB,QAAQ,EAAA,CAAA;sBAAxC,MAAM;uBAAC,uBAAuB,CAAA;gBASA,MAAM,EAAA,CAAA;sBAApC,MAAM;uBAAC,qBAAqB,CAAA;gBAiBI,YAAY,EAAA,CAAA;sBAA5C,MAAM;uBAAC,uBAAuB,CAAA;gBAmBA,mBAAmB,EAAA,CAAA;sBAAjD,MAAM;uBAAC,qBAAqB,CAAA;gBAmBI,qBAAqB,EAAA,CAAA;sBAArD,MAAM;uBAAC,uBAAuB,CAAA;gBAmBF,iBAAiB,EAAA,CAAA;sBAA7C,MAAM;uBAAC,mBAAmB,CAAA;gBAuBI,mBAAmB,EAAA,CAAA;sBAAjD,MAAM;uBAAC,qBAAqB,CAAA;gBAuBG,oBAAoB,EAAA,CAAA;sBAAnD,MAAM;uBAAC,sBAAsB,CAAA;gBAEO,mBAAmB,EAAA,CAAA;sBAAvD,MAAM;uBAAC,2BAA2B,CAAA;gBASiB,SAAS,EAAA,CAAA;sBAA5D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAYK,YAAY,EAAA,CAAA;sBAAlE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,qBAAqB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAUC,QAAQ,EAAA,CAAA;sBAA7D,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,oBAAoB,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAUQ,cAAc,EAAA,CAAA;sBAAzE,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,0BAA0B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gBAsEtD,gBAAgB,EAAA,CAAA;sBADnB,KAAK;uBAAC,2BAA2B,CAAA;gBA2B9B,oBAAoB,EAAA,CAAA;sBADvB,KAAK;uBAAC,+BAA+B,CAAA;gBAqBlC,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,uBAAuB,CAAA;gBAuB1B,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,mCAAmC,CAAA;gBA0BtC,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,iCAAiC,CAAA;;;AClb1C;;;;AAIG;MASU,cAAc,CAAA;;2GAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;+FAAd,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,CAAA,iBAAA,EAAA,cAAA,CAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA,CAAA;8BAE2B,YAAY,EAAA,CAAA;sBAArC,KAAK;uBAAC,iBAAiB,CAAA;;;ACd1B;;;;AAIG;MA+CU,oBAAoB,CAAA;AAG/B,IAAA,WAAA,CACS,UAAmC,EACnC,cAAqC,EACrC,aAAsC,EAAA;QAFtC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QACnC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;QACrC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;KAC3C;AAEJ,IAAA,IAAI,EAAE,GAAA;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC;KACjC;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,IAAI,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC;KAC3G;AAED,IAAA,IAAI,SAAS,GAAA;QACX,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;KAC1B;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,IAAI,CAAC,SAAS,EAAE,CAAC;AACjB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;KAC5B;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC;KAC9C;AAED,IAAA,IAAI,WAAW,GAAA;QACb,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC/D;IAED,KAAK,GAAA;QACH,IAAI,CAAC,SAAS,EAAE,CAAC;;AAGjB,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,OAAO;AACR,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;AACd,YAAA,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;AAC9E,SAAA;KACF;;iHA1DU,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAF,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA/O,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,EApCrB,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,cAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,aAAA,EAAA,UAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA1B,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAcU,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAtChC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;AACrC,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;;;;;AAsBT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE;AACJ,wBAAA,MAAM,EAAE,IAAI;AACZ,wBAAA,qBAAqB,EAAE,iBAAiB;AACxC,wBAAA,sBAAsB,EAAE,SAAS;AACjC,wBAAA,sBAAsB,EAAE,MAAM;AAC9B,wBAAA,kBAAkB,EAAE,MAAM;AAC1B,wBAAA,gBAAgB,EAAE,WAAW;AAC7B,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,kBAAkB,EAAE,cAAc;AAClC,wBAAA,kBAAkB,EAAE,YAAY;AAChC,wBAAA,eAAe,EAAE,UAAU;AAC5B,qBAAA;AACF,iBAAA,CAAA;+KAEgB,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM,CAAA;;;ACpDf;;;;AAIG;MAsBU,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAmB,WAAkC,EAAA;QAAlC,IAAW,CAAA,WAAA,GAAX,WAAW,CAAuB;KAAI;;6GAD9C,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAqQ,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,EAdjB,QAAA,EAAA,oBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/P,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoQ,oBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FAGU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAhB5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;AAWT,EAAA,CAAA;AACD,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACtC,iBAAA,CAAA;;;ACzBD;;;;AAIG;MA6CU,SAAS,CAAA;AAqFpB,IAAA,WAAA,CAC+B,UAAe,EACpC,aAAsC,EACvC,UAAmC,EACnC,cAAqC,EACrC,aAA+B,EAC/B,mBAAwC,EACvC,UAAmC,EAC3C,OAAwB,EAAA;QAPK,IAAU,CAAA,UAAA,GAAV,UAAU,CAAK;QACpC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAyB;QACvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QACnC,IAAc,CAAA,cAAA,GAAd,cAAc,CAAuB;QACrC,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAC/B,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;QACvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;AA3F7C;;AAEG;QACiC,IAAgB,CAAA,gBAAA,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC;AAEtG;;AAEG;QACqB,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AAEpC;;;AAGG;QACyB,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAE5C;;;;AAIG;QACsC,IAAoB,CAAA,oBAAA,GAAG,KAAK,CAAC;AAEtE;;;AAGG;AAC4B,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,CAAU,KAAK,CAAC,CAAC;AAE/E;;;;AAIG;AAC0B,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;AAErE;;;;AAIG;AAC0B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;AAE3E;;AAEG;AACyB,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;AAEnE;;;AAGG;AACoC,QAAA,IAAA,CAAA,kBAAkB,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;AAEzF;;;;AAIG;AACwB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;AAErE;;;AAGG;AAC4B,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,YAAY,CAAM,KAAK,CAAC,CAAC;QAM7E,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;QACd,IAAQ,CAAA,QAAA,GAAG,eAAe,EAAE,CAAC;QAIrB,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;QACtB,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;QACpB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QACxB,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;QAExB,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;AAYzC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CACrB,IAAI,CAAC,wBAAwB,EAAE,EAC/B,IAAI,CAAC,4BAA4B,EAAE,EACnC,IAAI,CAAC,sBAAsB,EAAE,EAC7B,IAAI,CAAC,wBAAwB,EAAE,EAC/B,IAAI,CAAC,oBAAoB,EAAE,CAC5B,CAAC;AAEF,QAAA,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;KAC7C;AAED;;;AAGG;AACH,IAAA,IACI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IACD,IAAI,YAAY,CAAC,KAAc,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,sBAAsB,GAAG,KAAK,CAAC;KAChD;AAED;;;AAGG;IACH,IACI,aAAa,CAAC,IAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;AACxC,SAAA;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACnB;AAED;;;;;AAKG;AACH,IAAA,IACI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IACD,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,GAAG,KAAK,CAAC;KAC1C;AAED;;;;;;;AAOG;AACH,IAAA,IACI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IACD,IAAI,UAAU,CAAC,KAAc,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,KAAK,CAAC;KAC5C;AAED;;;;;;;AAOG;AACH,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,KAAK,CAAC;KAC9C;AAED;;;;;;AAMG;AACH,IAAA,IACI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IACD,IAAI,cAAc,CAAC,KAAc,EAAA;AAC/B,QAAA,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,UAAU,CAAC,oBAAoB,GAAG,KAAK,CAAC;KAC9C;AAED,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;KACpC;IACD,IAAI,WAAW,CAAC,IAAmB,EAAA;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KAClC;AAED,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC;KAC1C;AAED,IAAA,IAAI,OAAO,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC;KAC3C;AAED,IAAA,IAAI,QAAQ,GAAA;AACV,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;KAC/E;AAED,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,oBAAoB,GAAG,MAAM,GAAG,OAAO,CAAC;KACrD;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvC,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa,CAAC;QAClE,IAAI,CAAC,iBAAiB,EAAE,CAAC;KAC1B;IAED,SAAS,GAAA;QACP,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;KAClD;AAED;;;;;;;;;AASG;IACH,MAAM,CAAC,kBAAkB,GAAG,IAAI,EAAA;AAC9B,QAAA,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;AAC1B,SAAA;KACF;AAED;;;;AAIG;IACH,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;KACd;AAED;;AAEG;IACH,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC;AACvC,SAAA;;AAGD,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;AAEvC,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;AAED;;AAEG;IACH,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC/B;AAED;;;;AAIG;AACH,IAAA,MAAM,CAAC,IAAa,EAAA;AAClB,QAAA,IAAI,IAAI,EAAE;YACR,IAAI,CAAC,IAAI,EAAE,CAAC;AACb,SAAA;AAAM,aAAA;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;AAED;;AAEG;IACH,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;KAC5B;AAED;;;;;;;;;;;;;AAaG;IACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,EAAA;AAC5B,QAAA,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACxB,SAAA;KACF;AAED;;;;AAIG;IACH,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC;KAC7B;AAED;;;;;AAKG;IACH,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;KAC1B;AAED;;;AAGG;IACH,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,cAAc,EAAE,CAAC;AACvB,SAAA;KACF;AAED;;;;AAIG;IACH,cAAc,GAAA;AACZ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,MAAM,uBAAuB,GAAG,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,cAAc,CAAC;QAErF,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO;AACR,SAAA;AAED,QAAA,WAAW,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,CAAC,uBAAuB,EAAE;AAC5B,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACtB,SAAA;AAED,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,uBAAuB,EAAE;YAChD,IAAI,CAAC,KAAK,EAAE,CAAC;AACd,SAAA;KACF;AAED;;;;;;;AAOG;AACH,IAAA,IAAI,CAAC,MAAc,EAAA;QACjB,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;AAED;;;;AAIG;IACH,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;KACrB;IAEO,wBAAwB,GAAA;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC3G,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ;IAEO,4BAA4B,GAAA;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAC/G,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;AAC3B,YAAA,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AACxC,SAAC,CAAC,CAAC;KACJ;IAEO,sBAAsB,GAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;KAClF;IAEO,wBAAwB,GAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;KAClF;IAEO,oBAAoB,GAAA;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,SAAS,CAAC,MAAK;;;;AAIvD,YAAA,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,CAAC;AACtC,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;AACjC,SAAC,CAAC,CAAC;KACJ;IAEO,sBAAsB,GAAA;AAC5B,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,OAAO,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACnE,YAAA,OAAO,CAAC,kBAAkB,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;AACtE,SAAA;KACF;IAEO,iBAAiB,GAAA;;QAEvB,IAAI,IAAI,CAAC,KAAK,EAAE;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC;AACxC,SAAA;KACF;IAEO,kBAAkB,GAAA;AACxB,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;;AA/cU,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,kBAsFV,WAAW,EAAA,EAAA,EAAA,KAAA,EAAA9Q,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA+Q,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAtFV,SAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,SAAS,2kCAVT,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,mEAqFpF,cAAc,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EANX,aAAa,EACb,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,SAAA,EAAA,qBAAqB,qICvHxC,u7EA6DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAxN,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyN,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,kBAAA,EAAA,8BAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,sBAAA,EAAA,+BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,YAAA,EAAA,QAAA,EAAA,aAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDZa,SAAS,EAAA,UAAA,EAAA,CAAA;kBAZrB,SAAS;+BACE,YAAY,EAAA,SAAA,EACX,CAAC,uBAAuB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,EAE5F,IAAA,EAAA;AACJ,wBAAA,oBAAoB,EAAE,MAAM;AAC5B,wBAAA,mBAAmB,EAAE,cAAc;AACnC,wBAAA,mBAAmB,EAAE,cAAc;AACnC,wBAAA,mBAAmB,EAAE,cAAc;AACnC,wBAAA,kBAAkB,EAAE,8BAA8B;AACnD,qBAAA,EAAA,QAAA,EAAA,u7EAAA,EAAA,CAAA;;0BAwFE,MAAM;2BAAC,WAAW,CAAA;qQAlFe,gBAAgB,EAAA,CAAA;sBAAnD,KAAK;uBAAC,2BAA2B,CAAA;gBAKV,IAAI,EAAA,CAAA;sBAA3B,KAAK;uBAAC,eAAe,CAAA;gBAMM,QAAQ,EAAA,CAAA;sBAAnC,KAAK;uBAAC,mBAAmB,CAAA;gBAOe,oBAAoB,EAAA,CAAA;sBAA5D,KAAK;uBAAC,gCAAgC,CAAA;gBAMR,YAAY,EAAA,CAAA;sBAA1C,MAAM;uBAAC,qBAAqB,CAAA;gBAOA,QAAQ,EAAA,CAAA;sBAApC,MAAM;uBAAC,mBAAmB,CAAA;gBAOE,cAAc,EAAA,CAAA;sBAA1C,MAAM;uBAAC,mBAAmB,CAAA;gBAKC,OAAO,EAAA,CAAA;sBAAlC,MAAM;uBAAC,kBAAkB,CAAA;gBAMa,kBAAkB,EAAA,CAAA;sBAAxD,MAAM;uBAAC,6BAA6B,CAAA;gBAOV,UAAU,EAAA,CAAA;sBAApC,MAAM;uBAAC,iBAAiB,CAAA;gBAMM,cAAc,EAAA,CAAA;sBAA5C,MAAM;uBAAC,qBAAqB,CAAA;gBAEL,SAAS,EAAA,CAAA;sBAAhC,SAAS;uBAAC,WAAW,CAAA;gBACiC,KAAK,EAAA,CAAA;sBAA3D,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,aAAa,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;gBACb,aAAa,EAAA,CAAA;sBAApD,eAAe;uBAAC,qBAAqB,CAAA;gBAKE,WAAW,EAAA,CAAA;sBAAlD,YAAY;uBAAC,cAAc,CAAA;gBAoCxB,YAAY,EAAA,CAAA;sBADf,KAAK;uBAAC,iCAAiC,CAAA;gBAcpC,aAAa,EAAA,CAAA;sBADhB,KAAK;uBAAC,eAAe,CAAA;gBAelB,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,6BAA6B,CAAA;gBAkBhC,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,+BAA+B,CAAA;gBAkBlC,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,4BAA4B,CAAA;gBAiB/B,cAAc,EAAA,CAAA;sBADjB,KAAK;uBAAC,yBAAyB,CAAA;;;AE5OlC;;;;AAIG;AAOU,MAAA,oBAAoB,GAAQ;AACvC,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,IAAI,EAAE,MAAM;AACZ,IAAA,MAAM,EAAE,QAAQ;AAChB,IAAA,MAAM,EAAE,QAAQ;EAChB;AAEW,MAAA,mBAAmB,GAAQ;AACtC,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,QAAQ,EAAE,iBAAiB;AAC3B,IAAA,IAAI,EAAE,aAAa;AACnB,IAAA,MAAM,EAAE,eAAe;AACvB,IAAA,MAAM,EAAE,eAAe;EACvB;MAyBW,eAAe,CAAA;IAU1B,WAAmB,CAAA,UAAmC,EAAS,aAA+B,EAAA;QAA3E,IAAU,CAAA,UAAA,GAAV,UAAU,CAAyB;QAAS,IAAa,CAAA,aAAA,GAAb,aAAa,CAAkB;QAT/E,IAAI,CAAA,IAAA,GAAG,EAAE,CAAC;QAES,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;QAEnB,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;;AAGb,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,CAAS,KAAK,CAAC,CAAC;KAEmB;AAElG,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,MAAM,GAAA;QACR,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KAC1D;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;KAC9D;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC5D;AAED,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC;KACtD;AAED,IAAA,IAAI,kBAAkB,GAAA;QACpB,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,OAAO,EAAE,CAAC;AACX,SAAA;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IAAI,UAAU,GAAA;;QAEZ,MAAM,QAAQ,GAAG,IAAI,CAAC;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;AAC5B,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;;AAGzC,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACpC,OAAO,CAAC,QAAQ,CAAC;AAClB,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,QAAQ,CAAC;AAClB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE;AAC5E,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AAC1C,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACnE,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE;AACtE,YAAA,OAAO,QAAQ,CAAC;AACjB,SAAA;QAED,OAAO,CAAC,QAAQ,CAAC;KAClB;AAED,IAAA,IAAI,QAAQ,GAAA;;QAEV,MAAM,MAAM,GAAG,IAAI,CAAC;AACpB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;;AAG5B,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE;YACpC,OAAO,CAAC,MAAM,CAAC;AAChB,SAAA;QAED,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,MAAM,CAAC;AAChB,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,kBAAkB,EAAE;AAC7C,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;AAED,QAAA,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE;AACxC,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;AAC3C,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;QAED,OAAO,CAAC,MAAM,CAAC;KAChB;IAED,KAAK,GAAA;QACH,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO;AACR,SAAA;QAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC7C;AAEO,IAAA,yBAAyB,CAAC,YAAY,GAAG,EAAE,EAAE,YAAoB,EAAA;AACvE,QAAA,IAAI,oBAAoB,CAAC,YAAY,CAAC,KAAK,YAAY,EAAE;AACvD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,IAAI,mBAAmB,CAAC,YAAY,CAAC,KAAK,YAAY,EAAE;AACtD,YAAA,OAAO,IAAI,CAAC;AACb,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;;4GAnIU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAV,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EArBhB,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,yBAAA,EAAA,UAAA,CAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,QAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,EAAA,cAAA,EAAA,wBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,CAAA;2FAGU,eAAe,EAAA,UAAA,EAAA,CAAA;kBAvB3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,QAAQ,EAAE,CAAA;;;;;;;;;;;;;;;;;;AAkBT,EAAA,CAAA;oBACD,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,oBAAoB,EAAE,UAAU,EAAE;AAC5E,iBAAA,CAAA;uIAEgB,IAAI,EAAA,CAAA;sBAAlB,KAAK;uBAAC,MAAM,CAAA;gBAEqB,QAAQ,EAAA,CAAA;sBAAzC,KAAK;uBAAC,yBAAyB,CAAA;gBAEA,MAAM,EAAA,CAAA;sBAArC,KAAK;uBAAC,uBAAuB,CAAA;gBAGI,UAAU,EAAA,CAAA;sBAA3C,MAAM;uBAAC,wBAAwB,CAAA;;;AC1DlC;;;;AAIG;AAoBU,MAAA,qBAAqB,GAAU;IAC1C,SAAS;IACT,aAAa;IACb,gBAAgB;IAChB,oBAAoB;IACpB,eAAe;IACf,qBAAqB;IACrB,cAAc;IACd,kBAAkB;IAClB,qBAAqB;IACrB,oBAAoB;IACpB,0BAA0B;EAC1B;MAOW,eAAe,CAAA;AAC1B,IAAA,WAAA,GAAA;AACE,QAAA,YAAY,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;KAC1C;;4GAHU,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,iBAlB1B,SAAS;QACT,aAAa;QACb,gBAAgB;QAChB,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,cAAc;QACd,kBAAkB;QAClB,qBAAqB;QACrB,oBAAoB;AACpB,QAAA,0BAA0B,aAIhB,YAAY,EAAE,cAAc,EAAE,cAAc,aAdtD,SAAS;QACT,aAAa;QACb,gBAAgB;QAChB,oBAAoB;QACpB,eAAe;QACf,qBAAqB;QACrB,cAAc;QACd,kBAAkB;QAClB,qBAAqB;QACrB,oBAAoB;QACpB,0BAA0B,CAAA,EAAA,CAAA,CAAA;AAQf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,EAJhB,OAAA,EAAA,CAAA,YAAY,EAAE,cAAc,EAAE,cAAc,CAAA,EAAA,CAAA,CAAA;2FAI3C,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE,CAAC,YAAY,EAAE,cAAc,EAAE,cAAc,CAAC;oBACvD,YAAY,EAAE,CAAC,qBAAqB,CAAC;oBACrC,OAAO,EAAE,CAAC,qBAAqB,CAAC;AACjC,iBAAA,CAAA;;;AC1CD;;;;AAIG;MA8CU,aAAa,CAAA;;0GAAb,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAb,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAnBtB,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,oBAAoB;QACpB,wBAAwB;QACxB,eAAe;QACf,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,oBAAoB;QACpB,oBAAoB;QACpB,iBAAiB,CAAA,EAAA,CAAA,CAAA;AAGR,aAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAnBtB,iBAAiB;QACjB,aAAa;QACb,aAAa;QACb,cAAc;QACd,gBAAgB;QAChB,oBAAoB;QACpB,wBAAwB;QACxB,eAAe;QACf,cAAc;QACd,eAAe;QACf,gBAAgB;QAChB,eAAe;QACf,gBAAgB;QAChB,gBAAgB;QAChB,oBAAoB;QACpB,oBAAoB;QACpB,iBAAiB,CAAA,EAAA,CAAA,CAAA;2FAGR,aAAa,EAAA,UAAA,EAAA,CAAA;kBArBzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,iBAAiB;wBACjB,aAAa;wBACb,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,oBAAoB;wBACpB,wBAAwB;wBACxB,eAAe;wBACf,cAAc;wBACd,eAAe;wBACf,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,gBAAgB;wBAChB,oBAAoB;wBACpB,oBAAoB;wBACpB,iBAAiB;AAClB,qBAAA;AACF,iBAAA,CAAA;;;ACjDD;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;AAEU,MAAA,kBAAkB,GAAa;IAC1C,aAAa;IACb,cAAc;IACd,UAAU;IACV,WAAW;IACX,aAAa;IACb,UAAU;IACV,cAAc;IACd,WAAW;;;ACdb;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;;;AAIG;;ACJH;;AAEG;;;;"} |